From f1794ba2788baf34489847bfa9ca00e067507db0 Mon Sep 17 00:00:00 2001 From: FletcherMan Date: Fri, 15 Dec 2023 11:48:55 +0800 Subject: [PATCH 01/21] miner: eliminate the dead loop possibility for `newWorkLoop` and `mainLoop` (#28677) discard the intervalAdjust message if the channel is full --- miner/worker.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/miner/worker.go b/miner/worker.go index f68070281454..2ed91cc18781 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -1074,7 +1074,7 @@ func (w *worker) commitWork(interrupt *atomic.Int32, timestamp int64) { case err == nil: // The entire block is filled, decrease resubmit interval in case // of current interval is larger than the user-specified one. - w.resubmitAdjustCh <- &intervalAdjust{inc: false} + w.adjustResubmitInterval(&intervalAdjust{inc: false}) case errors.Is(err, errBlockInterruptedByRecommit): // Notify resubmit loop to increase resubmitting interval if the @@ -1084,10 +1084,10 @@ func (w *worker) commitWork(interrupt *atomic.Int32, timestamp int64) { if ratio < 0.1 { ratio = 0.1 } - w.resubmitAdjustCh <- &intervalAdjust{ + w.adjustResubmitInterval(&intervalAdjust{ ratio: ratio, inc: true, - } + }) case errors.Is(err, errBlockInterruptedByNewHead): // If the block building is interrupted by newhead event, discard it @@ -1169,6 +1169,15 @@ func (w *worker) isTTDReached(header *types.Header) bool { return td != nil && ttd != nil && td.Cmp(ttd) >= 0 } +// adjustResubmitInterval adjusts the resubmit interval. +func (w *worker) adjustResubmitInterval(message *intervalAdjust) { + select { + case w.resubmitAdjustCh <- message: + default: + log.Warn("the resubmitAdjustCh is full, discard the message") + } +} + // copyReceipts makes a deep copy of the given receipts. func copyReceipts(receipts []*types.Receipt) []*types.Receipt { result := make([]*types.Receipt, len(receipts)) From edc864f9ba186fd307d9c98c42136db6c9411cf9 Mon Sep 17 00:00:00 2001 From: alex <152680487+bodhi-crypo@users.noreply.github.com> Date: Mon, 18 Dec 2023 16:35:12 +0800 Subject: [PATCH 02/21] all: fix typos in comments (#28682) chore(core,eth):fix a couple of typos --- cmd/clef/pythonsigner.py | 2 +- core/txpool/blobpool/blobpool.go | 4 ++-- core/txpool/blobpool/blobpool_test.go | 2 +- core/txpool/blobpool/metrics.go | 2 +- core/vm/runtime/runtime_test.go | 2 +- eth/downloader/downloader.go | 2 +- eth/downloader/resultstore.go | 2 +- ethclient/gethclient/gethclient_test.go | 2 +- p2p/rlpx/rlpx_test.go | 2 +- p2p/simulations/network_test.go | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cmd/clef/pythonsigner.py b/cmd/clef/pythonsigner.py index b9ea1e406a89..5d0eb18dcc1f 100644 --- a/cmd/clef/pythonsigner.py +++ b/cmd/clef/pythonsigner.py @@ -91,7 +91,7 @@ def approveTx(self, req): {"jsonrpc":"2.0","id":20,"method":"ui_approveTx","params":[{"transaction":{"from":"0xDEADbEeF000000000000000000000000DeaDbeEf","to":"0xDEADbEeF000000000000000000000000DeaDbeEf","gas":"0x3e8","gasPrice":"0x5","maxFeePerGas":null,"maxPriorityFeePerGas":null,"value":"0x6","nonce":"0x1","data":"0x"},"call_info":null,"meta":{"remote":"clef binary","local":"main","scheme":"in-proc","User-Agent":"","Origin":""}}]} :param transaction: transaction info - :param call_info: info abou the call, e.g. if ABI info could not be + :param call_info: info about the call, e.g. if ABI info could not be :param meta: metadata about the request, e.g. where the call comes from :return: """ # noqa: E501 diff --git a/core/txpool/blobpool/blobpool.go b/core/txpool/blobpool/blobpool.go index 32c6c0e8feef..195697a8f6f7 100644 --- a/core/txpool/blobpool/blobpool.go +++ b/core/txpool/blobpool/blobpool.go @@ -738,7 +738,7 @@ func (p *BlobPool) offload(addr common.Address, nonce uint64, id uint64, inclusi } // Reset implements txpool.SubPool, allowing the blob pool's internal state to be -// kept in sync with the main transacion pool's internal state. +// kept in sync with the main transaction pool's internal state. func (p *BlobPool) Reset(oldHead, newHead *types.Header) { waitStart := time.Now() p.lock.Lock() @@ -972,7 +972,7 @@ func (p *BlobPool) reinject(addr common.Address, txhash common.Hash) error { } // SetGasTip implements txpool.SubPool, allowing the blob pool's gas requirements -// to be kept in sync with the main transacion pool's gas requirements. +// to be kept in sync with the main transaction pool's gas requirements. func (p *BlobPool) SetGasTip(tip *big.Int) { p.lock.Lock() defer p.lock.Unlock() diff --git a/core/txpool/blobpool/blobpool_test.go b/core/txpool/blobpool/blobpool_test.go index fa3e8edc9055..b709ad0e583f 100644 --- a/core/txpool/blobpool/blobpool_test.go +++ b/core/txpool/blobpool/blobpool_test.go @@ -594,7 +594,7 @@ func TestOpenDrops(t *testing.T) { verifyPoolInternals(t, pool) } -// Tests that transactions loaded from disk are indexed corrently. +// Tests that transactions loaded from disk are indexed correctly. // // - 1. Transactions must be groupped by sender, sorted by nonce // - 2. Eviction thresholds are calculated correctly for the sequences diff --git a/core/txpool/blobpool/metrics.go b/core/txpool/blobpool/metrics.go index 070cc5ca4712..587804cc6114 100644 --- a/core/txpool/blobpool/metrics.go +++ b/core/txpool/blobpool/metrics.go @@ -65,7 +65,7 @@ var ( pooltipGauge = metrics.NewRegisteredGauge("blobpool/pooltip", nil) // addwait/time, resetwait/time and getwait/time track the rough health of - // the pool and wether or not it's capable of keeping up with the load from + // the pool and whether or not it's capable of keeping up with the load from // the network. addwaitHist = metrics.NewRegisteredHistogram("blobpool/addwait", nil, metrics.NewExpDecaySample(1028, 0.015)) addtimeHist = metrics.NewRegisteredHistogram("blobpool/addtime", nil, metrics.NewExpDecaySample(1028, 0.015)) diff --git a/core/vm/runtime/runtime_test.go b/core/vm/runtime/runtime_test.go index 796d3b443414..e71760bb235c 100644 --- a/core/vm/runtime/runtime_test.go +++ b/core/vm/runtime/runtime_test.go @@ -671,7 +671,7 @@ func TestColdAccountAccessCost(t *testing.T) { for ii, op := range tracer.StructLogs() { t.Logf("%d: %v %d", ii, op.OpName(), op.GasCost) } - t.Fatalf("tescase %d, gas report wrong, step %d, have %d want %d", i, tc.step, have, want) + t.Fatalf("testcase %d, gas report wrong, step %d, have %d want %d", i, tc.step, have, want) } } } diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 2ca7e328c6c4..f1cfa92d5d69 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -576,7 +576,7 @@ func (d *Downloader) syncWithPeer(p *peerConnection, hash common.Hash, td, ttd * // For non-merged networks, if there is a checkpoint available, then calculate // the ancientLimit through that. Otherwise calculate the ancient limit through // the advertised height of the remote peer. This most is mostly a fallback for - // legacy networks, but should eventually be droppped. TODO(karalabe). + // legacy networks, but should eventually be dropped. TODO(karalabe). if beaconMode { // Beacon sync, use the latest finalized block as the ancient limit // or a reasonable height if no finalized block is yet announced. diff --git a/eth/downloader/resultstore.go b/eth/downloader/resultstore.go index 7f7f5a89e264..e4323c04ebc5 100644 --- a/eth/downloader/resultstore.go +++ b/eth/downloader/resultstore.go @@ -142,7 +142,7 @@ func (r *resultStore) HasCompletedItems() bool { // countCompleted returns the number of items ready for delivery, stopping at // the first non-complete item. // -// The mthod assumes (at least) rlock is held. +// The method assumes (at least) rlock is held. func (r *resultStore) countCompleted() int { // We iterate from the already known complete point, and see // if any more has completed since last count diff --git a/ethclient/gethclient/gethclient_test.go b/ethclient/gethclient/gethclient_test.go index a718246bd0dc..fdd94a7d734d 100644 --- a/ethclient/gethclient/gethclient_test.go +++ b/ethclient/gethclient/gethclient_test.go @@ -450,7 +450,7 @@ func testCallContract(t *testing.T, client *rpc.Client) { func TestOverrideAccountMarshal(t *testing.T) { om := map[common.Address]OverrideAccount{ {0x11}: { - // Zero-valued nonce is not overriddden, but simply dropped by the encoder. + // Zero-valued nonce is not overridden, but simply dropped by the encoder. Nonce: 0, }, {0xaa}: { diff --git a/p2p/rlpx/rlpx_test.go b/p2p/rlpx/rlpx_test.go index 28759f2b4948..136cb1b5bfca 100644 --- a/p2p/rlpx/rlpx_test.go +++ b/p2p/rlpx/rlpx_test.go @@ -421,7 +421,7 @@ func BenchmarkThroughput(b *testing.B) { } conn2.SetSnappy(true) if err := <-handshakeDone; err != nil { - b.Fatal("server hanshake error:", err) + b.Fatal("server handshake error:", err) } // Read N messages. diff --git a/p2p/simulations/network_test.go b/p2p/simulations/network_test.go index ab8cf19462e7..4ed1e4e6c33b 100644 --- a/p2p/simulations/network_test.go +++ b/p2p/simulations/network_test.go @@ -683,7 +683,7 @@ func triggerChecks(ctx context.Context, ids []enode.ID, trigger chan enode.ID, i } } -// \todo: refactor to implement shapshots +// \todo: refactor to implement snapshots // and connect configuration methods once these are moved from // swarm/network/simulations/connect.go func BenchmarkMinimalService(b *testing.B) { From 5b22a472d6aaaa17daf0543b5914ca1f2f5518a7 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 18 Dec 2023 10:47:21 +0100 Subject: [PATCH 03/21] p2p/discover: add liveness check in collectTableNodes (#28686) * p2p/discover: add liveness check in collectTableNodes * p2p/discover: fix test * p2p/discover: rename to appendLiveNodes * p2p/discover: add dedup logic back * p2p/discover: simplify * p2p/discover: fix issue found by test --- p2p/discover/table.go | 20 ++++++++++++++++++++ p2p/discover/table_test.go | 2 +- p2p/discover/table_util_test.go | 5 ++++- p2p/discover/v4_lookup_test.go | 6 +++--- p2p/discover/v4_udp_test.go | 2 +- p2p/discover/v5_udp.go | 17 ++++------------- p2p/discover/v5_udp_test.go | 8 ++++---- 7 files changed, 37 insertions(+), 23 deletions(-) diff --git a/p2p/discover/table.go b/p2p/discover/table.go index e6dafb0dcaa8..2b7a28708b8d 100644 --- a/p2p/discover/table.go +++ b/p2p/discover/table.go @@ -459,6 +459,26 @@ func (tab *Table) findnodeByID(target enode.ID, nresults int, preferLive bool) * return nodes } +// appendLiveNodes adds nodes at the given distance to the result slice. +func (tab *Table) appendLiveNodes(dist uint, result []*enode.Node) []*enode.Node { + if dist > 256 { + return result + } + if dist == 0 { + return append(result, tab.self()) + } + + tab.mutex.Lock() + defer tab.mutex.Unlock() + for _, n := range tab.bucketAtDistance(int(dist)).entries { + if n.livenessChecks >= 1 { + node := n.Node // avoid handing out pointer to struct field + result = append(result, &node) + } + } + return result +} + // len returns the number of nodes in the table. func (tab *Table) len() (n int) { tab.mutex.Lock() diff --git a/p2p/discover/table_test.go b/p2p/discover/table_test.go index 2781dd4225b6..3ba342225133 100644 --- a/p2p/discover/table_test.go +++ b/p2p/discover/table_test.go @@ -199,7 +199,7 @@ func TestTable_findnodeByID(t *testing.T) { tab, db := newTestTable(transport) defer db.Close() defer tab.close() - fillTable(tab, test.All) + fillTable(tab, test.All, true) // check that closest(Target, N) returns nodes result := tab.findnodeByID(test.Target, test.N, false).entries diff --git a/p2p/discover/table_util_test.go b/p2p/discover/table_util_test.go index 8f3813bdcf0f..d6309dfd6c69 100644 --- a/p2p/discover/table_util_test.go +++ b/p2p/discover/table_util_test.go @@ -109,8 +109,11 @@ func fillBucket(tab *Table, n *node) (last *node) { // fillTable adds nodes the table to the end of their corresponding bucket // if the bucket is not full. The caller must not hold tab.mutex. -func fillTable(tab *Table, nodes []*node) { +func fillTable(tab *Table, nodes []*node, setLive bool) { for _, n := range nodes { + if setLive { + n.livenessChecks = 1 + } tab.addSeenNode(n) } } diff --git a/p2p/discover/v4_lookup_test.go b/p2p/discover/v4_lookup_test.go index 1f9ad69d0a23..8867a5a8ac75 100644 --- a/p2p/discover/v4_lookup_test.go +++ b/p2p/discover/v4_lookup_test.go @@ -40,7 +40,7 @@ func TestUDPv4_Lookup(t *testing.T) { } // Seed table with initial node. - fillTable(test.table, []*node{wrapNode(lookupTestnet.node(256, 0))}) + fillTable(test.table, []*node{wrapNode(lookupTestnet.node(256, 0))}, true) // Start the lookup. resultC := make(chan []*enode.Node, 1) @@ -74,7 +74,7 @@ func TestUDPv4_LookupIterator(t *testing.T) { for i := range lookupTestnet.dists[256] { bootnodes[i] = wrapNode(lookupTestnet.node(256, i)) } - fillTable(test.table, bootnodes) + fillTable(test.table, bootnodes, true) go serveTestnet(test, lookupTestnet) // Create the iterator and collect the nodes it yields. @@ -109,7 +109,7 @@ func TestUDPv4_LookupIteratorClose(t *testing.T) { for i := range lookupTestnet.dists[256] { bootnodes[i] = wrapNode(lookupTestnet.node(256, i)) } - fillTable(test.table, bootnodes) + fillTable(test.table, bootnodes, true) go serveTestnet(test, lookupTestnet) it := test.udp.RandomNodes() diff --git a/p2p/discover/v4_udp_test.go b/p2p/discover/v4_udp_test.go index 53ecb1bc6e29..361e37962648 100644 --- a/p2p/discover/v4_udp_test.go +++ b/p2p/discover/v4_udp_test.go @@ -269,7 +269,7 @@ func TestUDPv4_findnode(t *testing.T) { } nodes.push(n, numCandidates) } - fillTable(test.table, nodes.entries) + fillTable(test.table, nodes.entries, false) // ensure there's a bond with the test node, // findnode won't be accepted otherwise. diff --git a/p2p/discover/v5_udp.go b/p2p/discover/v5_udp.go index 6ba7a9061882..8b3e33d37cf7 100644 --- a/p2p/discover/v5_udp.go +++ b/p2p/discover/v5_udp.go @@ -851,6 +851,7 @@ func (t *UDPv5) handleFindnode(p *v5wire.Findnode, fromID enode.ID, fromAddr *ne // collectTableNodes creates a FINDNODE result set for the given distances. func (t *UDPv5) collectTableNodes(rip net.IP, distances []uint, limit int) []*enode.Node { + var bn []*enode.Node var nodes []*enode.Node var processed = make(map[uint]struct{}) for _, dist := range distances { @@ -859,21 +860,11 @@ func (t *UDPv5) collectTableNodes(rip net.IP, distances []uint, limit int) []*en if seen || dist > 256 { continue } - - // Get the nodes. - var bn []*enode.Node - if dist == 0 { - bn = []*enode.Node{t.Self()} - } else if dist <= 256 { - t.tab.mutex.Lock() - bn = unwrapNodes(t.tab.bucketAtDistance(int(dist)).entries) - t.tab.mutex.Unlock() - } processed[dist] = struct{}{} - // Apply some pre-checks to avoid sending invalid nodes. - for _, n := range bn { - // TODO livenessChecks > 1 + for _, n := range t.tab.appendLiveNodes(dist, bn[:0]) { + // Apply some pre-checks to avoid sending invalid nodes. + // Note liveness is checked by appendLiveNodes. if netutil.CheckRelayIP(rip, n.IP()) != nil { continue } diff --git a/p2p/discover/v5_udp_test.go b/p2p/discover/v5_udp_test.go index 18d8aeac6dc7..eaa969ea8b69 100644 --- a/p2p/discover/v5_udp_test.go +++ b/p2p/discover/v5_udp_test.go @@ -159,9 +159,9 @@ func TestUDPv5_findnodeHandling(t *testing.T) { nodes253 := nodesAtDistance(test.table.self().ID(), 253, 16) nodes249 := nodesAtDistance(test.table.self().ID(), 249, 4) nodes248 := nodesAtDistance(test.table.self().ID(), 248, 10) - fillTable(test.table, wrapNodes(nodes253)) - fillTable(test.table, wrapNodes(nodes249)) - fillTable(test.table, wrapNodes(nodes248)) + fillTable(test.table, wrapNodes(nodes253), true) + fillTable(test.table, wrapNodes(nodes249), true) + fillTable(test.table, wrapNodes(nodes248), true) // Requesting with distance zero should return the node's own record. test.packetIn(&v5wire.Findnode{ReqID: []byte{0}, Distances: []uint{0}}) @@ -589,7 +589,7 @@ func TestUDPv5_lookup(t *testing.T) { // Seed table with initial node. initialNode := lookupTestnet.node(256, 0) - fillTable(test.table, []*node{wrapNode(initialNode)}) + fillTable(test.table, []*node{wrapNode(initialNode)}, true) // Start the lookup. resultC := make(chan []*enode.Node, 1) From 02766d349a14171b781b0afe083f6d898cf58c3b Mon Sep 17 00:00:00 2001 From: Sebastian Stammler Date: Mon, 18 Dec 2023 13:28:41 +0100 Subject: [PATCH 04/21] internal/flags: add missing flag types for auto-env-var generation (#28692) Certain flags, such as `--rpc.txfeecap` currently do not have an env-var auto-generated for them. This change adds three missing cli flag types to the auto env-var helper function to fix this. --- internal/flags/helpers.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/flags/helpers.go b/internal/flags/helpers.go index d4b8e373cc45..d9d1f790365e 100644 --- a/internal/flags/helpers.go +++ b/internal/flags/helpers.go @@ -105,7 +105,7 @@ func MigrateGlobalFlags(ctx *cli.Context) { func doMigrateFlags(ctx *cli.Context) { // Figure out if there are any aliases of commands. If there are, we want // to ignore them when iterating over the flags. - var aliases = make(map[string]bool) + aliases := make(map[string]bool) for _, fl := range ctx.Command.Flags { for _, alias := range fl.Names()[1:] { aliases[alias] = true @@ -239,15 +239,24 @@ func AutoEnvVars(flags []cli.Flag, prefix string) { case *cli.StringFlag: flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.StringSliceFlag: + flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.BoolFlag: flag.EnvVars = append(flag.EnvVars, envvar) case *cli.IntFlag: flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.Int64Flag: + flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.Uint64Flag: flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.Float64Flag: + flag.EnvVars = append(flag.EnvVars, envvar) + case *cli.DurationFlag: flag.EnvVars = append(flag.EnvVars, envvar) From 05bbc56677129c759a28330a22e1e6dc3b8ce8f5 Mon Sep 17 00:00:00 2001 From: jwasinger Date: Mon, 18 Dec 2023 20:56:27 +0800 Subject: [PATCH 05/21] cmd/evm: default to mirror mainnet forks enabled (#28691) cmd/evm: default to using dev chain config (all mainnet HFs activated at block/timestamp 0 --- cmd/evm/runner.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/evm/runner.go b/cmd/evm/runner.go index c9a870022a4c..f3ffb3ed9f3e 100644 --- a/cmd/evm/runner.go +++ b/cmd/evm/runner.go @@ -144,7 +144,7 @@ func runCmd(ctx *cli.Context) error { initialGas = genesisConfig.GasLimit } } else { - genesisConfig.Config = params.AllEthashProtocolChanges + genesisConfig.Config = params.AllDevChainProtocolChanges } db := rawdb.NewMemoryDatabase() From 553bafc12720d2a3eef396cfea20f0637fb41cc4 Mon Sep 17 00:00:00 2001 From: Martin HS Date: Mon, 18 Dec 2023 14:11:27 +0100 Subject: [PATCH 06/21] cmd/evm, cmd/clef, cmd/bootnode: fix / unify logging (#28696) This change fixes a problem with our non-core binaries: evm, clef, bootnode. First of all, they failed to convert from legacy loglevels 1 to 5, to the new slog loglevels -4 to 4. Secondly, the logging was actually setup in the init phase, and then overridden in the main. This is not needed for evm, since it used the same flag name as the main geth verbosity. Better to let the flags/internal handle the logging init. --- cmd/bootnode/main.go | 6 +++--- cmd/clef/main.go | 4 ++-- cmd/evm/internal/t8ntool/block.go | 7 ------- cmd/evm/internal/t8ntool/transaction.go | 7 ------- cmd/evm/internal/t8ntool/transition.go | 7 ------- cmd/evm/main.go | 3 --- 6 files changed, 5 insertions(+), 29 deletions(-) diff --git a/cmd/bootnode/main.go b/cmd/bootnode/main.go index 1660b43b74b6..350b85df1e60 100644 --- a/cmd/bootnode/main.go +++ b/cmd/bootnode/main.go @@ -32,7 +32,6 @@ import ( "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/nat" "github.com/ethereum/go-ethereum/p2p/netutil" - "golang.org/x/exp/slog" ) func main() { @@ -45,7 +44,7 @@ func main() { natdesc = flag.String("nat", "none", "port mapping mechanism (any|none|upnp|pmp|pmp:|extip:)") netrestrict = flag.String("netrestrict", "", "restrict network communication to the given IP networks (CIDR masks)") runv5 = flag.Bool("v5", false, "run a v5 topic discovery bootnode") - verbosity = flag.Int("verbosity", int(log.LvlInfo), "log verbosity (0-5)") + verbosity = flag.Int("verbosity", 3, "log verbosity (0-5)") vmodule = flag.String("vmodule", "", "log verbosity pattern") nodeKey *ecdsa.PrivateKey @@ -54,7 +53,8 @@ func main() { flag.Parse() glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) - glogger.Verbosity(slog.Level(*verbosity)) + slogVerbosity := log.FromLegacyLevel(*verbosity) + glogger.Verbosity(slogVerbosity) glogger.Vmodule(*vmodule) log.SetDefault(log.NewLogger(glogger)) diff --git a/cmd/clef/main.go b/cmd/clef/main.go index 27b7b707714d..234699136990 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -57,7 +57,6 @@ import ( "github.com/mattn/go-colorable" "github.com/mattn/go-isatty" "github.com/urfave/cli/v2" - "golang.org/x/exp/slog" ) const legalWarning = ` @@ -493,7 +492,8 @@ func initialize(c *cli.Context) error { if usecolor { output = colorable.NewColorable(logOutput) } - log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(output, slog.Level(c.Int(logLevelFlag.Name)), usecolor))) + verbosity := log.FromLegacyLevel(c.Int(logLevelFlag.Name)) + log.SetDefault(log.NewLogger(log.NewTerminalHandlerWithLevel(output, verbosity, usecolor))) return nil } diff --git a/cmd/evm/internal/t8ntool/block.go b/cmd/evm/internal/t8ntool/block.go index 429ae12c54fb..a2dc4734372b 100644 --- a/cmd/evm/internal/t8ntool/block.go +++ b/cmd/evm/internal/t8ntool/block.go @@ -30,10 +30,8 @@ import ( "github.com/ethereum/go-ethereum/consensus/clique" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rlp" "github.com/urfave/cli/v2" - "golang.org/x/exp/slog" ) //go:generate go run github.com/fjl/gencodec -type header -field-override headerMarshaling -out gen_header.go @@ -216,11 +214,6 @@ func (i *bbInput) sealClique(block *types.Block) (*types.Block, error) { // BuildBlock constructs a block from the given inputs. func BuildBlock(ctx *cli.Context) error { - // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) - glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) - log.SetDefault(log.NewLogger(glogger)) - baseDir, err := createBasedir(ctx) if err != nil { return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err)) diff --git a/cmd/evm/internal/t8ntool/transaction.go b/cmd/evm/internal/t8ntool/transaction.go index e1c98c7fe265..8533b7863769 100644 --- a/cmd/evm/internal/t8ntool/transaction.go +++ b/cmd/evm/internal/t8ntool/transaction.go @@ -28,12 +28,10 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/tests" "github.com/urfave/cli/v2" - "golang.org/x/exp/slog" ) type result struct { @@ -66,11 +64,6 @@ func (r *result) MarshalJSON() ([]byte, error) { } func Transaction(ctx *cli.Context) error { - // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) - glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) - log.SetDefault(log.NewLogger(glogger)) - var ( err error ) diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index a01dfedab9f6..0a9c555cff2d 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -24,8 +24,6 @@ import ( "os" "path" - "golang.org/x/exp/slog" - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/consensus/misc/eip1559" @@ -82,11 +80,6 @@ type input struct { } func Transition(ctx *cli.Context) error { - // Configure the go-ethereum logger - glogger := log.NewGlogHandler(log.NewTerminalHandler(os.Stderr, false)) - glogger.Verbosity(slog.Level(ctx.Int(VerbosityFlag.Name))) - log.SetDefault(log.NewLogger(glogger)) - var ( err error tracer vm.EVMLogger diff --git a/cmd/evm/main.go b/cmd/evm/main.go index ef5d25418d52..f4868568054e 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -158,7 +158,6 @@ var stateTransitionCommand = &cli.Command{ t8ntool.ForknameFlag, t8ntool.ChainIDFlag, t8ntool.RewardFlag, - t8ntool.VerbosityFlag, }, } @@ -171,7 +170,6 @@ var transactionCommand = &cli.Command{ t8ntool.InputTxsFlag, t8ntool.ChainIDFlag, t8ntool.ForknameFlag, - t8ntool.VerbosityFlag, }, } @@ -188,7 +186,6 @@ var blockBuilderCommand = &cli.Command{ t8ntool.InputWithdrawalsFlag, t8ntool.InputTxsRlpFlag, t8ntool.SealCliqueFlag, - t8ntool.VerbosityFlag, }, } From c18c5c3d9297195a6f6b05076ae7940d45ab6846 Mon Sep 17 00:00:00 2001 From: Delweng Date: Mon, 18 Dec 2023 22:16:25 +0800 Subject: [PATCH 07/21] cmd/evm: t8n support custom tracers (#28557) This change implements ability for the `evm t8n` tool to use custom tracers; either 'native' golang tracers or javascript tracers. --- cmd/evm/internal/t8ntool/execution.go | 2 +- cmd/evm/internal/t8ntool/flags.go | 18 +++--- cmd/evm/internal/t8ntool/tracewriter.go | 81 +++++++++++++++++++++++++ cmd/evm/internal/t8ntool/transition.go | 61 +++++++------------ cmd/evm/main.go | 8 ++- 5 files changed, 119 insertions(+), 51 deletions(-) create mode 100644 cmd/evm/internal/t8ntool/tracewriter.go diff --git a/cmd/evm/internal/t8ntool/execution.go b/cmd/evm/internal/t8ntool/execution.go index 5cac5f07f886..a4ffd09e4fef 100644 --- a/cmd/evm/internal/t8ntool/execution.go +++ b/cmd/evm/internal/t8ntool/execution.go @@ -117,7 +117,7 @@ type rejectedTx struct { // Apply applies a set of transactions to a pre-state func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, txIt txIterator, miningReward int64, - getTracerFn func(txIndex int, txHash common.Hash) (tracer vm.EVMLogger, err error)) (*state.StateDB, *ExecutionResult, []byte, error) { + getTracerFn func(txIndex int, txHash common.Hash) (vm.EVMLogger, error)) (*state.StateDB, *ExecutionResult, []byte, error) { // Capture errors for BLOCKHASH operation, if we haven't been supplied the // required blockhashes var hashError error diff --git a/cmd/evm/internal/t8ntool/flags.go b/cmd/evm/internal/t8ntool/flags.go index de19dbc851ef..c2eca8cc217d 100644 --- a/cmd/evm/internal/t8ntool/flags.go +++ b/cmd/evm/internal/t8ntool/flags.go @@ -28,12 +28,15 @@ import ( var ( TraceFlag = &cli.BoolFlag{ Name: "trace", - Usage: "Output full trace logs to files .jsonl", + Usage: "Configures the use of the JSON opcode tracer. This tracer emits traces to files as trace--.jsonl", } - TraceDisableMemoryFlag = &cli.BoolFlag{ - Name: "trace.nomemory", - Value: true, - Usage: "Disable full memory dump in traces (deprecated)", + TraceTracerFlag = &cli.StringFlag{ + Name: "trace.tracer", + Usage: "Configures the use of a custom tracer, e.g native or js tracers. Examples are callTracer and 4byteTracer. These tracers emit results into files as trace--.json", + } + TraceTracerConfigFlag = &cli.StringFlag{ + Name: "trace.jsonconfig", + Usage: "The configurations for the custom tracer specified by --trace.tracer. If provided, must be in JSON format", } TraceEnableMemoryFlag = &cli.BoolFlag{ Name: "trace.memory", @@ -43,11 +46,6 @@ var ( Name: "trace.nostack", Usage: "Disable stack output in traces", } - TraceDisableReturnDataFlag = &cli.BoolFlag{ - Name: "trace.noreturndata", - Value: true, - Usage: "Disable return data output in traces (deprecated)", - } TraceEnableReturnDataFlag = &cli.BoolFlag{ Name: "trace.returndata", Usage: "Enable return data output in traces", diff --git a/cmd/evm/internal/t8ntool/tracewriter.go b/cmd/evm/internal/t8ntool/tracewriter.go new file mode 100644 index 000000000000..e4efad112f74 --- /dev/null +++ b/cmd/evm/internal/t8ntool/tracewriter.go @@ -0,0 +1,81 @@ +// Copyright 2020 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +package t8ntool + +import ( + "encoding/json" + "io" + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers" + "github.com/ethereum/go-ethereum/log" +) + +// traceWriter is an vm.EVMLogger which also holds an inner logger/tracer. +// When the TxEnd event happens, the inner tracer result is written to the file, and +// the file is closed. +type traceWriter struct { + inner vm.EVMLogger + f io.WriteCloser +} + +// Compile-time interface check +var _ = vm.EVMLogger((*traceWriter)(nil)) + +func (t *traceWriter) CaptureTxEnd(restGas uint64) { + t.inner.CaptureTxEnd(restGas) + defer t.f.Close() + + if tracer, ok := t.inner.(tracers.Tracer); ok { + result, err := tracer.GetResult() + if err != nil { + log.Warn("Error in tracer", "err", err) + return + } + err = json.NewEncoder(t.f).Encode(result) + if err != nil { + log.Warn("Error writing tracer output", "err", err) + return + } + } +} + +func (t *traceWriter) CaptureTxStart(gasLimit uint64) { t.inner.CaptureTxStart(gasLimit) } +func (t *traceWriter) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { + t.inner.CaptureStart(env, from, to, create, input, gas, value) +} + +func (t *traceWriter) CaptureEnd(output []byte, gasUsed uint64, err error) { + t.inner.CaptureEnd(output, gasUsed, err) +} + +func (t *traceWriter) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { + t.inner.CaptureEnter(typ, from, to, input, gas, value) +} + +func (t *traceWriter) CaptureExit(output []byte, gasUsed uint64, err error) { + t.inner.CaptureExit(output, gasUsed, err) +} + +func (t *traceWriter) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { + t.inner.CaptureState(pc, op, gas, cost, scope, rData, depth, err) +} +func (t *traceWriter) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { + t.inner.CaptureFault(pc, op, gas, cost, scope, depth, err) +} diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index 0a9c555cff2d..c8ba69f40f42 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -31,6 +31,7 @@ import ( "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" + "github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/eth/tracers/logger" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" @@ -80,57 +81,43 @@ type input struct { } func Transition(ctx *cli.Context) error { - var ( - err error - tracer vm.EVMLogger - ) - var getTracer func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) + var getTracer = func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) { return nil, nil } baseDir, err := createBasedir(ctx) if err != nil { return NewError(ErrorIO, fmt.Errorf("failed creating output basedir: %v", err)) } - if ctx.Bool(TraceFlag.Name) { - if ctx.IsSet(TraceDisableMemoryFlag.Name) && ctx.IsSet(TraceEnableMemoryFlag.Name) { - return NewError(ErrorConfig, fmt.Errorf("can't use both flags --%s and --%s", TraceDisableMemoryFlag.Name, TraceEnableMemoryFlag.Name)) - } - if ctx.IsSet(TraceDisableReturnDataFlag.Name) && ctx.IsSet(TraceEnableReturnDataFlag.Name) { - return NewError(ErrorConfig, fmt.Errorf("can't use both flags --%s and --%s", TraceDisableReturnDataFlag.Name, TraceEnableReturnDataFlag.Name)) - } - if ctx.IsSet(TraceDisableMemoryFlag.Name) { - log.Warn(fmt.Sprintf("--%s has been deprecated in favour of --%s", TraceDisableMemoryFlag.Name, TraceEnableMemoryFlag.Name)) - } - if ctx.IsSet(TraceDisableReturnDataFlag.Name) { - log.Warn(fmt.Sprintf("--%s has been deprecated in favour of --%s", TraceDisableReturnDataFlag.Name, TraceEnableReturnDataFlag.Name)) - } + + if ctx.Bool(TraceFlag.Name) { // JSON opcode tracing // Configure the EVM logger logConfig := &logger.Config{ DisableStack: ctx.Bool(TraceDisableStackFlag.Name), - EnableMemory: !ctx.Bool(TraceDisableMemoryFlag.Name) || ctx.Bool(TraceEnableMemoryFlag.Name), - EnableReturnData: !ctx.Bool(TraceDisableReturnDataFlag.Name) || ctx.Bool(TraceEnableReturnDataFlag.Name), + EnableMemory: ctx.Bool(TraceEnableMemoryFlag.Name), + EnableReturnData: ctx.Bool(TraceEnableReturnDataFlag.Name), Debug: true, } - var prevFile *os.File - // This one closes the last file - defer func() { - if prevFile != nil { - prevFile.Close() - } - }() getTracer = func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) { - if prevFile != nil { - prevFile.Close() - } traceFile, err := os.Create(path.Join(baseDir, fmt.Sprintf("trace-%d-%v.jsonl", txIndex, txHash.String()))) if err != nil { return nil, NewError(ErrorIO, fmt.Errorf("failed creating trace-file: %v", err)) } - prevFile = traceFile - return logger.NewJSONLogger(logConfig, traceFile), nil + return &traceWriter{logger.NewJSONLogger(logConfig, traceFile), traceFile}, nil } - } else { - getTracer = func(txIndex int, txHash common.Hash) (tracer vm.EVMLogger, err error) { - return nil, nil + } else if ctx.IsSet(TraceTracerFlag.Name) { + var config json.RawMessage + if ctx.IsSet(TraceTracerConfigFlag.Name) { + config = []byte(ctx.String(TraceTracerConfigFlag.Name)) + } + getTracer = func(txIndex int, txHash common.Hash) (vm.EVMLogger, error) { + traceFile, err := os.Create(path.Join(baseDir, fmt.Sprintf("trace-%d-%v.json", txIndex, txHash.String()))) + if err != nil { + return nil, NewError(ErrorIO, fmt.Errorf("failed creating trace-file: %v", err)) + } + tracer, err := tracers.DefaultDirectory.New(ctx.String(TraceTracerFlag.Name), nil, config) + if err != nil { + return nil, NewError(ErrorConfig, fmt.Errorf("failed instantiating tracer: %w", err)) + } + return &traceWriter{tracer, traceFile}, nil } } // We need to load three things: alloc, env and transactions. May be either in @@ -169,9 +156,7 @@ func Transition(ctx *cli.Context) error { } prestate.Env = *inputData.Env - vmConfig := vm.Config{ - Tracer: tracer, - } + vmConfig := vm.Config{} // Construct the chainconfig var chainConfig *params.ChainConfig if cConf, extraEips, err := tests.GetChainConfig(ctx.String(ForknameFlag.Name)); err != nil { diff --git a/cmd/evm/main.go b/cmd/evm/main.go index f4868568054e..c3e6a4af91ba 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -26,6 +26,10 @@ import ( "github.com/ethereum/go-ethereum/internal/debug" "github.com/ethereum/go-ethereum/internal/flags" "github.com/urfave/cli/v2" + + // Force-load the tracer engines to trigger registration + _ "github.com/ethereum/go-ethereum/eth/tracers/js" + _ "github.com/ethereum/go-ethereum/eth/tracers/native" ) var ( @@ -143,10 +147,10 @@ var stateTransitionCommand = &cli.Command{ Action: t8ntool.Transition, Flags: []cli.Flag{ t8ntool.TraceFlag, - t8ntool.TraceDisableMemoryFlag, + t8ntool.TraceTracerFlag, + t8ntool.TraceTracerConfigFlag, t8ntool.TraceEnableMemoryFlag, t8ntool.TraceDisableStackFlag, - t8ntool.TraceDisableReturnDataFlag, t8ntool.TraceEnableReturnDataFlag, t8ntool.OutputBasedir, t8ntool.OutputAllocFlag, From a18b845ecda84968125c09f054deb49773cd8cfe Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 18 Dec 2023 18:53:47 +0100 Subject: [PATCH 08/21] params: release go-ethereum v1.13.6 stable --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index bcab461a4358..636f95bad8eb 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 5 // Patch version component of the current release - VersionMeta = "unstable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 6 // Patch version component of the current release + VersionMeta = "stable" // Version metadata to append to the version string ) // Version holds the textual version string. From 4410c1416abce38925c60550bf2bfb7f7db5c3f5 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Mon, 18 Dec 2023 19:10:11 +0100 Subject: [PATCH 09/21] params: begin v1.13.7 release cycle --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index 636f95bad8eb..ef3c47e7acba 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 6 // Patch version component of the current release - VersionMeta = "stable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 7 // Patch version component of the current release + VersionMeta = "unstable" // Version metadata to append to the version string ) // Version holds the textual version string. From 54a400ee717caf44603fac390314747c5592ee1b Mon Sep 17 00:00:00 2001 From: Delweng Date: Tue, 19 Dec 2023 03:09:41 +0800 Subject: [PATCH 10/21] internal/ethapi: ethSendTransaction check baseFee (#27834) If the EIP-1559 is activated, reject 0-priced transactions in the rpc level --- internal/ethapi/transaction_args.go | 33 +++++++++++++++++------- internal/ethapi/transaction_args_test.go | 22 ++++++++++++++++ 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/internal/ethapi/transaction_args.go b/internal/ethapi/transaction_args.go index e4cf81a3f4c8..aaf2c05d8905 100644 --- a/internal/ethapi/transaction_args.go +++ b/internal/ethapi/transaction_args.go @@ -137,20 +137,35 @@ func (args *TransactionArgs) setFeeDefaults(ctx context.Context, b Backend) erro if args.GasPrice != nil && (args.MaxFeePerGas != nil || args.MaxPriorityFeePerGas != nil) { return errors.New("both gasPrice and (maxFeePerGas or maxPriorityFeePerGas) specified") } - // If the tx has completely specified a fee mechanism, no default is needed. This allows users - // who are not yet synced past London to get defaults for other tx values. See - // https://github.com/ethereum/go-ethereum/pull/23274 for more information. + // If the tx has completely specified a fee mechanism, no default is needed. + // This allows users who are not yet synced past London to get defaults for + // other tx values. See https://github.com/ethereum/go-ethereum/pull/23274 + // for more information. eip1559ParamsSet := args.MaxFeePerGas != nil && args.MaxPriorityFeePerGas != nil - if (args.GasPrice != nil && !eip1559ParamsSet) || (args.GasPrice == nil && eip1559ParamsSet) { - // Sanity check the EIP-1559 fee parameters if present. - if args.GasPrice == nil && args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { + + // Sanity check the EIP-1559 fee parameters if present. + if args.GasPrice == nil && eip1559ParamsSet { + if args.MaxFeePerGas.ToInt().Sign() == 0 { + return errors.New("maxFeePerGas must be non-zero") + } + if args.MaxFeePerGas.ToInt().Cmp(args.MaxPriorityFeePerGas.ToInt()) < 0 { return fmt.Errorf("maxFeePerGas (%v) < maxPriorityFeePerGas (%v)", args.MaxFeePerGas, args.MaxPriorityFeePerGas) } - return nil + return nil // No need to set anything, user already set MaxFeePerGas and MaxPriorityFeePerGas } - // Now attempt to fill in default value depending on whether London is active or not. + // Sanity check the non-EIP-1559 fee parameters. head := b.CurrentHeader() - if b.ChainConfig().IsLondon(head.Number) { + isLondon := b.ChainConfig().IsLondon(head.Number) + if args.GasPrice != nil && !eip1559ParamsSet { + // Zero gas-price is not allowed after London fork + if args.GasPrice.ToInt().Sign() == 0 && isLondon { + return errors.New("gasPrice must be non-zero after london fork") + } + return nil // No need to set anything, user already set GasPrice + } + + // Now attempt to fill in default value depending on whether London is active or not. + if isLondon { // London is active, set maxPriorityFeePerGas and maxFeePerGas. if err := args.setLondonFeeDefaults(ctx, head, b); err != nil { return err diff --git a/internal/ethapi/transaction_args_test.go b/internal/ethapi/transaction_args_test.go index 9dc58bdeb525..ab7c2f70edfa 100644 --- a/internal/ethapi/transaction_args_test.go +++ b/internal/ethapi/transaction_args_test.go @@ -52,6 +52,7 @@ func TestSetFeeDefaults(t *testing.T) { var ( b = newBackendMock() + zero = (*hexutil.Big)(big.NewInt(0)) fortytwo = (*hexutil.Big)(big.NewInt(42)) maxFee = (*hexutil.Big)(new(big.Int).Add(new(big.Int).Mul(b.current.BaseFee, big.NewInt(2)), fortytwo.ToInt())) al = &types.AccessList{types.AccessTuple{Address: common.Address{0xaa}, StorageKeys: []common.Hash{{0x01}}}} @@ -66,6 +67,13 @@ func TestSetFeeDefaults(t *testing.T) { &TransactionArgs{GasPrice: fortytwo}, nil, }, + { + "legacy tx pre-London with zero price", + false, + &TransactionArgs{GasPrice: zero}, + &TransactionArgs{GasPrice: zero}, + nil, + }, { "legacy tx post-London, explicit gas price", true, @@ -73,6 +81,13 @@ func TestSetFeeDefaults(t *testing.T) { &TransactionArgs{GasPrice: fortytwo}, nil, }, + { + "legacy tx post-London with zero price", + true, + &TransactionArgs{GasPrice: zero}, + nil, + errors.New("gasPrice must be non-zero after london fork"), + }, // Access list txs { @@ -161,6 +176,13 @@ func TestSetFeeDefaults(t *testing.T) { nil, errors.New("maxFeePerGas (0x7) < maxPriorityFeePerGas (0x2a)"), }, + { + "dynamic fee tx post-London, explicit gas price", + true, + &TransactionArgs{MaxFeePerGas: zero, MaxPriorityFeePerGas: zero}, + nil, + errors.New("maxFeePerGas must be non-zero"), + }, // Misc { From cd58897f18fdb12c5a1d41f8e73612c0d296211f Mon Sep 17 00:00:00 2001 From: wangyifan Date: Mon, 18 Dec 2023 11:10:54 -0800 Subject: [PATCH 11/21] core/rawdb: implement size reporting for live items in freezer_table (#28525) This is the fix to issue #27483. A new hiddenBytes() is introduced to calculate the byte size of hidden items in the freezer table. When reporting the size of the freezer table, size of the hidden items will be subtracted from the total size. --------- Co-authored-by: Yifan Co-authored-by: Gary Rong --- core/rawdb/freezer_table.go | 39 ++++++++++++++++++++++++-------- core/rawdb/freezer_table_test.go | 33 +++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/core/rawdb/freezer_table.go b/core/rawdb/freezer_table.go index 61436bf93272..4b9d510e8285 100644 --- a/core/rawdb/freezer_table.go +++ b/core/rawdb/freezer_table.go @@ -467,6 +467,20 @@ func (t *freezerTable) truncateHead(items uint64) error { return nil } +// sizeHidden returns the total data size of hidden items in the freezer table. +// This function assumes the lock is already held. +func (t *freezerTable) sizeHidden() (uint64, error) { + hidden, offset := t.itemHidden.Load(), t.itemOffset.Load() + if hidden <= offset { + return 0, nil + } + indices, err := t.getIndices(hidden-1, 1) + if err != nil { + return 0, err + } + return uint64(indices[1].offset), nil +} + // truncateTail discards any recent data before the provided threshold number. func (t *freezerTable) truncateTail(items uint64) error { t.lock.Lock() @@ -495,6 +509,12 @@ func (t *freezerTable) truncateTail(items uint64) error { newTail.unmarshalBinary(buffer) newTailId = newTail.filenum } + // Save the old size for metrics tracking. This needs to be done + // before any updates to either itemHidden or itemOffset. + oldSize, err := t.sizeNolock() + if err != nil { + return err + } // Update the virtual tail marker and hidden these entries in table. t.itemHidden.Store(items) if err := writeMetadata(t.meta, newMetadata(items)); err != nil { @@ -509,18 +529,12 @@ func (t *freezerTable) truncateTail(items uint64) error { if t.tailId > newTailId { return fmt.Errorf("invalid index, tail-file %d, item-file %d", t.tailId, newTailId) } - // Hidden items exceed the current tail file, drop the relevant - // data files. We need to truncate, save the old size for metrics - // tracking. - oldSize, err := t.sizeNolock() - if err != nil { - return err - } // Count how many items can be deleted from the file. var ( newDeleted = items deleted = t.itemOffset.Load() ) + // Hidden items exceed the current tail file, drop the relevant data files. for current := items - 1; current >= deleted; current -= 1 { if _, err := t.index.ReadAt(buffer, int64((current-deleted+1)*indexEntrySize)); err != nil { return err @@ -680,6 +694,7 @@ func (t *freezerTable) releaseFilesBefore(num uint32, remove bool) { func (t *freezerTable) getIndices(from, count uint64) ([]*indexEntry, error) { // Apply the table-offset from = from - t.itemOffset.Load() + // For reading N items, we need N+1 indices. buffer := make([]byte, (count+1)*indexEntrySize) if _, err := t.index.ReadAt(buffer, int64(from*indexEntrySize)); err != nil { @@ -870,14 +885,18 @@ func (t *freezerTable) size() (uint64, error) { return t.sizeNolock() } -// sizeNolock returns the total data size in the freezer table without obtaining -// the mutex first. +// sizeNolock returns the total data size in the freezer table. This function +// assumes the lock is already held. func (t *freezerTable) sizeNolock() (uint64, error) { stat, err := t.index.Stat() if err != nil { return 0, err } - total := uint64(t.maxFileSize)*uint64(t.headId-t.tailId) + uint64(t.headBytes) + uint64(stat.Size()) + hidden, err := t.sizeHidden() + if err != nil { + return 0, err + } + total := uint64(t.maxFileSize)*uint64(t.headId-t.tailId) + uint64(t.headBytes) + uint64(stat.Size()) - hidden return total, nil } diff --git a/core/rawdb/freezer_table_test.go b/core/rawdb/freezer_table_test.go index 939d0939464d..4471463932fe 100644 --- a/core/rawdb/freezer_table_test.go +++ b/core/rawdb/freezer_table_test.go @@ -658,6 +658,13 @@ func TestFreezerOffset(t *testing.T) { } } +func assertTableSize(t *testing.T, f *freezerTable, size int) { + t.Helper() + if got, err := f.size(); got != uint64(size) { + t.Fatalf("expected size of %d bytes, got %d, err: %v", size, got, err) + } +} + func TestTruncateTail(t *testing.T) { t.Parallel() rm, wm, sg := metrics.NewMeter(), metrics.NewMeter(), metrics.NewGauge() @@ -692,6 +699,9 @@ func TestTruncateTail(t *testing.T) { 5: getChunk(20, 0xaa), 6: getChunk(20, 0x11), }) + // maxFileSize*fileCount + headBytes + indexFileSize - hiddenBytes + expected := 20*7 + 48 - 0 + assertTableSize(t, f, expected) // truncate single element( item 0 ), deletion is only supported at file level f.truncateTail(1) @@ -707,6 +717,8 @@ func TestTruncateTail(t *testing.T) { 5: getChunk(20, 0xaa), 6: getChunk(20, 0x11), }) + expected = 20*7 + 48 - 20 + assertTableSize(t, f, expected) // Reopen the table, the deletion information should be persisted as well f.Close() @@ -739,6 +751,8 @@ func TestTruncateTail(t *testing.T) { 5: getChunk(20, 0xaa), 6: getChunk(20, 0x11), }) + expected = 20*5 + 36 - 0 + assertTableSize(t, f, expected) // Reopen the table, the above testing should still pass f.Close() @@ -760,6 +774,23 @@ func TestTruncateTail(t *testing.T) { 6: getChunk(20, 0x11), }) + // truncate 3 more elements( item 2, 3, 4), the file 1 should be deleted + // file 2 should only contain item 5 + f.truncateTail(5) + checkRetrieveError(t, f, map[uint64]error{ + 0: errOutOfBounds, + 1: errOutOfBounds, + 2: errOutOfBounds, + 3: errOutOfBounds, + 4: errOutOfBounds, + }) + checkRetrieve(t, f, map[uint64][]byte{ + 5: getChunk(20, 0xaa), + 6: getChunk(20, 0x11), + }) + expected = 20*3 + 24 - 20 + assertTableSize(t, f, expected) + // truncate all, the entire freezer should be deleted f.truncateTail(7) checkRetrieveError(t, f, map[uint64]error{ @@ -771,6 +802,8 @@ func TestTruncateTail(t *testing.T) { 5: errOutOfBounds, 6: errOutOfBounds, }) + expected = 12 + assertTableSize(t, f, expected) } func TestTruncateHead(t *testing.T) { From 952b343cb3d319b77076ef3acb60e29e04cd51fd Mon Sep 17 00:00:00 2001 From: Martin HS Date: Tue, 19 Dec 2023 08:55:04 +0100 Subject: [PATCH 12/21] build: make linter emit output (#28704) --- build/ci.go | 2 +- internal/build/util.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/build/ci.go b/build/ci.go index afe1c332b8cb..c272d3f2b90a 100644 --- a/build/ci.go +++ b/build/ci.go @@ -366,7 +366,7 @@ func doLint(cmdline []string) { linter := downloadLinter(*cachedir) lflags := []string{"run", "--config", ".golangci.yml"} - build.MustRunCommand(linter, append(lflags, packages...)...) + build.MustRunCommandWithOutput(linter, append(lflags, packages...)...) fmt.Println("You have achieved perfection.") } diff --git a/internal/build/util.go b/internal/build/util.go index 5c77b236dcf5..17928118a0b5 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -68,6 +68,25 @@ func MustRunCommand(cmd string, args ...string) { MustRun(exec.Command(cmd, args...)) } +func MustRunCommandWithOutput(cmd string, args ...string) { + var done chan bool + // This is a little loop to generate some output, so CI does not tear down the + // process after 300 seconds. + go func() { + for i := 0; i < 15; i++ { + fmt.Printf("Waiting for command %q\n", cmd) + select { + case <-time.After(time.Minute): + break + case <-done: + return + } + } + }() + MustRun(exec.Command(cmd, args...)) + close(done) +} + var warnedAboutGit bool // RunGit runs a git subcommand and returns its output. From 5a9dda64ce17dda86720ed62d502831e5f616144 Mon Sep 17 00:00:00 2001 From: Martin HS Date: Tue, 19 Dec 2023 09:24:23 +0100 Subject: [PATCH 13/21] .travis: set lower GOGC value (#28705) As documented on https://golangci-lint.run/usage/performance/ , a lower GOGC value causes less peak mem consumption when running the linter. Exceeding 3Gb is a common cause for build failures, according to https://docs.travis-ci.com/user/common-build-problems/#my-build-script-is-killed-without-any-error --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c2bfc3f2bff4..40080dafab4e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ jobs: git: submodules: false # avoid cloning ethereum/tests script: - - go run build/ci.go lint + - GOGC=10 go run build/ci.go lint # These builders create the Docker sub-images for multi-arch push and each # will attempt to push the multi-arch image if they are the last builder From 435bed5da04a386198ca25c5e1264330c7a0da5b Mon Sep 17 00:00:00 2001 From: Martin HS Date: Tue, 19 Dec 2023 10:35:02 +0100 Subject: [PATCH 14/21] ci: disable lint on travis (#28706) --- .travis.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index 40080dafab4e..a55583a703fe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,18 +9,6 @@ jobs: - azure-osx include: - # This builder only tests code linters on latest version of Go - - stage: lint - os: linux - dist: bionic - go: 1.21.x - env: - - lint - git: - submodules: false # avoid cloning ethereum/tests - script: - - GOGC=10 go run build/ci.go lint - # These builders create the Docker sub-images for multi-arch push and each # will attempt to push the multi-arch image if they are the last builder - stage: build From 0cc192bd3a89cae6d3c2a787b9265dda631d6529 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 10:50:02 +0100 Subject: [PATCH 15/21] build(deps): bump golang.org/x/crypto from 0.15.0 to 0.17.0 (#28702) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.15.0 to 0.17.0. - [Commits](https://github.com/golang/crypto/compare/v0.15.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 8f99a00754ed..b4d077fc47f2 100644 --- a/go.mod +++ b/go.mod @@ -62,10 +62,10 @@ require ( github.com/tyler-smith/go-bip39 v1.1.0 github.com/urfave/cli/v2 v2.25.7 go.uber.org/automaxprocs v1.5.2 - golang.org/x/crypto v0.15.0 + golang.org/x/crypto v0.17.0 golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa golang.org/x/sync v0.5.0 - golang.org/x/sys v0.14.0 + golang.org/x/sys v0.15.0 golang.org/x/text v0.14.0 golang.org/x/time v0.3.0 golang.org/x/tools v0.15.0 diff --git a/go.sum b/go.sum index f89adbe571be..bab51b1345a7 100644 --- a/go.sum +++ b/go.sum @@ -614,8 +614,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -774,8 +774,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 3fd568855f1e6d1370e61a30d10a4055ab682851 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Tue, 19 Dec 2023 13:25:03 +0100 Subject: [PATCH 16/21] params: go-ethereum v1.13.7 stable --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index ef3c47e7acba..5908849d9c31 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 7 // Patch version component of the current release - VersionMeta = "unstable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 7 // Patch version component of the current release + VersionMeta = "stable" // Version metadata to append to the version string ) // Version holds the textual version string. From 9258a44b8f455d74f1c344bb82af39accb6c65aa Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Tue, 19 Dec 2023 13:32:25 +0100 Subject: [PATCH 17/21] params: begin go-ethereum v1.13.8 release cycle --- params/version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/params/version.go b/params/version.go index 5908849d9c31..a9192845bc7f 100644 --- a/params/version.go +++ b/params/version.go @@ -21,10 +21,10 @@ import ( ) const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 13 // Minor version component of the current release - VersionPatch = 7 // Patch version component of the current release - VersionMeta = "stable" // Version metadata to append to the version string + VersionMajor = 1 // Major version component of the current release + VersionMinor = 13 // Minor version component of the current release + VersionPatch = 8 // Patch version component of the current release + VersionMeta = "unstable" // Version metadata to append to the version string ) // Version holds the textual version string. From 7124057bad16694d2b1f15dfe68a6109961b34ab Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 20 Dec 2023 07:56:41 +0100 Subject: [PATCH 18/21] internal/build: fix crash in MustRunCommandWithOutput (#28709) --- internal/build/util.go | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/internal/build/util.go b/internal/build/util.go index 17928118a0b5..82f9ba51a179 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -68,23 +68,18 @@ func MustRunCommand(cmd string, args ...string) { MustRun(exec.Command(cmd, args...)) } +// MustRunCommandWithOutput runs the given command, and ensures that some output will be +// printed while it runs. This is useful for CI builds where the process will be stopped +// when there is no output. func MustRunCommandWithOutput(cmd string, args ...string) { - var done chan bool - // This is a little loop to generate some output, so CI does not tear down the - // process after 300 seconds. + interval := time.NewTicker(time.Minute) + defer interval.Stop() go func() { - for i := 0; i < 15; i++ { + for range interval.C { fmt.Printf("Waiting for command %q\n", cmd) - select { - case <-time.After(time.Minute): - break - case <-done: - return - } } }() MustRun(exec.Command(cmd, args...)) - close(done) } var warnedAboutGit bool From d3452a22cc871306c62de52d19295914141863c0 Mon Sep 17 00:00:00 2001 From: Martin HS Date: Wed, 20 Dec 2023 13:41:40 +0100 Subject: [PATCH 19/21] accounts: properly close managed wallets when closing manager (#28710) --- accounts/manager.go | 3 +++ accounts/usbwallet/wallet.go | 4 ++++ cmd/clef/main.go | 1 + 3 files changed, 8 insertions(+) diff --git a/accounts/manager.go b/accounts/manager.go index a0b5c329cdb8..cbe4f7c79d85 100644 --- a/accounts/manager.go +++ b/accounts/manager.go @@ -98,6 +98,9 @@ func NewManager(config *Config, backends ...Backend) *Manager { // Close terminates the account manager's internal notification processes. func (am *Manager) Close() error { + for _, w := range am.wallets { + w.Close() + } errc := make(chan error) am.quit <- errc return <-errc diff --git a/accounts/usbwallet/wallet.go b/accounts/usbwallet/wallet.go index 05add081ab77..69083dc8939d 100644 --- a/accounts/usbwallet/wallet.go +++ b/accounts/usbwallet/wallet.go @@ -483,6 +483,10 @@ func (w *wallet) Derive(path accounts.DerivationPath, pin bool) (accounts.Accoun w.stateLock.Lock() defer w.stateLock.Unlock() + if w.device == nil { + return accounts.Account{}, accounts.ErrWalletClosed + } + if _, ok := w.paths[address]; !ok { w.accounts = append(w.accounts, account) w.paths[address] = make(accounts.DerivationPath, len(path)) diff --git a/cmd/clef/main.go b/cmd/clef/main.go index 234699136990..f9b00e4a12a0 100644 --- a/cmd/clef/main.go +++ b/cmd/clef/main.go @@ -704,6 +704,7 @@ func signer(c *cli.Context) error { log.Info("Starting signer", "chainid", chainId, "keystore", ksLoc, "light-kdf", lightKdf, "advanced", advanced) am := core.StartClefAccountManager(ksLoc, nousb, lightKdf, scpath) + defer am.Close() apiImpl := core.NewSignerAPI(am, chainId, nousb, ui, db, advanced, pwStorage) // Establish the bidirectional communication, by creating a new UI backend and registering From 8c2d455ccd216fb8589c15339392ce9640d8090d Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 20 Dec 2023 15:36:10 +0100 Subject: [PATCH 20/21] build: upgrade to golangci-lint v1.55.2 (#28712) This is primarily to make lint work again on macOS 14. The older version of golangci-lint kept crashing. Also included is a fix for a goroutine leak in the recently-introduced function MustRunCommandWithOutput. --- .golangci.yml | 4 --- build/checksums.txt | 57 ++++++++++++++++++++-------------------- internal/build/gotool.go | 1 - internal/build/util.go | 11 ++++++-- 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 8a054667e6d8..0343c4b4ebf2 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -12,7 +12,6 @@ run: linters: disable-all: true enable: - - goconst - goimports - gosimple - govet @@ -39,9 +38,6 @@ linters: linters-settings: gofmt: simplify: true - goconst: - min-len: 3 # minimum length of string constant - min-occurrences: 6 # minimum number of occurrences issues: exclude-rules: diff --git a/build/checksums.txt b/build/checksums.txt index 8d735fdb3d3f..b9d322aa1a4a 100644 --- a/build/checksums.txt +++ b/build/checksums.txt @@ -22,35 +22,36 @@ e2bc0b3e4b64111ec117295c088bde5f00eeed1567999ff77bc859d7df70078e go1.21.5.linux bbe603cde7c9dee658f45164b4d06de1eff6e6e6b800100824e7c00d56a9a92f go1.21.5.windows-amd64.zip 9b7acca50e674294e43202df4fbc26d5af4d8bc3170a3342a1514f09a2dab5e9 go1.21.5.windows-arm64.zip -# version:golangci 1.51.1 +# version:golangci 1.55.2 # https://github.com/golangci/golangci-lint/releases/ -# https://github.com/golangci/golangci-lint/releases/download/v1.51.1/ -fba08acc4027f69f07cef48fbff70b8a7ecdfaa1c2aba9ad3fb31d60d9f5d4bc golangci-lint-1.51.1-darwin-amd64.tar.gz -75b8f0ff3a4e68147156be4161a49d4576f1be37a0b506473f8c482140c1e7f2 golangci-lint-1.51.1-darwin-arm64.tar.gz -e06b3459aaed356e1667580be00b05f41f3b2e29685d12cdee571c23e1edb414 golangci-lint-1.51.1-freebsd-386.tar.gz -623ce2d0fa4d35cc2e8d69fa7334227ab592380962a13b4d9cdc77cf41db2008 golangci-lint-1.51.1-freebsd-amd64.tar.gz -131365feb0584cc2736c43192fa673ca50e5b6b765456990cb379ecfb787e568 golangci-lint-1.51.1-freebsd-armv6.tar.gz -98fb627927cbb654f5bf85dcffc5f646666b2ce96ea0fed977c9fb28abd51532 golangci-lint-1.51.1-freebsd-armv7.tar.gz -b36a99702fa762c15840261bc0fb41b4b1b16b8b19b8c0941bae98c85bb0f8b8 golangci-lint-1.51.1-linux-386.tar.gz -17aeb26c76820c22efa0e1838b0ab93e90cfedef43fbfc9a2f33f27eb9e5e070 golangci-lint-1.51.1-linux-amd64.tar.gz -9744bc34e7b8d82ca788b667bfb7155a39b4be9aef43bf9f10318b1372cea338 golangci-lint-1.51.1-linux-arm64.tar.gz -0dda8dbeb2ff7455a044ec8e347f2fc6d655d2e99d281b3b95e88167031c673d golangci-lint-1.51.1-linux-armv6.tar.gz -0512f311b11d43b8b22989d929f0fe8a2e1e5ebe497f1eb0ff73a0fc3d188fd1 golangci-lint-1.51.1-linux-armv7.tar.gz -d767108dcf84a8eaa844df3454cb0f75a492f4e7102ecc2b0a3545cfe073a566 golangci-lint-1.51.1-linux-loong64.tar.gz -3bd56c54daec16585b2668e0dfabb27af2c2b38cc0fdb46923e2521e1634846b golangci-lint-1.51.1-linux-mips64.tar.gz -f72f5adfa2219e15d2414c9a2966f86e74556cf17a85c727a7fb7770a16cf814 golangci-lint-1.51.1-linux-mips64le.tar.gz -e605521dac98096d8737e1997c954f41f1d0d8275b8731f62783d410c23574b9 golangci-lint-1.51.1-linux-ppc64le.tar.gz -2f683217b814339e74d61ca700922d8407f15addd6d4c5e8b156fbab79f26a87 golangci-lint-1.51.1-linux-riscv64.tar.gz -d98528292b65971a3594e5880530e7624597dc9806fcfccdfbe39be411713d63 golangci-lint-1.51.1-linux-s390x.tar.gz -9bb2d0fe9e692ed0aea4f2537e3e6862b2f6768fe2849a84f4a6ad09da9fd971 golangci-lint-1.51.1-netbsd-386.tar.gz -34cafdcd11ae73ae88d66c33eb8449f5c976fc3e37b44774dbe9c71caa95e592 golangci-lint-1.51.1-netbsd-amd64.tar.gz -f8b4e1e47ac17caafe8a5f32f975a2b6a7cb14c27c0f73c1fb15c20ca91c2e03 golangci-lint-1.51.1-netbsd-armv6.tar.gz -c4f58b7e227b9fd41f0e9310dc83f4a4e7d026598e2f6e95b78761081a6d9bd2 golangci-lint-1.51.1-netbsd-armv7.tar.gz -6710e2f5375dc75521c1a17980a6cbbe6ff76c2f8b852964a8af558899a97cf5 golangci-lint-1.51.1-windows-386.zip -722d7b87b9cdda0a3835d5030b3fc5385c2eba4c107f63f6391cfb2ac35f051d golangci-lint-1.51.1-windows-amd64.zip -eb57f9bcb56646f2e3d6ccaf02ec227815fb05077b2e0b1bf9e755805acdc2b9 golangci-lint-1.51.1-windows-arm64.zip -bce02f7232723cb727755ee11f168a700a00896a25d37f87c4b173bce55596b4 golangci-lint-1.51.1-windows-armv6.zip -cf6403f84707ce8c98664736772271bc8874f2e760c2fd0f00cf3e85963507e9 golangci-lint-1.51.1-windows-armv7.zip +# https://github.com/golangci/golangci-lint/releases/download/v1.55.2/ +632e96e6d5294fbbe7b2c410a49c8fa01c60712a0af85a567de85bcc1623ea21 golangci-lint-1.55.2-darwin-amd64.tar.gz +234463f059249f82045824afdcdd5db5682d0593052f58f6a3039a0a1c3899f6 golangci-lint-1.55.2-darwin-arm64.tar.gz +2bdd105e2d4e003a9058c33a22bb191a1e0f30fa0790acca0d8fbffac1d6247c golangci-lint-1.55.2-freebsd-386.tar.gz +e75056e8b082386676ce23eba455cf893931a792c0d87e1e3743c0aec33c7fb5 golangci-lint-1.55.2-freebsd-amd64.tar.gz +5789b933facaf6136bd23f1d50add67b79bbcf8dfdfc9069a37f729395940a66 golangci-lint-1.55.2-freebsd-armv6.tar.gz +7f21ab1008d05f32c954f99470fc86a83a059e530fe2add1d0b7d8ed4d8992a7 golangci-lint-1.55.2-freebsd-armv7.tar.gz +33ab06139b9219a28251f10821da94423db30285cc2af97494cbb2a281927de9 golangci-lint-1.55.2-illumos-amd64.tar.gz +57ce6f8ce3ad6ee45d7cc3d9a047545a851c2547637834a3fcb086c7b40b1e6b golangci-lint-1.55.2-linux-386.tar.gz +ca21c961a33be3bc15e4292dc40c98c8dcc5463a7b6768a3afc123761630c09c golangci-lint-1.55.2-linux-amd64.tar.gz +8eb0cee9b1dbf0eaa49871798c7f8a5b35f2960c52d776a5f31eb7d886b92746 golangci-lint-1.55.2-linux-arm64.tar.gz +3195f3e0f37d353fd5bd415cabcd4e263f5c29d3d0ffb176c26ff3d2c75eb3bb golangci-lint-1.55.2-linux-armv6.tar.gz +c823ee36eb1a719e171de1f2f5ca3068033dce8d9817232fd10ed71fd6650406 golangci-lint-1.55.2-linux-armv7.tar.gz +758a5d2a356dc494bd13ed4c0d4bf5a54a4dc91267ea5ecdd87b86c7ca0624e7 golangci-lint-1.55.2-linux-loong64.tar.gz +2c7b9abdce7cae802a67d583cd7c6dca520bff6d0e17c8535a918e2f2b437aa0 golangci-lint-1.55.2-linux-mips64.tar.gz +024e0a15b85352cc27271285526e16a4ab66d3e67afbbe446c9808c06cb8dbed golangci-lint-1.55.2-linux-mips64le.tar.gz +6b00f89ba5506c1de1efdd9fa17c54093013a294fefd8b9b31534db626a672ee golangci-lint-1.55.2-linux-ppc64le.tar.gz +0faa0d047d9bf7b703ed3ea65b6117043c93504f9ca1de25ae929d3901c73d4a golangci-lint-1.55.2-linux-riscv64.tar.gz +30dec9b22e7d5bb4e9d5ccea96da20f71cd7db3c8cf30b8ddc7cb9174c4d742a golangci-lint-1.55.2-linux-s390x.tar.gz +5a0ede48f79ad707902fdb29be8cd2abd8302dc122b65ebae3fdfc86751c7698 golangci-lint-1.55.2-netbsd-386.tar.gz +95af20a2e617126dd5b08122ece7819101070e1582a961067ce8c41172f901ad golangci-lint-1.55.2-netbsd-amd64.tar.gz +94fb7dacb7527847cc95d7120904e19a2a0a81a0d50d61766c9e0251da72ab9d golangci-lint-1.55.2-netbsd-armv6.tar.gz +ca906bce5fee9619400e4a321c56476fe4a4efb6ac4fc989d340eb5563348873 golangci-lint-1.55.2-netbsd-armv7.tar.gz +45b442f69fc8915c4500201c0247b7f3f69544dbc9165403a61f9095f2c57355 golangci-lint-1.55.2-windows-386.zip +f57d434d231d43417dfa631587522f8c1991220b43c8ffadb9c7bd279508bf81 golangci-lint-1.55.2-windows-amd64.zip +fd7dc8f4c6829ee6fafb252a4d81d2155cd35da7833665cbb25d53ce7cecd990 golangci-lint-1.55.2-windows-arm64.zip +1892c3c24f9e7ef44b02f6750c703864b6dc350129f3ec39510300007b2376f1 golangci-lint-1.55.2-windows-armv6.zip +a5e68ae73d38748b5269fad36ac7575e3c162a5dc63ef58abdea03cc5da4522a golangci-lint-1.55.2-windows-armv7.zip # This is the builder on PPA that will build Go itself (inception-y), don't modify! # diff --git a/internal/build/gotool.go b/internal/build/gotool.go index 32ca20e869a5..2a474604183f 100644 --- a/internal/build/gotool.go +++ b/internal/build/gotool.go @@ -144,7 +144,6 @@ func Version(csdb *ChecksumDB, version string) (string, error) { continue } if parts[0] == version { - log.Printf("Found version %q", parts[1]) return parts[1], nil } } diff --git a/internal/build/util.go b/internal/build/util.go index 82f9ba51a179..b41014a16f0d 100644 --- a/internal/build/util.go +++ b/internal/build/util.go @@ -73,10 +73,17 @@ func MustRunCommand(cmd string, args ...string) { // when there is no output. func MustRunCommandWithOutput(cmd string, args ...string) { interval := time.NewTicker(time.Minute) + done := make(chan struct{}) defer interval.Stop() + defer close(done) go func() { - for range interval.C { - fmt.Printf("Waiting for command %q\n", cmd) + for { + select { + case <-interval.C: + fmt.Printf("Waiting for command %q\n", cmd) + case <-done: + return + } } }() MustRun(exec.Command(cmd, args...)) From 577be37e0e7a69564224e0a15e49d648ed461ac5 Mon Sep 17 00:00:00 2001 From: lightclient <14004106+lightclient@users.noreply.github.com> Date: Wed, 20 Dec 2023 09:23:48 -0700 Subject: [PATCH 21/21] cmd/devp2p: update eth/snap protocol test suites for PoS (#28340) Here we update the eth and snap protocol test suites with a new test chain, created by the hivechain tool. The new test chain uses proof-of-stake. As such, tests using PoW block propagation in the eth protocol are removed. The test suite now connects to the node under test using the engine API in order to make it accept transactions. The snap protocol test suite has been rewritten to output test descriptions and log requests more verbosely. --------- Co-authored-by: Felix Lange --- cmd/devp2p/README.md | 45 +- cmd/devp2p/internal/ethtest/chain.go | 262 +- cmd/devp2p/internal/ethtest/chain_test.go | 22 +- cmd/devp2p/internal/ethtest/conn.go | 361 + cmd/devp2p/internal/ethtest/engine.go | 69 + cmd/devp2p/internal/ethtest/helpers.go | 650 - cmd/devp2p/internal/ethtest/large.go | 80 - cmd/devp2p/internal/ethtest/mkchain.sh | 9 + cmd/devp2p/internal/ethtest/protocol.go | 87 + cmd/devp2p/internal/ethtest/snap.go | 735 +- cmd/devp2p/internal/ethtest/snapTypes.go | 60 - cmd/devp2p/internal/ethtest/suite.go | 766 +- cmd/devp2p/internal/ethtest/suite_test.go | 61 +- .../internal/ethtest/testdata/accounts.json | 62 + .../internal/ethtest/testdata/chain.rlp | Bin 1585630 -> 341951 bytes .../internal/ethtest/testdata/forkenv.json | 20 + .../internal/ethtest/testdata/genesis.json | 137 +- .../internal/ethtest/testdata/halfchain.rlp | Bin 527009 -> 0 bytes .../internal/ethtest/testdata/headblock.json | 23 + .../internal/ethtest/testdata/headfcu.json | 13 + .../internal/ethtest/testdata/headstate.json | 4204 +++++ .../internal/ethtest/testdata/newpayload.json | 13268 ++++++++++++++++ .../internal/ethtest/testdata/txinfo.json | 3018 ++++ cmd/devp2p/internal/ethtest/transaction.go | 462 +- cmd/devp2p/internal/ethtest/types.go | 291 - cmd/devp2p/rlpxcmd.go | 63 +- cmd/devp2p/runtest.go | 49 +- core/rawdb/chain_freezer.go | 2 +- core/txpool/legacypool/legacypool.go | 1 + internal/flags/categories.go | 1 + 30 files changed, 22738 insertions(+), 2083 deletions(-) create mode 100644 cmd/devp2p/internal/ethtest/conn.go create mode 100644 cmd/devp2p/internal/ethtest/engine.go delete mode 100644 cmd/devp2p/internal/ethtest/helpers.go delete mode 100644 cmd/devp2p/internal/ethtest/large.go create mode 100644 cmd/devp2p/internal/ethtest/mkchain.sh create mode 100644 cmd/devp2p/internal/ethtest/protocol.go delete mode 100644 cmd/devp2p/internal/ethtest/snapTypes.go create mode 100644 cmd/devp2p/internal/ethtest/testdata/accounts.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/forkenv.json delete mode 100644 cmd/devp2p/internal/ethtest/testdata/halfchain.rlp create mode 100644 cmd/devp2p/internal/ethtest/testdata/headblock.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/headfcu.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/headstate.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/newpayload.json create mode 100644 cmd/devp2p/internal/ethtest/testdata/txinfo.json delete mode 100644 cmd/devp2p/internal/ethtest/types.go diff --git a/cmd/devp2p/README.md b/cmd/devp2p/README.md index 5ca7b497a26f..284dfe0a454d 100644 --- a/cmd/devp2p/README.md +++ b/cmd/devp2p/README.md @@ -108,31 +108,32 @@ Start the test by running `devp2p discv5 test -listen1 127.0.0.1 -listen2 127.0. The Eth Protocol test suite is a conformance test suite for the [eth protocol][eth]. -To run the eth protocol test suite against your implementation, the node needs to be initialized as such: - -1. initialize the geth node with the `genesis.json` file contained in the `testdata` directory -2. import the `halfchain.rlp` file in the `testdata` directory -3. run geth with the following flags: -``` -geth --datadir --nodiscover --nat=none --networkid 19763 --verbosity 5 -``` - -Then, run the following command, replacing `` with the enode of the geth node: - ``` - devp2p rlpx eth-test cmd/devp2p/internal/ethtest/testdata/chain.rlp cmd/devp2p/internal/ethtest/testdata/genesis.json -``` +To run the eth protocol test suite against your implementation, the node needs to be initialized +with our test chain. The chain files are located in `./cmd/devp2p/internal/ethtest/testdata`. + +1. initialize the geth node with the `genesis.json` file +2. import blocks from `chain.rlp` +3. run the client using the resulting database. For geth, use a command like the one below: + + geth \ + --datadir \ + --nodiscover \ + --nat=none \ + --networkid 3503995874084926 \ + --verbosity 5 \ + --authrpc.jwtsecret 0x7365637265747365637265747365637265747365637265747365637265747365 + +Note that the tests also require access to the engine API. +The test suite can now be executed using the devp2p tool. + + devp2p rlpx eth-test \ + --chain internal/ethtest/testdata \ + --node enode://.... \ + --engineapi http://127.0.0.1:8551 \ + --jwtsecret 0x7365637265747365637265747365637265747365637265747365637265747365 Repeat the above process (re-initialising the node) in order to run the Eth Protocol test suite again. -#### Eth66 Test Suite - -The Eth66 test suite is also a conformance test suite for the eth 66 protocol version specifically. -To run the eth66 protocol test suite, initialize a geth node as described above and run the following command, -replacing `` with the enode of the geth node: - - ``` - devp2p rlpx eth66-test cmd/devp2p/internal/ethtest/testdata/chain.rlp cmd/devp2p/internal/ethtest/testdata/genesis.json -``` [eth]: https://github.com/ethereum/devp2p/blob/master/caps/eth.md [dns-tutorial]: https://geth.ethereum.org/docs/developers/geth-developer/dns-discovery-setup diff --git a/cmd/devp2p/internal/ethtest/chain.go b/cmd/devp2p/internal/ethtest/chain.go index 938159ec524d..e8b3725b17a5 100644 --- a/cmd/devp2p/internal/ethtest/chain.go +++ b/cmd/devp2p/internal/ethtest/chain.go @@ -17,27 +17,118 @@ package ethtest import ( + "bytes" "compress/gzip" + "crypto/ecdsa" "encoding/json" "errors" "fmt" "io" "math/big" "os" + "path" + "sort" "strings" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/forkid" + "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rlp" + "golang.org/x/exp/slices" ) +// Chain is a lightweight blockchain-like store which can read a hivechain +// created chain. type Chain struct { - genesis core.Genesis - blocks []*types.Block - chainConfig *params.ChainConfig + genesis core.Genesis + blocks []*types.Block + state map[common.Address]state.DumpAccount // state of head block + senders map[common.Address]*senderInfo + config *params.ChainConfig +} + +// NewChain takes the given chain.rlp file, and decodes and returns +// the blocks from the file. +func NewChain(dir string) (*Chain, error) { + gen, err := loadGenesis(path.Join(dir, "genesis.json")) + if err != nil { + return nil, err + } + gblock := gen.ToBlock() + + blocks, err := blocksFromFile(path.Join(dir, "chain.rlp"), gblock) + if err != nil { + return nil, err + } + state, err := readState(path.Join(dir, "headstate.json")) + if err != nil { + return nil, err + } + accounts, err := readAccounts(path.Join(dir, "accounts.json")) + if err != nil { + return nil, err + } + return &Chain{ + genesis: gen, + blocks: blocks, + state: state, + senders: accounts, + config: gen.Config, + }, nil +} + +// senderInfo is an account record as output in the "accounts.json" file from +// hivechain. +type senderInfo struct { + Key *ecdsa.PrivateKey `json:"key"` + Nonce uint64 `json:"nonce"` +} + +// Head returns the chain head. +func (c *Chain) Head() *types.Block { + return c.blocks[c.Len()-1] +} + +// AccountsInHashOrder returns all accounts of the head state, ordered by hash of address. +func (c *Chain) AccountsInHashOrder() []state.DumpAccount { + list := make([]state.DumpAccount, len(c.state)) + i := 0 + for addr, acc := range c.state { + addr := addr + list[i] = acc + list[i].Address = &addr + if len(acc.AddressHash) != 32 { + panic(fmt.Errorf("missing/invalid SecureKey in dump account %v", addr)) + } + i++ + } + slices.SortFunc(list, func(x, y state.DumpAccount) int { + return bytes.Compare(x.AddressHash, y.AddressHash) + }) + return list +} + +// CodeHashes returns all bytecode hashes contained in the head state. +func (c *Chain) CodeHashes() []common.Hash { + var hashes []common.Hash + seen := make(map[common.Hash]struct{}) + seen[types.EmptyCodeHash] = struct{}{} + for _, acc := range c.state { + h := common.BytesToHash(acc.CodeHash) + if _, ok := seen[h]; ok { + continue + } + hashes = append(hashes, h) + seen[h] = struct{}{} + } + slices.SortFunc(hashes, (common.Hash).Cmp) + return hashes } // Len returns the length of the chain. @@ -45,6 +136,11 @@ func (c *Chain) Len() int { return len(c.blocks) } +// ForkID gets the fork id of the chain. +func (c *Chain) ForkID() forkid.ID { + return forkid.NewID(c.config, c.blocks[0], uint64(c.Len()), c.blocks[c.Len()-1].Time()) +} + // TD calculates the total difficulty of the chain at the // chain head. func (c *Chain) TD() *big.Int { @@ -55,19 +151,12 @@ func (c *Chain) TD() *big.Int { return sum } -// TotalDifficultyAt calculates the total difficulty of the chain -// at the given block height. -func (c *Chain) TotalDifficultyAt(height int) *big.Int { - sum := new(big.Int) - if height >= c.Len() { - return sum - } - for _, block := range c.blocks[:height+1] { - sum.Add(sum, block.Difficulty()) - } - return sum +// GetBlock returns the block at the specified number. +func (c *Chain) GetBlock(number int) *types.Block { + return c.blocks[number] } +// RootAt returns the state root for the block at the given height. func (c *Chain) RootAt(height int) common.Hash { if height < c.Len() { return c.blocks[height].Root() @@ -75,37 +164,56 @@ func (c *Chain) RootAt(height int) common.Hash { return common.Hash{} } -// ForkID gets the fork id of the chain. -func (c *Chain) ForkID() forkid.ID { - return forkid.NewID(c.chainConfig, c.blocks[0], uint64(c.Len()), c.blocks[0].Time()) +// GetSender returns the address associated with account at the index in the +// pre-funded accounts list. +func (c *Chain) GetSender(idx int) (common.Address, uint64) { + var accounts Addresses + for addr := range c.senders { + accounts = append(accounts, addr) + } + sort.Sort(accounts) + addr := accounts[idx] + return addr, c.senders[addr].Nonce } -// Shorten returns a copy chain of a desired height from the imported -func (c *Chain) Shorten(height int) *Chain { - blocks := make([]*types.Block, height) - copy(blocks, c.blocks[:height]) +// IncNonce increases the specified signing account's pending nonce. +func (c *Chain) IncNonce(addr common.Address, amt uint64) { + if _, ok := c.senders[addr]; !ok { + panic("nonce increment for non-signer") + } + c.senders[addr].Nonce += amt +} - config := *c.chainConfig - return &Chain{ - blocks: blocks, - chainConfig: &config, +// Balance returns the balance of an account at the head of the chain. +func (c *Chain) Balance(addr common.Address) *big.Int { + bal := new(big.Int) + if acc, ok := c.state[addr]; ok { + bal, _ = bal.SetString(acc.Balance, 10) } + return bal } -// Head returns the chain head. -func (c *Chain) Head() *types.Block { - return c.blocks[c.Len()-1] +// SignTx signs a transaction for the specified from account, so long as that +// account was in the hivechain accounts dump. +func (c *Chain) SignTx(from common.Address, tx *types.Transaction) (*types.Transaction, error) { + signer := types.LatestSigner(c.config) + acc, ok := c.senders[from] + if !ok { + return nil, fmt.Errorf("account not available for signing: %s", from) + } + return types.SignTx(tx, signer, acc.Key) } -func (c *Chain) GetHeaders(req *GetBlockHeaders) ([]*types.Header, error) { +// GetHeaders returns the headers base on an ethGetPacketHeadersPacket. +func (c *Chain) GetHeaders(req *eth.GetBlockHeadersPacket) ([]*types.Header, error) { if req.Amount < 1 { return nil, errors.New("no block headers requested") } - - headers := make([]*types.Header, req.Amount) - var blockNumber uint64 - - // range over blocks to check if our chain has the requested header + var ( + headers = make([]*types.Header, req.Amount) + blockNumber uint64 + ) + // Range over blocks to check if our chain has the requested header. for _, block := range c.blocks { if block.Hash() == req.Origin.Hash || block.Number().Uint64() == req.Origin.Number { headers[0] = block.Header() @@ -115,40 +223,30 @@ func (c *Chain) GetHeaders(req *GetBlockHeaders) ([]*types.Header, error) { if headers[0] == nil { return nil, fmt.Errorf("no headers found for given origin number %v, hash %v", req.Origin.Number, req.Origin.Hash) } - if req.Reverse { for i := 1; i < int(req.Amount); i++ { blockNumber -= (1 - req.Skip) headers[i] = c.blocks[blockNumber].Header() } - return headers, nil } - for i := 1; i < int(req.Amount); i++ { blockNumber += (1 + req.Skip) headers[i] = c.blocks[blockNumber].Header() } - return headers, nil } -// loadChain takes the given chain.rlp file, and decodes and returns -// the blocks from the file. -func loadChain(chainfile string, genesis string) (*Chain, error) { - gen, err := loadGenesis(genesis) - if err != nil { - return nil, err - } - gblock := gen.ToBlock() +// Shorten returns a copy chain of a desired height from the imported +func (c *Chain) Shorten(height int) *Chain { + blocks := make([]*types.Block, height) + copy(blocks, c.blocks[:height]) - blocks, err := blocksFromFile(chainfile, gblock) - if err != nil { - return nil, err + config := *c.config + return &Chain{ + blocks: blocks, + config: &config, } - - c := &Chain{genesis: gen, blocks: blocks, chainConfig: gen.Config} - return c, nil } func loadGenesis(genesisFile string) (core.Genesis, error) { @@ -163,6 +261,22 @@ func loadGenesis(genesisFile string) (core.Genesis, error) { return gen, nil } +type Addresses []common.Address + +func (a Addresses) Len() int { + return len(a) +} + +func (a Addresses) Less(i, j int) bool { + return bytes.Compare(a[i][:], a[j][:]) < 0 +} + +func (a Addresses) Swap(i, j int) { + tmp := a[i] + a[i] = a[j] + a[j] = tmp +} + func blocksFromFile(chainfile string, gblock *types.Block) ([]*types.Block, error) { // Load chain.rlp. fh, err := os.Open(chainfile) @@ -193,3 +307,47 @@ func blocksFromFile(chainfile string, gblock *types.Block) ([]*types.Block, erro } return blocks, nil } + +func readState(file string) (map[common.Address]state.DumpAccount, error) { + f, err := os.ReadFile(file) + if err != nil { + return nil, fmt.Errorf("unable to read state: %v", err) + } + var dump state.Dump + if err := json.Unmarshal(f, &dump); err != nil { + return nil, fmt.Errorf("unable to unmarshal state: %v", err) + } + + state := make(map[common.Address]state.DumpAccount) + for key, acct := range dump.Accounts { + var addr common.Address + if err := addr.UnmarshalText([]byte(key)); err != nil { + return nil, fmt.Errorf("invalid address %q", key) + } + state[addr] = acct + } + return state, nil +} + +func readAccounts(file string) (map[common.Address]*senderInfo, error) { + f, err := os.ReadFile(file) + if err != nil { + return nil, fmt.Errorf("unable to read state: %v", err) + } + type account struct { + Key hexutil.Bytes `json:"key"` + } + keys := make(map[common.Address]account) + if err := json.Unmarshal(f, &keys); err != nil { + return nil, fmt.Errorf("unable to unmarshal accounts: %v", err) + } + accounts := make(map[common.Address]*senderInfo) + for addr, acc := range keys { + pk, err := crypto.HexToECDSA(common.Bytes2Hex(acc.Key)) + if err != nil { + return nil, fmt.Errorf("unable to read private key for %s: %v", err, addr) + } + accounts[addr] = &senderInfo{Key: pk, Nonce: 0} + } + return accounts, nil +} diff --git a/cmd/devp2p/internal/ethtest/chain_test.go b/cmd/devp2p/internal/ethtest/chain_test.go index a3c7187f5dde..62bd6d26eae7 100644 --- a/cmd/devp2p/internal/ethtest/chain_test.go +++ b/cmd/devp2p/internal/ethtest/chain_test.go @@ -123,30 +123,26 @@ func TestEthProtocolNegotiation(t *testing.T) { } } -// TestChain_GetHeaders tests whether the test suite can correctly +// TestChainGetHeaders tests whether the test suite can correctly // respond to a GetBlockHeaders request from a node. -func TestChain_GetHeaders(t *testing.T) { +func TestChainGetHeaders(t *testing.T) { t.Parallel() - chainFile, err := filepath.Abs("./testdata/chain.rlp") - if err != nil { - t.Fatal(err) - } - genesisFile, err := filepath.Abs("./testdata/genesis.json") + + dir, err := filepath.Abs("./testdata") if err != nil { t.Fatal(err) } - - chain, err := loadChain(chainFile, genesisFile) + chain, err := NewChain(dir) if err != nil { t.Fatal(err) } var tests = []struct { - req GetBlockHeaders + req eth.GetBlockHeadersPacket expected []*types.Header }{ { - req: GetBlockHeaders{ + req: eth.GetBlockHeadersPacket{ GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Number: uint64(2)}, Amount: uint64(5), @@ -163,7 +159,7 @@ func TestChain_GetHeaders(t *testing.T) { }, }, { - req: GetBlockHeaders{ + req: eth.GetBlockHeadersPacket{ GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Number: uint64(chain.Len() - 1)}, Amount: uint64(3), @@ -178,7 +174,7 @@ func TestChain_GetHeaders(t *testing.T) { }, }, { - req: GetBlockHeaders{ + req: eth.GetBlockHeadersPacket{ GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Hash: chain.Head().Hash()}, Amount: uint64(1), diff --git a/cmd/devp2p/internal/ethtest/conn.go b/cmd/devp2p/internal/ethtest/conn.go new file mode 100644 index 000000000000..2d36ccb423e7 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/conn.go @@ -0,0 +1,361 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +package ethtest + +import ( + "crypto/ecdsa" + "errors" + "fmt" + "net" + "reflect" + "time" + + "github.com/davecgh/go-spew/spew" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/eth/protocols/eth" + "github.com/ethereum/go-ethereum/eth/protocols/snap" + "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/p2p/rlpx" + "github.com/ethereum/go-ethereum/rlp" +) + +var ( + pretty = spew.ConfigState{ + Indent: " ", + DisableCapacities: true, + DisablePointerAddresses: true, + SortKeys: true, + } + timeout = 2 * time.Second +) + +// dial attempts to dial the given node and perform a handshake, returning the +// created Conn if successful. +func (s *Suite) dial() (*Conn, error) { + key, _ := crypto.GenerateKey() + return s.dialAs(key) +} + +// dialAs attempts to dial a given node and perform a handshake using the given +// private key. +func (s *Suite) dialAs(key *ecdsa.PrivateKey) (*Conn, error) { + fd, err := net.Dial("tcp", fmt.Sprintf("%v:%d", s.Dest.IP(), s.Dest.TCP())) + if err != nil { + return nil, err + } + conn := Conn{Conn: rlpx.NewConn(fd, s.Dest.Pubkey())} + conn.ourKey = key + _, err = conn.Handshake(conn.ourKey) + if err != nil { + conn.Close() + return nil, err + } + conn.caps = []p2p.Cap{ + {Name: "eth", Version: 67}, + {Name: "eth", Version: 68}, + } + conn.ourHighestProtoVersion = 68 + return &conn, nil +} + +// dialSnap creates a connection with snap/1 capability. +func (s *Suite) dialSnap() (*Conn, error) { + conn, err := s.dial() + if err != nil { + return nil, fmt.Errorf("dial failed: %v", err) + } + conn.caps = append(conn.caps, p2p.Cap{Name: "snap", Version: 1}) + conn.ourHighestSnapProtoVersion = 1 + return conn, nil +} + +// Conn represents an individual connection with a peer +type Conn struct { + *rlpx.Conn + ourKey *ecdsa.PrivateKey + negotiatedProtoVersion uint + negotiatedSnapProtoVersion uint + ourHighestProtoVersion uint + ourHighestSnapProtoVersion uint + caps []p2p.Cap +} + +// Read reads a packet from the connection. +func (c *Conn) Read() (uint64, []byte, error) { + c.SetReadDeadline(time.Now().Add(timeout)) + code, data, _, err := c.Conn.Read() + if err != nil { + return 0, nil, err + } + return code, data, nil +} + +// ReadMsg attempts to read a devp2p message with a specific code. +func (c *Conn) ReadMsg(proto Proto, code uint64, msg any) error { + c.SetReadDeadline(time.Now().Add(timeout)) + for { + got, data, err := c.Read() + if err != nil { + return err + } + if protoOffset(proto)+code == got { + return rlp.DecodeBytes(data, msg) + } + } +} + +// Write writes a eth packet to the connection. +func (c *Conn) Write(proto Proto, code uint64, msg any) error { + c.SetWriteDeadline(time.Now().Add(timeout)) + payload, err := rlp.EncodeToBytes(msg) + if err != nil { + return err + } + _, err = c.Conn.Write(protoOffset(proto)+code, payload) + return err +} + +// ReadEth reads an Eth sub-protocol wire message. +func (c *Conn) ReadEth() (any, error) { + c.SetReadDeadline(time.Now().Add(timeout)) + for { + code, data, _, err := c.Conn.Read() + if err != nil { + return nil, err + } + if code == pingMsg { + c.Write(baseProto, pongMsg, []byte{}) + continue + } + if getProto(code) != ethProto { + // Read until eth message. + continue + } + code -= baseProtoLen + + var msg any + switch int(code) { + case eth.StatusMsg: + msg = new(eth.StatusPacket) + case eth.GetBlockHeadersMsg: + msg = new(eth.GetBlockHeadersPacket) + case eth.BlockHeadersMsg: + msg = new(eth.BlockHeadersPacket) + case eth.GetBlockBodiesMsg: + msg = new(eth.GetBlockBodiesPacket) + case eth.BlockBodiesMsg: + msg = new(eth.BlockBodiesPacket) + case eth.NewBlockMsg: + msg = new(eth.NewBlockPacket) + case eth.NewBlockHashesMsg: + msg = new(eth.NewBlockHashesPacket) + case eth.TransactionsMsg: + msg = new(eth.TransactionsPacket) + case eth.NewPooledTransactionHashesMsg: + msg = new(eth.NewPooledTransactionHashesPacket68) + case eth.GetPooledTransactionsMsg: + msg = new(eth.GetPooledTransactionsPacket) + case eth.PooledTransactionsMsg: + msg = new(eth.PooledTransactionsPacket) + default: + panic(fmt.Sprintf("unhandled eth msg code %d", code)) + } + if err := rlp.DecodeBytes(data, msg); err != nil { + return nil, fmt.Errorf("unable to decode eth msg: %v", err) + } + return msg, nil + } +} + +// ReadSnap reads a snap/1 response with the given id from the connection. +func (c *Conn) ReadSnap() (any, error) { + c.SetReadDeadline(time.Now().Add(timeout)) + for { + code, data, _, err := c.Conn.Read() + if err != nil { + return nil, err + } + if getProto(code) != snapProto { + // Read until snap message. + continue + } + code -= baseProtoLen + ethProtoLen + + var msg any + switch int(code) { + case snap.GetAccountRangeMsg: + msg = new(snap.GetAccountRangePacket) + case snap.AccountRangeMsg: + msg = new(snap.AccountRangePacket) + case snap.GetStorageRangesMsg: + msg = new(snap.GetStorageRangesPacket) + case snap.StorageRangesMsg: + msg = new(snap.StorageRangesPacket) + case snap.GetByteCodesMsg: + msg = new(snap.GetByteCodesPacket) + case snap.ByteCodesMsg: + msg = new(snap.ByteCodesPacket) + case snap.GetTrieNodesMsg: + msg = new(snap.GetTrieNodesPacket) + case snap.TrieNodesMsg: + msg = new(snap.TrieNodesPacket) + default: + panic(fmt.Errorf("unhandled snap code: %d", code)) + } + if err := rlp.DecodeBytes(data, msg); err != nil { + return nil, fmt.Errorf("could not rlp decode message: %v", err) + } + return msg, nil + } +} + +// peer performs both the protocol handshake and the status message +// exchange with the node in order to peer with it. +func (c *Conn) peer(chain *Chain, status *eth.StatusPacket) error { + if err := c.handshake(); err != nil { + return fmt.Errorf("handshake failed: %v", err) + } + if err := c.statusExchange(chain, status); err != nil { + return fmt.Errorf("status exchange failed: %v", err) + } + return nil +} + +// handshake performs a protocol handshake with the node. +func (c *Conn) handshake() error { + // Write hello to client. + pub0 := crypto.FromECDSAPub(&c.ourKey.PublicKey)[1:] + ourHandshake := &protoHandshake{ + Version: 5, + Caps: c.caps, + ID: pub0, + } + if err := c.Write(baseProto, handshakeMsg, ourHandshake); err != nil { + return fmt.Errorf("write to connection failed: %v", err) + } + // Read hello from client. + code, data, err := c.Read() + if err != nil { + return fmt.Errorf("erroring reading handshake: %v", err) + } + switch code { + case handshakeMsg: + msg := new(protoHandshake) + if err := rlp.DecodeBytes(data, &msg); err != nil { + return fmt.Errorf("error decoding handshake msg: %v", err) + } + // Set snappy if version is at least 5. + if msg.Version >= 5 { + c.SetSnappy(true) + } + c.negotiateEthProtocol(msg.Caps) + if c.negotiatedProtoVersion == 0 { + return fmt.Errorf("could not negotiate eth protocol (remote caps: %v, local eth version: %v)", msg.Caps, c.ourHighestProtoVersion) + } + // If we require snap, verify that it was negotiated. + if c.ourHighestSnapProtoVersion != c.negotiatedSnapProtoVersion { + return fmt.Errorf("could not negotiate snap protocol (remote caps: %v, local snap version: %v)", msg.Caps, c.ourHighestSnapProtoVersion) + } + return nil + default: + return fmt.Errorf("bad handshake: got msg code %d", code) + } +} + +// negotiateEthProtocol sets the Conn's eth protocol version to highest +// advertised capability from peer. +func (c *Conn) negotiateEthProtocol(caps []p2p.Cap) { + var highestEthVersion uint + var highestSnapVersion uint + for _, capability := range caps { + switch capability.Name { + case "eth": + if capability.Version > highestEthVersion && capability.Version <= c.ourHighestProtoVersion { + highestEthVersion = capability.Version + } + case "snap": + if capability.Version > highestSnapVersion && capability.Version <= c.ourHighestSnapProtoVersion { + highestSnapVersion = capability.Version + } + } + } + c.negotiatedProtoVersion = highestEthVersion + c.negotiatedSnapProtoVersion = highestSnapVersion +} + +// statusExchange performs a `Status` message exchange with the given node. +func (c *Conn) statusExchange(chain *Chain, status *eth.StatusPacket) error { +loop: + for { + code, data, err := c.Read() + if err != nil { + return fmt.Errorf("failed to read from connection: %w", err) + } + switch code { + case eth.StatusMsg + protoOffset(ethProto): + msg := new(eth.StatusPacket) + if err := rlp.DecodeBytes(data, &msg); err != nil { + return fmt.Errorf("error decoding status packet: %w", err) + } + if have, want := msg.Head, chain.blocks[chain.Len()-1].Hash(); have != want { + return fmt.Errorf("wrong head block in status, want: %#x (block %d) have %#x", + want, chain.blocks[chain.Len()-1].NumberU64(), have) + } + if have, want := msg.TD.Cmp(chain.TD()), 0; have != want { + return fmt.Errorf("wrong TD in status: have %v want %v", have, want) + } + if have, want := msg.ForkID, chain.ForkID(); !reflect.DeepEqual(have, want) { + return fmt.Errorf("wrong fork ID in status: have %v, want %v", have, want) + } + if have, want := msg.ProtocolVersion, c.ourHighestProtoVersion; have != uint32(want) { + return fmt.Errorf("wrong protocol version: have %v, want %v", have, want) + } + break loop + case discMsg: + var msg []p2p.DiscReason + if rlp.DecodeBytes(data, &msg); len(msg) == 0 { + return errors.New("invalid disconnect message") + } + return fmt.Errorf("disconnect received: %v", pretty.Sdump(msg)) + case pingMsg: + // TODO (renaynay): in the future, this should be an error + // (PINGs should not be a response upon fresh connection) + c.Write(baseProto, pongMsg, nil) + default: + return fmt.Errorf("bad status message: code %d", code) + } + } + // make sure eth protocol version is set for negotiation + if c.negotiatedProtoVersion == 0 { + return errors.New("eth protocol version must be set in Conn") + } + if status == nil { + // default status message + status = ð.StatusPacket{ + ProtocolVersion: uint32(c.negotiatedProtoVersion), + NetworkID: chain.config.ChainID.Uint64(), + TD: chain.TD(), + Head: chain.blocks[chain.Len()-1].Hash(), + Genesis: chain.blocks[0].Hash(), + ForkID: chain.ForkID(), + } + } + if err := c.Write(ethProto, eth.StatusMsg, status); err != nil { + return fmt.Errorf("write to connection failed: %v", err) + } + return nil +} diff --git a/cmd/devp2p/internal/ethtest/engine.go b/cmd/devp2p/internal/ethtest/engine.go new file mode 100644 index 000000000000..ea4fc76e6ff7 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/engine.go @@ -0,0 +1,69 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +package ethtest + +import ( + "bytes" + "fmt" + "io" + "net/http" + "os" + "path" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/golang-jwt/jwt/v4" +) + +// EngineClient is a wrapper around engine-related data. +type EngineClient struct { + url string + jwt [32]byte + headfcu []byte +} + +// NewEngineClient creates a new engine client. +func NewEngineClient(dir, url, jwt string) (*EngineClient, error) { + headfcu, err := os.ReadFile(path.Join(dir, "headfcu.json")) + if err != nil { + return nil, fmt.Errorf("failed to read headfcu: %w", err) + } + return &EngineClient{url, common.HexToHash(jwt), headfcu}, nil +} + +// token returns the jwt claim token for authorization. +func (ec *EngineClient) token() string { + claims := jwt.RegisteredClaims{IssuedAt: jwt.NewNumericDate(time.Now())} + token, _ := jwt.NewWithClaims(jwt.SigningMethodHS256, claims).SignedString(ec.jwt[:]) + return token +} + +// sendForkchoiceUpdated sends an fcu for the head of the generated chain. +func (ec *EngineClient) sendForkchoiceUpdated() error { + var ( + req, _ = http.NewRequest(http.MethodPost, ec.url, io.NopCloser(bytes.NewReader(ec.headfcu))) + header = make(http.Header) + ) + // Set header + header.Set("accept", "application/json") + header.Set("content-type", "application/json") + header.Set("Authorization", fmt.Sprintf("Bearer %v", ec.token())) + req.Header = header + + _, err := new(http.Client).Do(req) + return err +} diff --git a/cmd/devp2p/internal/ethtest/helpers.go b/cmd/devp2p/internal/ethtest/helpers.go deleted file mode 100644 index a0339b88cbe4..000000000000 --- a/cmd/devp2p/internal/ethtest/helpers.go +++ /dev/null @@ -1,650 +0,0 @@ -// Copyright 2021 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with go-ethereum. If not, see . - -package ethtest - -import ( - "errors" - "fmt" - "net" - "reflect" - "strings" - "time" - - "github.com/davecgh/go-spew/spew" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/eth/protocols/eth" - "github.com/ethereum/go-ethereum/internal/utesting" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/rlpx" -) - -var ( - pretty = spew.ConfigState{ - Indent: " ", - DisableCapacities: true, - DisablePointerAddresses: true, - SortKeys: true, - } - timeout = 20 * time.Second -) - -// dial attempts to dial the given node and perform a handshake, -// returning the created Conn if successful. -func (s *Suite) dial() (*Conn, error) { - // dial - fd, err := net.Dial("tcp", fmt.Sprintf("%v:%d", s.Dest.IP(), s.Dest.TCP())) - if err != nil { - return nil, err - } - conn := Conn{Conn: rlpx.NewConn(fd, s.Dest.Pubkey())} - // do encHandshake - conn.ourKey, _ = crypto.GenerateKey() - _, err = conn.Handshake(conn.ourKey) - if err != nil { - conn.Close() - return nil, err - } - // set default p2p capabilities - conn.caps = []p2p.Cap{ - {Name: "eth", Version: 67}, - {Name: "eth", Version: 68}, - } - conn.ourHighestProtoVersion = 68 - return &conn, nil -} - -// dialSnap creates a connection with snap/1 capability. -func (s *Suite) dialSnap() (*Conn, error) { - conn, err := s.dial() - if err != nil { - return nil, fmt.Errorf("dial failed: %v", err) - } - conn.caps = append(conn.caps, p2p.Cap{Name: "snap", Version: 1}) - conn.ourHighestSnapProtoVersion = 1 - return conn, nil -} - -// peer performs both the protocol handshake and the status message -// exchange with the node in order to peer with it. -func (c *Conn) peer(chain *Chain, status *Status) error { - if err := c.handshake(); err != nil { - return fmt.Errorf("handshake failed: %v", err) - } - if _, err := c.statusExchange(chain, status); err != nil { - return fmt.Errorf("status exchange failed: %v", err) - } - return nil -} - -// handshake performs a protocol handshake with the node. -func (c *Conn) handshake() error { - defer c.SetDeadline(time.Time{}) - c.SetDeadline(time.Now().Add(10 * time.Second)) - // write hello to client - pub0 := crypto.FromECDSAPub(&c.ourKey.PublicKey)[1:] - ourHandshake := &Hello{ - Version: 5, - Caps: c.caps, - ID: pub0, - } - if err := c.Write(ourHandshake); err != nil { - return fmt.Errorf("write to connection failed: %v", err) - } - // read hello from client - switch msg := c.Read().(type) { - case *Hello: - // set snappy if version is at least 5 - if msg.Version >= 5 { - c.SetSnappy(true) - } - c.negotiateEthProtocol(msg.Caps) - if c.negotiatedProtoVersion == 0 { - return fmt.Errorf("could not negotiate eth protocol (remote caps: %v, local eth version: %v)", msg.Caps, c.ourHighestProtoVersion) - } - // If we require snap, verify that it was negotiated - if c.ourHighestSnapProtoVersion != c.negotiatedSnapProtoVersion { - return fmt.Errorf("could not negotiate snap protocol (remote caps: %v, local snap version: %v)", msg.Caps, c.ourHighestSnapProtoVersion) - } - return nil - default: - return fmt.Errorf("bad handshake: %#v", msg) - } -} - -// negotiateEthProtocol sets the Conn's eth protocol version to highest -// advertised capability from peer. -func (c *Conn) negotiateEthProtocol(caps []p2p.Cap) { - var highestEthVersion uint - var highestSnapVersion uint - for _, capability := range caps { - switch capability.Name { - case "eth": - if capability.Version > highestEthVersion && capability.Version <= c.ourHighestProtoVersion { - highestEthVersion = capability.Version - } - case "snap": - if capability.Version > highestSnapVersion && capability.Version <= c.ourHighestSnapProtoVersion { - highestSnapVersion = capability.Version - } - } - } - c.negotiatedProtoVersion = highestEthVersion - c.negotiatedSnapProtoVersion = highestSnapVersion -} - -// statusExchange performs a `Status` message exchange with the given node. -func (c *Conn) statusExchange(chain *Chain, status *Status) (Message, error) { - defer c.SetDeadline(time.Time{}) - c.SetDeadline(time.Now().Add(20 * time.Second)) - - // read status message from client - var message Message -loop: - for { - switch msg := c.Read().(type) { - case *Status: - if have, want := msg.Head, chain.blocks[chain.Len()-1].Hash(); have != want { - return nil, fmt.Errorf("wrong head block in status, want: %#x (block %d) have %#x", - want, chain.blocks[chain.Len()-1].NumberU64(), have) - } - if have, want := msg.TD.Cmp(chain.TD()), 0; have != want { - return nil, fmt.Errorf("wrong TD in status: have %v want %v", have, want) - } - if have, want := msg.ForkID, chain.ForkID(); !reflect.DeepEqual(have, want) { - return nil, fmt.Errorf("wrong fork ID in status: have %v, want %v", have, want) - } - if have, want := msg.ProtocolVersion, c.ourHighestProtoVersion; have != uint32(want) { - return nil, fmt.Errorf("wrong protocol version: have %v, want %v", have, want) - } - message = msg - break loop - case *Disconnect: - return nil, fmt.Errorf("disconnect received: %v", msg.Reason) - case *Ping: - c.Write(&Pong{}) // TODO (renaynay): in the future, this should be an error - // (PINGs should not be a response upon fresh connection) - default: - return nil, fmt.Errorf("bad status message: %s", pretty.Sdump(msg)) - } - } - // make sure eth protocol version is set for negotiation - if c.negotiatedProtoVersion == 0 { - return nil, errors.New("eth protocol version must be set in Conn") - } - if status == nil { - // default status message - status = &Status{ - ProtocolVersion: uint32(c.negotiatedProtoVersion), - NetworkID: chain.chainConfig.ChainID.Uint64(), - TD: chain.TD(), - Head: chain.blocks[chain.Len()-1].Hash(), - Genesis: chain.blocks[0].Hash(), - ForkID: chain.ForkID(), - } - } - if err := c.Write(status); err != nil { - return nil, fmt.Errorf("write to connection failed: %v", err) - } - return message, nil -} - -// createSendAndRecvConns creates two connections, one for sending messages to the -// node, and one for receiving messages from the node. -func (s *Suite) createSendAndRecvConns() (*Conn, *Conn, error) { - sendConn, err := s.dial() - if err != nil { - return nil, nil, fmt.Errorf("dial failed: %v", err) - } - recvConn, err := s.dial() - if err != nil { - sendConn.Close() - return nil, nil, fmt.Errorf("dial failed: %v", err) - } - return sendConn, recvConn, nil -} - -// readAndServe serves GetBlockHeaders requests while waiting -// on another message from the node. -func (c *Conn) readAndServe(chain *Chain, timeout time.Duration) Message { - start := time.Now() - for time.Since(start) < timeout { - c.SetReadDeadline(time.Now().Add(10 * time.Second)) - - msg := c.Read() - switch msg := msg.(type) { - case *Ping: - c.Write(&Pong{}) - case *GetBlockHeaders: - headers, err := chain.GetHeaders(msg) - if err != nil { - return errorf("could not get headers for inbound header request: %v", err) - } - resp := &BlockHeaders{ - RequestId: msg.ReqID(), - BlockHeadersRequest: eth.BlockHeadersRequest(headers), - } - if err := c.Write(resp); err != nil { - return errorf("could not write to connection: %v", err) - } - default: - return msg - } - } - return errorf("no message received within %v", timeout) -} - -// headersRequest executes the given `GetBlockHeaders` request. -func (c *Conn) headersRequest(request *GetBlockHeaders, chain *Chain, reqID uint64) ([]*types.Header, error) { - defer c.SetReadDeadline(time.Time{}) - c.SetReadDeadline(time.Now().Add(20 * time.Second)) - - // write request - request.RequestId = reqID - if err := c.Write(request); err != nil { - return nil, fmt.Errorf("could not write to connection: %v", err) - } - - // wait for response - msg := c.waitForResponse(chain, timeout, request.RequestId) - resp, ok := msg.(*BlockHeaders) - if !ok { - return nil, fmt.Errorf("unexpected message received: %s", pretty.Sdump(msg)) - } - headers := []*types.Header(resp.BlockHeadersRequest) - return headers, nil -} - -func (c *Conn) snapRequest(msg Message, id uint64, chain *Chain) (Message, error) { - defer c.SetReadDeadline(time.Time{}) - c.SetReadDeadline(time.Now().Add(5 * time.Second)) - if err := c.Write(msg); err != nil { - return nil, fmt.Errorf("could not write to connection: %v", err) - } - return c.ReadSnap(id) -} - -// headersMatch returns whether the received headers match the given request -func headersMatch(expected []*types.Header, headers []*types.Header) bool { - return reflect.DeepEqual(expected, headers) -} - -// waitForResponse reads from the connection until a response with the expected -// request ID is received. -func (c *Conn) waitForResponse(chain *Chain, timeout time.Duration, requestID uint64) Message { - for { - msg := c.readAndServe(chain, timeout) - if msg.ReqID() == requestID { - return msg - } - } -} - -// sendNextBlock broadcasts the next block in the chain and waits -// for the node to propagate the block and import it into its chain. -func (s *Suite) sendNextBlock() error { - // set up sending and receiving connections - sendConn, recvConn, err := s.createSendAndRecvConns() - if err != nil { - return err - } - defer sendConn.Close() - defer recvConn.Close() - if err = sendConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - if err = recvConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - // create new block announcement - nextBlock := s.fullChain.blocks[s.chain.Len()] - blockAnnouncement := &NewBlock{ - Block: nextBlock, - TD: s.fullChain.TotalDifficultyAt(s.chain.Len()), - } - // send announcement and wait for node to request the header - if err = s.testAnnounce(sendConn, recvConn, blockAnnouncement); err != nil { - return fmt.Errorf("failed to announce block: %v", err) - } - // wait for client to update its chain - if err = s.waitForBlockImport(recvConn, nextBlock); err != nil { - return fmt.Errorf("failed to receive confirmation of block import: %v", err) - } - // update test suite chain - s.chain.blocks = append(s.chain.blocks, nextBlock) - return nil -} - -// testAnnounce writes a block announcement to the node and waits for the node -// to propagate it. -func (s *Suite) testAnnounce(sendConn, receiveConn *Conn, blockAnnouncement *NewBlock) error { - if err := sendConn.Write(blockAnnouncement); err != nil { - return fmt.Errorf("could not write to connection: %v", err) - } - return s.waitAnnounce(receiveConn, blockAnnouncement) -} - -// waitAnnounce waits for a NewBlock or NewBlockHashes announcement from the node. -func (s *Suite) waitAnnounce(conn *Conn, blockAnnouncement *NewBlock) error { - for { - switch msg := conn.readAndServe(s.chain, timeout).(type) { - case *NewBlock: - if !reflect.DeepEqual(blockAnnouncement.Block.Header(), msg.Block.Header()) { - return fmt.Errorf("wrong header in block announcement: \nexpected %v "+ - "\ngot %v", blockAnnouncement.Block.Header(), msg.Block.Header()) - } - if !reflect.DeepEqual(blockAnnouncement.TD, msg.TD) { - return fmt.Errorf("wrong TD in announcement: expected %v, got %v", blockAnnouncement.TD, msg.TD) - } - return nil - case *NewBlockHashes: - hashes := *msg - if blockAnnouncement.Block.Hash() != hashes[0].Hash { - return fmt.Errorf("wrong block hash in announcement: expected %v, got %v", blockAnnouncement.Block.Hash(), hashes[0].Hash) - } - return nil - - // ignore tx announcements from previous tests - case *NewPooledTransactionHashes66: - continue - case *NewPooledTransactionHashes: - continue - case *Transactions: - continue - - default: - return fmt.Errorf("unexpected: %s", pretty.Sdump(msg)) - } - } -} - -func (s *Suite) waitForBlockImport(conn *Conn, block *types.Block) error { - defer conn.SetReadDeadline(time.Time{}) - conn.SetReadDeadline(time.Now().Add(20 * time.Second)) - // create request - req := &GetBlockHeaders{ - GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ - Origin: eth.HashOrNumber{Hash: block.Hash()}, - Amount: 1, - }, - } - - // loop until BlockHeaders response contains desired block, confirming the - // node imported the block - for { - requestID := uint64(54) - headers, err := conn.headersRequest(req, s.chain, requestID) - if err != nil { - return fmt.Errorf("GetBlockHeader request failed: %v", err) - } - // if headers response is empty, node hasn't imported block yet, try again - if len(headers) == 0 { - time.Sleep(100 * time.Millisecond) - continue - } - if !reflect.DeepEqual(block.Header(), headers[0]) { - return fmt.Errorf("wrong header returned: wanted %v, got %v", block.Header(), headers[0]) - } - return nil - } -} - -func (s *Suite) oldAnnounce() error { - sendConn, receiveConn, err := s.createSendAndRecvConns() - if err != nil { - return err - } - defer sendConn.Close() - defer receiveConn.Close() - if err := sendConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - if err := receiveConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - // create old block announcement - oldBlockAnnounce := &NewBlock{ - Block: s.chain.blocks[len(s.chain.blocks)/2], - TD: s.chain.blocks[len(s.chain.blocks)/2].Difficulty(), - } - if err := sendConn.Write(oldBlockAnnounce); err != nil { - return fmt.Errorf("could not write to connection: %v", err) - } - // wait to see if the announcement is propagated - switch msg := receiveConn.readAndServe(s.chain, time.Second*8).(type) { - case *NewBlock: - block := *msg - if block.Block.Hash() == oldBlockAnnounce.Block.Hash() { - return fmt.Errorf("unexpected: block propagated: %s", pretty.Sdump(msg)) - } - case *NewBlockHashes: - hashes := *msg - for _, hash := range hashes { - if hash.Hash == oldBlockAnnounce.Block.Hash() { - return fmt.Errorf("unexpected: block announced: %s", pretty.Sdump(msg)) - } - } - case *Error: - errMsg := *msg - // check to make sure error is timeout (propagation didn't come through == test successful) - if !strings.Contains(errMsg.String(), "timeout") { - return fmt.Errorf("unexpected error: %v", pretty.Sdump(msg)) - } - default: - return fmt.Errorf("unexpected: %s", pretty.Sdump(msg)) - } - return nil -} - -func (s *Suite) maliciousHandshakes(t *utesting.T) error { - conn, err := s.dial() - if err != nil { - return fmt.Errorf("dial failed: %v", err) - } - defer conn.Close() - - // write hello to client - pub0 := crypto.FromECDSAPub(&conn.ourKey.PublicKey)[1:] - handshakes := []*Hello{ - { - Version: 5, - Caps: []p2p.Cap{ - {Name: largeString(2), Version: 64}, - }, - ID: pub0, - }, - { - Version: 5, - Caps: []p2p.Cap{ - {Name: "eth", Version: 64}, - {Name: "eth", Version: 65}, - }, - ID: append(pub0, byte(0)), - }, - { - Version: 5, - Caps: []p2p.Cap{ - {Name: "eth", Version: 64}, - {Name: "eth", Version: 65}, - }, - ID: append(pub0, pub0...), - }, - { - Version: 5, - Caps: []p2p.Cap{ - {Name: "eth", Version: 64}, - {Name: "eth", Version: 65}, - }, - ID: largeBuffer(2), - }, - { - Version: 5, - Caps: []p2p.Cap{ - {Name: largeString(2), Version: 64}, - }, - ID: largeBuffer(2), - }, - } - for i, handshake := range handshakes { - t.Logf("Testing malicious handshake %v\n", i) - if err := conn.Write(handshake); err != nil { - return fmt.Errorf("could not write to connection: %v", err) - } - // check that the peer disconnected - for i := 0; i < 2; i++ { - switch msg := conn.readAndServe(s.chain, 20*time.Second).(type) { - case *Disconnect: - case *Error: - case *Hello: - // Discard one hello as Hello's are sent concurrently - continue - default: - return fmt.Errorf("unexpected: %s", pretty.Sdump(msg)) - } - } - // dial for the next round - conn, err = s.dial() - if err != nil { - return fmt.Errorf("dial failed: %v", err) - } - } - return nil -} - -func (s *Suite) maliciousStatus(conn *Conn) error { - if err := conn.handshake(); err != nil { - return fmt.Errorf("handshake failed: %v", err) - } - status := &Status{ - ProtocolVersion: uint32(conn.negotiatedProtoVersion), - NetworkID: s.chain.chainConfig.ChainID.Uint64(), - TD: largeNumber(2), - Head: s.chain.blocks[s.chain.Len()-1].Hash(), - Genesis: s.chain.blocks[0].Hash(), - ForkID: s.chain.ForkID(), - } - - // get status - msg, err := conn.statusExchange(s.chain, status) - if err != nil { - return fmt.Errorf("status exchange failed: %v", err) - } - switch msg := msg.(type) { - case *Status: - default: - return fmt.Errorf("expected status, got: %#v ", msg) - } - - // wait for disconnect - switch msg := conn.readAndServe(s.chain, timeout).(type) { - case *Disconnect: - return nil - case *Error: - return nil - default: - return fmt.Errorf("expected disconnect, got: %s", pretty.Sdump(msg)) - } -} - -func (s *Suite) hashAnnounce() error { - // create connections - sendConn, recvConn, err := s.createSendAndRecvConns() - if err != nil { - return fmt.Errorf("failed to create connections: %v", err) - } - defer sendConn.Close() - defer recvConn.Close() - if err := sendConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - if err := recvConn.peer(s.chain, nil); err != nil { - return fmt.Errorf("peering failed: %v", err) - } - - // create NewBlockHashes announcement - type anno struct { - Hash common.Hash // Hash of one particular block being announced - Number uint64 // Number of one particular block being announced - } - nextBlock := s.fullChain.blocks[s.chain.Len()] - announcement := anno{Hash: nextBlock.Hash(), Number: nextBlock.Number().Uint64()} - newBlockHash := &NewBlockHashes{announcement} - if err := sendConn.Write(newBlockHash); err != nil { - return fmt.Errorf("failed to write to connection: %v", err) - } - - // Announcement sent, now wait for a header request - msg := sendConn.Read() - blockHeaderReq, ok := msg.(*GetBlockHeaders) - if !ok { - return fmt.Errorf("unexpected %s", pretty.Sdump(msg)) - } - if blockHeaderReq.Amount != 1 { - return fmt.Errorf("unexpected number of block headers requested: %v", blockHeaderReq.Amount) - } - if blockHeaderReq.Origin.Hash != announcement.Hash { - return fmt.Errorf("unexpected block header requested. Announced:\n %v\n Remote request:\n%v", - pretty.Sdump(announcement), - pretty.Sdump(blockHeaderReq)) - } - err = sendConn.Write(&BlockHeaders{ - RequestId: blockHeaderReq.ReqID(), - BlockHeadersRequest: eth.BlockHeadersRequest{nextBlock.Header()}, - }) - if err != nil { - return fmt.Errorf("failed to write to connection: %v", err) - } - - // wait for block announcement - msg = recvConn.readAndServe(s.chain, timeout) - switch msg := msg.(type) { - case *NewBlockHashes: - hashes := *msg - if len(hashes) != 1 { - return fmt.Errorf("unexpected new block hash announcement: wanted 1 announcement, got %d", len(hashes)) - } - if nextBlock.Hash() != hashes[0].Hash { - return fmt.Errorf("unexpected block hash announcement, wanted %v, got %v", nextBlock.Hash(), - hashes[0].Hash) - } - - case *NewBlock: - // node should only propagate NewBlock without having requested the body if the body is empty - nextBlockBody := nextBlock.Body() - if len(nextBlockBody.Transactions) != 0 || len(nextBlockBody.Uncles) != 0 { - return fmt.Errorf("unexpected non-empty new block propagated: %s", pretty.Sdump(msg)) - } - if msg.Block.Hash() != nextBlock.Hash() { - return fmt.Errorf("mismatched hash of propagated new block: wanted %v, got %v", - nextBlock.Hash(), msg.Block.Hash()) - } - // check to make sure header matches header that was sent to the node - if !reflect.DeepEqual(nextBlock.Header(), msg.Block.Header()) { - return fmt.Errorf("incorrect header received: wanted %v, got %v", nextBlock.Header(), msg.Block.Header()) - } - default: - return fmt.Errorf("unexpected: %s", pretty.Sdump(msg)) - } - // confirm node imported block - if err := s.waitForBlockImport(recvConn, nextBlock); err != nil { - return fmt.Errorf("error waiting for node to import new block: %v", err) - } - // update the chain - s.chain.blocks = append(s.chain.blocks, nextBlock) - return nil -} diff --git a/cmd/devp2p/internal/ethtest/large.go b/cmd/devp2p/internal/ethtest/large.go deleted file mode 100644 index 40626c206812..000000000000 --- a/cmd/devp2p/internal/ethtest/large.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with go-ethereum. If not, see . - -package ethtest - -import ( - "crypto/rand" - "math/big" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/core/types" -) - -// largeNumber returns a very large big.Int. -func largeNumber(megabytes int) *big.Int { - buf := make([]byte, megabytes*1024*1024) - rand.Read(buf) - bigint := new(big.Int) - bigint.SetBytes(buf) - return bigint -} - -// largeBuffer returns a very large buffer. -func largeBuffer(megabytes int) []byte { - buf := make([]byte, megabytes*1024*1024) - rand.Read(buf) - return buf -} - -// largeString returns a very large string. -func largeString(megabytes int) string { - buf := make([]byte, megabytes*1024*1024) - rand.Read(buf) - return hexutil.Encode(buf) -} - -func largeBlock() *types.Block { - return types.NewBlockWithHeader(largeHeader()) -} - -// Returns a random hash -func randHash() common.Hash { - var h common.Hash - rand.Read(h[:]) - return h -} - -func largeHeader() *types.Header { - return &types.Header{ - MixDigest: randHash(), - ReceiptHash: randHash(), - TxHash: randHash(), - Nonce: types.BlockNonce{}, - Extra: []byte{}, - Bloom: types.Bloom{}, - GasUsed: 0, - Coinbase: common.Address{}, - GasLimit: 0, - UncleHash: types.EmptyUncleHash, - Time: 1337, - ParentHash: randHash(), - Root: randHash(), - Number: largeNumber(2), - Difficulty: largeNumber(2), - } -} diff --git a/cmd/devp2p/internal/ethtest/mkchain.sh b/cmd/devp2p/internal/ethtest/mkchain.sh new file mode 100644 index 000000000000..b9253e8ca760 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/mkchain.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +hivechain generate \ + --fork-interval 6 \ + --tx-interval 1 \ + --length 500 \ + --outdir testdata \ + --lastfork cancun \ + --outputs accounts,genesis,chain,headstate,txinfo,headblock,headfcu,newpayload,forkenv diff --git a/cmd/devp2p/internal/ethtest/protocol.go b/cmd/devp2p/internal/ethtest/protocol.go new file mode 100644 index 000000000000..f5f5f7e48973 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/protocol.go @@ -0,0 +1,87 @@ +// Copyright 2023 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . +package ethtest + +import ( + "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/rlp" +) + +// Unexported devp2p message codes from p2p/peer.go. +const ( + handshakeMsg = 0x00 + discMsg = 0x01 + pingMsg = 0x02 + pongMsg = 0x03 +) + +// Unexported devp2p protocol lengths from p2p package. +const ( + baseProtoLen = 16 + ethProtoLen = 17 + snapProtoLen = 8 +) + +// Unexported handshake structure from p2p/peer.go. +type protoHandshake struct { + Version uint64 + Name string + Caps []p2p.Cap + ListenPort uint64 + ID []byte + Rest []rlp.RawValue `rlp:"tail"` +} + +type Hello = protoHandshake + +// Proto is an enum representing devp2p protocol types. +type Proto int + +const ( + baseProto Proto = iota + ethProto + snapProto +) + +// getProto returns the protocol a certain message code is associated with +// (assuming the negotiated capabilities are exactly {eth,snap}) +func getProto(code uint64) Proto { + switch { + case code < baseProtoLen: + return baseProto + case code < baseProtoLen+ethProtoLen: + return ethProto + case code < baseProtoLen+ethProtoLen+snapProtoLen: + return snapProto + default: + panic("unhandled msg code beyond last protocol") + } +} + +// protoOffset will return the offset at which the specified protocol's messages +// begin. +func protoOffset(proto Proto) uint64 { + switch proto { + case baseProto: + return 0 + case ethProto: + return baseProtoLen + case snapProto: + return baseProtoLen + ethProtoLen + default: + panic("unhandled protocol") + } +} diff --git a/cmd/devp2p/internal/ethtest/snap.go b/cmd/devp2p/internal/ethtest/snap.go index 21a5c8232a16..64e063358545 100644 --- a/cmd/devp2p/internal/ethtest/snap.go +++ b/cmd/devp2p/internal/ethtest/snap.go @@ -20,9 +20,12 @@ import ( "bytes" "errors" "fmt" + "math/big" "math/rand" + "reflect" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth/protocols/snap" @@ -32,6 +35,13 @@ import ( "golang.org/x/crypto/sha3" ) +func (c *Conn) snapRequest(code uint64, msg any) (any, error) { + if err := c.Write(snapProto, code, msg); err != nil { + return nil, fmt.Errorf("could not write to connection: %v", err) + } + return c.ReadSnap() +} + func (s *Suite) TestSnapStatus(t *utesting.T) { conn, err := s.dialSnap() if err != nil { @@ -44,72 +54,267 @@ func (s *Suite) TestSnapStatus(t *utesting.T) { } type accRangeTest struct { - nBytes uint64 - root common.Hash - origin common.Hash - limit common.Hash + nBytes uint64 + root common.Hash + startingHash common.Hash + limitHash common.Hash expAccounts int expFirst common.Hash expLast common.Hash + + desc string } // TestSnapGetAccountRange various forms of GetAccountRange requests. func (s *Suite) TestSnapGetAccountRange(t *utesting.T) { var ( - root = s.chain.RootAt(999) - ffHash = common.MaxHash - zero = common.Hash{} - firstKeyMinus1 = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf29") - firstKey = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") - firstKeyPlus1 = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2b") - secondKey = common.HexToHash("0x09e47cd5056a689e708f22fe1f932709a320518e444f5f7d8d46a3da523d6606") - storageRoot = common.HexToHash("0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790") + ffHash = common.MaxHash + zero = common.Hash{} + + // test values derived from chain/ account dump + root = s.chain.Head().Root() + headstate = s.chain.AccountsInHashOrder() + firstKey = common.BytesToHash(headstate[0].AddressHash) + secondKey = common.BytesToHash(headstate[1].AddressHash) + storageRoot = findNonEmptyStorageRoot(headstate) ) - for i, tc := range []accRangeTest{ + + tests := []accRangeTest{ // Tests decreasing the number of bytes - {4000, root, zero, ffHash, 76, firstKey, common.HexToHash("0xd2669dcf3858e7f1eecb8b5fedbf22fbea3e9433848a75035f79d68422c2dcda")}, - {3000, root, zero, ffHash, 57, firstKey, common.HexToHash("0x9b63fa753ece5cb90657d02ecb15df4dc1508d8c1d187af1bf7f1a05e747d3c7")}, - {2000, root, zero, ffHash, 38, firstKey, common.HexToHash("0x5e6140ecae4354a9e8f47559a8c6209c1e0e69cb077b067b528556c11698b91f")}, - {1, root, zero, ffHash, 1, firstKey, firstKey}, + { + nBytes: 4000, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 86, + expFirst: firstKey, + expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"), + desc: "In this test, we request the entire state range, but limit the response to 4000 bytes.", + }, + { + nBytes: 3000, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 65, + expFirst: firstKey, + expLast: common.HexToHash("0x2e6fe1362b3e388184fd7bf08e99e74170b26361624ffd1c5f646da7067b58b6"), + desc: "In this test, we request the entire state range, but limit the response to 3000 bytes.", + }, + { + nBytes: 2000, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 44, + expFirst: firstKey, + expLast: common.HexToHash("0x1c3f74249a4892081ba0634a819aec9ed25f34c7653f5719b9098487e65ab595"), + desc: "In this test, we request the entire state range, but limit the response to 2000 bytes.", + }, + { + nBytes: 1, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `In this test, we request the entire state range, but limit the response to 1 byte. +The server should return the first account of the state.`, + }, + { + nBytes: 0, + root: root, + startingHash: zero, + limitHash: ffHash, + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `Here we request with a responseBytes limit of zero. +The server should return one account.`, + }, // Tests variations of the range - // - // [00b to firstkey]: should return [firstkey, secondkey], where secondkey is out of bounds - {4000, root, common.HexToHash("0x00bf000000000000000000000000000000000000000000000000000000000000"), common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2b"), 2, firstKey, secondKey}, - // [00b0 to 0bf0]: where both are before firstkey. Should return firstKey (even though it's out of bounds) - {4000, root, common.HexToHash("0x00b0000000000000000000000000000000000000000000000000000000000000"), common.HexToHash("0x00bf100000000000000000000000000000000000000000000000000000000000"), 1, firstKey, firstKey}, - {4000, root, zero, zero, 1, firstKey, firstKey}, - {4000, root, firstKey, ffHash, 76, firstKey, common.HexToHash("0xd2669dcf3858e7f1eecb8b5fedbf22fbea3e9433848a75035f79d68422c2dcda")}, - {4000, root, firstKeyPlus1, ffHash, 76, secondKey, common.HexToHash("0xd28f55d3b994f16389f36944ad685b48e0fc3f8fbe86c3ca92ebecadf16a783f")}, + { + nBytes: 4000, + root: root, + startingHash: hashAdd(firstKey, -500), + limitHash: hashAdd(firstKey, 1), + expAccounts: 2, + expFirst: firstKey, + expLast: secondKey, + desc: `In this test, we request a range where startingHash is before the first available +account key, and limitHash is after. The server should return the first and second +account of the state (because the second account is the 'next available').`, + }, + + { + nBytes: 4000, + root: root, + startingHash: hashAdd(firstKey, -500), + limitHash: hashAdd(firstKey, -450), + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `Here we request range where both bounds are before the first available account key. +This should return the first account (even though it's out of bounds).`, + }, + + // More range tests: + { + nBytes: 4000, + root: root, + startingHash: zero, + limitHash: zero, + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `In this test, both startingHash and limitHash are zero. +The server should return the first available account.`, + }, + { + nBytes: 4000, + root: root, + startingHash: firstKey, + limitHash: ffHash, + expAccounts: 86, + expFirst: firstKey, + expLast: common.HexToHash("0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099"), + desc: `In this test, startingHash is exactly the first available account key. +The server should return the first available account of the state as the first item.`, + }, + { + nBytes: 4000, + root: root, + startingHash: hashAdd(firstKey, 1), + limitHash: ffHash, + expAccounts: 86, + expFirst: secondKey, + expLast: common.HexToHash("0x4615e5f5df5b25349a00ad313c6cd0436b6c08ee5826e33a018661997f85ebaa"), + desc: `In this test, startingHash is after the first available key. +The server should return the second account of the state as the first item.`, + }, // Test different root hashes - // - // A stateroot that does not exist - {4000, common.Hash{0x13, 37}, zero, ffHash, 0, zero, zero}, + + { + nBytes: 4000, + root: common.Hash{0x13, 0x37}, + startingHash: zero, + limitHash: ffHash, + expAccounts: 0, + expFirst: zero, + expLast: zero, + desc: `This test requests a non-existent state root.`, + }, + // The genesis stateroot (we expect it to not be served) - {4000, s.chain.RootAt(0), zero, ffHash, 0, zero, zero}, - // A 127 block old stateroot, expected to be served - {4000, s.chain.RootAt(999 - 127), zero, ffHash, 77, firstKey, common.HexToHash("0xe4c6fdef5dd4e789a2612390806ee840b8ec0fe52548f8b4efe41abb20c37aac")}, - // A root which is not actually an account root, but a storage root - {4000, storageRoot, zero, ffHash, 0, zero, zero}, + { + nBytes: 4000, + root: s.chain.RootAt(0), + startingHash: zero, + limitHash: ffHash, + expAccounts: 0, + expFirst: zero, + expLast: zero, + desc: `This test requests data at the state root of the genesis block. We expect the +server to return no data because genesis is older than 127 blocks.`, + }, + + { + nBytes: 4000, + root: s.chain.RootAt(int(s.chain.Head().Number().Uint64()) - 127), + startingHash: zero, + limitHash: ffHash, + expAccounts: 84, + expFirst: firstKey, + expLast: common.HexToHash("0x580aa878e2f92d113a12c0a3ce3c21972b03dbe80786858d49a72097e2c491a3"), + desc: `This test requests data at a state root that is 127 blocks old. +We expect the server to have this state available.`, + }, + + { + nBytes: 4000, + root: storageRoot, + startingHash: zero, + limitHash: ffHash, + expAccounts: 0, + expFirst: zero, + expLast: zero, + desc: `This test requests data at a state root that is actually the storage root of +an existing account. The server is supposed to ignore this request.`, + }, // And some non-sensical requests - // - // range from [0xFF to 0x00], wrong order. Expect not to be serviced - {4000, root, ffHash, zero, 0, zero, zero}, - // range from [firstkey, firstkey-1], wrong order. Expect to get first key. - {4000, root, firstKey, firstKeyMinus1, 1, firstKey, firstKey}, + + { + nBytes: 4000, + root: root, + startingHash: ffHash, + limitHash: zero, + expAccounts: 0, + expFirst: zero, + expLast: zero, + desc: `In this test, the startingHash is after limitHash (wrong order). The server +should ignore this invalid request.`, + }, + + { + nBytes: 4000, + root: root, + startingHash: firstKey, + limitHash: hashAdd(firstKey, -1), + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `In this test, the startingHash is the first available key, and limitHash is +a key before startingHash (wrong order). The server should return the first available key.`, + }, + // range from [firstkey, 0], wrong order. Expect to get first key. - {4000, root, firstKey, zero, 1, firstKey, firstKey}, - // Max bytes: 0. Expect to deliver one account. - {0, root, zero, ffHash, 1, firstKey, firstKey}, - } { + { + nBytes: 4000, + root: root, + startingHash: firstKey, + limitHash: zero, + expAccounts: 1, + expFirst: firstKey, + expLast: firstKey, + desc: `In this test, the startingHash is the first available key and limitHash is zero. +(wrong order). The server should return the first available key.`, + }, + } + + for i, tc := range tests { tc := tc + if i > 0 { + t.Log("\n") + } + t.Logf("-- Test %d", i) + t.Log(tc.desc) + t.Log(" request:") + t.Logf(" root: %x", tc.root) + t.Logf(" range: %#x - %#x", tc.startingHash, tc.limitHash) + t.Logf(" responseBytes: %d", tc.nBytes) if err := s.snapGetAccountRange(t, &tc); err != nil { - t.Errorf("test %d \n root: %x\n range: %#x - %#x\n bytes: %d\nfailed: %v", i, tc.root, tc.origin, tc.limit, tc.nBytes, err) + t.Errorf("test %d failed: %v", i, err) + } + } +} + +func hashAdd(h common.Hash, n int64) common.Hash { + hb := h.Big() + return common.BigToHash(hb.Add(hb, big.NewInt(n))) +} + +func findNonEmptyStorageRoot(accounts []state.DumpAccount) common.Hash { + for i := range accounts { + if len(accounts[i].Storage) != 0 { + return common.BytesToHash(accounts[i].Root) } } + panic("can't find account with non-empty storage") } type stRangesTest struct { @@ -119,87 +324,125 @@ type stRangesTest struct { limit []byte nBytes uint64 - expSlots int + expSlots [][]*snap.StorageData + + desc string } // TestSnapGetStorageRanges various forms of GetStorageRanges requests. func (s *Suite) TestSnapGetStorageRanges(t *utesting.T) { var ( + acct = common.HexToAddress("0x8bebc8ba651aee624937e7d897853ac30c95a067") + acctHash = common.BytesToHash(s.chain.state[acct].AddressHash) ffHash = common.MaxHash zero = common.Hash{} - firstKey = common.HexToHash("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") - secondKey = common.HexToHash("0x09e47cd5056a689e708f22fe1f932709a320518e444f5f7d8d46a3da523d6606") + blockroot = s.chain.Head().Root() ) - for i, tc := range []stRangesTest{ + + // These are the storage slots of the test account, encoded as snap response data. + acctSlots := []*snap.StorageData{ { - root: s.chain.RootAt(999), - accounts: []common.Hash{secondKey, firstKey}, - origin: zero[:], - limit: ffHash[:], - nBytes: 500, - expSlots: 0, + Hash: common.HexToHash("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace"), + Body: []byte{0x02}, + }, + { + Hash: common.HexToHash("0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"), + Body: []byte{0x01}, + }, + { + Hash: common.HexToHash("0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b"), + Body: []byte{0x03}, }, + } + tests := []stRangesTest{ /* Some tests against this account: - { - "balance": "0", - "nonce": 1, - "root": "0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "storage": { - "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "02", - "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6": "01", - "0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b": "03" - }, - "key": "0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844" + + "0x8bebc8ba651aee624937e7d897853ac30c95a067": { + "balance": "1", + "nonce": 1, + "root": "0xe318dff15b33aa7f2f12d5567d58628e3e3f2e8859e46b56981a4083b391da17", + "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "storage": { + // Note: keys below are hashed!!! + "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "02", + "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6": "01", + "0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b": "03" + }, + "key": "0x445cb5c1278fdce2f9cbdb681bdd76c52f8e50e41dbd9e220242a69ba99ac099" } */ + { // [:] -> [slot1, slot2, slot3] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + desc: `This request has a range of 00..ff. +The server should return all storage slots of the test account.`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: zero[:], limit: ffHash[:], nBytes: 500, - expSlots: 3, + expSlots: [][]*snap.StorageData{acctSlots}, }, + { // [slot1:] -> [slot1, slot2, slot3] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + desc: `This test requests slots starting at the first available key. +The server should return all storage slots of the test account.`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace"), limit: ffHash[:], - nBytes: 500, - expSlots: 3, + nBytes: 1000, + expSlots: [][]*snap.StorageData{acctSlots}, }, - { // [slot1+ :] -> [slot2, slot3] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + + { // [slot1+:] -> [slot2, slot3] + desc: `This test requests slots starting at a key one past the first available key. +The server should return the remaining two slots of the test account.`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf"), limit: ffHash[:], nBytes: 500, - expSlots: 2, + expSlots: [][]*snap.StorageData{acctSlots[1:]}, }, + { // [slot1:slot2] -> [slot1, slot2] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + desc: `This test requests a range which is exactly the first and second available key.`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: common.FromHex("0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace"), limit: common.FromHex("0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6"), nBytes: 500, - expSlots: 2, + expSlots: [][]*snap.StorageData{acctSlots[:2]}, }, + { // [slot1+:slot2+] -> [slot2, slot3] - root: s.chain.RootAt(999), - accounts: []common.Hash{common.HexToHash("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844")}, + desc: `This test requests a range where limitHash is after the second, but before the third slot +of the test account. The server should return slots [2,3] (i.e. the 'next available' needs to be returned).`, + root: blockroot, + accounts: []common.Hash{acctHash}, origin: common.FromHex("0x4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), limit: common.FromHex("0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf7"), nBytes: 500, - expSlots: 2, + expSlots: [][]*snap.StorageData{acctSlots[1:]}, }, - } { + } + + for i, tc := range tests { tc := tc + if i > 0 { + t.Log("\n") + } + t.Logf("-- Test %d", i) + t.Log(tc.desc) + t.Log(" request:") + t.Logf(" root: %x", tc.root) + t.Logf(" accounts: %x", tc.accounts) + t.Logf(" range: %#x - %#x", tc.origin, tc.limit) + t.Logf(" responseBytes: %d", tc.nBytes) if err := s.snapGetStorageRanges(t, &tc); err != nil { - t.Errorf("test %d \n root: %x\n range: %#x - %#x\n bytes: %d\n #accounts: %d\nfailed: %v", - i, tc.root, tc.origin, tc.limit, tc.nBytes, len(tc.accounts), err) + t.Errorf(" failed: %v", err) } } } @@ -209,87 +452,92 @@ type byteCodesTest struct { hashes []common.Hash expHashes int + + desc string } // TestSnapGetByteCodes various forms of GetByteCodes requests. func (s *Suite) TestSnapGetByteCodes(t *utesting.T) { - // The halfchain import should yield these bytecodes - var hcBytecodes []common.Hash - for _, s := range []string{ - "0x200c90460d8b0063210d5f5b9918e053c8f2c024485e0f1b48be8b1fc71b1317", - "0x20ba67ed4ac6aff626e0d1d4db623e2fada9593daeefc4a6eb4b70e6cff986f3", - "0x24b5b4902cb3d897c1cee9f16be8e897d8fa277c04c6dc8214f18295fca5de44", - "0x320b9d0a2be39b8a1c858f9f8cb96b1df0983071681de07ded3a7c0d05db5fd6", - "0x48cb0d5275936a24632babc7408339f9f7b051274809de565b8b0db76e97e03c", - "0x67c7a6f5cdaa43b4baa0e15b2be63346d1b9ce9f2c3d7e5804e0cacd44ee3b04", - "0x6d8418059bdc8c3fabf445e6bfc662af3b6a4ae45999b953996e42c7ead2ab49", - "0x7043422e5795d03f17ee0463a37235258e609fdd542247754895d72695e3e142", - "0x727f9e6f0c4bac1ff8d72c2972122d9c8d37ccb37e04edde2339e8da193546f1", - "0x86ccd5e23c78568a8334e0cebaf3e9f48c998307b0bfb1c378cee83b4bfb29cb", - "0x8fc89b00d6deafd4c4279531e743365626dbfa28845ec697919d305c2674302d", - "0x92cfc353bcb9746bb6f9996b6b9df779c88af2e9e0eeac44879ca19887c9b732", - "0x941b4872104f0995a4898fcf0f615ea6bf46bfbdfcf63ea8f2fd45b3f3286b77", - "0xa02fe8f41159bb39d2b704c633c3d6389cf4bfcb61a2539a9155f60786cf815f", - "0xa4b94e0afdffcb0af599677709dac067d3145489ea7aede57672bee43e3b7373", - "0xaf4e64edd3234c1205b725e42963becd1085f013590bd7ed93f8d711c5eb65fb", - "0xb69a18fa855b742031420081999086f6fb56c3930ae8840944e8b8ae9931c51e", - "0xc246c217bc73ce6666c93a93a94faa5250564f50a3fdc27ea74c231c07fe2ca6", - "0xcd6e4ab2c3034df2a8a1dfaaeb1c4baecd162a93d22de35e854ee2945cbe0c35", - "0xe24b692d09d6fc2f3d1a6028c400a27c37d7cbb11511907c013946d6ce263d3b", - "0xe440c5f0e8603fd1ed25976eee261ccee8038cf79d6a4c0eb31b2bf883be737f", - "0xe6eacbc509203d21ac814b350e72934fde686b7f673c19be8cf956b0c70078ce", - "0xe8530de4371467b5be7ea0e69e675ab36832c426d6c1ce9513817c0f0ae1486b", - "0xe85d487abbbc83bf3423cf9731360cf4f5a37220e18e5add54e72ee20861196a", - "0xf195ea389a5eea28db0be93660014275b158963dec44af1dfa7d4743019a9a49", - } { - hcBytecodes = append(hcBytecodes, common.HexToHash(s)) - } - - for i, tc := range []byteCodesTest{ + var ( + allHashes = s.chain.CodeHashes() + headRoot = s.chain.Head().Root() + genesisRoot = s.chain.RootAt(0) + ) + + tests := []byteCodesTest{ // A few stateroots { - nBytes: 10000, hashes: []common.Hash{s.chain.RootAt(0), s.chain.RootAt(999)}, + desc: `Here we request state roots as code hashes. The server should deliver an empty response with no items.`, + nBytes: 10000, + hashes: []common.Hash{genesisRoot, headRoot}, expHashes: 0, }, { - nBytes: 10000, hashes: []common.Hash{s.chain.RootAt(0), s.chain.RootAt(0)}, + desc: `Here we request the genesis state root (which is not an existing code hash) two times. The server should deliver an empty response with no items.`, + nBytes: 10000, + hashes: []common.Hash{genesisRoot, genesisRoot}, expHashes: 0, }, // Empties { - nBytes: 10000, hashes: []common.Hash{types.EmptyRootHash}, + desc: `Here we request the empty state root (which is not an existing code hash). The server should deliver an empty response with no items.`, + nBytes: 10000, + hashes: []common.Hash{types.EmptyRootHash}, expHashes: 0, }, { - nBytes: 10000, hashes: []common.Hash{types.EmptyCodeHash}, + desc: `Here we request the empty code hash. The server should deliver an empty response item.`, + nBytes: 10000, + hashes: []common.Hash{types.EmptyCodeHash}, expHashes: 1, }, { - nBytes: 10000, hashes: []common.Hash{types.EmptyCodeHash, types.EmptyCodeHash, types.EmptyCodeHash}, + desc: `In this test, we request the empty code hash three times. The server should deliver the empty item three times.`, + nBytes: 10000, + hashes: []common.Hash{types.EmptyCodeHash, types.EmptyCodeHash, types.EmptyCodeHash}, expHashes: 3, }, // The existing bytecodes { - nBytes: 10000, hashes: hcBytecodes, - expHashes: len(hcBytecodes), + desc: `Here we request all available contract codes. The server should deliver them all in one response.`, + nBytes: 100000, + hashes: allHashes, + expHashes: len(allHashes), }, // The existing, with limited byte arg { - nBytes: 1, hashes: hcBytecodes, + desc: `In this test, the request has a bytes limit of one. The server should deliver one item.`, + nBytes: 1, + hashes: allHashes, expHashes: 1, }, { - nBytes: 0, hashes: hcBytecodes, + desc: `In this test, the request has a bytes limit of zero. The server should deliver one item.`, + nBytes: 0, + hashes: allHashes, expHashes: 1, }, + // Request the same hash multiple times. { - nBytes: 1000, hashes: []common.Hash{hcBytecodes[0], hcBytecodes[0], hcBytecodes[0], hcBytecodes[0]}, + desc: `This test requests the same code hash multiple times. The server should deliver it multiple times.`, + nBytes: 1000, + hashes: []common.Hash{allHashes[0], allHashes[0], allHashes[0], allHashes[0]}, expHashes: 4, }, - } { + } + + for i, tc := range tests { tc := tc + if i > 0 { + t.Log("\n") + } + t.Logf("-- Test %d", i) + t.Log(tc.desc) + t.Log(" request:") + t.Logf(" hashes: %x", tc.hashes) + t.Logf(" responseBytes: %d", tc.nBytes) if err := s.snapGetByteCodes(t, &tc); err != nil { - t.Errorf("test %d \n bytes: %d\n #hashes: %d\nfailed: %v", i, tc.nBytes, len(tc.hashes), err) + t.Errorf("failed: %v", err) } } } @@ -299,8 +547,10 @@ type trieNodesTest struct { paths []snap.TrieNodePathSet nBytes uint64 - expHashes []common.Hash - expReject bool + expHashes []common.Hash // expected response + expReject bool // if true, request should be rejected + + desc string } func decodeNibbles(nibbles []byte, bytes []byte) { @@ -344,29 +594,32 @@ func hexToCompact(hex []byte) []byte { // TestSnapTrieNodes various forms of GetTrieNodes requests. func (s *Suite) TestSnapTrieNodes(t *utesting.T) { - key := common.FromHex("0x00bf49f440a1cd0527e4d06e2765654c0f56452257516d793a9b8d604dcfdf2a") - // helper function to iterate the key, and generate the compact-encoded - // trie paths along the way. - pathTo := func(length int) snap.TrieNodePathSet { - hex := keybytesToHex(key)[:length] - hex[len(hex)-1] = 0 // remove term flag - hKey := hexToCompact(hex) - return snap.TrieNodePathSet{hKey} - } - var accPaths []snap.TrieNodePathSet + var ( + // This is the known address of the snap storage testing contract. + storageAcct = common.HexToAddress("0x8bebc8ba651aee624937e7d897853ac30c95a067") + storageAcctHash = common.BytesToHash(s.chain.state[storageAcct].AddressHash) + // This is the known address of an existing account. + key = common.FromHex("0xa87387b50b481431c6ccdb9ae99a54d4dcdd4a3eff75d7b17b4818f7bbfc21e9") + empty = types.EmptyCodeHash + accPaths []snap.TrieNodePathSet + ) for i := 1; i <= 65; i++ { - accPaths = append(accPaths, pathTo(i)) + accPaths = append(accPaths, makeSnapPath(key, i)) } - empty := types.EmptyCodeHash - for i, tc := range []trieNodesTest{ + + tests := []trieNodesTest{ { - root: s.chain.RootAt(999), + desc: `In this test, we send an empty request to the node.`, + root: s.chain.Head().Root(), paths: nil, nBytes: 500, expHashes: nil, }, + { - root: s.chain.RootAt(999), + desc: `In this test, we send a request containing an empty path-set. +The server should reject the request.`, + root: s.chain.Head().Root(), paths: []snap.TrieNodePathSet{ {}, // zero-length pathset should 'abort' and kick us off {[]byte{0}}, @@ -375,18 +628,21 @@ func (s *Suite) TestSnapTrieNodes(t *utesting.T) { expHashes: []common.Hash{}, expReject: true, }, + { - root: s.chain.RootAt(999), + desc: `Here we request the root node of the trie. The server should respond with the root node.`, + root: s.chain.RootAt(int(s.chain.Head().NumberU64() - 1)), paths: []snap.TrieNodePathSet{ {[]byte{0}}, {[]byte{1}, []byte{0}}, }, - nBytes: 5000, - //0x6b3724a41b8c38b46d4d02fba2bb2074c47a507eb16a9a4b978f91d32e406faf - expHashes: []common.Hash{s.chain.RootAt(999)}, + nBytes: 5000, + expHashes: []common.Hash{s.chain.RootAt(int(s.chain.Head().NumberU64() - 1))}, }, + { // nonsensically long path - root: s.chain.RootAt(999), + desc: `In this test, we request a very long trie node path. The server should respond with an empty node (keccak256("")).`, + root: s.chain.Head().Root(), paths: []snap.TrieNodePathSet{ {[]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8}}, @@ -394,25 +650,19 @@ func (s *Suite) TestSnapTrieNodes(t *utesting.T) { nBytes: 5000, expHashes: []common.Hash{common.HexToHash("0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470")}, }, - { - root: s.chain.RootAt(0), - paths: []snap.TrieNodePathSet{ - {[]byte{0}}, - {[]byte{1}, []byte{0}}, - }, - nBytes: 5000, - expHashes: []common.Hash{ - common.HexToHash("0x1ee1bb2fbac4d46eab331f3e8551e18a0805d084ed54647883aa552809ca968d"), - }, - }, + { // The leaf is only a couple of levels down, so the continued trie traversal causes lookup failures. - root: s.chain.RootAt(999), + desc: `Here we request some known accounts from the state.`, + root: s.chain.Head().Root(), paths: accPaths, nBytes: 5000, expHashes: []common.Hash{ - common.HexToHash("0xbcefee69b37cca1f5bf3a48aebe08b35f2ea1864fa958bb0723d909a0e0d28d8"), - common.HexToHash("0x4fb1e4e2391e4b4da471d59641319b8fa25d76c973d4bec594d7b00a69ae5135"), + // It's a bit unfortunate these are hard-coded, but the result depends on + // a lot of aspects of the state trie and can't be guessed in a simple + // way. So you'll have to update this when the test chain is changed. + common.HexToHash("0x3e963a69401a70224cbfb8c0cc2249b019041a538675d71ccf80c9328d114e2e"), + common.HexToHash("0xd0670d09cdfbf3c6320eb3e92c47c57baa6c226551a2d488c05581091e6b1689"), empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, @@ -420,55 +670,84 @@ func (s *Suite) TestSnapTrieNodes(t *utesting.T) { empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty, empty}, }, + { - // Basically the same as above, with different ordering - root: s.chain.RootAt(999), + desc: `In this test, we request some known accounts in state. The requested paths are NOT in key order.`, + root: s.chain.Head().Root(), paths: []snap.TrieNodePathSet{ accPaths[10], accPaths[1], accPaths[0], }, nBytes: 5000, + // As with the previous test, this result depends on the whole tree and will have to + // be updated when the test chain is changed. expHashes: []common.Hash{ empty, - common.HexToHash("0x4fb1e4e2391e4b4da471d59641319b8fa25d76c973d4bec594d7b00a69ae5135"), - common.HexToHash("0xbcefee69b37cca1f5bf3a48aebe08b35f2ea1864fa958bb0723d909a0e0d28d8"), + common.HexToHash("0xd0670d09cdfbf3c6320eb3e92c47c57baa6c226551a2d488c05581091e6b1689"), + common.HexToHash("0x3e963a69401a70224cbfb8c0cc2249b019041a538675d71ccf80c9328d114e2e"), }, }, + + // Storage tests. + // These use the known storage test account. + { - /* - A test against this account, requesting trie nodes for the storage trie + desc: `This test requests the storage root node of a known account.`, + root: s.chain.Head().Root(), + paths: []snap.TrieNodePathSet{ { - "balance": "0", - "nonce": 1, - "root": "0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790", - "codeHash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "storage": { - "0x405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace": "02", - "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6": "01", - "0xc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b": "03" - }, - "key": "0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844" - } - */ - root: s.chain.RootAt(999), + storageAcctHash[:], + []byte{0}, + }, + }, + nBytes: 5000, + expHashes: []common.Hash{ + common.HexToHash("0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790"), + }, + }, + + { + desc: `This test requests multiple storage nodes of a known account.`, + root: s.chain.Head().Root(), paths: []snap.TrieNodePathSet{ { - common.FromHex("0xf493f79c43bd747129a226ad42529885a4b108aba6046b2d12071695a6627844"), + storageAcctHash[:], []byte{0}, + []byte{0x1b}, }, }, nBytes: 5000, expHashes: []common.Hash{ common.HexToHash("0xbe3d75a1729be157e79c3b77f00206db4d54e3ea14375a015451c88ec067c790"), + common.HexToHash("0xf4984a11f61a2921456141df88de6e1a710d28681b91af794c5a721e47839cd7"), }, }, - } { + } + + for i, tc := range tests { tc := tc + if i > 0 { + t.Log("\n") + } + t.Logf("-- Test %d", i) + t.Log(tc.desc) + t.Log(" request:") + t.Logf(" root: %x", tc.root) + t.Logf(" paths: %x", tc.paths) + t.Logf(" responseBytes: %d", tc.nBytes) + if err := s.snapGetTrieNodes(t, &tc); err != nil { - t.Errorf("test %d \n #hashes %x\n root: %#x\n bytes: %d\nfailed: %v", i, len(tc.expHashes), tc.root, tc.nBytes, err) + t.Errorf(" failed: %v", err) } } } +func makeSnapPath(key []byte, length int) snap.TrieNodePathSet { + hex := keybytesToHex(key)[:length] + hex[len(hex)-1] = 0 // remove term flag + hKey := hexToCompact(hex) + return snap.TrieNodePathSet{hKey} +} + func (s *Suite) snapGetAccountRange(t *utesting.T, tc *accRangeTest) error { conn, err := s.dialSnap() if err != nil { @@ -479,22 +758,20 @@ func (s *Suite) snapGetAccountRange(t *utesting.T, tc *accRangeTest) error { t.Fatalf("peering failed: %v", err) } // write request - req := &GetAccountRange{ + req := &snap.GetAccountRangePacket{ ID: uint64(rand.Int63()), Root: tc.root, - Origin: tc.origin, - Limit: tc.limit, + Origin: tc.startingHash, + Limit: tc.limitHash, Bytes: tc.nBytes, } - resp, err := conn.snapRequest(req, req.ID, s.chain) + msg, err := conn.snapRequest(snap.GetAccountRangeMsg, req) if err != nil { return fmt.Errorf("account range request failed: %v", err) } - var res *snap.AccountRangePacket - if r, ok := resp.(*AccountRange); !ok { - return fmt.Errorf("account range response wrong: %T %v", resp, resp) - } else { - res = (*snap.AccountRangePacket)(r) + res, ok := msg.(*snap.AccountRangePacket) + if !ok { + return fmt.Errorf("account range response wrong: %T %v", msg, msg) } if exp, got := tc.expAccounts, len(res.Accounts); exp != got { return fmt.Errorf("expected %d accounts, got %d", exp, got) @@ -536,7 +813,7 @@ func (s *Suite) snapGetAccountRange(t *utesting.T, tc *accRangeTest) error { } proofdb := nodes.Set() - _, err = trie.VerifyRangeProof(tc.root, tc.origin[:], keys, accounts, proofdb) + _, err = trie.VerifyRangeProof(tc.root, tc.startingHash[:], keys, accounts, proofdb) return err } @@ -549,8 +826,9 @@ func (s *Suite) snapGetStorageRanges(t *utesting.T, tc *stRangesTest) error { if err = conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } + // write request - req := &GetStorageRanges{ + req := &snap.GetStorageRangesPacket{ ID: uint64(rand.Int63()), Root: tc.root, Accounts: tc.accounts, @@ -558,28 +836,38 @@ func (s *Suite) snapGetStorageRanges(t *utesting.T, tc *stRangesTest) error { Limit: tc.limit, Bytes: tc.nBytes, } - resp, err := conn.snapRequest(req, req.ID, s.chain) + msg, err := conn.snapRequest(snap.GetStorageRangesMsg, req) if err != nil { return fmt.Errorf("account range request failed: %v", err) } - var res *snap.StorageRangesPacket - if r, ok := resp.(*StorageRanges); !ok { - return fmt.Errorf("account range response wrong: %T %v", resp, resp) - } else { - res = (*snap.StorageRangesPacket)(r) + res, ok := msg.(*snap.StorageRangesPacket) + if !ok { + return fmt.Errorf("account range response wrong: %T %v", msg, msg) } - gotSlots := 0 + // Ensure the ranges are monotonically increasing for i, slots := range res.Slots { - gotSlots += len(slots) for j := 1; j < len(slots); j++ { if bytes.Compare(slots[j-1].Hash[:], slots[j].Hash[:]) >= 0 { return fmt.Errorf("storage slots not monotonically increasing for account #%d: #%d [%x] vs #%d [%x]", i, j-1, slots[j-1].Hash[:], j, slots[j].Hash[:]) } } } - if exp, got := tc.expSlots, gotSlots; exp != got { - return fmt.Errorf("expected %d slots, got %d", exp, got) + + // Compute expected slot hashes. + var expHashes [][]common.Hash + for _, acct := range tc.expSlots { + var list []common.Hash + for _, s := range acct { + list = append(list, s.Hash) + } + expHashes = append(expHashes, list) + } + + // Check response. + if !reflect.DeepEqual(res.Slots, tc.expSlots) { + t.Log(" expected slot hashes:", expHashes) + return fmt.Errorf("wrong storage slots in response: %#v", res.Slots) } return nil } @@ -594,24 +882,22 @@ func (s *Suite) snapGetByteCodes(t *utesting.T, tc *byteCodesTest) error { t.Fatalf("peering failed: %v", err) } // write request - req := &GetByteCodes{ + req := &snap.GetByteCodesPacket{ ID: uint64(rand.Int63()), Hashes: tc.hashes, Bytes: tc.nBytes, } - resp, err := conn.snapRequest(req, req.ID, s.chain) + msg, err := conn.snapRequest(snap.GetByteCodesMsg, req) if err != nil { return fmt.Errorf("getBytecodes request failed: %v", err) } - var res *snap.ByteCodesPacket - if r, ok := resp.(*ByteCodes); !ok { - return fmt.Errorf("bytecodes response wrong: %T %v", resp, resp) - } else { - res = (*snap.ByteCodesPacket)(r) + res, ok := msg.(*snap.ByteCodesPacket) + if !ok { + return fmt.Errorf("bytecodes response wrong: %T %v", msg, msg) } if exp, got := tc.expHashes, len(res.Codes); exp != got { for i, c := range res.Codes { - fmt.Printf("%d. %#x\n", i, c) + t.Logf("%d. %#x\n", i, c) } return fmt.Errorf("expected %d bytecodes, got %d", exp, got) } @@ -654,25 +940,24 @@ func (s *Suite) snapGetTrieNodes(t *utesting.T, tc *trieNodesTest) error { if err = conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // write request - req := &GetTrieNodes{ + + // write0 request + req := &snap.GetTrieNodesPacket{ ID: uint64(rand.Int63()), Root: tc.root, Paths: tc.paths, Bytes: tc.nBytes, } - resp, err := conn.snapRequest(req, req.ID, s.chain) + msg, err := conn.snapRequest(snap.GetTrieNodesMsg, req) if err != nil { if tc.expReject { return nil } return fmt.Errorf("trienodes request failed: %v", err) } - var res *snap.TrieNodesPacket - if r, ok := resp.(*TrieNodes); !ok { - return fmt.Errorf("trienodes response wrong: %T %v", resp, resp) - } else { - res = (*snap.TrieNodesPacket)(r) + res, ok := msg.(*snap.TrieNodesPacket) + if !ok { + return fmt.Errorf("trienodes response wrong: %T %v", msg, msg) } // Check the correctness @@ -690,7 +975,7 @@ func (s *Suite) snapGetTrieNodes(t *utesting.T, tc *trieNodesTest) error { hasher.Write(trienode) hasher.Read(hash) if got, want := hash, tc.expHashes[i]; !bytes.Equal(got, want[:]) { - fmt.Printf("hash %d wrong, got %#x, want %#x\n", i, got, want) + t.Logf(" hash %d wrong, got %#x, want %#x\n", i, got, want) err = fmt.Errorf("hash %d wrong, got %#x, want %#x", i, got, want) } } diff --git a/cmd/devp2p/internal/ethtest/snapTypes.go b/cmd/devp2p/internal/ethtest/snapTypes.go deleted file mode 100644 index 6bcaa9291ab2..000000000000 --- a/cmd/devp2p/internal/ethtest/snapTypes.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2022 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with go-ethereum. If not, see . - -package ethtest - -import "github.com/ethereum/go-ethereum/eth/protocols/snap" - -// GetAccountRange represents an account range query. -type GetAccountRange snap.GetAccountRangePacket - -func (msg GetAccountRange) Code() int { return 33 } -func (msg GetAccountRange) ReqID() uint64 { return msg.ID } - -type AccountRange snap.AccountRangePacket - -func (msg AccountRange) Code() int { return 34 } -func (msg AccountRange) ReqID() uint64 { return msg.ID } - -type GetStorageRanges snap.GetStorageRangesPacket - -func (msg GetStorageRanges) Code() int { return 35 } -func (msg GetStorageRanges) ReqID() uint64 { return msg.ID } - -type StorageRanges snap.StorageRangesPacket - -func (msg StorageRanges) Code() int { return 36 } -func (msg StorageRanges) ReqID() uint64 { return msg.ID } - -type GetByteCodes snap.GetByteCodesPacket - -func (msg GetByteCodes) Code() int { return 37 } -func (msg GetByteCodes) ReqID() uint64 { return msg.ID } - -type ByteCodes snap.ByteCodesPacket - -func (msg ByteCodes) Code() int { return 38 } -func (msg ByteCodes) ReqID() uint64 { return msg.ID } - -type GetTrieNodes snap.GetTrieNodesPacket - -func (msg GetTrieNodes) Code() int { return 39 } -func (msg GetTrieNodes) ReqID() uint64 { return msg.ID } - -type TrieNodes snap.TrieNodesPacket - -func (msg TrieNodes) Code() int { return 40 } -func (msg TrieNodes) ReqID() uint64 { return msg.ID } diff --git a/cmd/devp2p/internal/ethtest/suite.go b/cmd/devp2p/internal/ethtest/suite.go index 0b56c8cf4b6f..dd42ec7f7f89 100644 --- a/cmd/devp2p/internal/ethtest/suite.go +++ b/cmd/devp2p/internal/ethtest/suite.go @@ -17,35 +17,47 @@ package ethtest import ( - "time" + "crypto/rand" + "math/big" + "reflect" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/consensus/misc/eip4844" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/crypto/kzg4844" "github.com/ethereum/go-ethereum/eth/protocols/eth" "github.com/ethereum/go-ethereum/internal/utesting" + "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" + "github.com/holiman/uint256" ) // Suite represents a structure used to test a node's conformance // to the eth protocol. type Suite struct { - Dest *enode.Node - - chain *Chain - fullChain *Chain + Dest *enode.Node + chain *Chain + engine *EngineClient } // NewSuite creates and returns a new eth-test suite that can // be used to test the given node against the given blockchain // data. -func NewSuite(dest *enode.Node, chainfile string, genesisfile string) (*Suite, error) { - chain, err := loadChain(chainfile, genesisfile) +func NewSuite(dest *enode.Node, chainDir, engineURL, jwt string) (*Suite, error) { + chain, err := NewChain(chainDir) if err != nil { return nil, err } + engine, err := NewEngineClient(chainDir, engineURL, jwt) + if err != nil { + return nil, err + } + return &Suite{ - Dest: dest, - chain: chain.Shorten(1000), - fullChain: chain, + Dest: dest, + chain: chain, + engine: engine, }, nil } @@ -60,34 +72,30 @@ func (s *Suite) EthTests() []utesting.Test { {Name: "TestZeroRequestID", Fn: s.TestZeroRequestID}, // get block bodies {Name: "TestGetBlockBodies", Fn: s.TestGetBlockBodies}, - // broadcast - {Name: "TestBroadcast", Fn: s.TestBroadcast}, - {Name: "TestLargeAnnounce", Fn: s.TestLargeAnnounce}, - {Name: "TestOldAnnounce", Fn: s.TestOldAnnounce}, - {Name: "TestBlockHashAnnounce", Fn: s.TestBlockHashAnnounce}, - // malicious handshakes + status + // // malicious handshakes + status {Name: "TestMaliciousHandshake", Fn: s.TestMaliciousHandshake}, {Name: "TestMaliciousStatus", Fn: s.TestMaliciousStatus}, // test transactions {Name: "TestTransaction", Fn: s.TestTransaction}, - {Name: "TestMaliciousTx", Fn: s.TestMaliciousTx}, + {Name: "TestInvalidTxs", Fn: s.TestInvalidTxs}, {Name: "TestLargeTxRequest", Fn: s.TestLargeTxRequest}, {Name: "TestNewPooledTxs", Fn: s.TestNewPooledTxs}, + {Name: "TestBlobViolations", Fn: s.TestBlobViolations}, } } func (s *Suite) SnapTests() []utesting.Test { return []utesting.Test{ - {Name: "TestSnapStatus", Fn: s.TestSnapStatus}, - {Name: "TestSnapAccountRange", Fn: s.TestSnapGetAccountRange}, - {Name: "TestSnapGetByteCodes", Fn: s.TestSnapGetByteCodes}, - {Name: "TestSnapGetTrieNodes", Fn: s.TestSnapTrieNodes}, - {Name: "TestSnapGetStorageRanges", Fn: s.TestSnapGetStorageRanges}, + {Name: "Status", Fn: s.TestSnapStatus}, + {Name: "AccountRange", Fn: s.TestSnapGetAccountRange}, + {Name: "GetByteCodes", Fn: s.TestSnapGetByteCodes}, + {Name: "GetTrieNodes", Fn: s.TestSnapTrieNodes}, + {Name: "GetStorageRanges", Fn: s.TestSnapGetStorageRanges}, } } -// TestStatus attempts to connect to the given node and exchange -// a status message with it on the eth protocol. +// TestStatus attempts to connect to the given node and exchange a status +// message with it on the eth protocol. func (s *Suite) TestStatus(t *utesting.T) { conn, err := s.dial() if err != nil { @@ -99,8 +107,13 @@ func (s *Suite) TestStatus(t *utesting.T) { } } -// TestGetBlockHeaders tests whether the given node can respond to -// an eth `GetBlockHeaders` request and that the response is accurate. +// headersMatch returns whether the received headers match the given request +func headersMatch(expected []*types.Header, headers []*types.Header) bool { + return reflect.DeepEqual(expected, headers) +} + +// TestGetBlockHeaders tests whether the given node can respond to an eth +// `GetBlockHeaders` request and that the response is accurate. func (s *Suite) TestGetBlockHeaders(t *utesting.T) { conn, err := s.dial() if err != nil { @@ -110,8 +123,9 @@ func (s *Suite) TestGetBlockHeaders(t *utesting.T) { if err = conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // write request - req := &GetBlockHeaders{ + // Send headers request. + req := ð.GetBlockHeadersPacket{ + RequestId: 33, GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Hash: s.chain.blocks[1].Hash()}, Amount: 2, @@ -119,25 +133,31 @@ func (s *Suite) TestGetBlockHeaders(t *utesting.T) { Reverse: false, }, } - headers, err := conn.headersRequest(req, s.chain, 33) - if err != nil { - t.Fatalf("could not get block headers: %v", err) + // Read headers response. + if err := conn.Write(ethProto, eth.GetBlockHeadersMsg, req); err != nil { + t.Fatalf("could not write to connection: %v", err) + } + headers := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers); err != nil { + t.Fatalf("error reading msg: %v", err) } - // check for correct headers + if got, want := headers.RequestId, req.RequestId; got != want { + t.Fatalf("unexpected request id") + } + // Check for correct headers. expected, err := s.chain.GetHeaders(req) if err != nil { t.Fatalf("failed to get headers for given request: %v", err) } - if !headersMatch(expected, headers) { + if !headersMatch(expected, headers.BlockHeadersRequest) { t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers) } } -// TestSimultaneousRequests sends two simultaneous `GetBlockHeader` requests from -// the same connection with different request IDs and checks to make sure the node -// responds with the correct headers per request. +// TestSimultaneousRequests sends two simultaneous `GetBlockHeader` requests +// from the same connection with different request IDs and checks to make sure +// the node responds with the correct headers per request. func (s *Suite) TestSimultaneousRequests(t *utesting.T) { - // create a connection conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -147,8 +167,8 @@ func (s *Suite) TestSimultaneousRequests(t *utesting.T) { t.Fatalf("peering failed: %v", err) } - // create two requests - req1 := &GetBlockHeaders{ + // Create two different requests. + req1 := ð.GetBlockHeadersPacket{ RequestId: uint64(111), GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{ @@ -159,7 +179,7 @@ func (s *Suite) TestSimultaneousRequests(t *utesting.T) { Reverse: false, }, } - req2 := &GetBlockHeaders{ + req2 := ð.GetBlockHeadersPacket{ RequestId: uint64(222), GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{ @@ -171,46 +191,45 @@ func (s *Suite) TestSimultaneousRequests(t *utesting.T) { }, } - // write the first request - if err := conn.Write(req1); err != nil { + // Send both requests. + if err := conn.Write(ethProto, eth.GetBlockHeadersMsg, req1); err != nil { t.Fatalf("failed to write to connection: %v", err) } - // write the second request - if err := conn.Write(req2); err != nil { + if err := conn.Write(ethProto, eth.GetBlockHeadersMsg, req2); err != nil { t.Fatalf("failed to write to connection: %v", err) } - // wait for responses - msg := conn.waitForResponse(s.chain, timeout, req1.RequestId) - headers1, ok := msg.(*BlockHeaders) - if !ok { - t.Fatalf("unexpected %s", pretty.Sdump(msg)) + // Wait for responses. + headers1 := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers1); err != nil { + t.Fatalf("error reading block headers msg: %v", err) + } + if got, want := headers1.RequestId, req1.RequestId; got != want { + t.Fatalf("unexpected request id in response: got %d, want %d", got, want) + } + headers2 := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers2); err != nil { + t.Fatalf("error reading block headers msg: %v", err) } - msg = conn.waitForResponse(s.chain, timeout, req2.RequestId) - headers2, ok := msg.(*BlockHeaders) - if !ok { - t.Fatalf("unexpected %s", pretty.Sdump(msg)) + if got, want := headers2.RequestId, req2.RequestId; got != want { + t.Fatalf("unexpected request id in response: got %d, want %d", got, want) } - // check received headers for accuracy - expected1, err := s.chain.GetHeaders(req1) - if err != nil { + // Check received headers for accuracy. + if expected, err := s.chain.GetHeaders(req1); err != nil { t.Fatalf("failed to get expected headers for request 1: %v", err) + } else if !headersMatch(expected, headers1.BlockHeadersRequest) { + t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers1) } - expected2, err := s.chain.GetHeaders(req2) - if err != nil { + if expected, err := s.chain.GetHeaders(req2); err != nil { t.Fatalf("failed to get expected headers for request 2: %v", err) - } - if !headersMatch(expected1, headers1.BlockHeadersRequest) { - t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected1, headers1) - } - if !headersMatch(expected2, headers2.BlockHeadersRequest) { - t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected2, headers2) + } else if !headersMatch(expected, headers2.BlockHeadersRequest) { + t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers2) } } -// TestSameRequestID sends two requests with the same request ID to a -// single node. +// TestSameRequestID sends two requests with the same request ID to a single +// node. func (s *Suite) TestSameRequestID(t *utesting.T) { conn, err := s.dial() if err != nil { @@ -220,9 +239,10 @@ func (s *Suite) TestSameRequestID(t *utesting.T) { if err := conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // create requests + + // Create two different requests with the same ID. reqID := uint64(1234) - request1 := &GetBlockHeaders{ + request1 := ð.GetBlockHeadersPacket{ RequestId: reqID, GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{ @@ -231,7 +251,7 @@ func (s *Suite) TestSameRequestID(t *utesting.T) { Amount: 2, }, } - request2 := &GetBlockHeaders{ + request2 := ð.GetBlockHeadersPacket{ RequestId: reqID, GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{ @@ -241,40 +261,40 @@ func (s *Suite) TestSameRequestID(t *utesting.T) { }, } - // write the requests - if err = conn.Write(request1); err != nil { + // Send the requests. + if err = conn.Write(ethProto, eth.GetBlockHeadersMsg, request1); err != nil { t.Fatalf("failed to write to connection: %v", err) } - if err = conn.Write(request2); err != nil { + if err = conn.Write(ethProto, eth.GetBlockHeadersMsg, request2); err != nil { t.Fatalf("failed to write to connection: %v", err) } - // wait for responses - msg := conn.waitForResponse(s.chain, timeout, reqID) - headers1, ok := msg.(*BlockHeaders) - if !ok { - t.Fatalf("unexpected %s", pretty.Sdump(msg)) + // Wait for the responses. + headers1 := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers1); err != nil { + t.Fatalf("error reading from connection: %v", err) + } + if got, want := headers1.RequestId, request1.RequestId; got != want { + t.Fatalf("unexpected request id: got %d, want %d", got, want) + } + headers2 := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers2); err != nil { + t.Fatalf("error reading from connection: %v", err) } - msg = conn.waitForResponse(s.chain, timeout, reqID) - headers2, ok := msg.(*BlockHeaders) - if !ok { - t.Fatalf("unexpected %s", pretty.Sdump(msg)) + if got, want := headers2.RequestId, request2.RequestId; got != want { + t.Fatalf("unexpected request id: got %d, want %d", got, want) } - // check if headers match - expected1, err := s.chain.GetHeaders(request1) - if err != nil { + // Check if headers match. + if expected, err := s.chain.GetHeaders(request1); err != nil { t.Fatalf("failed to get expected block headers: %v", err) + } else if !headersMatch(expected, headers1.BlockHeadersRequest) { + t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers1) } - expected2, err := s.chain.GetHeaders(request2) - if err != nil { + if expected, err := s.chain.GetHeaders(request2); err != nil { t.Fatalf("failed to get expected block headers: %v", err) - } - if !headersMatch(expected1, headers1.BlockHeadersRequest) { - t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected1, headers1) - } - if !headersMatch(expected2, headers2.BlockHeadersRequest) { - t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected2, headers2) + } else if !headersMatch(expected, headers2.BlockHeadersRequest) { + t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers2) } } @@ -289,27 +309,32 @@ func (s *Suite) TestZeroRequestID(t *utesting.T) { if err := conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - req := &GetBlockHeaders{ + req := ð.GetBlockHeadersPacket{ GetBlockHeadersRequest: ð.GetBlockHeadersRequest{ Origin: eth.HashOrNumber{Number: 0}, Amount: 2, }, } - headers, err := conn.headersRequest(req, s.chain, 0) - if err != nil { - t.Fatalf("failed to get block headers: %v", err) + // Read headers response. + if err := conn.Write(ethProto, eth.GetBlockHeadersMsg, req); err != nil { + t.Fatalf("could not write to connection: %v", err) } - expected, err := s.chain.GetHeaders(req) - if err != nil { - t.Fatalf("failed to get expected block headers: %v", err) + headers := new(eth.BlockHeadersPacket) + if err := conn.ReadMsg(ethProto, eth.BlockHeadersMsg, &headers); err != nil { + t.Fatalf("error reading msg: %v", err) + } + if got, want := headers.RequestId, req.RequestId; got != want { + t.Fatalf("unexpected request id") } - if !headersMatch(expected, headers) { + if expected, err := s.chain.GetHeaders(req); err != nil { + t.Fatalf("failed to get expected block headers: %v", err) + } else if !headersMatch(expected, headers.BlockHeadersRequest) { t.Fatalf("header mismatch: \nexpected %v \ngot %v", expected, headers) } } -// TestGetBlockBodies tests whether the given node can respond to -// a `GetBlockBodies` request and that the response is accurate. +// TestGetBlockBodies tests whether the given node can respond to a +// `GetBlockBodies` request and that the response is accurate. func (s *Suite) TestGetBlockBodies(t *utesting.T) { conn, err := s.dial() if err != nil { @@ -319,104 +344,110 @@ func (s *Suite) TestGetBlockBodies(t *utesting.T) { if err := conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // create block bodies request - req := &GetBlockBodies{ - RequestId: uint64(55), + // Create block bodies request. + req := ð.GetBlockBodiesPacket{ + RequestId: 55, GetBlockBodiesRequest: eth.GetBlockBodiesRequest{ s.chain.blocks[54].Hash(), s.chain.blocks[75].Hash(), }, } - if err := conn.Write(req); err != nil { + if err := conn.Write(ethProto, eth.GetBlockBodiesMsg, req); err != nil { t.Fatalf("could not write to connection: %v", err) } - // wait for block bodies response - msg := conn.waitForResponse(s.chain, timeout, req.RequestId) - resp, ok := msg.(*BlockBodies) - if !ok { - t.Fatalf("unexpected: %s", pretty.Sdump(msg)) + // Wait for response. + resp := new(eth.BlockBodiesPacket) + if err := conn.ReadMsg(ethProto, eth.BlockBodiesMsg, &resp); err != nil { + t.Fatalf("error reading block bodies msg: %v", err) + } + if got, want := resp.RequestId, req.RequestId; got != want { + t.Fatalf("unexpected request id in respond", got, want) } bodies := resp.BlockBodiesResponse - t.Logf("received %d block bodies", len(bodies)) if len(bodies) != len(req.GetBlockBodiesRequest) { - t.Fatalf("wrong bodies in response: expected %d bodies, "+ - "got %d", len(req.GetBlockBodiesRequest), len(bodies)) + t.Fatalf("wrong bodies in response: expected %d bodies, got %d", len(req.GetBlockBodiesRequest), len(bodies)) } } -// TestBroadcast tests whether a block announcement is correctly -// propagated to the node's peers. -func (s *Suite) TestBroadcast(t *utesting.T) { - if err := s.sendNextBlock(); err != nil { - t.Fatalf("block broadcast failed: %v", err) - } +// randBuf makes a random buffer size kilobytes large. +func randBuf(size int) []byte { + buf := make([]byte, size*1024) + rand.Read(buf) + return buf } -// TestLargeAnnounce tests the announcement mechanism with a large block. -func (s *Suite) TestLargeAnnounce(t *utesting.T) { - nextBlock := len(s.chain.blocks) - blocks := []*NewBlock{ +// TestMaliciousHandshake tries to send malicious data during the handshake. +func (s *Suite) TestMaliciousHandshake(t *utesting.T) { + key, _ := crypto.GenerateKey() + + // Write hello to client. + var ( + pub0 = crypto.FromECDSAPub(&key.PublicKey)[1:] + version = eth.ProtocolVersions[0] + ) + handshakes := []*protoHandshake{ { - Block: largeBlock(), - TD: s.fullChain.TotalDifficultyAt(nextBlock), + Version: 5, + Caps: []p2p.Cap{ + {Name: string(randBuf(2)), Version: version}, + }, + ID: pub0, }, { - Block: s.fullChain.blocks[nextBlock], - TD: largeNumber(2), + Version: 5, + Caps: []p2p.Cap{ + {Name: "eth", Version: version}, + }, + ID: append(pub0, byte(0)), }, { - Block: largeBlock(), - TD: largeNumber(2), + Version: 5, + Caps: []p2p.Cap{ + {Name: "eth", Version: version}, + }, + ID: append(pub0, pub0...), + }, + { + Version: 5, + Caps: []p2p.Cap{ + {Name: "eth", Version: version}, + }, + ID: randBuf(2), + }, + { + Version: 5, + Caps: []p2p.Cap{ + {Name: string(randBuf(2)), Version: version}, + }, + ID: randBuf(2), }, } - - for i, blockAnnouncement := range blocks[0:3] { - t.Logf("Testing malicious announcement: %v\n", i) - conn, err := s.dial() + for _, handshake := range handshakes { + conn, err := s.dialAs(key) if err != nil { t.Fatalf("dial failed: %v", err) } - if err := conn.peer(s.chain, nil); err != nil { - t.Fatalf("peering failed: %v", err) - } - if err := conn.Write(blockAnnouncement); err != nil { + defer conn.Close() + + if err := conn.Write(ethProto, handshakeMsg, handshake); err != nil { t.Fatalf("could not write to connection: %v", err) } - // Invalid announcement, check that peer disconnected - switch msg := conn.readAndServe(s.chain, 8*time.Second).(type) { - case *Disconnect: - case *Error: - break - default: - t.Fatalf("unexpected: %s wanted disconnect", pretty.Sdump(msg)) + // Check that the peer disconnected + for i := 0; i < 2; i++ { + code, _, err := conn.Read() + if err != nil { + // Client may have disconnected without sending disconnect msg. + continue + } + switch code { + case discMsg: + case handshakeMsg: + // Discard one hello as Hello's are sent concurrently + continue + default: + t.Fatalf("unexpected msg: code %d", code) + } } - conn.Close() - } - // Test the last block as a valid block - if err := s.sendNextBlock(); err != nil { - t.Fatalf("failed to broadcast next block: %v", err) - } -} - -// TestOldAnnounce tests the announcement mechanism with an old block. -func (s *Suite) TestOldAnnounce(t *utesting.T) { - if err := s.oldAnnounce(); err != nil { - t.Fatal(err) - } -} - -// TestBlockHashAnnounce sends a new block hash announcement and expects -// the node to perform a `GetBlockHeaders` request. -func (s *Suite) TestBlockHashAnnounce(t *utesting.T) { - if err := s.hashAnnounce(); err != nil { - t.Fatalf("block hash announcement failed: %v", err) - } -} - -// TestMaliciousHandshake tries to send malicious data during the handshake. -func (s *Suite) TestMaliciousHandshake(t *utesting.T) { - if err := s.maliciousHandshakes(t); err != nil { - t.Fatal(err) } } @@ -427,46 +458,184 @@ func (s *Suite) TestMaliciousStatus(t *utesting.T) { t.Fatalf("dial failed: %v", err) } defer conn.Close() - - if err := s.maliciousStatus(conn); err != nil { - t.Fatal(err) + if err := conn.handshake(); err != nil { + t.Fatalf("handshake failed: %v", err) + } + // Create status with large total difficulty. + status := ð.StatusPacket{ + ProtocolVersion: uint32(conn.negotiatedProtoVersion), + NetworkID: s.chain.config.ChainID.Uint64(), + TD: new(big.Int).SetBytes(randBuf(2048)), + Head: s.chain.Head().Hash(), + Genesis: s.chain.GetBlock(0).Hash(), + ForkID: s.chain.ForkID(), + } + if err := conn.statusExchange(s.chain, status); err != nil { + t.Fatalf("status exchange failed: %v", err) + } + // Wait for disconnect. + code, _, err := conn.Read() + if err != nil { + t.Fatalf("error reading from connection: %v", err) + } + switch code { + case discMsg: + break + default: + t.Fatalf("expected disconnect, got: %d", code) } } -// TestTransaction sends a valid transaction to the node and -// checks if the transaction gets propagated. +// TestTransaction sends a valid transaction to the node and checks if the +// transaction gets propagated. func (s *Suite) TestTransaction(t *utesting.T) { - if err := s.sendSuccessfulTxs(t); err != nil { + // Nudge client out of syncing mode to accept pending txs. + if err := s.engine.sendForkchoiceUpdated(); err != nil { + t.Fatalf("failed to send next block: %v", err) + } + from, nonce := s.chain.GetSender(0) + inner := &types.DynamicFeeTx{ + ChainID: s.chain.config.ChainID, + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 30000, + To: &common.Address{0xaa}, + Value: common.Big1, + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: %v", err) + } + if err := s.sendTxs([]*types.Transaction{tx}); err != nil { t.Fatal(err) } + s.chain.IncNonce(from, 1) } -// TestMaliciousTx sends several invalid transactions and tests whether +// TestInvalidTxs sends several invalid transactions and tests whether // the node will propagate them. -func (s *Suite) TestMaliciousTx(t *utesting.T) { - if err := s.sendMaliciousTxs(t); err != nil { - t.Fatal(err) +func (s *Suite) TestInvalidTxs(t *utesting.T) { + // Nudge client out of syncing mode to accept pending txs. + if err := s.engine.sendForkchoiceUpdated(); err != nil { + t.Fatalf("failed to send next block: %v", err) + } + + from, nonce := s.chain.GetSender(0) + inner := &types.DynamicFeeTx{ + ChainID: s.chain.config.ChainID, + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 30000, + To: &common.Address{0xaa}, + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: %v", err) + } + if err := s.sendTxs([]*types.Transaction{tx}); err != nil { + t.Fatalf("failed to send txs: %v", err) + } + s.chain.IncNonce(from, 1) + + inners := []*types.DynamicFeeTx{ + // Nonce already used + { + ChainID: s.chain.config.ChainID, + Nonce: nonce - 1, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 100000, + }, + // Value exceeds balance + { + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 100000, + Value: s.chain.Balance(from), + }, + // Gas limit too low + { + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 1337, + }, + // Code size too large + { + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Data: randBuf(50), + Gas: 1_000_000, + }, + // Data too large + { + Nonce: nonce, + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + To: &common.Address{0xaa}, + Data: randBuf(128), + Gas: 5_000_000, + }, + } + + var txs []*types.Transaction + for _, inner := range inners { + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: %v", err) + } + txs = append(txs, tx) + } + if err := s.sendInvalidTxs(txs); err != nil { + t.Fatalf("failed to send invalid txs: %v", err) } } // TestLargeTxRequest tests whether a node can fulfill a large GetPooledTransactions // request. func (s *Suite) TestLargeTxRequest(t *utesting.T) { - // send the next block to ensure the node is no longer syncing and - // is able to accept txs - if err := s.sendNextBlock(); err != nil { + // Nudge client out of syncing mode to accept pending txs. + if err := s.engine.sendForkchoiceUpdated(); err != nil { t.Fatalf("failed to send next block: %v", err) } - // send 2000 transactions to the node - hashMap, txs, err := generateTxs(s, 2000) - if err != nil { - t.Fatalf("failed to generate transactions: %v", err) + + // Generate many transactions to seed target with. + var ( + from, nonce = s.chain.GetSender(1) + count = 2000 + txs []*types.Transaction + hashes []common.Hash + set = make(map[common.Hash]struct{}) + ) + for i := 0; i < count; i++ { + inner := &types.DynamicFeeTx{ + ChainID: s.chain.config.ChainID, + Nonce: nonce + uint64(i), + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 75000, + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: err") + } + txs = append(txs, tx) + set[tx.Hash()] = struct{}{} + hashes = append(hashes, tx.Hash()) } - if err = sendMultipleSuccessfulTxs(t, s, txs); err != nil { - t.Fatalf("failed to send multiple txs: %v", err) + s.chain.IncNonce(from, uint64(count)) + + // Send txs. + if err := s.sendTxs(txs); err != nil { + t.Fatalf("failed to send txs: %v", err) } - // set up connection to receive to ensure node is peered with the receiving connection - // before tx request is sent + + // Set up receive connection to ensure node is peered with the receiving + // connection before tx request is sent. conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -475,55 +644,62 @@ func (s *Suite) TestLargeTxRequest(t *utesting.T) { if err = conn.peer(s.chain, nil); err != nil { t.Fatalf("peering failed: %v", err) } - // create and send pooled tx request - hashes := make([]common.Hash, 0) - for _, hash := range hashMap { - hashes = append(hashes, hash) - } - getTxReq := &GetPooledTransactions{ + // Create and send pooled tx request. + req := ð.GetPooledTransactionsPacket{ RequestId: 1234, GetPooledTransactionsRequest: hashes, } - if err = conn.Write(getTxReq); err != nil { + if err = conn.Write(ethProto, eth.GetPooledTransactionsMsg, req); err != nil { t.Fatalf("could not write to conn: %v", err) } - // check that all received transactions match those that were sent to node - switch msg := conn.waitForResponse(s.chain, timeout, getTxReq.RequestId).(type) { - case *PooledTransactions: - for _, gotTx := range msg.PooledTransactionsResponse { - if _, exists := hashMap[gotTx.Hash()]; !exists { - t.Fatalf("unexpected tx received: %v", gotTx.Hash()) - } + // Check that all received transactions match those that were sent to node. + msg := new(eth.PooledTransactionsPacket) + if err := conn.ReadMsg(ethProto, eth.PooledTransactionsMsg, &msg); err != nil { + t.Fatalf("error reading from connection: %v", err) + } + if got, want := msg.RequestId, req.RequestId; got != want { + t.Fatalf("unexpected request id in response: got %d, want %d", got, want) + } + for _, got := range msg.PooledTransactionsResponse { + if _, exists := set[got.Hash()]; !exists { + t.Fatalf("unexpected tx received: %v", got.Hash()) } - default: - t.Fatalf("unexpected %s", pretty.Sdump(msg)) } } -// TestNewPooledTxs tests whether a node will do a GetPooledTransactions -// request upon receiving a NewPooledTransactionHashes announcement. +// TestNewPooledTxs tests whether a node will do a GetPooledTransactions request +// upon receiving a NewPooledTransactionHashes announcement. func (s *Suite) TestNewPooledTxs(t *utesting.T) { - // send the next block to ensure the node is no longer syncing and - // is able to accept txs - if err := s.sendNextBlock(); err != nil { + // Nudge client out of syncing mode to accept pending txs. + if err := s.engine.sendForkchoiceUpdated(); err != nil { t.Fatalf("failed to send next block: %v", err) } - - // generate 50 txs - _, txs, err := generateTxs(s, 50) - if err != nil { - t.Fatalf("failed to generate transactions: %v", err) - } - hashes := make([]common.Hash, len(txs)) - types := make([]byte, len(txs)) - sizes := make([]uint32, len(txs)) - for i, tx := range txs { + var ( + count = 50 + from, nonce = s.chain.GetSender(1) + hashes = make([]common.Hash, count) + txTypes = make([]byte, count) + sizes = make([]uint32, count) + ) + for i := 0; i < count; i++ { + inner := &types.DynamicFeeTx{ + ChainID: s.chain.config.ChainID, + Nonce: nonce + uint64(i), + GasTipCap: common.Big1, + GasFeeCap: s.chain.Head().BaseFee(), + Gas: 75000, + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + t.Fatalf("failed to sign tx: err") + } hashes[i] = tx.Hash() - types[i] = tx.Type() + txTypes[i] = tx.Type() sizes[i] = uint32(tx.Size()) } + s.chain.IncNonce(from, uint64(count)) - // send announcement + // Connect to peer. conn, err := s.dial() if err != nil { t.Fatalf("dial failed: %v", err) @@ -533,40 +709,138 @@ func (s *Suite) TestNewPooledTxs(t *utesting.T) { t.Fatalf("peering failed: %v", err) } - var ann Message = NewPooledTransactionHashes{Types: types, Sizes: sizes, Hashes: hashes} - if conn.negotiatedProtoVersion < eth.ETH68 { - ann = NewPooledTransactionHashes66(hashes) - } - err = conn.Write(ann) + // Send announcement. + ann := eth.NewPooledTransactionHashesPacket68{Types: txTypes, Sizes: sizes, Hashes: hashes} + err = conn.Write(ethProto, eth.NewPooledTransactionHashesMsg, ann) if err != nil { t.Fatalf("failed to write to connection: %v", err) } - // wait for GetPooledTxs request + // Wait for GetPooledTxs request. for { - msg := conn.readAndServe(s.chain, timeout) + msg, err := conn.ReadEth() + if err != nil { + t.Fatalf("failed to read eth msg: %v", err) + } switch msg := msg.(type) { - case *GetPooledTransactions: + case *eth.GetPooledTransactionsPacket: if len(msg.GetPooledTransactionsRequest) != len(hashes) { t.Fatalf("unexpected number of txs requested: wanted %d, got %d", len(hashes), len(msg.GetPooledTransactionsRequest)) } return - - // ignore propagated txs from previous tests - case *NewPooledTransactionHashes66: + case *eth.NewPooledTransactionHashesPacket68: continue - case *NewPooledTransactionHashes: - continue - case *Transactions: - continue - - // ignore block announcements from previous tests - case *NewBlockHashes: - continue - case *NewBlock: + case *eth.TransactionsPacket: continue default: t.Fatalf("unexpected %s", pretty.Sdump(msg)) } } } + +func makeSidecar(data ...byte) *types.BlobTxSidecar { + var ( + blobs = make([]kzg4844.Blob, len(data)) + commitments []kzg4844.Commitment + proofs []kzg4844.Proof + ) + for i := range blobs { + blobs[i][0] = data[i] + c, _ := kzg4844.BlobToCommitment(blobs[i]) + p, _ := kzg4844.ComputeBlobProof(blobs[i], c) + commitments = append(commitments, c) + proofs = append(proofs, p) + } + return &types.BlobTxSidecar{ + Blobs: blobs, + Commitments: commitments, + Proofs: proofs, + } +} + +func (s *Suite) makeBlobTxs(count, blobs int, discriminator byte) (txs types.Transactions) { + from, nonce := s.chain.GetSender(5) + for i := 0; i < count; i++ { + // Make blob data, max of 2 blobs per tx. + blobdata := make([]byte, blobs%2) + for i := range blobdata { + blobdata[i] = discriminator + blobs -= 1 + } + inner := &types.BlobTx{ + ChainID: uint256.MustFromBig(s.chain.config.ChainID), + Nonce: nonce + uint64(i), + GasTipCap: uint256.NewInt(1), + GasFeeCap: uint256.MustFromBig(s.chain.Head().BaseFee()), + Gas: 100000, + BlobFeeCap: uint256.MustFromBig(eip4844.CalcBlobFee(*s.chain.Head().ExcessBlobGas())), + BlobHashes: makeSidecar(blobdata...).BlobHashes(), + Sidecar: makeSidecar(blobdata...), + } + tx, err := s.chain.SignTx(from, types.NewTx(inner)) + if err != nil { + panic("blob tx signing failed") + } + txs = append(txs, tx) + } + return txs +} + +func (s *Suite) TestBlobViolations(t *utesting.T) { + if err := s.engine.sendForkchoiceUpdated(); err != nil { + t.Fatalf("send fcu failed: %v", err) + } + // Create blob txs for each tests with unqiue tx hashes. + var ( + t1 = s.makeBlobTxs(2, 3, 0x1) + t2 = s.makeBlobTxs(2, 3, 0x2) + ) + for _, test := range []struct { + ann eth.NewPooledTransactionHashesPacket68 + resp eth.PooledTransactionsResponse + }{ + // Invalid tx size. + { + ann: eth.NewPooledTransactionHashesPacket68{ + Types: []byte{types.BlobTxType, types.BlobTxType}, + Sizes: []uint32{uint32(t1[0].Size()), uint32(t1[1].Size() + 10)}, + Hashes: []common.Hash{t1[0].Hash(), t1[1].Hash()}, + }, + resp: eth.PooledTransactionsResponse(t1), + }, + // Wrong tx type. + { + ann: eth.NewPooledTransactionHashesPacket68{ + Types: []byte{types.DynamicFeeTxType, types.BlobTxType}, + Sizes: []uint32{uint32(t2[0].Size()), uint32(t2[1].Size())}, + Hashes: []common.Hash{t2[0].Hash(), t2[1].Hash()}, + }, + resp: eth.PooledTransactionsResponse(t2), + }, + } { + conn, err := s.dial() + if err != nil { + t.Fatalf("dial fail: %v", err) + } + if err := conn.peer(s.chain, nil); err != nil { + t.Fatalf("peering failed: %v", err) + } + if err := conn.Write(ethProto, eth.NewPooledTransactionHashesMsg, test.ann); err != nil { + t.Fatalf("sending announcement failed: %v", err) + } + req := new(eth.GetPooledTransactionsPacket) + if err := conn.ReadMsg(ethProto, eth.GetPooledTransactionsMsg, req); err != nil { + t.Fatalf("reading pooled tx request failed: %v", err) + } + resp := eth.PooledTransactionsPacket{RequestId: req.RequestId, PooledTransactionsResponse: test.resp} + if err := conn.Write(ethProto, eth.PooledTransactionsMsg, resp); err != nil { + t.Fatalf("writing pooled tx response failed: %v", err) + } + if code, _, err := conn.Read(); err != nil { + t.Fatalf("expected disconnect on blob violation, got err: %v", err) + } else if code != discMsg { + t.Fatalf("expected disconnect on blob violation, got msg code: %d", code) + } + conn.Close() + } +} diff --git a/cmd/devp2p/internal/ethtest/suite_test.go b/cmd/devp2p/internal/ethtest/suite_test.go index b11cdb5b8829..79146c8abab2 100644 --- a/cmd/devp2p/internal/ethtest/suite_test.go +++ b/cmd/devp2p/internal/ethtest/suite_test.go @@ -17,38 +17,53 @@ package ethtest import ( + crand "crypto/rand" + "fmt" "os" + "path" "testing" "time" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/eth" + "github.com/ethereum/go-ethereum/eth/catalyst" "github.com/ethereum/go-ethereum/eth/ethconfig" "github.com/ethereum/go-ethereum/internal/utesting" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/p2p" ) -var ( - genesisFile = "./testdata/genesis.json" - halfchainFile = "./testdata/halfchain.rlp" - fullchainFile = "./testdata/chain.rlp" -) +func makeJWTSecret() (string, [32]byte, error) { + var secret [32]byte + if _, err := crand.Read(secret[:]); err != nil { + return "", secret, fmt.Errorf("failed to create jwt secret: %v", err) + } + jwtPath := path.Join(os.TempDir(), "jwt_secret") + if err := os.WriteFile(jwtPath, []byte(hexutil.Encode(secret[:])), 0600); err != nil { + return "", secret, fmt.Errorf("failed to prepare jwt secret file: %v", err) + } + return jwtPath, secret, nil +} func TestEthSuite(t *testing.T) { - t.Parallel() - geth, err := runGeth() + jwtPath, secret, err := makeJWTSecret() + if err != nil { + t.Fatalf("could not make jwt secret: %v", err) + } + geth, err := runGeth("./testdata", jwtPath) if err != nil { t.Fatalf("could not run geth: %v", err) } defer geth.Close() - suite, err := NewSuite(geth.Server().Self(), fullchainFile, genesisFile) + suite, err := NewSuite(geth.Server().Self(), "./testdata", geth.HTTPAuthEndpoint(), common.Bytes2Hex(secret[:])) if err != nil { t.Fatalf("could not create new test suite: %v", err) } for _, test := range suite.EthTests() { t.Run(test.Name, func(t *testing.T) { - result := utesting.RunTAP([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) + result := utesting.RunTests([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) if result[0].Failed { t.Fatal() } @@ -57,20 +72,23 @@ func TestEthSuite(t *testing.T) { } func TestSnapSuite(t *testing.T) { - t.Parallel() - geth, err := runGeth() + jwtPath, secret, err := makeJWTSecret() + if err != nil { + t.Fatalf("could not make jwt secret: %v", err) + } + geth, err := runGeth("./testdata", jwtPath) if err != nil { t.Fatalf("could not run geth: %v", err) } defer geth.Close() - suite, err := NewSuite(geth.Server().Self(), fullchainFile, genesisFile) + suite, err := NewSuite(geth.Server().Self(), "./testdata", geth.HTTPAuthEndpoint(), common.Bytes2Hex(secret[:])) if err != nil { t.Fatalf("could not create new test suite: %v", err) } for _, test := range suite.SnapTests() { t.Run(test.Name, func(t *testing.T) { - result := utesting.RunTAP([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) + result := utesting.RunTests([]utesting.Test{{Name: test.Name, Fn: test.Fn}}, os.Stdout) if result[0].Failed { t.Fatal() } @@ -79,20 +97,23 @@ func TestSnapSuite(t *testing.T) { } // runGeth creates and starts a geth node -func runGeth() (*node.Node, error) { +func runGeth(dir string, jwtPath string) (*node.Node, error) { stack, err := node.New(&node.Config{ + AuthAddr: "127.0.0.1", + AuthPort: 0, P2P: p2p.Config{ ListenAddr: "127.0.0.1:0", NoDiscovery: true, MaxPeers: 10, // in case a test requires multiple connections, can be changed in the future NoDial: true, }, + JWTSecret: jwtPath, }) if err != nil { return nil, err } - err = setupGeth(stack) + err = setupGeth(stack, dir) if err != nil { stack.Close() return nil, err @@ -104,12 +125,11 @@ func runGeth() (*node.Node, error) { return stack, nil } -func setupGeth(stack *node.Node) error { - chain, err := loadChain(halfchainFile, genesisFile) +func setupGeth(stack *node.Node, dir string) error { + chain, err := NewChain(dir) if err != nil { return err } - backend, err := eth.New(stack, ðconfig.Config{ Genesis: &chain.genesis, NetworkId: chain.genesis.Config.ChainID.Uint64(), // 19763 @@ -122,8 +142,9 @@ func setupGeth(stack *node.Node) error { if err != nil { return err } - backend.SetSynced() - + if err := catalyst.Register(stack, backend); err != nil { + return fmt.Errorf("failed to register catalyst service: %v", err) + } _, err = backend.BlockChain().InsertChain(chain.blocks[1:]) return err } diff --git a/cmd/devp2p/internal/ethtest/testdata/accounts.json b/cmd/devp2p/internal/ethtest/testdata/accounts.json new file mode 100644 index 000000000000..c9666235a850 --- /dev/null +++ b/cmd/devp2p/internal/ethtest/testdata/accounts.json @@ -0,0 +1,62 @@ +{ + "0x0c2c51a0990aee1d73c1228de158688341557508": { + "key": "0xbfcd0e032489319f4e5ca03e643b2025db624be6cf99cbfed90c4502e3754850" + }, + "0x14e46043e63d0e3cdcf2530519f4cfaf35058cb2": { + "key": "0x457075f6822ac29481154792f65c5f1ec335b4fea9ca20f3fea8fa1d78a12c68" + }, + "0x16c57edf7fa9d9525378b0b81bf8a3ced0620c1c": { + "key": "0x865898edcf43206d138c93f1bbd86311f4657b057658558888aa5ac4309626a6" + }, + "0x1f4924b14f34e24159387c0a4cdbaa32f3ddb0cf": { + "key": "0xee7f7875d826d7443ccc5c174e38b2c436095018774248a8074ee92d8914dcdb" + }, + "0x1f5bde34b4afc686f136c7a3cb6ec376f7357759": { + "key": "0x25e6ce8611cefb5cd338aeaa9292ed2139714668d123a4fb156cabb42051b5b7" + }, + "0x2d389075be5be9f2246ad654ce152cf05990b209": { + "key": "0x19168cd7767604b3d19b99dc3da1302b9ccb6ee9ad61660859e07acd4a2625dd" + }, + "0x3ae75c08b4c907eb63a8960c45b86e1e9ab6123c": { + "key": "0x71aa7d299c7607dabfc3d0e5213d612b5e4a97455b596c2f642daac43fa5eeaa" + }, + "0x4340ee1b812acb40a1eb561c019c327b243b92df": { + "key": "0x47f666f20e2175606355acec0ea1b37870c15e5797e962340da7ad7972a537e8" + }, + "0x4a0f1452281bcec5bd90c3dce6162a5995bfe9df": { + "key": "0xa88293fefc623644969e2ce6919fb0dbd0fd64f640293b4bf7e1a81c97e7fc7f" + }, + "0x4dde844b71bcdf95512fb4dc94e84fb67b512ed8": { + "key": "0x6e1e16a9c15641c73bf6e237f9293ab1d4e7c12b9adf83cfc94bcf969670f72d" + }, + "0x5f552da00dfb4d3749d9e62dcee3c918855a86a0": { + "key": "0x41be4e00aac79f7ffbb3455053ec05e971645440d594c047cdcc56a3c7458bd6" + }, + "0x654aa64f5fbefb84c270ec74211b81ca8c44a72e": { + "key": "0xc825f31cd8792851e33a290b3d749e553983111fc1f36dfbbdb45f101973f6a9" + }, + "0x717f8aa2b982bee0e29f573d31df288663e1ce16": { + "key": "0x8d0faa04ae0f9bc3cd4c890aa025d5f40916f4729538b19471c0beefe11d9e19" + }, + "0x7435ed30a8b4aeb0877cef0c6e8cffe834eb865f": { + "key": "0x4552dbe6ca4699322b5d923d0c9bcdd24644f5db8bf89a085b67c6c49b8a1b91" + }, + "0x83c7e323d189f18725ac510004fdc2941f8c4a78": { + "key": "0x34391cbbf06956bb506f45ec179cdd84df526aa364e27bbde65db9c15d866d00" + }, + "0x84e75c28348fb86acea1a93a39426d7d60f4cc46": { + "key": "0xf6a8f1603b8368f3ca373292b7310c53bec7b508aecacd442554ebc1c5d0c856" + }, + "0xc7b99a164efd027a93f147376cc7da7c67c6bbe0": { + "key": "0x8d56bcbcf2c1b7109e1396a28d7a0234e33544ade74ea32c460ce4a443b239b1" + }, + "0xd803681e487e6ac18053afc5a6cd813c86ec3e4d": { + "key": "0xfc39d1c9ddbba176d806ebb42d7460189fe56ca163ad3eb6143bfc6beb6f6f72" + }, + "0xe7d13f7aa2a838d24c59b40186a0aca1e21cffcc": { + "key": "0x9ee3fd550664b246ad7cdba07162dd25530a3b1d51476dd1d85bbc29f0592684" + }, + "0xeda8645ba6948855e3b3cd596bbb07596d59c603": { + "key": "0x14cdde09d1640eb8c3cda063891b0453073f57719583381ff78811efa6d4199f" + } +} \ No newline at end of file diff --git a/cmd/devp2p/internal/ethtest/testdata/chain.rlp b/cmd/devp2p/internal/ethtest/testdata/chain.rlp index 5ebc2f3bb788825e2c5fc48ecfb85a697f016506..2964c02bb1fb7f695fe6eb9c1c113f9db0b7c97b 100644 GIT binary patch literal 341951 zcmeF4bzBtP`}avfkQ9&-mhO;75SCC{x;ZRL1j=vkrELBX_XEM5hSDp z1d);y<(XYr_4bba!u`7cd43$-GiT1ZW_H-?v)5ejIkUSP7!e!jYrrYtk&?)^E*yv< zPl_4=BznYxx1!itoJ2;0&R_S9u`F=BRc(5>!PMtb*i*Zb)*k9^($h4FS1%r2NSFNv z?MYBbMEi>ZjLllRw@?qgjH_5uYc_6@x=KH*1@o4eG>{7ZelHlu9k?#R__7ea_z+(r ze_vRKTDjo;!tlI@QP9TN} zGbb=d6E{a&Hb;{S(lUpjpFz|zh*}X*%Oh$5L@k7CJImU(d;ySQ$%iS@nJ)_f9u>6XcnYleM1$*a+zT)p9P4SCwH zVMEf?ro%etr&iIwL3SfisQGzy1Rp;Gq1AZ1?mp$3G5-F&-1}{D-Vv(W;p(%t0@>Q{ zTTiZ`UzZh8daM>AJX&BtgNV)X^))Oo(9EHr_O6_pGtXVuN;iG3 z^gf)@?9VlC zw!fwZwdV@gUe+95E#nc%dg6lQ?aG(@lHI4n4-eG5oqEzQrpD{qy|z#7B_vBV*pgGq zsI{=VDu{IZ+#=_1X#s8sugEViRBnpT04WPjG%_x6+vMs=?^y#+74sz;wh0B_n6{4n z%KFqkpAZlftj5&3C-c_fG^24v=mt3hZ0!-s69O7`3SLu{#?UC zgZ*3~{@H~6+K=eQ{W*w+7{uD`00YvG0zrfC156l@IRg|8jUNrHel5tcAAP^>0d4nr zV7sGGq!rlsu_0u)6SlLZBGTr^67iS7LnYR(_Ar&$_o6+IbvH~tHKGg@1%0-7e zw?Ctodv+VUj4txUQ^UtC6O1z%cpvW<^(Q|x1|??r2UCC7u3+zR5X6q(c=ph*RjWAfOoG}ch3x+o% z3yTND=IHt~K!s|fd_cg(Cp0!Xrkw6qB<^^=o)o9DT1&xL01^-ymBAT3$`lz z@cDunT2V^rJUv-Jlp_xp|7~b!XK;a%kfgfoTpzVt$QT+ChVtw62YIw)e~lpoIOgw< zK9DPnWEmM#dVkDbW_7vlbuN3nkDK41TDu`Spf^o_jHXpLYdhrhWPHuKv$5g`%`Ki9zv)KCbNWKY+>yKX`Nl!*m0E6_6}a;qWQw{WkXKI;(lZms9V<3Nln& z^|mWrq`1CA!qNA6j=`)=vkHTKdy&a?UBP>6R%Nr?G%9E*pHrr zDmrbl`ju(vAq5;n6bRPBJ+p^6ux_z_4jUcZD6v`iiot4EfYTQ(_XKaxY{hR8 z;>Xcpw1B(TeEypU1M@wajpHfe&_NSNx}eCr7+TZu1^njUV&?$)!c>FIz@4SH=5o zeNvm+r@p=lQp;f5d8s!lvL!NwyAY4(W8R<{IOoE5g`0XJd`ud^B%J_WsrqKl>&a<#u8|IArFZPg_C6$9UuOP?hAwezhXoSFjs zxDWJ&&=>A*4x{d>u@`}X$aZLd$VLlr=1R_g72(44tlX?=oER=WX^-{owdE0X1`!>_Cn~r|kP;TY$#rlYap_3kmv60Az4k+HNdRpPjiEj(F=+BOW#l9e2^OD@xU$A zdTLt=u-5nAs(qqK{-mcu&)i^M(lnC$l4T9UGYcqM;q$ z)gGpj(O$F%A{)*gk?n(#)zQ>O;;?#ILxrz~qP5R#??RVc@ZE1(#9WRTs;Sc*VmuRM6j2ZcfAd!vz>(zm_ijNl_`>9k)WN~67y6Xi3 zkF6ag+rB0GMWH?3r{n|)-M6cKbsADkdx5VTE|_r|b0;tMZXfSaJv*aUo%#h(C@dvs z4iUi6n3Wk8#UiMWOUyRBxLQZLd7oYEo#)XxK!??{uQXuTpMX;~Kjp-`NHn|0rAMlS zY^YsZra#r4EJI4}r+5C(wcwJ&+m&1uvGrag2O=Bp-ys_ES*$U! zNj-F&c>a7>)2%}}uAO)+Uce>JTaTHr z+0a+c$WJ|R=EJ*??!!`0ZDGjua!Nqoe0s3d`QW%!GG;jcg5i@@?UBudg{oeieBIN7RE zrsXIN4%CG>nc^eV1#{kmw2;X59|aavZ*r8LMQL#0dW7qD0t?LfPsnxxK;?r7q`?M; zH5}Q-pSfk>u#P?~Fyth(u2>Av7diE5#mCfH+@Y8-x@25npXZph$ppHnq5+i$XCz2F zJ#tjvI1rydA~C|RW+Y7eOhG^j;J7`#Sd%5Y$>0gF3w^A=Uy;;0yT*LTR1Qm@5UNgQ z4dCB!6SZU)IUN};5fs%q=IAS#>-vQ^V!oyHMyJ7dbfp6+Af#{v5d}c{^4dcjShrud zJ&ZuMd8bMSil$|&&Q4;vu{fy58zj6z&qTiuSYF~cWZ8F(RPcY zVO|`rK^Q!4L(!14W5_6uSnlEuNJMbD`jZK4#~9uZK{R*mce>#<4E(pVF?0a3k|0cfsdi}&`b*c3CIoE3(`mw84Pq(< zMeRj{KI>lidqTKf=>fo0=F7WlUzH84N=DwKre2(g7dSpa3KS+g5t7A5KYZK@7_mzy zAKkK~l^!tVcyyvTA?9sH-TJjLzPT^6r-o!K(Lw21!KIgcDf|)s6ECt{%`Q0>VK1s& zuFq%MUYvLOco@f~HqUOq;qPYZ6}C@obI0pD`rW(bMm8}t4xM949(ppm@oMD#)A&fB z8#{_K`7`+iZt=ibv5{l0xrrNtDvyea(zo80N;YHL1K*Qm3!#jdiyqLTnE+Pi;8^*o zKn`mxruPcQDThV6yAQ%2LV85I(yJm4y15tW*{oX~`8$;R5#Unr9nB1N2FD~>L&}yu zm{-Rrgod9$do)59{65O}j_L$(;(Wki*V9i19}}P@+Vk0U^t67QykIHr)>hk`VnMn9 zULM85-auag2**`)=$MO#lh{JpPYpJztM^!P)^@z6oyTT|*gW{xgI-d2&txpdVmLr>T z=;Zy0Pom7)Q5qbm452b&gvww+z#b$9Mwr7J7>E9=2=gNd|4jp>Yf%~;`2Lp&1N#0? zOeX;R&1?Uo`xmCOf#2#OsMAn%Ld#HpgCz7#J5lDQeYP{kJ?2g(y?ZxJFHkTM?=#Vf zmB~1}In6TgsKA!TTBv2o>Uz89v4!e-x64CT{BEsUz!jXnanth<%sSCKF}LJnFmoF$ z>ZE3b4|!~iaik_bI1Z3dGu=4H5EH-HS1XXwcUX8{>G^Hld@A8^>_j=|z=VSvF?SLj z5=0yTnJy@250L;4bp!~gQ?^dWS!fZ^b~bKzN`8?rz|flgktdL#K%E4r{Lk-p9CT8d+TB=H*}J|NdM;C#HCd zF6tf<>Mo2uA=<>6S-8wmToN0+zR6Xx4kQ(FSkHf-!9IsQb!wkFo5qnmRe;@8=Yquz z3%M+weDNbmvaNauZ@J6B7nU?1Yv9DavYDFMT1(xdRVOPQ8~HwlXwTehUAyv_r~|J! zQIHn!pPTJXsv_!jY15clwHh-Z|9*>lu1+#>k+9>LeGUEGLCitK9Mava286oey$B72 zI>LVibpY@w?n92lLfXpR29E7j>S={0QYMBfpgbq>lQcc)vDa$=p?{_q*3u-ib3O&S zfnjx;b9bNVqoW29M3Rq%YVY2YLqZ)-{Aujrg6h)u-yv6JVQYgyn8ezYY!jYKUUgKX z4&)L0)L?@&zRBtJ(09)Ulc{{8YVObD^p)Ssy?b_DO^lMWa?TDQ5W@ca{Cf2Ib)GwP zA2vSRzdUZGeTJjy`Ni4V_^k`Ki-4qs_pfQqJeA(O%>J$?S}|O2s@>OqPHiZm+5ZvY z#UeGh1|eVwM}iS#w-pTbLEr-j*n%&ADOey-{bVZGFC$W=Pe5QMs_ zy=V}GI->nSonGJEP4f$8B4Qa%`2&wJyiV6)vD>q8r#l433NfRhR{(~Y^%^Gk&Ovy{ zRi(EUpJtjm(_OGy?d))u6wFuebT&ak-Qd}9d&4%8^=Iyfv8*dL-Bzz3$`AKjLw_F- z=i)8%cx0c_)7V;xh8DPC>WyF$TJ|f9!YcT%7heukeuasaNSly|0>!vdwfbU#4a}sz zv`u0v()VkPyVC?1pAM$7M1O3!xDI?eSy{ip86Ubi-R1BwyT$kp{;Bh3r;>C_G9Bus zr+9)7!XH9p{{W+(gUH67zNY;fKNSlrP~YnC&mx-Sk%KhEY3gB3DwXsIQGpv z{0T&gU;z+%<569|?jIQ?%3r~RVHg{9IR9}I-nTchD^~Y&URVhtp|0t6%z8wZ;#aHO zLPuJG$KZ!<495tLbvh1uAMbMV22Z6}0POQjU&|E_ z-7GoxAv5(lgJL>I9Olav|8;SulS>_{_YOYjiAZ#y6o@zghq}Q%L;^U}kszSX@7YTo zza<;t*tZXJCy&%Kb!jT*{Q`C8P8d@~QqU~L>UY#;MQSq`mZpi`{Q4q1-HZAr}ntg#lnZ>cu^oFyUY` z^Gn!L5u?&0bX>wUY$sNA)~=M;RGu;g*lYE5J084mr-)c@^$DK{x)62a4y40KoJIjH zNL|0|BJ#Wk`^85{979f!{RT@vETL%3VEf0GAg+P`cM5EGdJMUaSR(feU%`Ta6~YJx zHlSGW`tJ)2J_JES(}6GdRG2o;NsLipge%@vz`pKmE<@ z%Ob*2gY^akJl@KJJPZd=_lws4rU{oG)vokFsN39&^gyU1LjiSZz}j2)>~>Gq(uWlu zI6@Z7r(a(>&US<8{%UjQ(p7?D(pJFPQ^GYdDlpl+!YXUcHu0lK%d^x*aS8RO@7}Yj zc0h?hsKbHZb>+Yxy!5Wk!siuUwJygHmr$6)&9Ftx8?-pw9ZIHzeWQT+ywquiK$-}m z9O`-DBbHBSR*TUH$-5eOROL9z^!tbZ8tQU2raWP1W%^?mnZtE&KiiTNiPYYDsbMW! zO{hQoG`t&S-j31$8Q}iL1OFGg;VPp>s0$a1XHn&UNGnuJg>>x`A=m zY(qf_oh zX&~59{7bM~)e9NxmG{@y;kr3Gy`G{}+bFzhPcO_N$WOpH_wg91js(lTTmpw zd``X~v{z`dRGrr)DKq1c$0xhK&}_$7%!QWlzqs zm4eY3_aZ`&?2he^>~v;6J^YYpmrs*%8<)>ePB$sR=A_C<$wCb0qs`T;XFmZ@>nV@I zE0NcRA0@KozOz^54P_m5OO$X|^4CnsQvC|Q2NV3H!vHjzKTNCaGXP#OJDg$SIrfdV9$ln(WG3m*%%IFguA{P)cNIN-!-^Jx z0E}46)yQeZ`rhS+V|K}r3AznV?banxN|VuVS#vQ14#;jtWB*jcwMVzBy(;2hbnd-q z4@5gk6lezk;iHwq)72;AsQtcBakout8AhT%;g+$M3=pEL@X1T@0W2TC_O(?xrhE^( zBCYS*;O0r^d6K(0G0yjRw1opkjr);kN2_03sT<{>qOPwgR+hPa;VOaDMRW)?Q~lXU zG4#?HC~((8UvX?TBK`4A9^x6B8zdA46h~KPL<=ZMOQ=b%w0!t$v~!uF{j0txbvYqF$V7ZKcSs4fXWNMqupWh+PTc=fJ2SvEb>#;%M26C3i9$Ee=VU? zmD6hyrV`ud38%iE(K+F1h8{6-U{Q!;?wM5KXEt5R+5y?&s1Q7`kXb0UxEP$gO6$0%<9!@Pb z83%8dCCQDvdf9%XPclXBSF{r{_wMa>Ac_}ZnIDc6EXuo8SN$%5IQb+)385tGaY;af zddzFtb-9LJx={V*c_$6ps*yZZFLjwKP5Vq z`!So|5Bjt*UYh(&ot3dqq1}*d5sn;4V%*j+B%Ze;VLnwyAui@!XRp>4*};37@+rW3 zyf67Xh7OrQR9xI;-5W1OR*0`1tA6fa(7g5W=sVH=1GM|!gvPL&*}&0Gc`r%>(T@6G zqFqp8r{~#a8X5!FG+nVvNi!bCc>)`%536tC07)?7n6p5DWmmRHQkV zpWJ31SNG}Vxqi)YejZN%iFU_sy*44|(kMPW(oDU1!p|~mfNhf9iTpBtnkf^V{{4o1 zijd5ERLs;d?PY|4-is&gGB0Sw?@An&D{`3d^|*NF_6j>7I+;JF!Eh*X)`X6Y>+vgF zYf~xWv?195ZCanT-oAulpw8`icT^4YeHC+Qk87-_2j=hc1WIk7g_M~Lq-Z~SaiB@2X7$hs$?&uEu!JiGX(*uPsKp6XT0k?$w z?EPs1_JjYS@F8qCv_Zkc*d6_8gcydK{INiGR(BB;z5<^5Y8ZD#2uC}ey@(J*JDUBV z9ROTZ^D?EF!ke5shkq&O@xXW!{#Baj?fkp=;lt;6iI+G4LZYCQrHfyVM4Ep+Ja=9W zT?Wf$_PIoQ#L3VghX=I|14y)EO#JwL!LYEf()0}>r*#X1SoFqttN+bV)A9LrLH9(R zeQFQelx483TlzB%ANE?+rS>Sst9kb~$n-HdavyD%4aijhTV5B1Q>ke4ph}VI=_Jms zf!R?+;{p0AJ{-=*T`{K#4$y8#YX4Njwa2upJviE#?L~Va+R>s!JLgB#cUQ`AYd0CC zV;l4u3@KZhpBH@{YMY#S`6g_-{sSOJ&a83f%mpVIB_}H_9v%LHQ;|v6jDTbLq8jhY zww&;gXeZ1gVT^Hojbg^ph2Iia`@yiCsqZvf`ISXNEs0jnfJ8v^up#kX1HVqPvz6NA zPikhe%%>Hrjr2bqx!$JyC_&}fU!$E=Y1DUq6XNsVCt75#n^c~zA=XU!zPvRVAns`U z&b9m<%H$oT!9jM92yx5^nSt58{T?)iM7#ee#{AP;13re*wZ#-@PmCdHVjP)U*@vK~y>1{Q7AZU9v;>dBTx|WLFz+c@1?I zO7SPiU#5+r7Kyv|MU{MVbQB_cpB@kJddJPhaf3nZ1s5I^^U_+BLGk%<+=5ehe6EeA z#YNr82WW@Nlkj8*9gPJM2@q)KzK2)GbUxSN-MY__09vXeFdIjKp99DkGY9=kCOBQQ-J?f(0 zjU+c*BH+Z}x&CK@(p&6Ev@@WbYaOnqo;S-i5D{?e>f3Cv)}%B|?;E}x+Ip#9>i#~3 zMs_d3z0c9LR^h`tyI1cAE6~a`Y8CG*VTG(qE>9S}k^mUpxdswNGL73ayL{#ykKhVI z$MP4KW>v{<7fE*3$D%GPF$8WtR)fFsa!%qW6i1^|ZC>e{h z&KWiR?Y=zQ6Il`#STr;xQUPhgV-myPU)9p+?^A?=lbBVo?WIR1IQ20#FHKZgyRT!b zSzC+hDjiR)tMSVL0N3?$Mi&_YXUef40hvL%?AwB){$l!9Ro^Us&VVG?099BNMB~Hj zu=T3QXUcvS7*x2dc9*fg!*Dwu%99_jcH0r*F6ivcd;OrJAB~?81Bz(k{+u8~02XZb z&dNWK*w2l?{m6pzWj{B9{ILIpuwY>C&w~C7YVPnO;%G4bV6<~T=k7+kyNB+s{?Tx^ z^S1?jm*@x)vh75>EsJ3E@V#gdBs+RggY-K8>(3SZklykcNQ>~c;(eQ>$4ouyX%>0q z&p55L){>cW!|2yu zRY9JgP;%_XkzDVQyi;}p1AV7IE#kaqiCgjPHQ(=5h3iIu_*kNW)QQhxwVk=j+Z|o3 zhh>vKNh{fwe9fuPPy`CcN$uj<$_3MIHB($k&cN67N}-#Q(`&Dl_V+WFZ5mr3rWa`0T}?FeR0N7t`{V&Tx^yKg3cMNuH5#ayX&L&u%^ki#um2 zSOB04d;Va}&#B;4=B40KF36Qktq1;YMLdy=cYO$EKiAX#HQB}AGEc-l^pxvxTPCxO zy2jg#w%#sS$Ax50rz7eO+FmIrb9a;m2Qov*i~}JvFu70JgT|0#_aDWW-@@^qR#EyE zrNM#oLFc2@?8F$j^Z!J4qQIYC_TM^wC%d7mci7m9JVy<)bXJ~bXZ5{F3cNmzc4OnM z>zS@E>w=p5%ylfqoZ2{m58svR7$%NTVGa%PxO`P#^crs9-crQ(xWWRQzt&tsl3JnG z_5KpcIeRMpdajnE>GDCn{=?J)dCt@y56JE}$Nj}BNOn-pom>ZgKW4@rVga1&7!YJ< zuNYA?`#4ZkHo3%X40egN#`du453&P*h|N2x74Z`)F@x{yJ~QQJkqqameiA&-aPAq4 zLi+2G0D!|!%~hvG$M~}rLpGL92^-*5b- zh_Ylnfg{2z_@TbUq~1!>qND8MX2WbNQPZZDv6rbw6SmCRi4Vx`FO>CL7hGsuyO|A~ z?DF@bG?45V|0UVYdC$GROw@Y*pDeXhB~addpAD>&j$IB;%%aE=RB2GktqIRrPq z<%xOGr@tAz{%lcJQ{C>0>}(44i%?qQr^QIJD^9-U7AjouoaTY_hijD8reCZ)TuIz* zt_Od~(@HJMS=y%vB~BcDB6jgsE(iMTh!)91f}mK#&?cDwI9l_D?>YJSlfZlT3*O21 z2}j?V`KK|z@A+;x*d^xlCQ%%_>6lEuvF8b(h3<3)_K|T3az2&7OiYqw9id?hch2d^ z!}=qK2`A3t{CetxAiaZuY#^7rBhcOTAD_TOjw6@wucL(gLTf+lkp{mk5u}EkYx{Nb z4`BoOVF^ypf%9@;fkJmP0bUY#T| zHh4$mzf_@5A71&$WP(TX@x+r3xvFPj-9d%ExuEnAw_}ET%c_mn)Xhwws}ii;r8?QP zaZ;JLa`ldu`m!y*!8Ue^+v^aSs$Q$-Spy_+xH@)zP91Y=ibL^)Zs{B$p}U~WLHzTb`0e`~3HX^l0TTB(a$|g0F2ov8hwV z_7K1e-tP}MaXjysxRXCd&@AT3YyR}6p~&I0Hj|lzVTHAt*nJPG@PQjiuV#*>K1_2X zkS6whBdnDRD_c^@WWSRoMQ-hKekXEC{l@YWA)u z*os+>;Vw3v@-WYF;|e?4U&zinRk>$y!MCIQ)Z2otc18lc39H(Q#<)lH&C_R_U0NLg z6NkdQGfjk_gXmP;+VSQXzj)W-R81d!*VsA|U}Te*k0iUWay^!{=QXc%a6L9vs+??u zQWb47GPT}C^gCu*Qn=NdR&ZDq=0MAo2aFjuLS{G7;#lg)?0DbWwRm4?!qlH!Xu-S7H*VT3Gv>Mw_`u+@o84HE4M_u-lWjB zd9_awV!c*Po({f6P_Iwabw}RAy0kT?{mRiV4$6uj7>dfwssWADZIhd}MzD%#+cE08n;!MCi_5_K%=sIPd7_OP-Z!tVxqTr0dTRbi6>rOs5o54#xDD&s zAE!PT!dvF>8UqefP#&-9H z-0AMNkl*(a40b@VfA0kk7O@}L&cN-kIB>8uGsy2~$v16sHoKlA1 z#JZ_I;6FC~i~~t_!gs1flREk$1}@(aI6_7FxWalq_TxC)Mb2maUloPU#_m&kUx>~U zoM)g5HKH$Upjx4CwYB4`nwW0s@#tn3C^Dvs2J-kvDa74FaEo(@n;pf*#Cu6X*2RQe z?tFY$=-(st(GysaiQ{PJ6X`61Tu@+Ip19>e-Jd@t!zjesmR`hbPEGYgdOLpkzgWYi zC$Jm;x}Ad2zwAYOAlb2_AiFf+%@zMEF>Q`-Ogc;b?h5w?nSJsXBaQxgJP=*dxx{~H z0w66J^B;anqmrlXYv?Y6QQ$>Bo7BZMwrOoh7;Nr1qm3lHq}lM#!QxbRjkh@0BZnPj zpO>Uuyx@4*AT26&rQ%AHAwUtMJzn;t31;r=_GnAjjHUMo-@^2lFDh1Q8*e>E>!Saf z?1-~0obLOx$`$)xFRxDL_I5lOCH1+9JN?3hxx#H8(lC^{J4%BCnIR&aAVOwfa{qk~ z8bgxZe-vX-z2#B*7Nx;~^Wn~i?!*|l^Z!J4;s7cy{7!cLxH2cWniVa^J;u{6YMzLD zt6J2t@S*lbSwqpOY=chveV%Yu1lWBZ26nQN7lb+AiQwR+qWT6ftc1NIiKzZ~rTG{g zP}*lKC2}(Sm7xUj(c;0YMpyKjNggpxs#M8X`JqM`s<=W$r1QOCO5puKM6( zS5@G=GJG9+^Cmi=)}R4g_m*BJ*72T-yMf!OT%~t0JXuuZOxcY-OS{KWNU~#{Ivl8X z*KLm9J?lb;gv#pe`joh#YA3dpSCOfURa9pC6k3A%af^YAG-cu8?7kv?H{Y}cKpS5e zrqwOvmOm2ePbvfG-#u)8dW1h|K30*^1YaxA!nJM5ht$mxd$HF97C9GwKz9F|(1dq0 z8<6ZUNcW;NknA}BCD~~vj8E!Nb+e{?P;!RQMV}VG6Ol%!@1v_OWpr9}Mt2FYn7@5U zeg*5K{z}CmSi@FtQcwLt|zK-q2$jkK@oyKrT7i#yeTS9nikF_sT)T}Rd#}# zrTMM6Sjb!4Q`6{{_m=q+_bI|>?IC`(BwEI{PXW>M^C7`>l>TF`hurz0&rS;+7wtE|`hz8s#Xw^y*e2c`gmV;ZX9s^- z|9bP~?k0#EFMrwH?hfEA20_Dsf{R^F1Y3V>BRb#*i99k0q6bm!cEO;?E*SjOS0fUN z72pRA2FVVCb`Kg1l}KquTMtyxS|2bwPiP?R z*PYDRe^wOWC`{xuSz6y%_~0&ePao|XF=UaZ8z)V{>z=sy}!{VMgE^qHO7&c)s0?%{ysX>b`AwjB{UKv{3m|7l9Vuq?$^G@2N z$zUpUwF3jBJr9Ai!X38JT%4&~X$c}c@^ z#Mh@?=BE>;I2XiQ0EJO^tZ7mWm#W2$?Mu_sekzasy&N1xMH19mtEsh`szKHx-9Y~e zxOPUJ;YHjo|gSJ>opDH;I(DcJRGSP&fL_iirdtCRR1aW4Qt@{3G~NR$GA{t z^C%7e81w$#DgPgj!1X4E&>JimgMTk#oX1x6g=4Ge<+D&nAe-BCIirNMy$5VXG& zao`Gww|BT~V`XpQ;0(FsY~^GFIl&L0a>EbegNL2?4U9|hMCgXeQ3qM5LVe3KycM-E zh1Uzh+_wf?@ZGXC^Ls5h0tokc5{e|pn;NlT0I1u8&Yi5(BQ|w*rdmuCQ8$a&?!Hca z-33@(_b9$Iuc$;5LiQr6@>ENZ<@~YBFWJ4vw>!;loN?_2)}p^&l&*}=8-=>jUaQdI zGUE@#dzO55TllT!&9n~zn+K8rC4qq^zLN;SvG3$w!UEfh?)18QsVm0%g)2wghwhj~ zNb#VDg1sNX5A-Ec8PKr}`^}+k(|*8*C`@JAHJk@$`D)OC;cK|f_sCx327V)fTu?N5 z+BTV0l6_vBNV{J-io$_B0U&!n>ilBdH|m0b{%}FEuWO;_`J@R3N%}Z$kpO?)5LYl1 zU4th-Pjt_#7ytVd1U@P?BeK_x8qd27AZP29B?ijhH z5l$`fw=@-Iv@WTr-&sL*-MnOBh7up1a&Ru2<5&S9V zZ{@Sf-`AE=i;yfG;fPio6fOY53^#}f%O#bLT8(;X1LzDGgr*cXofc)SZayZyJpL#Z zpvnnv$T_ElMx<0fk|XQp~E8DmYz!u}Wqaew>p8|X?X_+Y?9EKttR zfu_F|2#9WoZNYvlunk44`OV^wtHgg`JS5LyvH!Fph9MCV1JMcDxi=GmhOnPz|4R$H zV+2>D#7-21j>r32>WZF}A9I1wyWnVav${jNTcwxCu~RfU%zU@PETW)GqSBP=xJqpvhfg!g9%;3rCjM7ZRb$t`X~+l81qm&=l??sxZX}7 z^ajF!g%)OHtiG%-9#6k6XqjWGzg98O1E`shv9Jm7hjDsftRBrf*gYW>ff#Cwj zL6{UpHf(m}@pSJqLCHfa8!hhC6tu$MzUW+8hm1>fb?q||nm^aq(xz}+ZOdf5gKK7k z4rA2ONLPf0#$r|2dP!Bb6nGKz`SjfDkLowaUTMKt8cPB~&O7DxvgwazqLrrA14IY2 zfT-MwNXwy8JBbh+2c7m37RW+9(bk>T9Z!UUEyQ%7Wk~?Ny>Z~YCNTtiXo$^IW&Hd2 zkLkcPz%Hqt0{BjpXH$YfRBxa|-=*t$e_?7^AxkgzQBcEu6@bL-!qMwYP5#2NeA+q5 zy|!2UHBVKUszsgA(ICvDSHF$~!I-b7PSFvWRoBiiqY+3I05g1C>T!;;Mv6K2j2(ns z_j^b2BMq50lTOK;(y}KZJsG6=39O+_SBt5dJKqyFW%}xi19wQylXx_R<6!V7s8bie zHO#T7^(7z=tUAGRbxwrCK;-}g|2M@+@1{L)5WKt>$&q|HT?+?6fl#nj_isQj4e%+& zdU~x=QMez&I7vx5`km62kRojOoOc~2$)nzU^>x5adzDG{(CJ&*>C-|&AvD4)9O`Wp93&zV^%oVucj5r@{s{J%dXf@rln ziH42~HV|#-u5Wi3>=#EvcG^frLw;}$VTT3Xowh^n4zz_K?BT;ZcVqq&WA51g;U-gf z7ZiN_p+NtzhFF38(#8MlCcB3M4nyIWC7{rq_y-3;*j~g)^bGSV90UbJ!Pd2XfuJsD z4a=1{+OxfK=Ld4a^>j9~prkEZnu9OuZ@lF3_qz(H*pmiY*NahJ!aBoYV-xtD7kcDO z?yF-l?L7+b1?4&TkRWJfLQbwo@FBg=z(P<@I!xfn5xn7oqPv78JUQ6r{mUBr)Sz-$ zp2L*kNXXe5LYCv&3kCw3`6iispD5(&E@7#f&$|HbnrY8w`Mw^jWa}or7&epN=f9@) zq~>0ic+JVJJL?zN4nXi175+^Vu0fgIhzJM4t9ub4LCtnK90Y|z!PawBAjtN(SI{KW z^cx!1+m(K+y1u-7ciEGaNXzv)-Wn6qJih}t;TU0)-3~Lg{vI3szG$pgtuFBP7n^{= zm&Qr;sUf%UksxSe2gRLMY4?)5PyA&2lH*aoT5ghJ=63?;bMKVSlJ>C!VVy6w609N3 zy0&N8tWB_plzLuYGh{a&xztq3kx;2c{?{PrQn8g#X|3#%>VftmY}BIN+D51|8>LlCX3J;hyjUv5!(^G(>6#D{Es3Is+Sw3gHakB zC;)LWekbC<74T;e6aY}U;U@^f1JLfg;1%lcETN%H6J4xyDRZw=AHJlrrlI#;;M-i8 zY{|5j64>WSXvmTw7X8(G?XCYCVFTv{VZfmDsqkU>&uVXPY+o&geOY0XjLM=L zP`zYv-=UG{d07Y`_mB|R$Hf>R8}*?0WL4&4l=6=1k=HT5D=p%~{ZD)ekT{4p@qzkQ z+x@X`m_U24*f+|tk9w3>Z&t6j=tSbE0Y38k)ZL0;o5xMVsVj$ImBCI_Gn7~OM|n(B z<)G)dE`FH_Zsq~LQPdqWEFWd}x=@e(=IZ4j0}-+g#*D;r6P+aSDEn8f2RQh@=}vw( z`GMo$gS`mvuo!^|90x^0!ItR1!9f6MX>FQ&f8T_5mE>*RnTwcqGc@C$#V2UL);@HK zzS?(l3y`s$$|={YNI#3+zr2uP7in>3rAJDsSJvdyh-wD#Q4fiOA-+$${BC0|9mW8^ zp?(xgd zzV~=KCxBkE*`AZ@IFqf4E525O_Zzq9{KCsz+ih>Hl{5C8E5ZYm8K{LBN$PVmo-+vP z1h(cJ;yo3_kFW6}YE50Jy66=x{KN0;*vZOf#aZPDA)qUxQ}n|%;rmPqyFr_e&(S8$Fh3*qO`eR(Y;BPw67<7A(gnW3WzBsyIEJe!EW%dOQt%JjNhe-)=P~qzn{=^n}s&QmTJ* z;imIAWi@k>4>;w({owI~OXatV3O+rx%5DkXa1buOe=cwh zp4p9va2%}IiwJRuK2yPQP%IQ|QU5az0zen;BCCe-t*4CdmoBIqPGYlZgg!Z}{8XMh zN$%c#?!!MKlA=}0TJT{%aoK#d{cK-1{DgTzJ#%QBo6wBVNUjl@@609 zu(EJc?=JLZ;W2?67yFFCNqX$QX2&(4?&=p67F&gZjna5kt$M0}3GSEz6#G4I%k?YQFqW@9E`RBLF!LKx+dVT(3U>xMm>uf+UH5=BBrs0)Y)_# zzSkVfrbL-VF4Z|Y%~chjBFaAFwBBdP2d;FdoLi=ox|x50aFLRxf%9Xs-8+WVT+)tf z$<4l&ZdC{Kf~edH=0}P-6X$mJe3#5Q-rp0!&!j1W}VaoP>&#*c8@di zl6&E%kd*#?7(P^aVr{3os>;2%|3$i%07lcdY#*q2T6C70f(h~>?l zoQp>T?c?>*9f{Tt?^AA+B{75V8-?EtXr3VSHlJCjDQGpaC1K}*ge|jk@!bV){yZD# zNysOoDpP+|mXh?gI+J2#2;)7abi+*g86pz38wV8lKgdmKH{pRJ;Jdx(4eNQQG8_TH zdrO~ps{A_yWV?8^f)xtY#&1UJYz=>W%fN|#%t5!!j0HbwtgQJ2JD~A^vH!h<)nwc; z+n)R=cRr)L>SMV}Q`YPk(;YR{=sLD;F+A)W zm3x{u%8{qL-(S3TdB$OeXIZ^)YPejl+*-2l*k(yZ^y1OO>(loKI{YW(2~^@P^%&I?EdtnPU&UL>>RJM zQTw1>lxs0O9s0>c2*3UDr`KzcqrWm77JLN@h6Y1^rzT=Uctwl`*=>U+aI3#9NLGXW ziRh4gi99mc&OUY!6uB94zsSQwgJ5AH`+i@-XEgu5z?63)ADsUt_M}ASJW)9Rf%la% z=ZWo$|1`$!T&=$c7hb)dA2q{5RK7q^kzNu{yWLIFe5@fU*#^*@5<436Nae(0IfX<_ zSI1kgg5>#?kTxUMt^P_o=@Iys5IMqQ;jN&akJ>#Lg^zX5uJS&g^)&a!Gt;J`P0|)f zb(DH^>gYaWp$%qu?1akVXQdwBS?4XkMzuinu5xRA`|-@s%){PKE&$@%^f;1~0?q2O z8`0NzB@A2TVIRilg97b(3@QyV3Kj14GU)JnNo)hZ19z8h%+1{>r z{>fsWVv~s0KeRO7d%nzm_=+=Y$XnC)%dcf9E6_uG3*^5NQ@H@w?&|PuMRQK0Yi5}g zL(3WW3;RvT=qvw>hG5@)t`CZ`ku7Lo!Rl*HUCrSp_ts6ui-hL z`}>Z?9sC!=q!pN{X(0#f`8iWow4P|rH7{5s!`Gw-;mi}i{`i4CXq#99Y>>)^54gm#YCHstUZ-usIO+1}ra4LJf+`i6l^8@yKL{sv#&JeL3HVfF_^j<_4d#OrQ;m0^HZD^Sf_mSn_&ikjFxo6 z(UaC5UJ8(`=)l0^I(?bx>-N?-AppC25ue;)P>R3?1`VL}Or>V{!Sxd?8|UcCYBZ!` z<%t5Bo>;zIwRA{V=4qAMrxcfHQpE_I3@I7?92kDg9dy4F|SRU?E6-CYYpYkTyVel(f!R_y4;q| zf=@<3o8INr%&+T!4EptywM@ORmQ9xKbHY+8t@8qzBNYRpC*rzQzxO{Fr~xG!wShqk zeuB~RS@c8MZG6H=2H9yQqHi05MCPy7xp{0ksIA?<`R!Ap*NW=AJI+)Fl z3a_ZgTX_RHm^gEFPgp5H&MetpOHWDn6dcvNl@cuUQ=)(2z5g3sFm+@;=p2kmu_ui} z>OxR!6r3%9hGIbKLc!UBtN-+)UlrZXt4i0q+Yd|6zLJm8jUZ4Q1h-Q zp3LvblR{s$e5bZclepEt#**LDOSMlqT0Zr=L!ruE5r4KZm3|^+(8GDc>=^x}GzYI+ z*|y_r8Nj8M^(?0LQ8(@s8@H;&e!Xak3(SN86U#UHBz?cUb)-7DGKl&u1=IMEF=9gY zqDJ(=(FoLPJiqQB6AGF}!qZ3-%aOR!8ohHg1$hK{hC*x>a{1i9Tskb}G@jOGG&oLY zL2KYfDjuSDa^TiSZuFzp_=>x9JR5IH}UfjZVMIv!_tL8Ym48!Xp|?6QM^~Fec}o)R?Z;2RyFV zWcz>Yop(G|{r~uFk}a~ccakzPa+T~A*|V}`@7-muj3U{NO;)l)D4P%}n zxr}sw?)w(^f8Sr{(S6Q)yv}j%>pai->QS$Wt74Q}a`Wxj z_7qB`-HL60U9;mXxnG}q?cq;{h+V8^G^yrPt-q^x*G6J1?TPzx*tIDgT;`Jy1TBA^G%#+ z1x7oEv_ah{1Y5x8!80{}stZ^Dpo0Ka-0fM#X1$Ov9*G`vddfpjPEb^?`XHLqQ^7=K z_V}+8zSS^WpldrFVYO7Gb-rp68>Q)rTN76Eqv!ehEN$j|P=MB2U&M)t>P3`jLOKZ% z`Wv>vUWq6K6D+QndxO%*)K|fF4gmYzkg9^mI9#uitiQf_vUpA@b`E#ALtsGFN0-w7q337~<{I6h&C~={1l$mG2=)Yc|^|eF1}w^c5am6e3@`!@T3xz|af2 zVg^hYtPq$(?0N!hfd%WRc5^?wtX-+Nx?A#3-#24W!vqGp69n0f{olp^Y<)ij5pFVn zTMyeX>>qrBe<{AV4rDK}SG$vk<@R^-Kn*nlbT1yZ1S4RT&>K7b?k3DsE+2_i;h3Pq zS%sO3h!3K040s>Q(M<&pae09~A@{<4oszC?&pzLnl!z;Ra+BZhP%UUPVPc&Dbdm=f z_4~hP35bhSK~xj(*xX$$nYwpXvReJI_)8&2_@!aN8j>(zY({&LAnokw%x&E9tU~Qu zo&~9f?XMVtA`N@bT4N)cVy1^RoZP&dtjy_aU@1h zm%TrfQP|Lxw>ZauMX`Oj>0H@DqP=VOvY|kdspje}NllTG)(tEMrpT9uE6j-3i>ZGv3SpE0;6l&8$<;RykpFDX2u%~)n0_L~jVe-dvu zwqlEx64LE3`r#a8&Y?*VY*b6ukc5CBhn_@->gDz|-Vz4>k9C9OL(o?JOsb(*SDs;U z7rGwz862d(_HRc;thS%?NBQYU(L&Q(Q&y^#QG=OgbUD2SLt+37>h>&q?}txbNUmB6 zUu#vUt20~mcg?y{s;P2G0aelE&)47ofa!r^sPayu3j3J@vf>ed_5MCA|2w?0LzAjJ zF5Pd=QNccSem&Td;ki`F3C9H%+3nUSN54B3tJdX~NULUhPty`bgl+gbXg(>*giT}1 zGg+7yc;`qk$P+ob5)t5Epik$zl^_LQrk>uUYC)wQc=|lBc?nnQ)CAG;V_KFT!D+ya z0VS71^W2AC&Oy&?y5;t>w&h#a%#=xT_H#*f{^}JVw;F3m0zhpSFHir(i{AHFh}Nv= z9}O%CT=G|-{Yc97y`oIu%1|E|{2H{S}0@os{V~}!MKB%>vZ!Ixw-)f|? zt0~zUiG#JW_7)d3{GFB`53<+Y(`*cQFo2rYSFASovEu?aK#zcB1Zoi?YUGH9r4znI z>+N@&TJP1n`6tT*iws~|)V79n8OY?~M|vFFskf+S%tHI1x2j^u;~Q60Wq;UJ0s6s< z7}dvw%j2{`r$+TEx2N1VRw9HPCuY3p3~S%asYZ?!uEt5Bvj7e~-=vP|*LhceT#ZYS zl)>R;JkuS?5?$@WPn&`+x(WW#q64kpKO~{5yWKdbMTSS=tI}QM(6blDmo$EG4^?;l zTsdXS#QnsWz!;GW+dN;zUqs*%Gzeo0I<5Mx`iOZ~x?lTm-lW*VoPx$iBYUkPZb{Q%xN-VP02vUQhjD|~(Kv$8!w1yMFFeA1SGkqp+L-h3A&E=e zt$bj7D$SJw;lwvBez6vdn^L0DwA)EY4`SE7gxMA3&s1Of-==cck$yS!2gX=nLo46} zh0phAdjSWE;c`u`?EGt)V=tperQDYSZH5HES7x1 zcP$(XNr?D*`l|b?tGIU>+1xS2DhYTLGtO{ga}k+N*=p(;_Ug&JTlD2|o-|@5CtH~o z&fm%g@Pp(TC5Ya2lA(p4s9E7z5HWe5$Rqta?L=C=pH5TX8Ia*TutlD5m>Vqt$-JTYZwpWEdU)URF%JWH$X8n^HH$Y@S=y3p>Quw>&Ff z&7qbOUWy0Upl?J~RanXc%mOUft44X-5^gdEda{v}m)%=`^xXE#AF+bLd&mS;-))gW zv2r;I#9=`A??8OB5v{&n{6wyQk9^UgEuUkvG zSZ=wYXZ8=UP``qezn8?v=!#N>$EP`zKQVFd~+BmolEp6vPIXLqKq zqkkgXhGLi`2k|7InfqWTG{RciuGGITRQKZ_j9u}3eJRZkt3#iGwW3Z+^V7QNXww~O zrd5>9@rq*-o1ULC-gr7aHTB9Eh0Vs=&FK@vYH?E0K`3uoNP9{l3AcoA)!XntBK^yC)!NS=W-GT z#Yiu6Qh8AB3DxOzyE(f+AIx^CpxM{&N+8eTkOgdb>V!^WDk1+sU-@=SxL$u^f_*h= zaR0Gb&jiz_son^Bf4|~JX6e^_JuHoFXDR^_&ERDW`H?WYk+@uwE6eU2b;>Ht6z5~! z+llCg%|CAYBUFc<2~e%w?i&=U=%es;Q}n{2XD^JeIzFUc-jKHVTb5WiXK;qYCtnP7 z-ue~~m=5DSHWC+z1cge<`=%)DX~oAMh)Mzsot0~b8?R%&1yZ8Bf^bKQZ}fUUzp^4} zscdzrB|$S3FnzP^e@4h@M(Lu@8=`Pg`5=Rm!tx}wm~(4VNU2y@5&J^rB(aS&FeBP) zjkqx_Z62wrulS;??ZK_8i+Um@Pe*;^k4bZgobf_(p1o7yZFfUOy;=#C`LxfHe27x_ zoJGaoJX(zd$R~*-Jp|JA>_|`d46h=G=sA7v`no>d@o?1(Gp8^x0pB!+R{klD!+AW~oUBbe_ zHTLGar8^7gUrYb8js0M1SPB-51pB*J_Y1)U1VRnoIseN9J&^mG9rb}%{|wsMJE-=yLpi>W1{h3X08#Q9R1I0P2~7H8MkbWmizBq`j3y z42~gG01$N>LD=X?o!IPSEOco^>@!SVP@y_#Qt$E%G<_ldVm^R}sfAlJIA<$Np5GS8 zf1%^-)$@AD>BC4Y8|KoOEabDhNhdFnzvNf_0=Y1U(@M=GDb4Bl zXPoLEAU#kF)!k`xL7^%=3a*ea+TX$Tf|%7EzLX0@Dn#cA`M5o+EDaY=Y|URkm()@^ zusoxz^OtcdSwwG07#%2A-Q#&Hr(Iowwg&6Y5?}13n<2ACf{jxl0=_Ck+iA{4V)lc= zW1%b(mQ$oJo}Rmdb^6L|<6U<^r8FQ z*6dQeuT_t4KV6^yi2GjUoN!4^RHi|z+XLcj2IGvIvB8;IIWPT>$*lnEAihM9!^M=7 zjjQDCNcb_rQ{gK*pU+4HW`~duw(%bNu^k%lmurOshx7lNB=jbnTbNeW9)(&y4+Ef0 z5^dsLg-rNfFMFJ*zd~Lf zrQg;R=0xXOnzG3f*O=keo`$wvJ}i4oxZb*Xq9V4+%Y9(v@Ea;{7R*%PrH}inI`RRE zWXF4s&Jxgr^&@-6Ihy*9RvmthKyU4K;-FTw z9)+*-7BPpOy)eEeSzY@Xxi6L}o;E-8wU>GGrB!O7Lw&}1wwuH+-mJb61GP%d`@BW$ zf6*!c;CY%?QrX*kK3dJnsOF?$B7z?q26|qF_?%3%$-AV4dw|~9Qv`h_ZeO8}FDzRE zGRpnZenFTS3W6Ecw&iX#yWvBIBjxuXY-hkoqnvK-WZbY2N)r|-L3kbFV9>>OqoYKS|3Z{XX;YGZlNp4n0BZvUmz$7EQ|hjdYzOY)Iu zWxnTUGEN~C!She;1pR1w;=Hg}e-yO=h_zOToSKM216qDF{uI{!PjMr>{A4#s`D(>q z6~qaj{i9XC;QF^2sNQai3~JTLQ6Od*q5d6+>Du-0#rLse&`5ZdjfWzcTa=hkui@(3 zl0S(v?Nm@=0=4S8H^T_cziSl$*h$~jeQMS?OkC)bfQ3S5As`nc%=@u|a`L0DZeZl~ zXMpH!h89Ab>R~y4%8_e{>Up={3S;@=#`#5C%`nnP%D)47g^yF+c;}nOu9k)~SQmO{ zE}|Em^{QvnwdF@^C9UtfifUMn`5Xl9E( zJKO&l_&oX znm!7yG>qK8gR6LR)Kav?izKz#n{y2ouO05AJAc}Y|E?u?0+BKQDcLJUO=6@zJ*3^boj4Yg7pmWR?w(uqz^33^bX4aOoAA)$3D#T`r5xofcpDUr|sa^YU4{#5SZj8v(I#Jhh6ZRlLksMr{-KkcP-a$6Cd-_dS74XUzu_z4>dN^u2ygx6e<+dNMYwn zR}oEAE@Fj&`5wDhjh;hj>w7}AXpik^lQA@u=d5ye^z0mc-HS3m7E~lDALG1@+pF`Z zjtN&!ct9XMPCL(OU6&V^A4bvPq##s;erjn&_f%pIHfiJqyggQg&f`y&4Pw(Zj?duq zyU_Z2mvRrywG2EUdfHL1^+%|FY5D#(12x?3zCoedJPKc=w;B&UdtrRdH{iLoY+X(<(E7e0ZQ&=hFI1|i zQdw`gTY?3wyXEl5IUaCV@ku@`D=W@@)5=7N5nX&tn%|nJ)?XCQ__A>)uBHBy@8UiB z$qud?jiKtiFDbNnEhB+$#~b)G=z}Ehl%`ByWvQ!;kE1J76NOgb(7IBbX@1fL^d}HZ zQiR4$CQ%i~&z!R{l<`oB)VrdICaF}TgI#5c_)AlH(5PSsp8CMS-;tDqB?v#wgk(SP zpv3GH{-Qtoaqt8bz6IE`nZb#AXC457FaKc%4+Z52dLUq5mZ(98+7F=yJ!?;{5D;h& ztno8R4NF3eb~<;MP@$k51!iJi&EJ7puw_}d?z;)oXR(dt*U~Lg3r^c%YhKwt)vr$z zvAb4-lDu&&*qsbSqv)1JB)`!Tn2><+?n@<>igFf#;S_cK^6(}iIg!c)8ZO+ zscChlE25Cu#1Z|3<9@|8X6XBdxvMc8_Q%%qRqO(9Zu5hLdXGG|509lq1vVG6D6 zOhaT1PcFEG3i1jcr)u6d@J`{y&8|)nzrh+-=A+v&6Q|TNO)=o)EMAG(OL@#Tm+MWJ zJ3&8ru*d^{HalD~$#XMCp-I{=FTTJ>bZ~tmaRI>e;$7ViWPat8(OW`l8cyu}{n;bi zLiI1PT`prNn`__xj8pv+r9aD|COd5|OsG)Ej)E&bs`>BWYINQvpwr3~nZfR!v-tRM z`gAds=p-Fy7dG_MbI4^anZJxvDI(hRo02}WeJ%*v~xWv7Jfe! ztC>|nY48thIni^cQJ4_k&xq9FHt8t$UA-tnRieZ32w-ZIx0LA2z^-@Qpw?SkxeBB$ z`n)aGDvI={$W3{0Z)9JqicT_`PZKv%eYKFPX_0^4SB%Vr_nk=zeUxp5IC-J+xX;{Q zO)%GWA?}CXem`#*`YG8n4((#KLukjj7p4BIQ6VpF5B=B<4fy3+;pegZ|0xAEg>wt_ zLZLqjwKyMf088}`_}{*0Y(Dp^Buimg)Zw|f9YTz*6(Qy?*4mBdMGL#^z5CJwoA$P4 z)Hl&5%EZm7Mt2e^$0)hwbSf0(jU1wkeL<~4MU5m$f*?yzCC7YSkG^jhI+1fza`o(< zR&mo3ahBKsD$M-}_p(K<`Zst^pxCYo-D0oYxO+)P&Gnd#V!;*kboX@9ZdoiG{>k*_ zGndqc>l1}3m>v*Gi@ynRP6nRDD^hAe7CqX1RaZ<~)p3dK*hX*6JR}kFSH*B!f3EXK zs}4U+pm%mVahO)2a2$m%Y>eM(6`LD=lzx5isTvTQ?fqQwu;50^@J-0~XCWaKEbN4M zAA~`zQt`&du=sCUC4&*fbM<9s-XoV2Op|XTs~Mk1(OVMSMeeyfUL0AGkOJT=l}_a* z=RTZ|l61;8(An?WRY=6VB{O${MsA0+7@v7Y*aP@ry+pUG|18ktnY^RF{ zwF>s^k^S(0NCfPad!ICxJ+v!=HI^SRIpwPK;yrePRfd2NPfNZp2V&%#Jh zL;gOfRjRO!$sI$h0Kh0Pn}HVn5dz|tl_2fYvX8ZV!3!i+=$I%b1WC|#Z9PC@1V_Xb zDQlSDiSI!k@%>~p_IE43JOnYn9UG%K|9&^L#DQ+@Ln#24QuG4EYlS zBrDcaDGUq|MvsrlFcO!%a+lJ*ayvfN?TE1ZlV3GAK8Yzk9{y;izRKwxjR_RBUx64} z_qKfD$1>=&7`^0Abm~nH9#>}oP3?C0(E7taTD3>qKQE!?yDc)PRacJ!@rjKOzXS0! zhuaT{{50L7mBN@Og|?Ee-y3EOfB4{VG?KjgEM#W|YL%MziH(nkX_d$2RVVcJcaH!h z+`RW?Z#7&=ai2pnR;yoXy-m&7_+kq%^YS2@+oj2ZJ@g@U1PSe&OC#;438l^%?T*Mzz`R;Of&cpz7d}d1An&(CJYocCz2SD60s{ z)G&HJg;+(&8?xXymAW@ZwK=F#MNtere=8*b#w&d}zxW zi+51JA>+Xx1q6RU1-tn9jpFZl`H?n)=)MvSc>0NfwxffzNpF$K$6~ks8o)^ zD|-4A(6m`$bL#mgTW4p+Q$_4*f;}ow!7U)*ln=Ml>yg*IgSttm=x+wl%H9TTo|^ra*WB8`qyuUpH>YpIb1^~Wx% zl2OmTgG}SLW4ayQDyqfY4UdEj33^jlMiZFEi@&@$Yad%Y7uXrE1A$Mrh)M#g0t*Y z`QU58wV`(|YYinyJc@-J zN<+7*t($ZF`hq@}sWg6|-b^p*ZC*LD{261cR~8fj2_cV$c}$ca zQvwWbEXx6pmxZ3vi#U_Xno0}=$S(&U`b!R;IVd?0 zSP9CW!NAgB9zKDt1fQU=`7c@nffpmeTxlnDz_?&FpzrMdfrIMv%cvB%0gMCNgn$J* zYaJ*>_@C!iz_)uaf*Q6Oe1HvVz0iL6pu#ZE<#Ffb z?GdYCpqY`SfLd(QHOgA>TPIR>$}PbZP0M34e5(P;F#q;@xskMc5BOG+^h~y{O?`W- z5O00yF_r%u;WMBK*$I(kYmTeFcj6Pa??wl)Eqzhct#bvku|A&3pS*AX5h{@If1jW> zyDc&(RCY&#m|E|5Abx-G{e#nAi<{n`A?3b>s)wAs>}oR5V!0A)j#-c$xzYv-m6kUu zwf?^g73}^$%83bsyF-#qwC!{w+%w-PKT`1L2xbFuLfm0>_aEj0H|HdtuJ?R%_QcQT zq135HxKoup*Ry?N!pK2l5IZr$X4WN*DOltQBo8)OS~G%=tryl$21v7L}x( zYQxFg=Vy<}E8FMAuWGa8_gu%RR_fjK)-^6aWjO~);?abxUwPKXO$GSVX56P9b@W{P zPVn4}bjkgF70X$JtBbrGZflj~^PIhZ#;N|DRj?LnyVK@^LgjH3Tv6PHeh1h1hM>Z% zHk@eg>yu~frDiC5mx3B4SUt@f(9}lku_p=tGESw9=#Anw49XP>zqP+zgH3f1L*Dbk znpav#D*5>E`>9wz6fLjgV4PArwKhHAjat!ql>&q#YgVefcB7W9PTH68C#%T=Zxgn@ z5_z>*czzYFRpyx73UDVrnvr8HiJQ9?&xK}a&Y#v%ABO4Ds2v-+P!gB?y1QuX(0ErcQOO@$8v^prZ#`w{$s-R$f5kM zTclWA&nmWioL)lihiC%M%Cb7yH7?VFNlT$Lz-9vn-Nomun`e@;sdh>Ts~>X$q2$UX zW|}*$Jluj`QT}Mv;im)Cezy|`wd%o<__EA7^z4Q4)sHc6-=!I-g3z-Taj%3SilB*r zt~7*GENNNwEyW#Td{C=&ypb()|BF@ufHzV92B#sl^%D&_K6)H!-|}%t?aTM!i!KA# zjl6gorvRKW_hwrs+|#)USgt}M@`2AE&{1pxS6g-IdcM88Xnbp5t2$QYQX1FmQwpHz zk(D3QPA)Am>uejXmvxk@`N*jAe>x`3ue2JCQ=fXB{cByRXf_O1lcJ&3Rx#lePWbNzZVK5UdC? z0%H$Jeu>0))r=4FQV(beYtPr|W^S^TlZ0iSh5$dqh#e-TE ze*Y120!r&|BBf_n1Sgm2^)N<3-`?#5hFUrGhFO4l11arqcp z1puiJSufZWhsdp>JjKLas(f<|QDsEHy2py1+f!n4w*!r9g3n`3mqzVH1DK=lZOb6|z9VSqZ z$?&i`d)@tf>6GURY3|omUMxKGk7>FlIwQ;?hufm@NSGKPLna@UZA`~u#-KEMnT~uT z{jr?LOKzO^d{W*?gv3|K|7g|!BK+49sN-&n3~E)zQ6NT2{;lV!(~&GSO!_GzcGVg;edFG7S2kfiJfHeQ;_4YK0sr^cAQlrIE5Ts{ydbaeaVl+$ zxLJW3ek|`MXVdlMd|8@NWU0#+GIGmttZ+!H9zQuIuhI&%)#8M&)U3}yw50oiPxKe> zZhqu45$vFRbB5=Hm;(^eKo=JwtXH32a98X!%hR4!a-LH}vt0|B?OrbJQ?LHK8|trc z{!Je0wA1E-TJ_{exXRA_&IN?xrAMoM+xWIUwHX}wk8 zIMpq0B-ziPN}aVPzFNlke#vF^MISki!ghZSTBWBX8zG^+Q_f zo~F*p%omGK-BXDG!1D0N&>Z@S{_R!5-yGKe!$nYMII%FHdUhmUQTTxS{sJb*c_xyL zqAsNkk2}s6VF`Bun!v*j*Cz$498mLVkqG?qU$||Xy;=kC| zD9xqskUuY;FTuJmRDAC{*w8pwvIjpd#_GN(s&`$S>xqxQtNPEwG19hDPy}0DN`-NHCUkED z_;2$}G|o1D%%lU5XA3JVXyyZogObR6ldYWc{gj2s%?P?ad>Yj1!*6;1s z&n$fVV3vBf?AHYf^q`0Ry88Ye{B>2R>rUqm3RTCEU=IGR`>EW<-n_VxxrW!CdBq|! zwpM;%mO7mz$Fl81hET9btkxzdRC?Zs!NM5O*E#B%g`3Khh_kuU&Jsy~SakOnM zEooNSkP#^zcmufOjG_o@I^5k-xagcFSp9OSnq*OF;xj&qkgQAEu$}0>Pz`uh4-VH$ zf9s(8e8w^|KicV*&B;3?hz=MhND(!u5_0RKG(0cR8rr zZi@^GRo{^y)3bt; zp#S?gRT98kPh{Vm^DNT9|76Zbei3tI6T2_V*&{@~xIf5cTJ0494^IX9TAn<&o0soC zR(ak3@$_4)xeIk4tZ7q`Kb%!BT?cuEk5dIoK)JGeH?*?B{$ zPZaCU)X3;sQPuk{x~_EBi@Q=|He9B`iN5xiaVi5uZ$yq6P_AB|iVvUPmUY*Qyb$V=C!tN;kNI+`_d=*YJadvWjb5D zM(M3Hq7+*CG27XVOWb0H-!F#+2Yf}nAY`e2UFqrjCx}UbHQLpq9xcG(Ut}Npx&F~A z1gHm`TbNeO9*No$1b`Kd5<>YH_vBfWE+$$_U8|ERRUh1i*GgmYrHiv|M>=7by|_&T z54lWTrpFx3Zap{p_Ql`oJmqRAi9TxiJI$`=%50!koj{Fr=@6kPCGu&D3u&6g=;X`A zJgXlC)2bHm?Gogo=eXPy-lb7mnXZ*d)yXfNv>SrGZnQ$=Le^5VK2O#$;d*kl6nN+T zX2Ra(QOsbYxxIomrUI3MssVyTmUmi+n?0}~%_lNP)TJ>uK_;)$z-Q7+c)T-qp@Z~kNaOlYk!^@Vi_`G(vz26#Sb+IOB#h9UQ zQI>W5g=~O!8`f~h^`%wcRc}MDsjvSYN@QS z&Daj*E}Gn1fOWiM^RoOP(Z&^z?VE^;wlkbDR%}#@}MUnNk{^zoz0W;_HZi>zFK~AY5nd_FHYeY{7GuZ#IdB^vjS0 zPVCoN{X6xcN(!mYfaizgnU-}E*{pV|57s#-oL2-SLcY|zBVR=^(N$xzdIbz^Ae$IG zplV%;&Hy-s%N%_MBA+Mr=g%=EU}#WZ6+D!Bw;C1>K|n=-Wg)vI zum#i;y3@nMtO^z3C@i-j{|?Jcm&64g(`8qsO?Q1?r0GoaffScrX3MwrtCPuXH=|Zx zbz5~Y@@hjl#voM^;1LPsGH%2})>6Z`KaXWGtVQ#zI*6@AmX`N&^x29UF@RU|h2h6Z zUCh8Z+L+e{h)y;wAp-AZrubKZ5CKpjAYbHSHWtq%>d4AIrLkukCxggk|2HDRkps|Lnig$4hvQ~;oV!u_Vi z40BROIe_#%^Noy!eP;SEC~@#xO6f=`kv4+aeX4? zTDC}~zbMd4G{^sXD2SBQzS#m7TO^zHDoQGAZ8&h%6B~0I`(h$WJ_MCps*~c5THdlPt5S7tlJ`af(o%ZbZ}T0QP$CyR8{pSVZn;QYMFAYm1V9 zTN^Q5#d`COSqYGVlDqFxoSQ3O+|*7gSI`FXaj7@d^+4aqoKbY$YJPINfGRLJ?3loA zvEp&@#ge<-rs?+2NK{EZ8+6M%s(jun3NgE?=o3Z9p`X{G0e@Tyc8TB(2NvpuN_7-m z11JG=hHnXo&o4B~j#JCjrPUY?Wje{RVN=i5z6_uXsQ-5}@ zkSn}#X4&J>r?s`=Z0=fL{gP$Sr7%$=b;gEeB_Om(IZ}Qip&PAVD^$tWU@p}PcHY7K zJ|abDseK=w4QwT+YO}X1vh!}^n<6K|Lg+%=PK!P!T=xmk2$8%l4zh`(lM$S=T)f}M zoAbf)jI%eA!xmkHj0!+Zsbki9(aHLzHf!bOADClG>w+tbwH?Hn7;=QYOy6DqxYW;9 z@1IgoPoLe+8zxhz%tztNk?hd37si)r885W`YDTJ|Lx&ZHXo6-68ec*SCob7+wPSq+ zlH)okQ>I>yJ=S?f%9Qe8U#dY7(h=61v}}fP6I$0iJ9=b zv#}+*2kl(}grR6o&paN=zGnK9KCe6dY$!VSWvV5+9j!e5?Uy`6;&gOK8{O+RLR>RW z#b=+EW2tkNFTFe_%vALVm?dscw(H4lXnri^dDIR|p|ILUNTMj%>IBgtdHA1k1OGSE`i4BI>;hJIv1bi#z_6TQ@$ zldeqicKTN8UP}o#70BNmZ@3H{5Sd?NuzqGiu{jX8FHt`uU@0&NUIUjL$S-y93MgzF zusS3#5H|hX3N@I8&2~ny;H$$55cd*bEvyQxMLAdomLHt1z%mE+5|)E{`tEe?piFTc zg=J&N@32hc;d^R^^Q#Eu%U1}NQ=FqVXQC)Rmvog-o4hW5pRY{_%G4b%<15FKsra$6 z;tj*IeQwJU*C!lQ{FFN)c_JyUPI+pe1q=##c>=uD-s(SW$1C^}5-hkz6_EkDMD5B2 z;%QgjQ+2dIFyL?ch0B!et!o;g9Yj>ld{y!1aopeE&WT_4M0qk3pFdJPN~_mw$)hQ)Tw}@eC{&m3W0hpH}l> z@1J@<6U^a4ZY~%!E}ebp4k%M*UYf#($o>S`WQ`N&wlx?pmH6f+3+a+WouVo;{?+QljA zf+nS?IugHA6J9&z=p$$o#nz5XaDOzRIb4tan7Hb^&Tvllk?^i`JMs16Bcuv`mayhb zC*Q9DcyzePwA~K?28yUyC`ZS1fXq$WZc+qUx!Tl<32~}-siI#$5}g~F`ZGTD_lO=W zg?jq$w78&5i5-Pj`LW-jb&6-9sKMx*!v$8pjJin+-AiL#XDCNT*y)YVNKAzk=&f3n zTOh68@yD_mPS6RsY>wz9{~i=8>2*d-LrP1&^3U;I~noEJSTBcaAyB zWP&Ju+Sfxc3E8yf{A2a}?iT}!vJqjcfWQsE6uyz@N5WsTTi2m2SVPrY#jQB%Kh8|a#{X_NY2~Mfz!i=qn;j{uuEQde0JZGd-@FyJ#v|ubzc6_ zB));?Y98X_+|GNg(y9tWsK4(dYNR~Rx$ua}P%DD(hP3iu>D#MTT|XvVTe=8jL(~~Lu5IyeIyjO?82e`%Y%@z9 zb}zs6>O?Ta14z?{n{v9QuhjWn!=3+RbmE-0jEXA>bW1qVd6snOVe}uRI{Zw5dIs)x z;h<7!9EC3-)?s33SJ4D$|HpL6iZ056U@gF+zu8{`%Ts zGT-*dPwV=RLx0Rh*D|tP7N^JDSE{imJd2}hgyZ7|Z_(y%2=lf3ypZ#xzWd|jyE*{msi?7nk~sX=qN_r?&cLR<@@AGZM|7!B)|FQIkGe4 z*N3S8su~9|fO`xCrXL3jVQDDbVW|I7x|anN2UdrI^fTb#4+0^uxSut9Lqav%d#DoZc!;A1Ei0K5neQ+6rv`rw{;ior|# z#8rDjLQ;%eJ84%lQr*6X9uw;1TSO+`H1^7n|3i z+nSTN^KJP0pH~>hz04Pjna=`Zs_hm=I_U;O>B5nMEl0ymq94f%=3 zf0PPN>c7sQp255AF{o4)M`4)bw{G@-^W|lq6XjfLiQ|;b5~*aCpCxPdg;Pnl&!N5= z|NJa=5L7BFFOK2El!_KjoMSlN(*UEe zRv+cpZ4bUktH%qwdTInU4MmY;ob^Qx0dpJ=ASh{odlzrvBkw=_BW8 z3+joinL7I zF867fqACXt2a+jc%BWL|v|pPHVot8pyPH}!@Hzb%pZZr);gwL&dpj*Is8mizp_S#g zexXXu84^=PMNW=>`Wss;zh9CF$QuhF7f?9A?f<5SjNEa;#{CCop`ey_(A zJT|5Qke}yhy0^~DxIaFX1W1kApD09C$iB;7%E*2JFRDkWvDuEbl}}DD`X*X=ZUmr4 zaQ$`Qr}xTk?E$1%KMY48GBNhjaz!oDMU5SSL^huLGWBEf1yU5%WXXw;3W6qT0m;V# zoC4Rp=tQiGlRQ?kb$yNr?6Od;w@*UD6m4cJ#%)}YO|3U-hEe)yzNrxcviSl&-w*Af z4h{GtQ?N^f5IC?fnesXcu5^cTobp$*va?dLL`0D7rzz>4i5#`WOI&tZMWv9h$+EE$rx zYb)n|kY7y@NctmFztb9q?sndwOx-&QUuR4YJ$qq%*HW&LJR`XRm<6>?+Do>ERGb-n>s>et+~b-U;AKG4$_tOLa2!|M zB5+r#|31K{_&W64qdVJTc)!z9{_0q8ullQ^90);z!uX+vYuAC&y=P3oieMXnARb^0 zo<3Lr)%VoJv`&U;p93vHeOUj?WvW(_K7OK%g67=^d(THY`w^#$C9ZL zMPiYT0&7Za0kZ*!#p*_Sj6qm?({;jV1s{Fx&shb4>e5wbiPjLYn=uUfXFOMEi2SgK zX#;4GPC}`DOl8iife6E8YVdLeo${No^BxY&&a;7J4rBe#xYC3%tyXUrL^$CrI2{w= zvIzbMbij{kM0`|uE8IkF$(*?zs2{Nu}KC6Y_K4k_lKD+5NZT~G_k-F;6XNtj#(^oVh zUMWJ|z)GF4=PaNSk|mI&rd;NiE4D#THK$TatR?vJ`dgIu%DI_rI5>s-N)?Ewup!y) zLwv_36^o@*U|T&#CgEvcqEajR{o>I<dvh9^$4fbo;g3D^se(T#I+iYe3g< zP}bn7L<=a_?L$AcLj!*2LSg>^|KChNJs-fag(+3>QJ^KT2EyC9u)bc$Mw$*)x~OMK zp-5cFfM(b{;n*Ng>oEPgH3N3ZJB}MvLi=>#H9Hzq#Fyq$l)^1vvVOdB$l#5eGX8ey zup3MI`>;_XAKtu8XixIg>K$jVJtsn-`Fl4!%sr*zSd&jx@H3y<#5vlqtK zniny;uOCH)m2yHf62>sXWXkM$T{YFw(`xq%twlmVgX2>UUU>BXO{qe42+$uF5YT^4O1Q^cXdfb^(fR?9Jr}qUjygoLE@LxYSUicphLzngAy!IFxh?HI zd#QnRU#TFLHCn7`gA$vQ+Xz>>VlVi=sJo|{w&6IN-es$1mO67xnCtn+sj+4RhRJF0 zRf$f%v&FyX>1Q%-fTljrho0-s&H_Aj>yIVUc+<#2V1qP{yp9y`W9H5oUDs!d%C7k0 zSLi)}Gtwhl^(cNnIv#THtqEd`az(F=#>SV~n=_SAD@>K?G>85>R%<8pN_Q2+LzPUZ+k z{JZf^pCU1Uty#hTBW1SuYEq;d=exRh?vE`Dq!7?Qntuu)K#p~&-dC!Nt+6b19V^p_ zli%4E2@s$cHL+{5Gb8fAL z4Qq{b`aA?Er3O~?zY!_Sx)C-~Yfpr|spa@w`l$TzqtKJntMA{{{86esR{wbk^?bP7 z9)n8NeH4bVw10=;GP}zLZ!5YPtn!MSEb-3o4b97naUp zO2vyG*}u^DG`KmSSF6E#*tTW(HntLp^dkoba~*V)i0go^>xSDMQm9d~@zVNj z8VI6ytCt&kIYGw8=IMu@y){yxdEdbCDQ7RtUQnZa{P~my0rurggA68@^Mr^`4NULu zk52(W4i{3(Gi5F=wgkDd@6}%;OcrDwEnsv)To{d)xGx8t0W^N3C^UB`oxak2=W3P> z))h-9E_K14QrRDb_^G_kiDCOPMQCV{V@tfCeU0?}njTRP-yPrCllfopYUzY6u1I*Q ziX9VJ4hGj&jx_p}mnik;UTU6d?%5J+K{LA>sOzXfZICSe=UEhc(EXPs)bkM>SeQ&r z9tGDE&H(M}PEuRM`E2qYZFOr(+h=T7^f|ew!Zvx63r$a!Q!a#Vq40{?w)*KEz^iTN#Mb&d$>iun2GNr-vYOU)#n;(ACz`) zDv$V989k+7q^u949JDLo&lL$~YJamYQ)S6)$xmL+k5k>PGL2dw>@8f zLN>0JLD?~37DTP?m_Ip`WMs;Zg+O%Xk&alR=98c&VVA$0IN^^UWdl(Bn4GnxtbCf6 zVNWScLFb`my)7{6R6i@-F&WX9^A;7bT~9ty9=x$Ko=L&;Mx~$G43jb1585_?8iu0V zbF1hHT&5uZV>rJc0Q%Cd0qrh+{s3>+USJxvTZIIZqP?hJwgN`{sych71BQXZ1^G+- z!7TJ=#%m{epk$}u;9muI8H%*?_wXP)^}F-^9CX*;U@vUi>Dob=T0aWQ=vRM-b;9o9MI z#5*z$R8W}m@I{q65lmHoK*rs9#xph_65OI=mBT(L5J*BgH4$A|&9Jyo3{nNK>XYy* ziM8oIiQ7A6Wu3|B#I6%3EJead7^hGF5ZBst2vZ1AZ_bG@d4CY7r>$a>7k=cIjVp*H zsiz{K@r917lZg0)5^i4LH=Vwvw9H>pB`7*MiMD)|E{BG~FXDEWOI>mwLoQ&T(@Pzy z6>X`yI@7~A@gNbNQvZ&8k;x-YO!>HVOq#?~nEH!+|1kpsC+z!U2uz_M9Y@0`e>6)a z&qk67&$6vOZkf+^G|OGD`-tP8drO59k?@J1Po<>KL1D_%7scQxn3|1wNVD)mG01jV zGkH!;A%C%tX(Ty{%cP>OUwo~a%Lm}-i%RC}Q_!YOcGphGDS53)XEf9NMr-A_p5w}ZBp7N{qq%8^!r6PP7k5Z zt8lKOlx{S}TaLTRel~qE@1*H=9hNhJ=^bk{!-;b}CL!m!Fg{)+d~C-f|7D83Te7~H zLDp&9^fW&8j|%-uAqf0v&*MU13I*plYDJFx6OZd6jr5!gi99_c{4En@e8cSy_{)yx z)a^8HB{}YVyrt{$xA>G7yf1PT6s$sdYfFc=mR0y`5U>+Jf4L@Oy1EQ|e`*s|i=Z0i zaW111@(X1@a8Yd}BBy2W?MdD*eoN^!ek5bMIk

NeOABySp1{ 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%0Ai}13c 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

nbUZX{hpjpZPUAB$I%G; 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 z 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%0DTvBvUquo^vS7 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 0 { - _, missingTxs := compareReceivedTxs(recvHashes, txs) - if len(missingTxs) > 0 { - continue - } else { - t.Logf("successfully received all %d txs", len(txs)) - return nil + + // Check if all txs received. + allReceived := func() bool { + for _, tx := range txs { + if !got[tx.Hash()] { + return false + } } + return true } - } - _, missingTxs := compareReceivedTxs(recvHashes, txs) - if len(missingTxs) > 0 { - for _, missing := range missingTxs { - t.Logf("missing tx: %v", missing.Hash()) + if allReceived() { + return nil } - return fmt.Errorf("missing %d txs", len(missingTxs)) } - return nil -} -// checkMaliciousTxPropagation checks whether the given malicious transactions were -// propagated by the node. -func checkMaliciousTxPropagation(s *Suite, txs []*types.Transaction, conn *Conn) error { - switch msg := conn.readAndServe(s.chain, time.Second*8).(type) { - case *Transactions: - // check to see if any of the failing txs were in the announcement - recvTxs := make([]common.Hash, len(*msg)) - for i, recvTx := range *msg { - recvTxs[i] = recvTx.Hash() - } - badTxs, _ := compareReceivedTxs(recvTxs, txs) - if len(badTxs) > 0 { - return fmt.Errorf("received %d bad txs: \n%v", len(badTxs), badTxs) - } - case *NewPooledTransactionHashes66: - badTxs, _ := compareReceivedTxs(*msg, txs) - if len(badTxs) > 0 { - return fmt.Errorf("received %d bad txs: \n%v", len(badTxs), badTxs) - } - case *NewPooledTransactionHashes: - badTxs, _ := compareReceivedTxs(msg.Hashes, txs) - if len(badTxs) > 0 { - return fmt.Errorf("received %d bad txs: \n%v", len(badTxs), badTxs) - } - case *Error: - // Transaction should not be announced -> wait for timeout - return nil - default: - return fmt.Errorf("unexpected message in sendFailingTx: %s", pretty.Sdump(msg)) - } - return nil + return fmt.Errorf("timed out waiting for txs") } -// compareReceivedTxs compares the received set of txs against the given set of txs, -// returning both the set received txs that were present within the given txs, and -// the set of txs that were missing from the set of received txs -func compareReceivedTxs(recvTxs []common.Hash, txs []*types.Transaction) (present []*types.Transaction, missing []*types.Transaction) { - // create a map of the hashes received from node - recvHashes := make(map[common.Hash]common.Hash) - for _, hash := range recvTxs { - recvHashes[hash] = hash +func (s *Suite) sendInvalidTxs(txs []*types.Transaction) error { + // Open sending conn. + sendConn, err := s.dial() + if err != nil { + return err } - - // collect present txs and missing txs separately - present = make([]*types.Transaction, 0) - missing = make([]*types.Transaction, 0) - for _, tx := range txs { - if _, exists := recvHashes[tx.Hash()]; exists { - present = append(present, tx) - } else { - missing = append(missing, tx) - } + defer sendConn.Close() + if err = sendConn.peer(s.chain, nil); err != nil { + return fmt.Errorf("peering failed: %v", err) } - return present, missing -} + sendConn.SetDeadline(time.Now().Add(timeout)) -func unknownTx(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil + // Open receiving conn. + recvConn, err := s.dial() + if err != nil { + return err } - var to common.Address - if tx.To() != nil { - to = *tx.To() + defer recvConn.Close() + if err = recvConn.peer(s.chain, nil); err != nil { + return fmt.Errorf("peering failed: %v", err) } - txNew := types.NewTransaction(tx.Nonce()+1, to, tx.Value(), tx.Gas(), tx.GasPrice(), tx.Data()) - return signWithFaucet(s.chain.chainConfig, txNew) -} + recvConn.SetDeadline(time.Now().Add(timeout)) -func getNextTxFromChain(s *Suite) *types.Transaction { - // Get a new transaction - for _, blocks := range s.fullChain.blocks[s.chain.Len():] { - txs := blocks.Transactions() - if txs.Len() != 0 { - return txs[0] - } + if err = sendConn.Write(ethProto, eth.TransactionsMsg, txs); err != nil { + return fmt.Errorf("failed to write message to connection: %w", err) } - return nil -} -func generateTxs(s *Suite, numTxs int) (map[common.Hash]common.Hash, []*types.Transaction, error) { - txHashMap := make(map[common.Hash]common.Hash, numTxs) - txs := make([]*types.Transaction, numTxs) - - nextTx := getNextTxFromChain(s) - if nextTx == nil { - return nil, nil, errors.New("failed to get the next transaction") - } - gas := nextTx.Gas() - - nonce = nonce + 1 - // generate txs - for i := 0; i < numTxs; i++ { - tx := generateTx(s.chain.chainConfig, nonce, gas) - if tx == nil { - return nil, nil, errors.New("failed to get the next transaction") - } - txHashMap[tx.Hash()] = tx.Hash() - txs[i] = tx - nonce = nonce + 1 + // Make map of invalid txs. + invalids := make(map[common.Hash]struct{}) + for _, tx := range txs { + invalids[tx.Hash()] = struct{}{} } - return txHashMap, txs, nil -} -func generateTx(chainConfig *params.ChainConfig, nonce uint64, gas uint64) *types.Transaction { - var to common.Address - tx := types.NewTransaction(nonce, to, big.NewInt(1), gas, big.NewInt(1), []byte{}) - return signWithFaucet(chainConfig, tx) -} - -func getOldTxFromChain(s *Suite) *types.Transaction { - for _, blocks := range s.fullChain.blocks[:s.chain.Len()-1] { - txs := blocks.Transactions() - if txs.Len() != 0 { - return txs[0] + // Get repsonses. + recvConn.SetReadDeadline(time.Now().Add(timeout)) + for { + msg, err := recvConn.ReadEth() + if errors.Is(err, os.ErrDeadlineExceeded) { + // Successful if no invalid txs are propagated before timeout. + return nil + } else if err != nil { + return fmt.Errorf("failed to read from connection: %w", err) + } + + switch msg := msg.(type) { + case *eth.TransactionsPacket: + for _, tx := range txs { + if _, ok := invalids[tx.Hash()]; ok { + return fmt.Errorf("received bad tx: %s", tx.Hash()) + } + } + case *eth.NewPooledTransactionHashesPacket68: + for _, hash := range msg.Hashes { + if _, ok := invalids[hash]; ok { + return fmt.Errorf("received bad tx: %s", hash) + } + } + default: + return fmt.Errorf("unexpected eth message: %v", pretty.Sdump(msg)) } } - return nil -} - -func invalidNonceTx(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil - } - var to common.Address - if tx.To() != nil { - to = *tx.To() - } - txNew := types.NewTransaction(tx.Nonce()-2, to, tx.Value(), tx.Gas(), tx.GasPrice(), tx.Data()) - return signWithFaucet(s.chain.chainConfig, txNew) -} - -func hugeAmount(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil - } - amount := largeNumber(2) - var to common.Address - if tx.To() != nil { - to = *tx.To() - } - txNew := types.NewTransaction(tx.Nonce(), to, amount, tx.Gas(), tx.GasPrice(), tx.Data()) - return signWithFaucet(s.chain.chainConfig, txNew) -} - -func hugeGasPrice(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil - } - gasPrice := largeNumber(2) - var to common.Address - if tx.To() != nil { - to = *tx.To() - } - txNew := types.NewTransaction(tx.Nonce(), to, tx.Value(), tx.Gas(), gasPrice, tx.Data()) - return signWithFaucet(s.chain.chainConfig, txNew) -} - -func hugeData(s *Suite) *types.Transaction { - tx := getNextTxFromChain(s) - if tx == nil { - return nil - } - var to common.Address - if tx.To() != nil { - to = *tx.To() - } - txNew := types.NewTransaction(tx.Nonce(), to, tx.Value(), tx.Gas(), tx.GasPrice(), largeBuffer(2)) - return signWithFaucet(s.chain.chainConfig, txNew) -} - -func signWithFaucet(chainConfig *params.ChainConfig, tx *types.Transaction) *types.Transaction { - signer := types.LatestSigner(chainConfig) - signedTx, err := types.SignTx(tx, signer, faucetKey) - if err != nil { - return nil - } - return signedTx } diff --git a/cmd/devp2p/internal/ethtest/types.go b/cmd/devp2p/internal/ethtest/types.go deleted file mode 100644 index 805d7a81b99a..000000000000 --- a/cmd/devp2p/internal/ethtest/types.go +++ /dev/null @@ -1,291 +0,0 @@ -// Copyright 2020 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with go-ethereum. If not, see . - -package ethtest - -import ( - "crypto/ecdsa" - "errors" - "fmt" - "time" - - "github.com/ethereum/go-ethereum/eth/protocols/eth" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/rlpx" - "github.com/ethereum/go-ethereum/rlp" -) - -type Message interface { - Code() int - ReqID() uint64 -} - -type Error struct { - err error -} - -func (e *Error) Unwrap() error { return e.err } -func (e *Error) Error() string { return e.err.Error() } -func (e *Error) String() string { return e.Error() } - -func (e *Error) Code() int { return -1 } -func (e *Error) ReqID() uint64 { return 0 } - -func errorf(format string, args ...interface{}) *Error { - return &Error{fmt.Errorf(format, args...)} -} - -// Hello is the RLP structure of the protocol handshake. -type Hello struct { - Version uint64 - Name string - Caps []p2p.Cap - ListenPort uint64 - ID []byte // secp256k1 public key - - // Ignore additional fields (for forward compatibility). - Rest []rlp.RawValue `rlp:"tail"` -} - -func (msg Hello) Code() int { return 0x00 } -func (msg Hello) ReqID() uint64 { return 0 } - -// Disconnect is the RLP structure for a disconnect message. -type Disconnect struct { - Reason p2p.DiscReason -} - -func (msg Disconnect) Code() int { return 0x01 } -func (msg Disconnect) ReqID() uint64 { return 0 } - -type Ping struct{} - -func (msg Ping) Code() int { return 0x02 } -func (msg Ping) ReqID() uint64 { return 0 } - -type Pong struct{} - -func (msg Pong) Code() int { return 0x03 } -func (msg Pong) ReqID() uint64 { return 0 } - -// Status is the network packet for the status message for eth/64 and later. -type Status eth.StatusPacket - -func (msg Status) Code() int { return 16 } -func (msg Status) ReqID() uint64 { return 0 } - -// NewBlockHashes is the network packet for the block announcements. -type NewBlockHashes eth.NewBlockHashesPacket - -func (msg NewBlockHashes) Code() int { return 17 } -func (msg NewBlockHashes) ReqID() uint64 { return 0 } - -type Transactions eth.TransactionsPacket - -func (msg Transactions) Code() int { return 18 } -func (msg Transactions) ReqID() uint64 { return 18 } - -// GetBlockHeaders represents a block header query. -type GetBlockHeaders eth.GetBlockHeadersPacket - -func (msg GetBlockHeaders) Code() int { return 19 } -func (msg GetBlockHeaders) ReqID() uint64 { return msg.RequestId } - -type BlockHeaders eth.BlockHeadersPacket - -func (msg BlockHeaders) Code() int { return 20 } -func (msg BlockHeaders) ReqID() uint64 { return msg.RequestId } - -// GetBlockBodies represents a GetBlockBodies request -type GetBlockBodies eth.GetBlockBodiesPacket - -func (msg GetBlockBodies) Code() int { return 21 } -func (msg GetBlockBodies) ReqID() uint64 { return msg.RequestId } - -// BlockBodies is the network packet for block content distribution. -type BlockBodies eth.BlockBodiesPacket - -func (msg BlockBodies) Code() int { return 22 } -func (msg BlockBodies) ReqID() uint64 { return msg.RequestId } - -// NewBlock is the network packet for the block propagation message. -type NewBlock eth.NewBlockPacket - -func (msg NewBlock) Code() int { return 23 } -func (msg NewBlock) ReqID() uint64 { return 0 } - -// NewPooledTransactionHashes66 is the network packet for the tx hash propagation message. -type NewPooledTransactionHashes66 eth.NewPooledTransactionHashesPacket67 - -func (msg NewPooledTransactionHashes66) Code() int { return 24 } -func (msg NewPooledTransactionHashes66) ReqID() uint64 { return 0 } - -// NewPooledTransactionHashes is the network packet for the tx hash propagation message. -type NewPooledTransactionHashes eth.NewPooledTransactionHashesPacket68 - -func (msg NewPooledTransactionHashes) Code() int { return 24 } -func (msg NewPooledTransactionHashes) ReqID() uint64 { return 0 } - -type GetPooledTransactions eth.GetPooledTransactionsPacket - -func (msg GetPooledTransactions) Code() int { return 25 } -func (msg GetPooledTransactions) ReqID() uint64 { return msg.RequestId } - -type PooledTransactions eth.PooledTransactionsPacket - -func (msg PooledTransactions) Code() int { return 26 } -func (msg PooledTransactions) ReqID() uint64 { return msg.RequestId } - -// Conn represents an individual connection with a peer -type Conn struct { - *rlpx.Conn - ourKey *ecdsa.PrivateKey - negotiatedProtoVersion uint - negotiatedSnapProtoVersion uint - ourHighestProtoVersion uint - ourHighestSnapProtoVersion uint - caps []p2p.Cap -} - -// Read reads an eth66 packet from the connection. -func (c *Conn) Read() Message { - code, rawData, _, err := c.Conn.Read() - if err != nil { - return errorf("could not read from connection: %v", err) - } - - var msg Message - switch int(code) { - case (Hello{}).Code(): - msg = new(Hello) - case (Ping{}).Code(): - msg = new(Ping) - case (Pong{}).Code(): - msg = new(Pong) - case (Disconnect{}).Code(): - msg = new(Disconnect) - case (Status{}).Code(): - msg = new(Status) - case (GetBlockHeaders{}).Code(): - ethMsg := new(eth.GetBlockHeadersPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*GetBlockHeaders)(ethMsg) - case (BlockHeaders{}).Code(): - ethMsg := new(eth.BlockHeadersPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*BlockHeaders)(ethMsg) - case (GetBlockBodies{}).Code(): - ethMsg := new(eth.GetBlockBodiesPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*GetBlockBodies)(ethMsg) - case (BlockBodies{}).Code(): - ethMsg := new(eth.BlockBodiesPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*BlockBodies)(ethMsg) - case (NewBlock{}).Code(): - msg = new(NewBlock) - case (NewBlockHashes{}).Code(): - msg = new(NewBlockHashes) - case (Transactions{}).Code(): - msg = new(Transactions) - case (NewPooledTransactionHashes66{}).Code(): - // Try decoding to eth68 - ethMsg := new(NewPooledTransactionHashes) - if err := rlp.DecodeBytes(rawData, ethMsg); err == nil { - return ethMsg - } - msg = new(NewPooledTransactionHashes66) - case (GetPooledTransactions{}.Code()): - ethMsg := new(eth.GetPooledTransactionsPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*GetPooledTransactions)(ethMsg) - case (PooledTransactions{}.Code()): - ethMsg := new(eth.PooledTransactionsPacket) - if err := rlp.DecodeBytes(rawData, ethMsg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return (*PooledTransactions)(ethMsg) - default: - msg = errorf("invalid message code: %d", code) - } - - if msg != nil { - if err := rlp.DecodeBytes(rawData, msg); err != nil { - return errorf("could not rlp decode message: %v", err) - } - return msg - } - return errorf("invalid message: %s", string(rawData)) -} - -// Write writes a eth packet to the connection. -func (c *Conn) Write(msg Message) error { - payload, err := rlp.EncodeToBytes(msg) - if err != nil { - return err - } - _, err = c.Conn.Write(uint64(msg.Code()), payload) - return err -} - -// ReadSnap reads a snap/1 response with the given id from the connection. -func (c *Conn) ReadSnap(id uint64) (Message, error) { - respId := id + 1 - start := time.Now() - for respId != id && time.Since(start) < timeout { - code, rawData, _, err := c.Conn.Read() - if err != nil { - return nil, fmt.Errorf("could not read from connection: %v", err) - } - var snpMsg interface{} - switch int(code) { - case (GetAccountRange{}).Code(): - snpMsg = new(GetAccountRange) - case (AccountRange{}).Code(): - snpMsg = new(AccountRange) - case (GetStorageRanges{}).Code(): - snpMsg = new(GetStorageRanges) - case (StorageRanges{}).Code(): - snpMsg = new(StorageRanges) - case (GetByteCodes{}).Code(): - snpMsg = new(GetByteCodes) - case (ByteCodes{}).Code(): - snpMsg = new(ByteCodes) - case (GetTrieNodes{}).Code(): - snpMsg = new(GetTrieNodes) - case (TrieNodes{}).Code(): - snpMsg = new(TrieNodes) - default: - //return nil, fmt.Errorf("invalid message code: %d", code) - continue - } - if err := rlp.DecodeBytes(rawData, snpMsg); err != nil { - return nil, fmt.Errorf("could not rlp decode message: %v", err) - } - return snpMsg.(Message), nil - } - return nil, errors.New("request timed out") -} diff --git a/cmd/devp2p/rlpxcmd.go b/cmd/devp2p/rlpxcmd.go index dccecf3c3755..aa7d065818d9 100644 --- a/cmd/devp2p/rlpxcmd.go +++ b/cmd/devp2p/rlpxcmd.go @@ -24,6 +24,7 @@ import ( "github.com/ethereum/go-ethereum/cmd/devp2p/internal/ethtest" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/p2p" + "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/p2p/rlpx" "github.com/ethereum/go-ethereum/rlp" "github.com/urfave/cli/v2" @@ -46,22 +47,30 @@ var ( } rlpxEthTestCommand = &cli.Command{ Name: "eth-test", - Usage: "Runs tests against a node", - ArgsUsage: " ", + Usage: "Runs eth protocol tests against a node", + ArgsUsage: "", Action: rlpxEthTest, Flags: []cli.Flag{ testPatternFlag, testTAPFlag, + testChainDirFlag, + testNodeFlag, + testNodeJWTFlag, + testNodeEngineFlag, }, } rlpxSnapTestCommand = &cli.Command{ Name: "snap-test", - Usage: "Runs tests against a node", - ArgsUsage: " ", + Usage: "Runs snap protocol tests against a node", + ArgsUsage: "", Action: rlpxSnapTest, Flags: []cli.Flag{ testPatternFlag, testTAPFlag, + testChainDirFlag, + testNodeFlag, + testNodeJWTFlag, + testNodeEngineFlag, }, } ) @@ -103,10 +112,8 @@ func rlpxPing(ctx *cli.Context) error { // rlpxEthTest runs the eth protocol test suite. func rlpxEthTest(ctx *cli.Context) error { - if ctx.NArg() < 3 { - exit("missing path to chain.rlp as command-line argument") - } - suite, err := ethtest.NewSuite(getNodeArg(ctx), ctx.Args().Get(1), ctx.Args().Get(2)) + p := cliTestParams(ctx) + suite, err := ethtest.NewSuite(p.node, p.chainDir, p.engineAPI, p.jwt) if err != nil { exit(err) } @@ -115,12 +122,44 @@ func rlpxEthTest(ctx *cli.Context) error { // rlpxSnapTest runs the snap protocol test suite. func rlpxSnapTest(ctx *cli.Context) error { - if ctx.NArg() < 3 { - exit("missing path to chain.rlp as command-line argument") - } - suite, err := ethtest.NewSuite(getNodeArg(ctx), ctx.Args().Get(1), ctx.Args().Get(2)) + p := cliTestParams(ctx) + suite, err := ethtest.NewSuite(p.node, p.chainDir, p.engineAPI, p.jwt) if err != nil { exit(err) } return runTests(ctx, suite.SnapTests()) } + +type testParams struct { + node *enode.Node + engineAPI string + jwt string + chainDir string +} + +func cliTestParams(ctx *cli.Context) *testParams { + nodeStr := ctx.String(testNodeFlag.Name) + if nodeStr == "" { + exit(fmt.Errorf("missing -%s", testNodeFlag.Name)) + } + node, err := parseNode(nodeStr) + if err != nil { + exit(err) + } + p := testParams{ + node: node, + engineAPI: ctx.String(testNodeEngineFlag.Name), + jwt: ctx.String(testNodeJWTFlag.Name), + chainDir: ctx.String(testChainDirFlag.Name), + } + if p.engineAPI == "" { + exit(fmt.Errorf("missing -%s", testNodeEngineFlag.Name)) + } + if p.jwt == "" { + exit(fmt.Errorf("missing -%s", testNodeJWTFlag.Name)) + } + if p.chainDir == "" { + exit(fmt.Errorf("missing -%s", testChainDirFlag.Name)) + } + return &p +} diff --git a/cmd/devp2p/runtest.go b/cmd/devp2p/runtest.go index 76af53ee4dd9..7e3723c641dc 100644 --- a/cmd/devp2p/runtest.go +++ b/cmd/devp2p/runtest.go @@ -20,6 +20,7 @@ import ( "os" "github.com/ethereum/go-ethereum/cmd/devp2p/internal/v4test" + "github.com/ethereum/go-ethereum/internal/flags" "github.com/ethereum/go-ethereum/internal/utesting" "github.com/ethereum/go-ethereum/log" "github.com/urfave/cli/v2" @@ -27,23 +28,51 @@ import ( var ( testPatternFlag = &cli.StringFlag{ - Name: "run", - Usage: "Pattern of test suite(s) to run", + Name: "run", + Usage: "Pattern of test suite(s) to run", + Category: flags.TestingCategory, } testTAPFlag = &cli.BoolFlag{ - Name: "tap", - Usage: "Output TAP", + Name: "tap", + Usage: "Output test results in TAP format", + Category: flags.TestingCategory, } + + // for eth/snap tests + testChainDirFlag = &cli.StringFlag{ + Name: "chain", + Usage: "Test chain directory (required)", + Category: flags.TestingCategory, + } + testNodeFlag = &cli.StringFlag{ + Name: "node", + Usage: "Peer-to-Peer endpoint (ENR) of the test node (required)", + Category: flags.TestingCategory, + } + testNodeJWTFlag = &cli.StringFlag{ + Name: "jwtsecret", + Usage: "JWT secret for the engine API of the test node (required)", + Category: flags.TestingCategory, + Value: "0x7365637265747365637265747365637265747365637265747365637265747365", + } + testNodeEngineFlag = &cli.StringFlag{ + Name: "engineapi", + Usage: "Engine API endpoint of the test node (required)", + Category: flags.TestingCategory, + } + // These two are specific to the discovery tests. testListen1Flag = &cli.StringFlag{ - Name: "listen1", - Usage: "IP address of the first tester", - Value: v4test.Listen1, + Name: "listen1", + Usage: "IP address of the first tester", + Value: v4test.Listen1, + Category: flags.TestingCategory, } testListen2Flag = &cli.StringFlag{ - Name: "listen2", - Usage: "IP address of the second tester", - Value: v4test.Listen2, + Name: "listen2", + Usage: "IP address of the second tester", + Value: v4test.Listen2, + Category: flags.TestingCategory, } ) diff --git a/core/rawdb/chain_freezer.go b/core/rawdb/chain_freezer.go index cbfaf5b9e4e6..bb2c409dbbd5 100644 --- a/core/rawdb/chain_freezer.go +++ b/core/rawdb/chain_freezer.go @@ -131,7 +131,7 @@ func (f *chainFreezer) freeze(db ethdb.KeyValueStore) { continue case *number < threshold: - log.Debug("Current full block not old enough", "number", *number, "hash", hash, "delay", threshold) + log.Debug("Current full block not old enough to freeze", "number", *number, "hash", hash, "delay", threshold) backoff = true continue diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index f7d4a2e1e186..959e328b9cb9 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -977,6 +977,7 @@ func (pool *LegacyPool) Add(txs []*types.Transaction, local, sync bool) []error // in transactions before obtaining lock if err := pool.validateTxBasics(tx, local); err != nil { errs[i] = err + log.Trace("Discarding invalid transaction", "hash", tx.Hash(), "err", err) invalidTxMeter.Mark(1) continue } diff --git a/internal/flags/categories.go b/internal/flags/categories.go index 487684d98b3e..3ff0767921b9 100644 --- a/internal/flags/categories.go +++ b/internal/flags/categories.go @@ -35,6 +35,7 @@ const ( LoggingCategory = "LOGGING AND DEBUGGING" MetricsCategory = "METRICS AND STATS" MiscCategory = "MISC" + TestingCategory = "TESTING" DeprecatedCategory = "ALIASED (deprecated)" )

BUlu*YmpL9FoEf$3g&@_?xj1~>XJ8%0Z+ETB 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%0DTvBvUquo^vS7 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