From 8db3565318acd336d3927db9adf67c0fd86e5c49 Mon Sep 17 00:00:00 2001 From: yperbasis Date: Fri, 13 Jan 2023 15:27:42 +0100 Subject: [PATCH 1/5] Withdrawal amount in GWei --- cmd/erigon-el/eth1/execution.go | 2 +- consensus/serenity/serenity.go | 5 ++++- core/rawdb/accessors_chain_test.go | 14 +++++++------- core/types/block_test.go | 4 ++-- core/types/gen_withdrawal_json.go | 10 ++++------ core/types/withdrawal.go | 20 ++++++++------------ core/types/withdrawal_test.go | 6 ++---- ethdb/privateapi/ethbackend.go | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- tests/exec_spec_test.go | 3 +++ 11 files changed, 36 insertions(+), 38 deletions(-) diff --git a/cmd/erigon-el/eth1/execution.go b/cmd/erigon-el/eth1/execution.go index c14cb5a73df..9fe7447dce5 100644 --- a/cmd/erigon-el/eth1/execution.go +++ b/cmd/erigon-el/eth1/execution.go @@ -83,7 +83,7 @@ func (e *Eth1Execution) InsertBodies(ctx context.Context, req *execution.InsertB Index: withdrawal.Index, Validator: withdrawal.ValidatorIndex, Address: gointerfaces.ConvertH160toAddress(withdrawal.Address), - Amount: *gointerfaces.ConvertH256ToUint256Int(withdrawal.Amount), + Amount: withdrawal.Amount, }) } diff --git a/consensus/serenity/serenity.go b/consensus/serenity/serenity.go index 8f41f1c0412..bb0bf699f4e 100644 --- a/consensus/serenity/serenity.go +++ b/consensus/serenity/serenity.go @@ -6,6 +6,8 @@ import ( "fmt" "math/big" + "github.com/holiman/uint256" + "github.com/ledgerwatch/erigon/common" "github.com/ledgerwatch/erigon/consensus" "github.com/ledgerwatch/erigon/consensus/aura" @@ -133,7 +135,8 @@ func (s *Serenity) Finalize(config *params.ChainConfig, header *types.Header, st } } for _, w := range withdrawals { - state.AddBalance(w.Address, &w.Amount) + amountInWei := new(uint256.Int).Mul(uint256.NewInt(w.Amount), uint256.NewInt(params.GWei)) + state.AddBalance(w.Address, amountInWei) } return txs, r, nil } diff --git a/core/rawdb/accessors_chain_test.go b/core/rawdb/accessors_chain_test.go index 8b5dcdc4e46..5cfaeb2cc62 100644 --- a/core/rawdb/accessors_chain_test.go +++ b/core/rawdb/accessors_chain_test.go @@ -24,16 +24,16 @@ import ( "math/big" "testing" - "github.com/holiman/uint256" "github.com/ledgerwatch/erigon-lib/kv/memdb" + "github.com/stretchr/testify/require" + "golang.org/x/crypto/sha3" + "github.com/ledgerwatch/erigon/common" "github.com/ledgerwatch/erigon/common/u256" "github.com/ledgerwatch/erigon/core/types" "github.com/ledgerwatch/erigon/crypto" "github.com/ledgerwatch/erigon/params" "github.com/ledgerwatch/erigon/rlp" - "github.com/stretchr/testify/require" - "golang.org/x/crypto/sha3" ) // Tests block header storage and retrieval operations. @@ -445,14 +445,14 @@ func TestBlockWithdrawalsStorage(t *testing.T) { Index: uint64(15), Validator: uint64(5500), Address: common.Address{0: 0xff}, - Amount: *uint256.NewInt(1000), + Amount: 1000, } w2 := types.Withdrawal{ Index: uint64(16), Validator: uint64(5501), Address: common.Address{0: 0xff}, - Amount: *uint256.NewInt(1001), + Amount: 1001, } withdrawals := make([]*types.Withdrawal, 0) @@ -522,13 +522,13 @@ func TestBlockWithdrawalsStorage(t *testing.T) { require.Equal(uint64(15), rw.Index) require.Equal(uint64(5500), rw.Validator) require.Equal(common.Address{0: 0xff}, rw.Address) - require.Equal(*uint256.NewInt(1000), rw.Amount) + require.Equal(uint64(1000), rw.Amount) require.NotNil(rw2) require.Equal(uint64(16), rw2.Index) require.Equal(uint64(5501), rw2.Validator) require.Equal(common.Address{0: 0xff}, rw2.Address) - require.Equal(*uint256.NewInt(1001), rw2.Amount) + require.Equal(uint64(1001), rw2.Amount) // Delete the block and verify the execution if err := TruncateBlocks(context.Background(), tx, block.NumberU64()); err != nil { diff --git a/core/types/block_test.go b/core/types/block_test.go index d976be00c54..bec0c8f13a8 100644 --- a/core/types/block_test.go +++ b/core/types/block_test.go @@ -407,13 +407,13 @@ func TestWithdrawalsEncoding(t *testing.T) { Index: 44555666, Validator: 89, Address: common.HexToAddress("0x690b9a9e9aa1c9db991c7721a92d351db4fac990"), - Amount: *uint256.NewInt(2 * params.Ether), + Amount: 2, } withdrawals[1] = &Withdrawal{ Index: 44555667, Validator: 37, Address: common.HexToAddress("0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5"), - Amount: *uint256.NewInt(5 * params.Ether), + Amount: 5_000_000_000, } block := NewBlock(&header, nil, nil, nil, withdrawals) diff --git a/core/types/gen_withdrawal_json.go b/core/types/gen_withdrawal_json.go index 50097abac93..5b701fde462 100644 --- a/core/types/gen_withdrawal_json.go +++ b/core/types/gen_withdrawal_json.go @@ -5,8 +5,6 @@ package types import ( "encoding/json" - "github.com/holiman/uint256" - "github.com/ledgerwatch/erigon/common" "github.com/ledgerwatch/erigon/common/hexutil" ) @@ -19,13 +17,13 @@ func (w Withdrawal) MarshalJSON() ([]byte, error) { Index hexutil.Uint64 `json:"index"` Validator hexutil.Uint64 `json:"validatorIndex"` Address common.Address `json:"address"` - Amount uint256.Int `json:"amount"` + Amount hexutil.Uint64 `json:"amount"` } var enc Withdrawal enc.Index = hexutil.Uint64(w.Index) enc.Validator = hexutil.Uint64(w.Validator) enc.Address = w.Address - enc.Amount = w.Amount + enc.Amount = hexutil.Uint64(w.Amount) return json.Marshal(&enc) } @@ -35,7 +33,7 @@ func (w *Withdrawal) UnmarshalJSON(input []byte) error { Index *hexutil.Uint64 `json:"index"` Validator *hexutil.Uint64 `json:"validatorIndex"` Address *common.Address `json:"address"` - Amount *uint256.Int `json:"amount"` + Amount *hexutil.Uint64 `json:"amount"` } var dec Withdrawal if err := json.Unmarshal(input, &dec); err != nil { @@ -51,7 +49,7 @@ func (w *Withdrawal) UnmarshalJSON(input []byte) error { w.Address = *dec.Address } if dec.Amount != nil { - w.Amount = *dec.Amount + w.Amount = uint64(*dec.Amount) } return nil } diff --git a/core/types/withdrawal.go b/core/types/withdrawal.go index 7bee9b833fe..b79ecceab62 100644 --- a/core/types/withdrawal.go +++ b/core/types/withdrawal.go @@ -21,8 +21,6 @@ import ( "fmt" "io" - "github.com/holiman/uint256" - "github.com/ledgerwatch/erigon/cl/cltypes/ssz_utils" "github.com/ledgerwatch/erigon/cl/merkle_tree" "github.com/ledgerwatch/erigon/common" @@ -38,7 +36,7 @@ type Withdrawal struct { Index uint64 `json:"index"` // monotonically increasing identifier issued by consensus layer Validator uint64 `json:"validatorIndex"` // index of validator associated with withdrawal Address common.Address `json:"address"` // target address for withdrawn ether - Amount uint256.Int `json:"amount"` // value of withdrawal in wei + Amount uint64 `json:"amount"` // value of withdrawal in GWei } func (obj *Withdrawal) EncodingSize() int { @@ -48,7 +46,7 @@ func (obj *Withdrawal) EncodingSize() int { encodingSize++ encodingSize += rlp.IntLenExcludingHead(obj.Validator) encodingSize++ - encodingSize += rlp.Uint256LenExcludingHead(&obj.Amount) + encodingSize += rlp.IntLenExcludingHead(obj.Amount) return encodingSize } @@ -75,7 +73,7 @@ func (obj *Withdrawal) EncodeRLP(w io.Writer) error { return err } - return obj.Amount.EncodeRLP(w) + return rlp.EncodeInt(obj.Amount, w, b[:]) } func (obj *Withdrawal) EncodeSSZ() []byte { @@ -83,8 +81,7 @@ func (obj *Withdrawal) EncodeSSZ() []byte { ssz_utils.MarshalUint64SSZ(buf, obj.Index) ssz_utils.MarshalUint64SSZ(buf[8:], obj.Validator) copy(buf[16:], obj.Address[:]) - // Supports only GWEI format. - ssz_utils.MarshalUint64SSZ(buf[36:], obj.Amount.Uint64()) + ssz_utils.MarshalUint64SSZ(buf[36:], obj.Amount) return buf } @@ -95,7 +92,7 @@ func (obj *Withdrawal) DecodeSSZ(buf []byte) error { obj.Index = ssz_utils.UnmarshalUint64SSZ(buf) obj.Validator = ssz_utils.UnmarshalUint64SSZ(buf[8:]) copy(obj.Address[:], buf[16:]) - obj.Amount = *uint256.NewInt(ssz_utils.UnmarshalUint64SSZ(buf[36:])) + obj.Amount = ssz_utils.UnmarshalUint64SSZ(buf[36:]) return nil } @@ -111,7 +108,7 @@ func (obj *Withdrawal) HashSSZ() ([32]byte, error) { // the [32]byte is temporar merkle_tree.Uint64Root(obj.Index), merkle_tree.Uint64Root(obj.Validator), addressLeaf, - merkle_tree.Uint64Root(obj.Amount.Uint64()), + merkle_tree.Uint64Root(obj.Amount), }, 4) } @@ -137,10 +134,9 @@ func (obj *Withdrawal) DecodeRLP(s *rlp.Stream) error { } copy(obj.Address[:], b) - if b, err = s.Uint256Bytes(); err != nil { + if obj.Amount, err = s.Uint(); err != nil { return fmt.Errorf("read Amount: %w", err) } - obj.Amount.SetBytes(b) return s.ListEnd() } @@ -149,7 +145,7 @@ func (obj *Withdrawal) DecodeRLP(s *rlp.Stream) error { type withdrawalMarshaling struct { Index hexutil.Uint64 Validator hexutil.Uint64 - Amount *hexutil.Big + Amount hexutil.Uint64 } // Withdrawals implements DerivableList for withdrawals. diff --git a/core/types/withdrawal_test.go b/core/types/withdrawal_test.go index 39d23ff1ed0..350f156a2f1 100644 --- a/core/types/withdrawal_test.go +++ b/core/types/withdrawal_test.go @@ -3,12 +3,10 @@ package types import ( "testing" - "github.com/holiman/uint256" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/ledgerwatch/erigon/common" - "github.com/ledgerwatch/erigon/common/u256" ) func TestWithdrawalsHash(t *testing.T) { @@ -16,7 +14,7 @@ func TestWithdrawalsHash(t *testing.T) { Index: 0, Validator: 0, Address: common.HexToAddress("0x6295ee1b4f6dd65047762f924ecd367c17eabf8f"), - Amount: *u256.Num1, + Amount: 1, } withdrawals := Withdrawals([]*Withdrawal{w}) hash := DeriveSha(withdrawals) @@ -32,7 +30,7 @@ var testWithdrawal = &Withdrawal{ Index: 9170781944418253065, Validator: 16033042974434771745, Address: common.HexToAddress("0xdbbcbcbeee17b2395d5d3f839fc1ba3559d1a73e"), - Amount: *uint256.NewInt(15157676145812061173), + Amount: 15157676145812061173, } func TestWithdrawalSSZ(t *testing.T) { diff --git a/ethdb/privateapi/ethbackend.go b/ethdb/privateapi/ethbackend.go index e5516b0e98f..a7b49b87aa7 100644 --- a/ethdb/privateapi/ethbackend.go +++ b/ethdb/privateapi/ethbackend.go @@ -722,7 +722,7 @@ func ConvertWithdrawalsFromRpc(in []*types2.Withdrawal) []*types.Withdrawal { Index: w.Index, Validator: w.ValidatorIndex, Address: gointerfaces.ConvertH160toAddress(w.Address), - Amount: *gointerfaces.ConvertH256ToUint256Int(w.Amount), + Amount: w.Amount, }) } return out @@ -735,7 +735,7 @@ func ConvertWithdrawalsToRpc(in []*types.Withdrawal) []*types2.Withdrawal { Index: w.Index, ValidatorIndex: w.Validator, Address: gointerfaces.ConvertAddressToH160(w.Address), - Amount: gointerfaces.ConvertUint256IntToH256(&w.Amount), + Amount: w.Amount, }) } return out diff --git a/go.mod b/go.mod index 77381ea46fa..a706c89d4fd 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/ledgerwatch/erigon go 1.18 require ( - github.com/ledgerwatch/erigon-lib v0.0.0-20230113043530-7c475cb52ecc + github.com/ledgerwatch/erigon-lib v0.0.0-20230113122151-7f8731e00b6f github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230106211435-2670b273bb55 github.com/ledgerwatch/log/v3 v3.7.0 github.com/ledgerwatch/secp256k1 v1.0.0 diff --git a/go.sum b/go.sum index 07a73fa3cd0..55ba5eac42e 100644 --- a/go.sum +++ b/go.sum @@ -565,8 +565,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3PYPwICLl+/9oulQauOuETfgFvhBDffs0= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/ledgerwatch/erigon-lib v0.0.0-20230113043530-7c475cb52ecc h1:If4hgp4pZKLARqvu6XZIW6tPJxLk13rbf1WPF06My1s= -github.com/ledgerwatch/erigon-lib v0.0.0-20230113043530-7c475cb52ecc/go.mod h1:vFTw08qI/7NHL3z4/vBlIXRylFgZlMbnTehf7WDbcJQ= +github.com/ledgerwatch/erigon-lib v0.0.0-20230113122151-7f8731e00b6f h1:3SFwHCM+iix5CHJGcxhki9zFQ+5y8FpSs8zUGcLA8uE= +github.com/ledgerwatch/erigon-lib v0.0.0-20230113122151-7f8731e00b6f/go.mod h1:hwA9j60yYOSATt3NUVHsBM4cZZq3nz8eMicujA/kKDo= github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230106211435-2670b273bb55 h1:4gY6eRXQiX0Te1oKTpsxj6MjXksQSSTHWiSh/j89sEY= github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230106211435-2670b273bb55/go.mod h1:3AuPxZc85jkehh/HA9h8gabv5MSi3kb/ddtzBsTVJFo= github.com/ledgerwatch/log/v3 v3.7.0 h1:aFPEZdwZx4jzA3+/Pf8wNDN5tCI0cIolq/kfvgcM+og= diff --git a/tests/exec_spec_test.go b/tests/exec_spec_test.go index 7ad629c6255..5cd27b70750 100644 --- a/tests/exec_spec_test.go +++ b/tests/exec_spec_test.go @@ -15,6 +15,9 @@ func TestExecutionSpec(t *testing.T) { dir := filepath.Join(".", "execution-spec-tests") + // TODO(yperbasis): re-fill and re-enable after Wei -> Gwei in geth + bt.skipLoad(`^withdrawals/withdrawals`) + // Failing because the fixture was filled by geth w/o EIP-3860 bt.skipLoad(`^withdrawals/withdrawals/withdrawals_newly_created_contract.json`) From 5fed72e7903f708e7a1cda3fa5cc19967703e177 Mon Sep 17 00:00:00 2001 From: yperbasis Date: Fri, 13 Jan 2023 16:59:57 +0100 Subject: [PATCH 2/5] Disable tests due to wei -> gwei --- tests/block_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/block_test.go b/tests/block_test.go index c9b7fa017fc..9dfbd951af5 100644 --- a/tests/block_test.go +++ b/tests/block_test.go @@ -38,6 +38,10 @@ func TestBlockchain(t *testing.T) { // For speedier CI-runs those are skipped. bt.skipLoad(`^GeneralStateTests/`) + // TODO(yperbasis): re-enable after the tests are updated to GWei + bt.skipLoad(`^EIPTests/bc4895-withdrawals/`) + bt.skipLoad(`^TransitionTests/bcMergeToShanghai/`) + // Currently it fails because SpawnStageHeaders doesn't accept any PoW blocks after PoS transition // TODO(yperbasis): make it work bt.skipLoad(`^TransitionTests/bcArrowGlacierToMerge/powToPosBlockRejection\.json`) From 51ec806fabf3157790258314dd1a19313b5e6d2f Mon Sep 17 00:00:00 2001 From: yperbasis Date: Mon, 16 Jan 2023 12:26:04 +0100 Subject: [PATCH 3/5] Update erigon-lib --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 01b623db768..51a13330f4c 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/ledgerwatch/erigon go 1.18 require ( - github.com/ledgerwatch/erigon-lib v0.0.0-20230113155238-61706714c391 + github.com/ledgerwatch/erigon-lib v0.0.0-20230116112253-5aca60716307 github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230106211435-2670b273bb55 github.com/ledgerwatch/log/v3 v3.7.0 github.com/ledgerwatch/secp256k1 v1.0.0 diff --git a/go.sum b/go.sum index 4219bae36fe..fe3dc7e05de 100644 --- a/go.sum +++ b/go.sum @@ -565,8 +565,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3PYPwICLl+/9oulQauOuETfgFvhBDffs0= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/ledgerwatch/erigon-lib v0.0.0-20230113155238-61706714c391 h1:X0Vz47I+Oiomie7R64KuzkjzANTZmD13xYTtyC3XGpg= -github.com/ledgerwatch/erigon-lib v0.0.0-20230113155238-61706714c391/go.mod h1:vFTw08qI/7NHL3z4/vBlIXRylFgZlMbnTehf7WDbcJQ= +github.com/ledgerwatch/erigon-lib v0.0.0-20230116112253-5aca60716307 h1:6klZmjLOds/oiObfFSPN5/pLEZpammUoLYF9M57dQ1s= +github.com/ledgerwatch/erigon-lib v0.0.0-20230116112253-5aca60716307/go.mod h1:hwA9j60yYOSATt3NUVHsBM4cZZq3nz8eMicujA/kKDo= github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230106211435-2670b273bb55 h1:4gY6eRXQiX0Te1oKTpsxj6MjXksQSSTHWiSh/j89sEY= github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230106211435-2670b273bb55/go.mod h1:3AuPxZc85jkehh/HA9h8gabv5MSi3kb/ddtzBsTVJFo= github.com/ledgerwatch/log/v3 v3.7.0 h1:aFPEZdwZx4jzA3+/Pf8wNDN5tCI0cIolq/kfvgcM+og= From 3a183791159539c9a57b7332f0340d3997cff56c Mon Sep 17 00:00:00 2001 From: yperbasis Date: Tue, 17 Jan 2023 10:58:21 +0100 Subject: [PATCH 4/5] Remove superseded test exclusion --- tests/exec_spec_test.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/exec_spec_test.go b/tests/exec_spec_test.go index 5cd27b70750..a4041efbc25 100644 --- a/tests/exec_spec_test.go +++ b/tests/exec_spec_test.go @@ -18,9 +18,6 @@ func TestExecutionSpec(t *testing.T) { // TODO(yperbasis): re-fill and re-enable after Wei -> Gwei in geth bt.skipLoad(`^withdrawals/withdrawals`) - // Failing because the fixture was filled by geth w/o EIP-3860 - bt.skipLoad(`^withdrawals/withdrawals/withdrawals_newly_created_contract.json`) - bt.walk(t, dir, func(t *testing.T, name string, test *BlockTest) { // import pre accounts & construct test genesis block & state root if err := bt.checkFailure(t, test.Run(t, false)); err != nil { From 5b3b5ba0de4fba506f25236c6bd7d50c4206d206 Mon Sep 17 00:00:00 2001 From: yperbasis Date: Tue, 17 Jan 2023 11:00:42 +0100 Subject: [PATCH 5/5] Update erigon-lib --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 65bdcf9fdee..9fe93123b29 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/ledgerwatch/erigon go 1.18 require ( - github.com/ledgerwatch/erigon-lib v0.0.0-20230117064926-4d298d0017b0 + github.com/ledgerwatch/erigon-lib v0.0.0-20230117095843-fc3dd4fd2789 github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230117072003-4cc5ebded386 github.com/ledgerwatch/log/v3 v3.7.0 github.com/ledgerwatch/secp256k1 v1.0.0 diff --git a/go.sum b/go.sum index a4dbc9586db..12305f16a06 100644 --- a/go.sum +++ b/go.sum @@ -565,8 +565,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3PYPwICLl+/9oulQauOuETfgFvhBDffs0= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/ledgerwatch/erigon-lib v0.0.0-20230117064926-4d298d0017b0 h1:eNvCZ1rQO//pQRoNW7VqwEO3YiP3TW8mcam7k4fTQfo= -github.com/ledgerwatch/erigon-lib v0.0.0-20230117064926-4d298d0017b0/go.mod h1:tsfqxwRd5LYjXQyrC085+61iHp6Vwi1nOhxjro3w0Wo= +github.com/ledgerwatch/erigon-lib v0.0.0-20230117095843-fc3dd4fd2789 h1:y/XlIJal2I99Eu/zQj6aM3oynxmK0Xc89nUG/WCMVsY= +github.com/ledgerwatch/erigon-lib v0.0.0-20230117095843-fc3dd4fd2789/go.mod h1:1UHFnZQCpr37W397IJf68OxYv3iQmBTU9D7t3LUHbPo= github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230117072003-4cc5ebded386 h1:dpTtuW3uRhwbS81yWRX1arSLDyCDFfe8MWGhXx5lGas= github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230117072003-4cc5ebded386/go.mod h1:3AuPxZc85jkehh/HA9h8gabv5MSi3kb/ddtzBsTVJFo= github.com/ledgerwatch/log/v3 v3.7.0 h1:aFPEZdwZx4jzA3+/Pf8wNDN5tCI0cIolq/kfvgcM+og=