Add merkle proof of last block hash to BlockHeader, add merkle proof of tx hash to Transaction

This commit is contained in:
ChronosX88 2021-05-26 23:57:54 +03:00
parent dde32e11dc
commit fb84ab8ad6
Signed by: ChronosXYZ
GPG Key ID: 085A69A82C8C511A
2 changed files with 25 additions and 15 deletions

View File

@ -20,6 +20,7 @@ type BlockHeader struct {
Height uint64
Hash []byte
LastHash []byte
LastHashProof *merkletree.Proof
Proposer peer.ID
Signature []byte
}
@ -63,6 +64,11 @@ func CreateBlock(lastBlockHeader *BlockHeader, txs []*Transaction, wallet *walle
return nil, err
}
lastHashProof, err := tree.GenerateProof(lastBlockHeader.Hash, 0)
if err != nil {
return nil, err
}
block := &Block{
Header: &BlockHeader{
Timestamp: timestamp,
@ -71,6 +77,7 @@ func CreateBlock(lastBlockHeader *BlockHeader, txs []*Transaction, wallet *walle
Signature: s.Data,
Hash: blockHash,
LastHash: lastBlockHeader.Hash,
LastHashProof: lastHashProof,
},
Data: txs,
}

View File

@ -5,11 +5,14 @@ import (
"fmt"
"time"
"github.com/wealdtech/go-merkletree"
"github.com/ethereum/go-ethereum/crypto"
)
type Transaction struct {
Hash []byte
MerkleProof *merkletree.Proof // sets when transaction is added to block
Timestamp time.Time
Data []byte
}