7. 数字签名
7.1 数字签名代码实现
在创建交易之前使用私钥对交易进行签名
/Users/xxx/go/src/publicChain/part58-wallets-Signature/BLC/Blockchain.go
func NewSimpleTransaction(from, to string, amount int, blockchain *Blockchain, txs []*Transaction) *Transaction {
--
//signature
blockchain.SignTransaction(&tx,wallet.PrivateKey)
return tx
}
当然签名使用的是一个方法,我们来继续定义一下。它先回判断交易是否属于本链,接着创建一个存放交易的map,键是交易哈希。然后遍历Vins,再将Vin中的交易哈希作为参数传入FindTransaction方法,FindTransaction会将其与内部获取的交易哈希进行对比,然后当区块的哈希为零时break。再然后每个哈希都对应一笔交易
/Users/xxx/go/src/publicChain/part58-wallets-Signature/BLC/Blockchain.go
func (blockchain *Blockchain) SignTransaction(tx *Transaction, privateKey ecdsa.PrivateKey) {
if tx.IsCoinbaseTransaction() {
return
}
prevTXs := make(map[string]Transaction)
for _, vin := range tx.Vins {
prevTX, err := blockchain.FindTransaction(vin.TxHash)

最低0.47元/天 解锁文章
1763

被折叠的 条评论
为什么被折叠?



