Skip to content

Commit

Permalink
Use stateutil.BlockRoot everywhere (#5739)
Browse files Browse the repository at this point in the history
* Sweeping replace of ssz.HashTreeRoot(block) to stateutil.BlockRoot, minor tweaks to critical path of proposeBlock
* imports
* Merge branch 'master' into better-block-htr
* Add --enable-custom-block-htr to e2e flags
* Merge branch 'better-block-htr' of github.com:prysmaticlabs/prysm into better-block-htr
  • Loading branch information
prestonvanloon authored May 5, 2020
1 parent 4958c03 commit 9be8a45
Show file tree
Hide file tree
Showing 72 changed files with 310 additions and 276 deletions.
4 changes: 2 additions & 2 deletions beacon-chain/blockchain/chain_info.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import (
"time"

ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
"github.com/prysmaticlabs/go-ssz"
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute"
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
"github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stateutil"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/params"
Expand Down Expand Up @@ -134,7 +134,7 @@ func (s *Service) HeadRoot(ctx context.Context) ([]byte, error) {
return params.BeaconConfig().ZeroHash[:], nil
}

r, err := ssz.HashTreeRoot(b.Block)
r, err := stateutil.BlockRoot(b.Block)
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions beacon-chain/blockchain/head_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import (
"testing"

ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
"github.com/prysmaticlabs/go-ssz"
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stateutil"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/testutil"
)
Expand Down Expand Up @@ -46,7 +46,7 @@ func TestSaveHead_Different(t *testing.T) {
if err := service.beaconDB.SaveBlock(context.Background(), newHeadSignedBlock); err != nil {
t.Fatal(err)
}
newRoot, err := ssz.HashTreeRoot(newHeadBlock)
newRoot, err := stateutil.BlockRoot(newHeadBlock)
if err != nil {
t.Fatal(err)
}
Expand Down
7 changes: 4 additions & 3 deletions beacon-chain/blockchain/init_sync_process_block_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stateutil"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/params"
Expand Down Expand Up @@ -242,7 +243,7 @@ func TestGenerateState_CorrectlyGenerated(t *testing.T) {

beaconState, privs := testutil.DeterministicGenesisState(t, 32)
genesisBlock := blocks.NewGenesisBlock([]byte{})
bodyRoot, err := ssz.HashTreeRoot(genesisBlock.Block)
bodyRoot, err := stateutil.BlockRoot(genesisBlock.Block)
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -272,7 +273,7 @@ func TestGenerateState_CorrectlyGenerated(t *testing.T) {
if err != nil {
t.Fatal(err)
}
genRoot, err := ssz.HashTreeRoot(genesisBlock)
genRoot, err := stateutil.BlockRoot(genesisBlock.Block)
if err != nil {
t.Fatal(err)
}
Expand All @@ -297,7 +298,7 @@ func TestGenerateState_CorrectlyGenerated(t *testing.T) {
}
lastBlock = block
}
root, err := ssz.HashTreeRoot(lastBlock.Block)
root, err := stateutil.BlockRoot(lastBlock.Block)
if err != nil {
t.Fatal(err)
}
Expand Down
12 changes: 6 additions & 6 deletions beacon-chain/blockchain/process_attestation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ import (

"github.com/gogo/protobuf/proto"
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
"github.com/prysmaticlabs/go-ssz"
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
"github.com/prysmaticlabs/prysm/beacon-chain/core/state"
testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
"github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray"
stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stateutil"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/params"
Expand Down Expand Up @@ -44,7 +44,7 @@ func TestStore_OnAttestation(t *testing.T) {
if err := db.SaveBlock(ctx, BlkWithOutState); err != nil {
t.Fatal(err)
}
BlkWithOutStateRoot, err := ssz.HashTreeRoot(BlkWithOutState.Block)
BlkWithOutStateRoot, err := stateutil.BlockRoot(BlkWithOutState.Block)
if err != nil {
t.Fatal(err)
}
Expand All @@ -53,7 +53,7 @@ func TestStore_OnAttestation(t *testing.T) {
if err := db.SaveBlock(ctx, BlkWithStateBadAtt); err != nil {
t.Fatal(err)
}
BlkWithStateBadAttRoot, err := ssz.HashTreeRoot(BlkWithStateBadAtt.Block)
BlkWithStateBadAttRoot, err := stateutil.BlockRoot(BlkWithStateBadAtt.Block)
if err != nil {
t.Fatal(err)
}
Expand All @@ -71,7 +71,7 @@ func TestStore_OnAttestation(t *testing.T) {
t.Fatal(err)
}

BlkWithValidStateRoot, err := ssz.HashTreeRoot(BlkWithValidState.Block)
BlkWithValidStateRoot, err := stateutil.BlockRoot(BlkWithValidState.Block)
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -432,7 +432,7 @@ func TestVerifyBeaconBlock_futureBlock(t *testing.T) {
if err := service.beaconDB.SaveBlock(ctx, b); err != nil {
t.Fatal(err)
}
r, err := ssz.HashTreeRoot(b.Block)
r, err := stateutil.BlockRoot(b.Block)
if err != nil {
t.Fatal(err)
}
Expand All @@ -458,7 +458,7 @@ func TestVerifyBeaconBlock_OK(t *testing.T) {
if err := service.beaconDB.SaveBlock(ctx, b); err != nil {
t.Fatal(err)
}
r, err := ssz.HashTreeRoot(b.Block)
r, err := stateutil.BlockRoot(b.Block)
if err != nil {
t.Fatal(err)
}
Expand Down
3 changes: 2 additions & 1 deletion beacon-chain/blockchain/process_block_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
"github.com/prysmaticlabs/prysm/beacon-chain/db/filters"
stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stateutil"
"github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/featureconfig"
"github.com/prysmaticlabs/prysm/shared/params"
Expand Down Expand Up @@ -348,7 +349,7 @@ func (s *Service) filterBlockRoots(ctx context.Context, roots [][32]byte) ([][32
if err != nil {
return nil, err
}
hRoot, err := ssz.HashTreeRoot(h.Block)
hRoot, err := stateutil.BlockRoot(h.Block)
if err != nil {
return nil, err
}
Expand Down
29 changes: 15 additions & 14 deletions beacon-chain/blockchain/process_block_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/prysmaticlabs/prysm/beacon-chain/forkchoice/protoarray"
stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stateutil"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/featureconfig"
Expand All @@ -43,7 +44,7 @@ func TestStore_OnBlock(t *testing.T) {
if err := db.SaveBlock(ctx, genesis); err != nil {
t.Error(err)
}
validGenesisRoot, err := ssz.HashTreeRoot(genesis.Block)
validGenesisRoot, err := stateutil.BlockRoot(genesis.Block)
if err != nil {
t.Error(err)
}
Expand All @@ -59,7 +60,7 @@ func TestStore_OnBlock(t *testing.T) {
if err := db.SaveBlock(ctx, random); err != nil {
t.Error(err)
}
randomParentRoot, err := ssz.HashTreeRoot(random.Block)
randomParentRoot, err := stateutil.BlockRoot(random.Block)
if err != nil {
t.Error(err)
}
Expand Down Expand Up @@ -148,7 +149,7 @@ func TestRemoveStateSinceLastFinalized(t *testing.T) {
Slot: uint64(i),
},
}
r, err := ssz.HashTreeRoot(totalBlocks[i].Block)
r, err := stateutil.BlockRoot(totalBlocks[i].Block)
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -227,12 +228,12 @@ func TestRemoveStateSinceLastFinalized_EmptyStartSlot(t *testing.T) {
}

lastJustifiedBlk := &ethpb.SignedBeaconBlock{Block: &ethpb.BeaconBlock{ParentRoot: []byte{'G'}}}
lastJustifiedRoot, err := ssz.HashTreeRoot(lastJustifiedBlk.Block)
lastJustifiedRoot, err := stateutil.BlockRoot(lastJustifiedBlk.Block)
if err != nil {
t.Fatal(err)
}
newJustifiedBlk := &ethpb.SignedBeaconBlock{Block: &ethpb.BeaconBlock{Slot: 1, ParentRoot: lastJustifiedRoot[:]}}
newJustifiedRoot, err := ssz.HashTreeRoot(newJustifiedBlk.Block)
newJustifiedRoot, err := stateutil.BlockRoot(newJustifiedBlk.Block)
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -267,12 +268,12 @@ func TestShouldUpdateJustified_ReturnFalse(t *testing.T) {
t.Fatal(err)
}
lastJustifiedBlk := &ethpb.SignedBeaconBlock{Block: &ethpb.BeaconBlock{ParentRoot: []byte{'G'}}}
lastJustifiedRoot, err := ssz.HashTreeRoot(lastJustifiedBlk.Block)
lastJustifiedRoot, err := stateutil.BlockRoot(lastJustifiedBlk.Block)
if err != nil {
t.Fatal(err)
}
newJustifiedBlk := &ethpb.SignedBeaconBlock{Block: &ethpb.BeaconBlock{ParentRoot: lastJustifiedRoot[:]}}
newJustifiedRoot, err := ssz.HashTreeRoot(newJustifiedBlk.Block)
newJustifiedRoot, err := stateutil.BlockRoot(newJustifiedBlk.Block)
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -440,7 +441,7 @@ func TestUpdateJustified_CouldUpdateBest(t *testing.T) {
if err := db.SaveBlock(ctx, signedBlock); err != nil {
t.Fatal(err)
}
r, err := ssz.HashTreeRoot(signedBlock.Block)
r, err := stateutil.BlockRoot(signedBlock.Block)
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -487,12 +488,12 @@ func TestFilterBlockRoots_CanFilter(t *testing.T) {
}

fBlock := &ethpb.BeaconBlock{}
fRoot, err := ssz.HashTreeRoot(fBlock)
fRoot, err := stateutil.BlockRoot(fBlock)
if err != nil {
t.Fatal(err)
}
hBlock := &ethpb.BeaconBlock{Slot: 1}
headRoot, err := ssz.HashTreeRoot(hBlock)
headRoot, err := stateutil.BlockRoot(hBlock)
if err != nil {
t.Fatal(err)
}
Expand Down Expand Up @@ -587,7 +588,7 @@ func TestFillForkChoiceMissingBlocks_CanSave(t *testing.T) {
if err := db.SaveBlock(ctx, genesis); err != nil {
t.Error(err)
}
validGenesisRoot, err := ssz.HashTreeRoot(genesis.Block)
validGenesisRoot, err := stateutil.BlockRoot(genesis.Block)
if err != nil {
t.Error(err)
}
Expand Down Expand Up @@ -641,7 +642,7 @@ func TestFillForkChoiceMissingBlocks_FilterFinalized(t *testing.T) {
if err := db.SaveBlock(ctx, genesis); err != nil {
t.Error(err)
}
validGenesisRoot, err := ssz.HashTreeRoot(genesis.Block)
validGenesisRoot, err := stateutil.BlockRoot(genesis.Block)
if err != nil {
t.Error(err)
}
Expand All @@ -656,15 +657,15 @@ func TestFillForkChoiceMissingBlocks_FilterFinalized(t *testing.T) {
if err := service.beaconDB.SaveBlock(ctx, b63); err != nil {
t.Fatal(err)
}
r63, err := ssz.HashTreeRoot(b63.Block)
r63, err := stateutil.BlockRoot(b63.Block)
if err != nil {
t.Fatal(err)
}
b64 := &ethpb.SignedBeaconBlock{Block: &ethpb.BeaconBlock{Slot: 64, ParentRoot: r63[:]}}
if err := service.beaconDB.SaveBlock(ctx, b64); err != nil {
t.Fatal(err)
}
r64, err := ssz.HashTreeRoot(b64.Block)
r64, err := stateutil.BlockRoot(b64.Block)
if err != nil {
t.Fatal(err)
}
Expand Down
3 changes: 1 addition & 2 deletions beacon-chain/blockchain/receive_block.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

"github.com/pkg/errors"
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
"github.com/prysmaticlabs/go-ssz"
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute"
"github.com/prysmaticlabs/prysm/beacon-chain/core/feed"
statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state"
Expand Down Expand Up @@ -39,7 +38,7 @@ func (s *Service) ReceiveBlock(ctx context.Context, block *ethpb.SignedBeaconBlo
ctx, span := trace.StartSpan(ctx, "beacon-chain.blockchain.ReceiveBlock")
defer span.End()

root, err := ssz.HashTreeRoot(block.Block)
root, err := stateutil.BlockRoot(block.Block)
if err != nil {
return errors.Wrap(err, "could not get signing root on received block")
}
Expand Down
8 changes: 4 additions & 4 deletions beacon-chain/blockchain/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (

"github.com/pkg/errors"
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
"github.com/prysmaticlabs/go-ssz"
"github.com/prysmaticlabs/prysm/beacon-chain/cache"
"github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache"
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
Expand All @@ -33,6 +32,7 @@ import (
"github.com/prysmaticlabs/prysm/beacon-chain/powchain"
stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stateutil"
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
"github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/featureconfig"
Expand Down Expand Up @@ -319,7 +319,7 @@ func (s *Service) saveGenesisData(ctx context.Context, genesisState *stateTrie.B
return err
}
genesisBlk := blocks.NewGenesisBlock(stateRoot[:])
genesisBlkRoot, err := ssz.HashTreeRoot(genesisBlk.Block)
genesisBlkRoot, err := stateutil.BlockRoot(genesisBlk.Block)
if err != nil {
return errors.Wrap(err, "could not get genesis block root")
}
Expand Down Expand Up @@ -381,7 +381,7 @@ func (s *Service) initializeChainInfo(ctx context.Context) error {
if genesisBlock == nil {
return errors.New("no genesis block in db")
}
genesisBlkRoot, err := ssz.HashTreeRoot(genesisBlock.Block)
genesisBlkRoot, err := stateutil.BlockRoot(genesisBlock.Block)
if err != nil {
return errors.Wrap(err, "could not get signing root of genesis block")
}
Expand All @@ -392,7 +392,7 @@ func (s *Service) initializeChainInfo(ctx context.Context) error {
if err != nil {
return errors.Wrap(err, "could not retrieve head block")
}
headRoot, err := ssz.HashTreeRoot(headBlock.Block)
headRoot, err := stateutil.BlockRoot(headBlock.Block)
if err != nil {
return errors.Wrap(err, "could not hash head block")
}
Expand Down
Loading

0 comments on commit 9be8a45

Please sign in to comment.