Add merkle proof of last block hash to BlockHeader, add merkle proof of tx hash to Transaction
This commit is contained in:
parent
dde32e11dc
commit
fb84ab8ad6
@ -20,6 +20,7 @@ type BlockHeader struct {
|
|||||||
Height uint64
|
Height uint64
|
||||||
Hash []byte
|
Hash []byte
|
||||||
LastHash []byte
|
LastHash []byte
|
||||||
|
LastHashProof *merkletree.Proof
|
||||||
Proposer peer.ID
|
Proposer peer.ID
|
||||||
Signature []byte
|
Signature []byte
|
||||||
}
|
}
|
||||||
@ -63,6 +64,11 @@ func CreateBlock(lastBlockHeader *BlockHeader, txs []*Transaction, wallet *walle
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lastHashProof, err := tree.GenerateProof(lastBlockHeader.Hash, 0)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
block := &Block{
|
block := &Block{
|
||||||
Header: &BlockHeader{
|
Header: &BlockHeader{
|
||||||
Timestamp: timestamp,
|
Timestamp: timestamp,
|
||||||
@ -71,6 +77,7 @@ func CreateBlock(lastBlockHeader *BlockHeader, txs []*Transaction, wallet *walle
|
|||||||
Signature: s.Data,
|
Signature: s.Data,
|
||||||
Hash: blockHash,
|
Hash: blockHash,
|
||||||
LastHash: lastBlockHeader.Hash,
|
LastHash: lastBlockHeader.Hash,
|
||||||
|
LastHashProof: lastHashProof,
|
||||||
},
|
},
|
||||||
Data: txs,
|
Data: txs,
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,14 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/wealdtech/go-merkletree"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Transaction struct {
|
type Transaction struct {
|
||||||
Hash []byte
|
Hash []byte
|
||||||
|
MerkleProof *merkletree.Proof // sets when transaction is added to block
|
||||||
Timestamp time.Time
|
Timestamp time.Time
|
||||||
Data []byte
|
Data []byte
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user