Skip to content

Commit

Permalink
chore(all): replace block header type from *big.Int to uint (#2330)
Browse files Browse the repository at this point in the history
- Minimal changes to production code
- Remove now unused `MustHexToBigInt` and replace with `UintToHex`
- Replace `big.NewInt(0).SetBytes` with  `common.BytesToUint`
- Adapt all affected tests
- Change logs to use `%d` instead of `%s` for block numbers
- Use `MustNewUint64OrHash` when using `NewUint64OrHash` without checking the error
- Remove `errWorkerMissingStartNumber` since we should panic on nil pointer in `workerToRequests`
- Use `const` when appropriate in tests
- Add names to interface arguments when modified
- Name returned values when modified
- Remove some comments when it's now obvious what is going on
- Use `assert.Regexp` in a test instead of `regexp.MustCompile`
- Refactor `equalNodeValue` and `equalLeaves` since I had trouble debugging a test
  • Loading branch information
qdm12 committed Mar 9, 2022
1 parent 9ea0c65 commit 2086496
Show file tree
Hide file tree
Showing 128 changed files with 1,153 additions and 1,357 deletions.
2 changes: 1 addition & 1 deletion cmd/gossamer/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ func createDotConfig(ctx *cli.Context) (*dot.Config, error) {
setDotRPCConfig(ctx, tomlCfg.RPC, &cfg.RPC)
setDotPprofConfig(ctx, tomlCfg.Pprof, &cfg.Pprof)

if rewind := ctx.GlobalInt(RewindFlag.Name); rewind != 0 {
if rewind := ctx.GlobalUint(RewindFlag.Name); rewind != 0 {
cfg.State.Rewind = rewind
}

Expand Down
2 changes: 1 addition & 1 deletion dot/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ func (r *RPCConfig) String() string {

// StateConfig is the config for the State service
type StateConfig struct {
Rewind int
Rewind uint
}

// networkServiceEnabled returns true if the network service is enabled
Expand Down
3 changes: 1 addition & 2 deletions dot/core/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package core

import (
"math/big"
"sync"

"github.com/libp2p/go-libp2p-core/peer"
Expand All @@ -24,7 +23,7 @@ import (
type BlockState interface {
BestBlockHash() common.Hash
BestBlockHeader() (*types.Header, error)
BestBlockNumber() (*big.Int, error)
BestBlockNumber() (blockNumber uint, err error)
BestBlockStateRoot() (common.Hash, error)
BestBlock() (*types.Block, error)
AddBlock(*types.Block) error
Expand Down
3 changes: 1 addition & 2 deletions dot/core/messages_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
package core

import (
"math/big"
"testing"
"time"

Expand Down Expand Up @@ -90,7 +89,7 @@ func TestService_HandleBlockProduced(t *testing.T) {

newBlock := types.Block{
Header: types.Header{
Number: big.NewInt(1),
Number: 1,
ParentHash: s.blockState.BestBlockHash(),
Digest: digest,
},
Expand Down
5 changes: 2 additions & 3 deletions dot/core/mock_core_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions dot/core/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ package core
import (
"context"
"errors"
"math/big"
"sync"

"github.com/ChainSafe/gossamer/dot/network"
Expand Down Expand Up @@ -205,9 +204,9 @@ func (s *Service) handleBlock(block *types.Block, state *rtstorage.TrieState) er

// store block in database
if err = s.blockState.AddBlock(block); err != nil {
if errors.Is(err, blocktree.ErrParentNotFound) && block.Header.Number.Cmp(big.NewInt(0)) != 0 {
if errors.Is(err, blocktree.ErrParentNotFound) && block.Header.Number != 0 {
return err
} else if errors.Is(err, blocktree.ErrBlockExists) || block.Header.Number.Cmp(big.NewInt(0)) == 0 {
} else if errors.Is(err, blocktree.ErrBlockExists) || block.Header.Number == 0 {
// this is fine
} else {
return err
Expand Down
33 changes: 16 additions & 17 deletions dot/core/service_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ package core
import (
"errors"
"fmt"
"math/big"
"os"
"sort"
"testing"
Expand Down Expand Up @@ -82,7 +81,7 @@ func TestAnnounceBlock(t *testing.T) {

newBlock := types.Block{
Header: types.Header{
Number: big.NewInt(1),
Number: 1,
ParentHash: s.blockState.BestBlockHash(),
Digest: digest,
},
Expand Down Expand Up @@ -275,9 +274,9 @@ func TestHandleChainReorg_WithReorg_Trans(t *testing.T) {

func TestHandleChainReorg_WithReorg_NoTransactions(t *testing.T) {
s := NewTestService(t, nil)
height := 5
branch := 3
branches := map[int]int{branch: 1}
const height = 5
const branch = 3
branches := map[uint]int{branch: 1}
state.AddBlocksToStateWithFixedBranches(t, s.blockState.(*state.BlockState), height, branches)

leaves := s.blockState.(*state.BlockState).Leaves()
Expand All @@ -303,8 +302,8 @@ func TestHandleChainReorg_WithReorg_Transactions(t *testing.T) {
}

s := NewTestService(t, cfg)
height := 5
branch := 3
const height = 5
const branch = 3
state.AddBlocksToState(t, s.blockState.(*state.BlockState), height, false)

// create extrinsic
Expand All @@ -321,7 +320,7 @@ func TestHandleChainReorg_WithReorg_Transactions(t *testing.T) {
require.NoError(t, err)

// get common ancestor
ancestor, err := s.blockState.(*state.BlockState).GetBlockByNumber(big.NewInt(int64(branch - 1)))
ancestor, err := s.blockState.(*state.BlockState).GetBlockByNumber(branch - 1)
require.NoError(t, err)

// build "re-org" chain
Expand All @@ -330,7 +329,7 @@ func TestHandleChainReorg_WithReorg_Transactions(t *testing.T) {
block := &types.Block{
Header: types.Header{
ParentHash: ancestor.Header.Hash(),
Number: big.NewInt(0).Add(ancestor.Header.Number, big.NewInt(1)),
Number: ancestor.Header.Number + 1,
Digest: digest,
},
Body: types.Body([]types.Extrinsic{tx}),
Expand Down Expand Up @@ -535,15 +534,15 @@ func TestService_HandleRuntimeChanges(t *testing.T) {
newBlock1 := &types.Block{
Header: types.Header{
ParentHash: hash,
Number: big.NewInt(1),
Number: 1,
Digest: types.NewDigest()},
Body: *types.NewBody([]types.Extrinsic{[]byte("Old Runtime")}),
}

newBlockRTUpdate := &types.Block{
Header: types.Header{
ParentHash: hash,
Number: big.NewInt(1),
Number: 1,
Digest: digest,
},
Body: *types.NewBody([]types.Extrinsic{[]byte("Updated Runtime")}),
Expand Down Expand Up @@ -629,7 +628,7 @@ func TestService_HandleRuntimeChangesAfterCodeSubstitutes(t *testing.T) {
newBlock := &types.Block{
Header: types.Header{
ParentHash: blockHash,
Number: big.NewInt(1),
Number: 1,
Digest: types.NewDigest(),
},
Body: *body,
Expand Down Expand Up @@ -674,7 +673,7 @@ func TestTryQueryStore_WhenThereIsDataToRetrieve(t *testing.T) {
require.NoError(t, err)

header, err := types.NewHeader(s.blockState.GenesisHash(), storageStateTrie.MustRoot(),
common.Hash{}, big.NewInt(1), types.NewDigest())
common.Hash{}, 1, types.NewDigest())
require.NoError(t, err)

err = s.storageState.StoreTrie(storageStateTrie, header)
Expand Down Expand Up @@ -704,7 +703,7 @@ func TestTryQueryStore_WhenDoesNotHaveDataToRetrieve(t *testing.T) {
require.NoError(t, err)

header, err := types.NewHeader(s.blockState.GenesisHash(), storageStateTrie.MustRoot(),
common.Hash{}, big.NewInt(1), types.NewDigest())
common.Hash{}, 1, types.NewDigest())
require.NoError(t, err)

err = s.storageState.StoreTrie(storageStateTrie, header)
Expand Down Expand Up @@ -735,7 +734,7 @@ func TestTryQueryState_WhenDoesNotHaveStateRoot(t *testing.T) {
header, err := types.NewHeader(
s.blockState.GenesisHash(),
common.Hash{}, common.Hash{},
big.NewInt(1), types.NewDigest())
1, types.NewDigest())
require.NoError(t, err)

testBlock := &types.Block{
Expand Down Expand Up @@ -812,15 +811,15 @@ func TestQueryStorate_WhenBlocksHasData(t *testing.T) {

func createNewBlockAndStoreDataAtBlock(t *testing.T, s *Service,
key, value []byte, parentHash common.Hash,
number int64) *types.Block {
number uint) *types.Block {
t.Helper()

storageStateTrie, err := rtstorage.NewTrieState(trie.NewTrie(nil))
storageStateTrie.Set(key, value)
require.NoError(t, err)

header, err := types.NewHeader(parentHash, storageStateTrie.MustRoot(),
common.Hash{}, big.NewInt(number), types.NewDigest())
common.Hash{}, number, types.NewDigest())
require.NoError(t, err)

err = s.storageState.StoreTrie(storageStateTrie, header)
Expand Down
21 changes: 10 additions & 11 deletions dot/core/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ package core
import (
"context"
"errors"
"math/big"
"testing"

"github.com/ChainSafe/gossamer/dot/network"
Expand Down Expand Up @@ -206,7 +205,7 @@ func Test_Service_handleBlock(t *testing.T) {

testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

ctrl := gomock.NewController(t)
mockStorageState := NewMockStorageState(ctrl)
Expand All @@ -224,7 +223,7 @@ func Test_Service_handleBlock(t *testing.T) {

testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

ctrl := gomock.NewController(t)
mockStorageState := NewMockStorageState(ctrl)
Expand All @@ -247,7 +246,7 @@ func Test_Service_handleBlock(t *testing.T) {

testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

ctrl := gomock.NewController(t)
mockStorageState := NewMockStorageState(ctrl)
Expand All @@ -270,7 +269,7 @@ func Test_Service_handleBlock(t *testing.T) {

testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

ctrl := gomock.NewController(t)
mockStorageState := NewMockStorageState(ctrl)
Expand All @@ -297,7 +296,7 @@ func Test_Service_handleBlock(t *testing.T) {

testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

ctrl := gomock.NewController(t)
runtimeMock := new(mocksruntime.Instance)
Expand Down Expand Up @@ -327,7 +326,7 @@ func Test_Service_handleBlock(t *testing.T) {

testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

ctrl := gomock.NewController(t)
runtimeMock := new(mocksruntime.Instance)
Expand Down Expand Up @@ -381,7 +380,7 @@ func Test_Service_HandleBlockProduced(t *testing.T) {

testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21
block.Header.Digest = digest
msg := &network.BlockAnnounceMessage{
ParentHash: block.Header.ParentHash,
Expand Down Expand Up @@ -422,7 +421,7 @@ func Test_Service_maintainTransactionPool(t *testing.T) {
t.Parallel()
testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

validity := &transaction.Validity{
Priority: 0x3e8,
Expand Down Expand Up @@ -456,7 +455,7 @@ func Test_Service_maintainTransactionPool(t *testing.T) {
t.Parallel()
testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

validity := &transaction.Validity{
Priority: 0x3e8,
Expand Down Expand Up @@ -559,7 +558,7 @@ func Test_Service_handleBlocksAsync(t *testing.T) {

testHeader := types.NewEmptyHeader()
block := types.NewBlock(*testHeader, *types.NewBody([]types.Extrinsic{[]byte{21}}))
block.Header.Number = big.NewInt(21)
block.Header.Number = 21

ctrl := gomock.NewController(t)
runtimeMock := new(mocksruntime.Instance)
Expand Down
Loading

0 comments on commit 2086496

Please sign in to comment.