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

@ -16,12 +16,13 @@ type Block struct {
}
type BlockHeader struct {
Timestamp int64
Height uint64
Hash []byte
LastHash []byte
Proposer peer.ID
Signature []byte
Timestamp int64
Height uint64
Hash []byte
LastHash []byte
LastHashProof *merkletree.Proof
Proposer peer.ID
Signature []byte
}
func GenesisBlock() *Block {
@ -63,14 +64,20 @@ 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,
Height: lastBlockHeader.Height + 1,
Proposer: proposer,
Signature: s.Data,
Hash: blockHash,
LastHash: lastBlockHeader.Hash,
Timestamp: timestamp,
Height: lastBlockHeader.Height + 1,
Proposer: proposer,
Signature: s.Data,
Hash: blockHash,
LastHash: lastBlockHeader.Hash,
LastHashProof: lastHashProof,
},
Data: txs,
}

View File

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