From f009424f24e9a01b4d1fb83492ad8fdfd533d071 Mon Sep 17 00:00:00 2001 From: bianyuanop Date: Sun, 28 Jan 2024 09:30:49 -0500 Subject: [PATCH] rebase & blk marshal/unmarshal & merkleroot to ids.ID --- chain/block.go | 5 ++++- merkle/merkle.go | 14 +++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/chain/block.go b/chain/block.go index af58104280..3a42c1a1c5 100644 --- a/chain/block.go +++ b/chain/block.go @@ -42,7 +42,7 @@ type StatefulBlock struct { Hght uint64 `json:"height"` Txs []*Transaction `json:"txs"` - TxsRoot []byte `json:"txsRoot"` + TxsRoot ids.ID `json:"txsRoot"` // StateRoot is the root of the post-execution state // of [Prnt]. @@ -1017,6 +1017,8 @@ func (b *StatefulBlock) Marshal() ([]byte, error) { p.PackID(b.StateRoot) p.PackUint64(uint64(b.WarpResults)) + p.PackID(b.TxsRoot) + bytes := p.Bytes() if err := p.Err(); err != nil { return nil, err @@ -1052,6 +1054,7 @@ func UnmarshalBlock(raw []byte, parser Parser) (*StatefulBlock, error) { p.UnpackID(false, &b.StateRoot) b.WarpResults = set.Bits64(p.UnpackUint64(false)) + p.UnpackID(false, &b.TxsRoot) // Ensure no leftover bytes if !p.Empty() { diff --git a/merkle/merkle.go b/merkle/merkle.go index 53333b7692..e76e7efbad 100644 --- a/merkle/merkle.go +++ b/merkle/merkle.go @@ -5,6 +5,7 @@ import ( "github.com/ava-labs/avalanchego/database" "github.com/ava-labs/avalanchego/database/memdb" + "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/trace" "github.com/ava-labs/avalanchego/utils/units" "github.com/ava-labs/avalanchego/x/merkledb" @@ -12,7 +13,7 @@ import ( ) // Generate merkle root for a set of items -func GenerateMerkleRoot(ctx context.Context, tracer trace.Tracer, merkleItems [][]byte, consumeBytes bool) ([]byte, merkledb.MerkleDB, error) { +func GenerateMerkleRoot(ctx context.Context, tracer trace.Tracer, merkleItems [][]byte, consumeBytes bool) (ids.ID, merkledb.MerkleDB, error) { batchOps := make([]database.BatchOp, 0, len(merkleItems)) for _, item := range merkleItems { @@ -26,27 +27,26 @@ func GenerateMerkleRoot(ctx context.Context, tracer trace.Tracer, merkleItems [] db, err := merkledb.New(ctx, memdb.New(), merkledb.Config{ BranchFactor: merkledb.BranchFactor16, HistoryLength: 100, - EvictionBatchSize: units.MiB, IntermediateNodeCacheSize: units.MiB, ValueNodeCacheSize: units.MiB, Tracer: tracer, }) if err != nil { - return nil, nil, err + return ids.Empty, nil, err } view, err := db.NewView(ctx, merkledb.ViewChanges{BatchOps: batchOps, ConsumeBytes: consumeBytes}) if err != nil { - return nil, nil, err + return ids.Empty, nil, err } if err := view.CommitToDB(ctx); err != nil { - return nil, nil, err + return ids.Empty, nil, err } root, err := db.GetMerkleRoot(ctx) if err != nil { - return nil, nil, err + return ids.Empty, nil, err } - return root[:], db, nil + return root, db, nil }