diff --git a/CHANGELOG.md b/CHANGELOG.md index 098479e745..b979f73ce7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,12 @@ # Changelog +## v1.6.5 +### FEATURE +[\#3488](https://github.com/bnb-chain/bsc/pull/3488) miner: optional transaction gas limit cap + +### IMPROVEMENT +[\#3483](https://github.com/bnb-chain/bsc/pull/3483) feat: remove the handshake from the bsc protocol +[\#3486](https://github.com/bnb-chain/bsc/pull/3486) feat: update filtermaps checkpoints + ## v1.6.4 ### FEATURE [\#3466](https://github.com/bnb-chain/bsc/pull/3466) config: update BSC Mainnet hardfork time: Fermi diff --git a/cmd/geth/main.go b/cmd/geth/main.go index e4a71282d5..5ba13eea95 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -98,6 +98,7 @@ var ( utils.TxPoolOverflowPoolSlotsFlag, utils.TxPoolLifetimeFlag, utils.TxPoolReannounceTimeFlag, + utils.MinerTxGasLimitFlag, utils.BlobPoolDataDirFlag, utils.BlobPoolDataCapFlag, utils.BlobPoolPriceBumpFlag, @@ -455,9 +456,19 @@ func startNode(ctx *cli.Context, stack *node.Node, backend ethapi.Backend, isCon // Start auxiliary services if enabled ethBackend, ok := backend.(*eth.EthAPIBackend) gasCeil := ethBackend.Miner().GasCeil() + maxTxGas := uint64(0) if gasCeil > params.SystemTxsGasSoftLimit { - ethBackend.TxPool().SetMaxGas(gasCeil - params.SystemTxsGasSoftLimit) + maxTxGas = gasCeil - params.SystemTxsGasSoftLimit } + if txGasLimit := ethBackend.Miner().TxGasLimit(); txGasLimit > 0 { + if maxTxGas == 0 || txGasLimit < maxTxGas { + maxTxGas = txGasLimit + } + } + if maxTxGas > 0 { + ethBackend.TxPool().SetMaxGas(maxTxGas) + } + if ctx.Bool(utils.MiningEnabledFlag.Name) { // Mining only makes sense if a full Ethereum node is running if ctx.String(utils.SyncModeFlag.Name) == "light" { diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 76606cd1f0..2fda920e6b 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -564,6 +564,11 @@ var ( Value: ethconfig.Defaults.TxPool.ReannounceTime, Category: flags.TxPoolCategory, } + MinerTxGasLimitFlag = &cli.Uint64Flag{ + Name: "miner.txgaslimit", + Usage: fmt.Sprintf("Maximum gas allowed per transaction (default = 0, disabled; min = %d)", params.MinTxGasLimitCap), + Category: flags.MinerCategory, + } // Blob transaction pool settings BlobPoolDataDirFlag = &cli.StringFlag{ Name: "blobpool.datadir", @@ -1990,6 +1995,13 @@ func setMiner(ctx *cli.Context, cfg *minerconfig.Config) { if ctx.Bool(DisableVoteAttestationFlag.Name) { cfg.DisableVoteAttestation = true } + if ctx.IsSet(MinerTxGasLimitFlag.Name) { + limit := ctx.Uint64(MinerTxGasLimitFlag.Name) + if limit != 0 && limit < params.MinTxGasLimitCap { + Fatalf("Invalid --miner.txgaslimit: %d (must be >= %d or 0)", limit, params.MinTxGasLimitCap) + } + cfg.TxGasLimit = limit + } } func setRequiredBlocks(ctx *cli.Context, cfg *ethconfig.Config) { diff --git a/core/error.go b/core/error.go index 15e5500205..26cda6d032 100644 --- a/core/error.go +++ b/core/error.go @@ -128,6 +128,9 @@ var ( // Message validation errors: ErrEmptyAuthList = errors.New("EIP-7702 transaction with empty auth list") ErrSetCodeTxCreate = errors.New("EIP-7702 transaction cannot be used to create contract") + + // -- EIP-7825 errors -- + ErrGasLimitTooHigh = errors.New("transaction gas limit too high") ) // EIP-7702 state transition errors. diff --git a/core/filtermaps/checkpoints_bsc_chapel.json b/core/filtermaps/checkpoints_bsc_chapel.json index 32aeeccf4b..1b928147a1 100644 --- a/core/filtermaps/checkpoints_bsc_chapel.json +++ b/core/filtermaps/checkpoints_bsc_chapel.json @@ -79,5 +79,19 @@ {"blockNumber": 57267971, "blockId": "0x2984e427405c6849b6c2f90ebceb1ea2893afd3b6ea97b33fad18d8d31d5fc61", "firstIndex": 5234491368}, {"blockNumber": 58425417, "blockId": "0x25002aab6e71628d48c236ae8c08bc9a74da5b6c35e03674edfd3a53daf88bf5", "firstIndex": 5301600198}, {"blockNumber": 60271759, "blockId": "0x00dce6a8452de89e793eaa55bc3bfa02f7fe367db4aad6ef529fb519e0c735d4", "firstIndex": 5368708917}, -{"blockNumber": 61537782, "blockId": "0x4ed62896407fbb4fa87460bef0c895995944270e2edc66cec908f13f96f1b921", "firstIndex": 5435812303} -] +{"blockNumber": 61537782, "blockId": "0x4ed62896407fbb4fa87460bef0c895995944270e2edc66cec908f13f96f1b921", "firstIndex": 5435812303}, +{"blockNumber": 64360888, "blockId": "0x6a39882e5378d84c7526bf98f46b7303cb50f4f62757204059a40fde3e1dfd8b", "firstIndex": 5502926829}, +{"blockNumber": 67016971, "blockId": "0xa7de4647908dd6de2e360a9344d17c7b6aa08e03826c247e558fef059fdb1b77", "firstIndex": 5570035712}, +{"blockNumber": 70533695, "blockId": "0x39db812a91440cd85bf8fb9ba41f79d8dbdc36362502a83429e8950f21c7dc36", "firstIndex": 5637144576}, +{"blockNumber": 72087231, "blockId": "0xd3e6c3d751894a685d4e3f78ec6ce5d3b1783255ffcd161e9637f35c7f40e2d7", "firstIndex": 5704249850}, +{"blockNumber": 72103710, "blockId": "0xe21125b3b4762e8652958c99e0f3b9dbe731a3ab0fd39d5b1be5f2dc73a296ef", "firstIndex": 5771359406}, +{"blockNumber": 72472818, "blockId": "0x419cfba495f8b21c5bdb394b3bd363c303245d23522b97d35306cf55f804f498", "firstIndex": 5838463753}, +{"blockNumber": 72655153, "blockId": "0x355965957a9c1cbfac6078403aed37049a9207db0646649aef61e1a83f149248", "firstIndex": 5905574773}, +{"blockNumber": 73206219, "blockId": "0x83afb3d603ac6f896282bc21eafa680220cb61202f2079c7c33def0c4dc68828", "firstIndex": 5972679707}, +{"blockNumber": 73436144, "blockId": "0xd0b2e5b32b74d6cb8cffee1476468a4afd9572b499ccbc60b21ac220b215baf0", "firstIndex": 6039791353}, +{"blockNumber": 73604097, "blockId": "0xa3d3904329563523cdf462fad851ad1bda28a587ca034039651ae82b8a4ba5c7", "firstIndex": 6106898188}, +{"blockNumber": 73613573, "blockId": "0x49309309873548401b052d8e63130d308a926c23c44b93b66a3a4268bfe1a66b", "firstIndex": 6174013719}, +{"blockNumber": 73620987, "blockId": "0x66aa30c386ecb1be45717b8c6e1276ed7582f97a875bc5184fb671ae44960512", "firstIndex": 6241117647}, +{"blockNumber": 73628450, "blockId": "0x55ccb502864bf601a4782126708ad4f0c18304282d8c09a45a3536421f11797a", "firstIndex": 6308225769}, +{"blockNumber": 74624775, "blockId": "0x32c0e4faf55c4d8f130a8634cbdb329f00410f390952f7fcdd7cdbfd76d76556", "firstIndex": 6375342074} +] \ No newline at end of file diff --git a/core/filtermaps/checkpoints_bsc_mainnet.json b/core/filtermaps/checkpoints_bsc_mainnet.json index 128c2df5e9..66e95da3a6 100644 --- a/core/filtermaps/checkpoints_bsc_mainnet.json +++ b/core/filtermaps/checkpoints_bsc_mainnet.json @@ -1703,5 +1703,444 @@ {"blockNumber": 59344791, "blockId": "0xec32cc28a3764fb1bea8c8e2cc02c75fa566f023534043f0e37d423daf392471", "firstIndex": 114219286403}, {"blockNumber": 59388357, "blockId": "0x888ea6a39c252b8b65b5410bc219cf3d33dba3fe628624390cbd7193ea2d4bda", "firstIndex": 114286394264}, {"blockNumber": 59426545, "blockId": "0xf8e1ff846028fa5a35c61711665a662defd3edcda2e33e59b47a60419538e0ca", "firstIndex": 114353502920}, -{"blockNumber": 59484738, "blockId": "0x2e7138503423730c90635c89e76f6f8f303d33ddce490edeb609fac4f71127db", "firstIndex": 114420611094} -] +{"blockNumber": 59484738, "blockId": "0x2e7138503423730c90635c89e76f6f8f303d33ddce490edeb609fac4f71127db", "firstIndex": 114420611094}, +{"blockNumber": 59524601, "blockId": "0xf358ecd9efdd15e5b2f6f55d3a0260747f60a4d044f3194fd456cd201e21e796", "firstIndex": 114487721085}, +{"blockNumber": 59573517, "blockId": "0x33cf2e7c8d9d6e7b406d97d3f93f632b1f06166a891dc6011ba2bf76c0e262e8", "firstIndex": 114554830610}, +{"blockNumber": 59615356, "blockId": "0x83a7eef4e9ee1f5df9dbd95bbab861e620426ca4305b0781659d6c5a42afb663", "firstIndex": 114621939674}, +{"blockNumber": 59647233, "blockId": "0xe073738618e71b1ff33d58d734077641f082fc8afaeb530398f6d2f55a8ac940", "firstIndex": 114689047433}, +{"blockNumber": 59691054, "blockId": "0x3583a46eee8fa245c9e23bf86337e852f2c8b1138a2353dff78a89bdd81dc8c8", "firstIndex": 114756156434}, +{"blockNumber": 59733664, "blockId": "0x9cb7c4f0d9c8d499b768eb9535e72a6ca353bb8779a8fa0e910b51d073a5ede4", "firstIndex": 114823264467}, +{"blockNumber": 59766582, "blockId": "0x38acbf2842c85206548f7df87eccbe43d7217a125fb2e0a7d4d46fb2bdee8edf", "firstIndex": 114890372314}, +{"blockNumber": 59816727, "blockId": "0x1b251522c3b65a4a33dfc31ada5914bc6ad1e941a0a0ddeb0bb108e18428afc1", "firstIndex": 114957483342}, +{"blockNumber": 59854019, "blockId": "0x434e6289e1b01070b3830410d6cf7f62f1b497ab2934d83e70d5d0a700ecb27a", "firstIndex": 115024592698}, +{"blockNumber": 59886929, "blockId": "0x28bd92f323060f72fa5c36899a04e6eeb00eaff7033e57e9d045fcd41210a920", "firstIndex": 115091700914}, +{"blockNumber": 59939486, "blockId": "0x826b847ff0e0b5058241508aa959c4c26929b02a085585d43c79352722caed94", "firstIndex": 115158808514}, +{"blockNumber": 59970767, "blockId": "0xa0e39c1da6864b59ae513c8c23cb81186ad5d0831fd9062b8ce5e2b04b86a28e", "firstIndex": 115225918234}, +{"blockNumber": 59998941, "blockId": "0x927541a7e1c7fce15428b6f2e49f19a50d97205de79aaace1e516c9293b776ee", "firstIndex": 115293027278}, +{"blockNumber": 60045176, "blockId": "0x0a19cd2870ceee3af9b75697489e49e43eb0355d8c8d70e009d3bfd92399b540", "firstIndex": 115360136917}, +{"blockNumber": 60079877, "blockId": "0xd200d8055d0840f6b603cbad66a95523176486ecd359ded168043e77a3fcb63d", "firstIndex": 115427244576}, +{"blockNumber": 60111720, "blockId": "0xafd3e42ad67560c5d2362ca8b4a5b5e8c37ad5770a768b86c1e8593dc5340568", "firstIndex": 115494352977}, +{"blockNumber": 60162340, "blockId": "0xb387ee40894d72b616961383e1ea844c0facd1fbecac523b46dcae4e171569c3", "firstIndex": 115561462551}, +{"blockNumber": 60199302, "blockId": "0xc2c4eb94d6b9e0f4acdd65ef79fea1b055a2e30c5235237f7a8b90b48ac7f115", "firstIndex": 115628571793}, +{"blockNumber": 60234042, "blockId": "0xd9b38a2274fc12bf5a29cf575e3714a6633c1634f6dae991add867a6578c42cf", "firstIndex": 115695681465}, +{"blockNumber": 60287882, "blockId": "0x313630593ea2a3fcd3ba6d252e90985a17b504e4f115d9b1826d854b8b1ca604", "firstIndex": 115762790350}, +{"blockNumber": 60325649, "blockId": "0x964c3300fec34dd01f1957572cf598bcc392f27cad50486a7612aabe32adb54a", "firstIndex": 115829899243}, +{"blockNumber": 60365448, "blockId": "0x69f6a70a6fc0f3d27268328cc29e9ec2e3cb6ac6d30bd627c14d958e453c0984", "firstIndex": 115897007835}, +{"blockNumber": 60409916, "blockId": "0xf1d2dce79fdc5e6c421a5ba3ba257d9689f7377b79ea8613cab7a0ca561be775", "firstIndex": 115964115612}, +{"blockNumber": 60444232, "blockId": "0xa3803a23e09c2af895d1328464883ff6e474ac80c19adc0a3fc00ff5a8b3301b", "firstIndex": 116031225678}, +{"blockNumber": 60475691, "blockId": "0x10741d23d286a72b89676b45f6e7df24e0944b9b95059b70227a126ca414f8cc", "firstIndex": 116098333687}, +{"blockNumber": 60522291, "blockId": "0x19f885f948fd3b9659aa1a7e4637fb42b7f695b9b52f28534426c4ed5d23e837", "firstIndex": 116165443267}, +{"blockNumber": 60555543, "blockId": "0xb8079b2211c11df28f33163181167353fe168f10571f1b75a1bb9ed78e95178d", "firstIndex": 116232551801}, +{"blockNumber": 60590671, "blockId": "0xf02a5719912980bc5f350cfed7a1da4411a6ed3d11045be3ffff6bee064ec9b2", "firstIndex": 116299660557}, +{"blockNumber": 60638872, "blockId": "0x91366bc49b3de48e87d300eb2e60a79fadbe4e32f318e9978cc1fc46159e779b", "firstIndex": 116366769275}, +{"blockNumber": 60672198, "blockId": "0x4b0410169bf9cf6f044c97bfa88d42758cae59e6524b471ecd9bc595cf6d7932", "firstIndex": 116433878868}, +{"blockNumber": 60702468, "blockId": "0x1537385b356711387cf53ca70d46cf455057adc8ab690ea6869fc418871ecf46", "firstIndex": 116500987288}, +{"blockNumber": 60749712, "blockId": "0x28431957e4b43e3527d7bd14ab84ea73f48eef49c0acbfb61ba740d229faf1f2", "firstIndex": 116568094288}, +{"blockNumber": 60780538, "blockId": "0xe218b83c6686e38658993eae44f2d26f3f47f6e6820f86a8d8c7e1f7ecfcb1e2", "firstIndex": 116635203667}, +{"blockNumber": 60805090, "blockId": "0xe24e898996c8f86b1cb3e6526de68a91833760c9ef28bfe68a0562976d08088f", "firstIndex": 116702313997}, +{"blockNumber": 60844585, "blockId": "0x4d740ef3da44137194650a6da374ee5d810f5e261ac494e867f6cd1e06e90dbf", "firstIndex": 116769422773}, +{"blockNumber": 60875374, "blockId": "0xd4f53f9feea700ec992cec054b9134216d69a88e3cd3d2c91bb0fb57141d0b41", "firstIndex": 116836530889}, +{"blockNumber": 60900973, "blockId": "0xd88224186b0849793bf971492ff31413b40c473c6a0902e6cabdb80ecc4bde45", "firstIndex": 116903640579}, +{"blockNumber": 60927070, "blockId": "0xb409e77238d67d9c1dfb6325e32978f12cadb7f96ddd08e8794df11ddeedb8ad", "firstIndex": 116970749947}, +{"blockNumber": 60970868, "blockId": "0xf38cf3d0bbf2ee99b25bf8af8c41acc54526e604f70b85eb3987048aae1d0480", "firstIndex": 117037856691}, +{"blockNumber": 60993363, "blockId": "0x0e04b7f15d3f497bb4754456c104b1b100aa71495fc01264bef4f33586adf224", "firstIndex": 117104967117}, +{"blockNumber": 61017148, "blockId": "0xc7ebc018bf0871c87b8094ecea8e171a723a476923d7955505bbee1413c1c1fb", "firstIndex": 117172075275}, +{"blockNumber": 61041592, "blockId": "0x96cc112178bd22b100a9c3812b4c08c3821c132c8142626e87a3f75a61a53ee3", "firstIndex": 117239185298}, +{"blockNumber": 61087571, "blockId": "0x46926a4f29f9df5608674914e68625c6fdc7e1420f28162c510d71953b7b82e5", "firstIndex": 117306293911}, +{"blockNumber": 61117016, "blockId": "0xc76e616c748cdf29b555655e2bfdb9ac88d6dc1c25246883a684f32e5a153d52", "firstIndex": 117373402088}, +{"blockNumber": 61146663, "blockId": "0xaf8e90d59af04e7c2d70c61879e113b599a704c5ef51952669005027ca9efb32", "firstIndex": 117440509633}, +{"blockNumber": 61190113, "blockId": "0x651a5d3162f2d8fce238dc8423d505e956ed850d6e7384becb5ccc6237af2625", "firstIndex": 117507620090}, +{"blockNumber": 61224440, "blockId": "0x8d718dabfa95878b6c90664ab196541be6134f3ecf2abb9316fcd69c87ae008a", "firstIndex": 117574729080}, +{"blockNumber": 61252682, "blockId": "0x838136c6d22c772d0067582342110342e393e39c951da4ace1bb259e67791cc3", "firstIndex": 117641838495}, +{"blockNumber": 61274793, "blockId": "0x7d96bcfcafa9ee1e00f8800b94386f8f67b6a33ff7b1120f65aa8119dcfc783f", "firstIndex": 117708945916}, +{"blockNumber": 61316095, "blockId": "0x739664d1d13aed76175023ec64d581f2779dd18f649ecd0c4fd1008669a93dc2", "firstIndex": 117776054539}, +{"blockNumber": 61342878, "blockId": "0x744eea13e882684f1f6ef758ead7df3a2e4b9d17c4b8fd12f1138cd5061e99c3", "firstIndex": 117843164896}, +{"blockNumber": 61370212, "blockId": "0x863167b1265e789e2c020d4fd1a6d5c07c43ad7bb65d03ab53cac149d427775a", "firstIndex": 117910273648}, +{"blockNumber": 61392795, "blockId": "0x6c66a012dfe55476783754123c4cabbe985c236d46696b5831019f9961f848d2", "firstIndex": 117977382715}, +{"blockNumber": 61436108, "blockId": "0x5b2eea1f01c49edbdfb22c63b6068cf276dc9a949067d85ad5148982dbf23bed", "firstIndex": 118044490163}, +{"blockNumber": 61464234, "blockId": "0xd22872267f5c0535784e3ee05bbed2ef4e21ddf3c60ade9c559c1a6739f43289", "firstIndex": 118111599398}, +{"blockNumber": 61493445, "blockId": "0xd4f524aec141bf0d02ef6201167b9a7b32d94d28925f395a95af413f61e25bbe", "firstIndex": 118178709391}, +{"blockNumber": 61528130, "blockId": "0x2d1ae83b18e9fb2641eed32d23b3a95e8117e5ef8e5a9ff6194b4dc67aed302e", "firstIndex": 118245817167}, +{"blockNumber": 61562713, "blockId": "0x5e001cc9eea76e7f5448b473d2072783235de677d2787ce95562c001d462ff37", "firstIndex": 118312925285}, +{"blockNumber": 61588502, "blockId": "0x876e2d4d14e1e04d7d2374992a0b0d41b64f9b136faa5a3d3876ffd93dd69f9c", "firstIndex": 118380035841}, +{"blockNumber": 61615834, "blockId": "0xb1d022bb8d55ff584a90e6cdf9b0390ef85b8115654377e91d6b15c235335a2c", "firstIndex": 118447144420}, +{"blockNumber": 61659599, "blockId": "0xea808c03d0c6c6fdf6365692db839cce32584d06a72ec6937df896cd4b948dd0", "firstIndex": 118514253562}, +{"blockNumber": 61689171, "blockId": "0x8e8bb050c4128fc18b51a6c726a9cec82af123f4e47d98c172ad54e3e86c9b0a", "firstIndex": 118581361000}, +{"blockNumber": 61714183, "blockId": "0x8bda607fe1f4a9831546aec1e7976ddb54d0d927946160b356fb1fcc3717cbdf", "firstIndex": 118648468653}, +{"blockNumber": 61740447, "blockId": "0xe1fbc7496950555fd8dd6f75b7b36d7a5eea4a28b405ae7a44940c7cc161cee6", "firstIndex": 118715578823}, +{"blockNumber": 61782442, "blockId": "0x2e00e17853c353da5e30940a4991981efbd8e880ab94c2a5a5c884f505dd14a1", "firstIndex": 118782689005}, +{"blockNumber": 61809644, "blockId": "0xb3e9b678895cc5bf02b42e7bd666ecaae3e79e8478138c0ec3d096f0cb8142cf", "firstIndex": 118849797342}, +{"blockNumber": 61834610, "blockId": "0x5358ec41a241b55754a8c3195b5637378fd6856b6639a1d1fb6cadffef5dab68", "firstIndex": 118916905781}, +{"blockNumber": 61861715, "blockId": "0xe1b16fceda66cc3ff9b377ce2edef508bec10fdaae5fc40135a0f03dd08eddff", "firstIndex": 118984015016}, +{"blockNumber": 61896541, "blockId": "0x5102ace9d887f50cfed6470a8c1755f4bd5dbbc3080ec422cb3688cbb38fbc5d", "firstIndex": 119051123174}, +{"blockNumber": 61921070, "blockId": "0x9efb1c6cb59d47ccc760a3833b60d1c1014c59fd8d312239140a6fb176c6d73e", "firstIndex": 119118230730}, +{"blockNumber": 61942548, "blockId": "0xf2d4821236f1fa40d3eee6411371c848a2b22a7f5d3efb97636eea0242ffb99e", "firstIndex": 119185342113}, +{"blockNumber": 61966031, "blockId": "0x175d7945d7565e0c2f62bd61c84f8511de0952b4dbc0b16982b1158a5446a286", "firstIndex": 119252449507}, +{"blockNumber": 62004474, "blockId": "0xd969f3a8a581a7bcaf11ffb6862f2c127cc09b4a916a17fca01b222ac62fd17c", "firstIndex": 119319559873}, +{"blockNumber": 62025547, "blockId": "0x7e0d38b85b529c9af0881a38347f577c32729a64adfb89bf78d57774b581350c", "firstIndex": 119386665274}, +{"blockNumber": 62043616, "blockId": "0x774394a8de127ab491633cf51301fb2cab5ef308729071c958d621adf304f446", "firstIndex": 119453776369}, +{"blockNumber": 62067022, "blockId": "0x1cc8346c33f0881b8be3521f3d3f0947d163301ab7ff78305f258df9c909cd0a", "firstIndex": 119520886376}, +{"blockNumber": 62096307, "blockId": "0xc20fc0095f12bf967960198bb154dbef1d4b3cd09dfc1ec7e07ad34feed46f25", "firstIndex": 119587993405}, +{"blockNumber": 62132361, "blockId": "0x4571d28c493b7b91d92d18b948402955af3341b7e1bad64dfb8b5ad38d3c50eb", "firstIndex": 119655104326}, +{"blockNumber": 62158548, "blockId": "0x59e4e400e9b4d005885797b329b91077e197abee60a9e47a78f7f3c578111f72", "firstIndex": 119722212439}, +{"blockNumber": 62180444, "blockId": "0x832f1db5a5bddc37765b11929e9db477d15d19359f1563ac6728c528a719d671", "firstIndex": 119789319900}, +{"blockNumber": 62200886, "blockId": "0x46dae585461de8406a23e6d6e3d88501bb927fb2fd0f748a5e2e244769edf4ad", "firstIndex": 119856428727}, +{"blockNumber": 62239882, "blockId": "0x06f453bccecc37ac6f19a53ebd5aa965cdce8b7b632dcdecc6a5323e73e51621", "firstIndex": 119923539628}, +{"blockNumber": 62266005, "blockId": "0x2075b5887fa8b9336db0b6d8936998c2dc5e63ea44c608bd1f1e906906efef6a", "firstIndex": 119990648449}, +{"blockNumber": 62289766, "blockId": "0x086e10e060e92f678eb8a9eda217e4fdac712225d6fc328a3c535328a83a4fc8", "firstIndex": 120057755134}, +{"blockNumber": 62312035, "blockId": "0x903199722e4aa4d2f67bdd9f00db9c3a3513634992e7b9173677f8b5a8de26c3", "firstIndex": 120124864963}, +{"blockNumber": 62351609, "blockId": "0x4a79484a96370a55dc0af0164dcfd305030cc7a0d733466eaf2bc2809f37dc5a", "firstIndex": 120191973958}, +{"blockNumber": 62375690, "blockId": "0xdc36938b1a06913e28d5ba19bdbbb0c0c8f1cdf0d6c1a58c4725c0b5deebed9f", "firstIndex": 120259081594}, +{"blockNumber": 62402570, "blockId": "0xacc23f85e14c0a7d64a8c0bf7f7fb533d46d9b03a9cc476dc32b21b9a93520c9", "firstIndex": 120326185313}, +{"blockNumber": 62424322, "blockId": "0xbf5c107b3e6440d6caffde834ea01cb8e82039cc577a43a79f0ef61180d03cdd", "firstIndex": 120393300942}, +{"blockNumber": 62462991, "blockId": "0x2838b78b4226a964d30ef13aa4dea792ff5c20a926e07e8eafa20901956c6ae7", "firstIndex": 120460408140}, +{"blockNumber": 62489705, "blockId": "0x0d50ee2748ef7fd9f8dabaffb037a54e3852a1950ff5d37fedb1cbfcc6174944", "firstIndex": 120527517793}, +{"blockNumber": 62514493, "blockId": "0x1932d42a9c74f942ba9f1241c89d354dc90cc48f88b499a7360736b191b5a010", "firstIndex": 120594626716}, +{"blockNumber": 62537717, "blockId": "0xa91ec50023d11744a20467c7db211b78fc87a157e95569412897e7bda09e77c5", "firstIndex": 120661736500}, +{"blockNumber": 62578416, "blockId": "0x0b725cee1935dd0712b4e1860ab759ce745fb10e7457770f817279b3df61b47c", "firstIndex": 120728845943}, +{"blockNumber": 62607098, "blockId": "0x08d25d257487e671567604e8bbc0ffc3ea0a699bd9a2a47bde968b247927e7c0", "firstIndex": 120795954847}, +{"blockNumber": 62632777, "blockId": "0x7856f577976e5a35c2f3e58bab4362309c27c5a15b5608af35031ccee34b795a", "firstIndex": 120863062549}, +{"blockNumber": 62658451, "blockId": "0xe4897cf73722bb5a799da8ee4f5bbd9969ac44167aa19b3fdff864c696d05f62", "firstIndex": 120930172009}, +{"blockNumber": 62701924, "blockId": "0xdea783cc2c4b640fcf12ca2766274e0cd780c1899c8bf97a551e480eeffae294", "firstIndex": 120997279362}, +{"blockNumber": 62729601, "blockId": "0xe6a5a4473a5be4d4eda468839cd261df8d44c18dc05b9fb529ef4295d9ff70c8", "firstIndex": 121064389451}, +{"blockNumber": 62756255, "blockId": "0x65625d272e95e0ab391bca2f0ba3052d3c04a11e989c5cfc0eae93c0de6a17b2", "firstIndex": 121131498981}, +{"blockNumber": 62792573, "blockId": "0x8025d85126e402faf3225dac919d23c58f51bd487b5c3d6cea3bb45632b63f19", "firstIndex": 121198607763}, +{"blockNumber": 62828720, "blockId": "0x3a67443c5e350598336310b0c65d23f7390c3af977e1ba2fa8fba4f6adf9ea76", "firstIndex": 121265716159}, +{"blockNumber": 62855598, "blockId": "0x3c9692abe58c1f28d8d109e29acc80f5a3a61ca748f484a701d14cec51305546", "firstIndex": 121332824770}, +{"blockNumber": 62875722, "blockId": "0x3535c4f7cf2f0b680e157c13de4509867cb46c9ff919699b3c4c98d4901072a0", "firstIndex": 121399933739}, +{"blockNumber": 62909931, "blockId": "0x6d57acc64cec088928b7f7ffbce5cfa0dfadb1dac5daf8b21e0c269ec068e973", "firstIndex": 121467043581}, +{"blockNumber": 62942843, "blockId": "0x9523299af8adb6b1f1a42c22617b001e2cbefdc0e139bb1756e8d792b2df47bd", "firstIndex": 121534152457}, +{"blockNumber": 62965712, "blockId": "0xd4f05333af0c14ff8eb63afd0b2245de352af7ccc447d096b731e770532100da", "firstIndex": 121601257066}, +{"blockNumber": 62988751, "blockId": "0xa3aa10f64f2637af10b61ff54abc69733ea25478ea0f58665b09bdfbad08f367", "firstIndex": 121668368371}, +{"blockNumber": 63019355, "blockId": "0xbab4f13f40d3389879c3e7e56e990573aa6116e11c5cf8ba2a7b4966358b5b72", "firstIndex": 121735479110}, +{"blockNumber": 63056755, "blockId": "0xbe03e54f80d09f87075a532edee58d50321949dbab0a2e0d0459cab302ca6b28", "firstIndex": 121802586259}, +{"blockNumber": 63082877, "blockId": "0x8f804b3621d2c0952ef7a46bab576a505e69edebf6f39cacd112e00986381099", "firstIndex": 121869693233}, +{"blockNumber": 63108249, "blockId": "0xc125267b950859832f0e4a47af1869bf6c040a66770d4f5504938e8bc2d94023", "firstIndex": 121936805056}, +{"blockNumber": 63148713, "blockId": "0x7cbbef28c5af79e70ceff9df450cbe4813b1f0fa4835dd29364701d09af009c6", "firstIndex": 122003913515}, +{"blockNumber": 63179337, "blockId": "0xdc1c32c69a01f1072bc9aa82be7995205ac31e61fcbb82d2c268da72c5c3c469", "firstIndex": 122071021404}, +{"blockNumber": 63204336, "blockId": "0x54d299cac0c62546a3fe884e716d37e166db5de198a33b64638acdb57fd949c1", "firstIndex": 122138131826}, +{"blockNumber": 63227183, "blockId": "0xab382ecd783c9e7fed4db344c7189aafd2eb329b5048ecf9ec786795bb64d3e2", "firstIndex": 122205240074}, +{"blockNumber": 63260183, "blockId": "0xa86f360fca1aa1aee9fcfee44b131142e3c5b101ed85151f6d56a87f8cdaf9c8", "firstIndex": 122272349636}, +{"blockNumber": 63285976, "blockId": "0xe0965e45f9b86acda74e93c7c5c11156bad9d90cf6107afc8bd73d1e1783ac6c", "firstIndex": 122339458688}, +{"blockNumber": 63306773, "blockId": "0x5992d7ad67d70af9f40fec0728516ece7d0d1c2b2e50a1ceaa5056b99896d5c5", "firstIndex": 122406566685}, +{"blockNumber": 63327426, "blockId": "0xdf21fcb5e409ba21f4ef89b0fe71d1d489cf9da537c999b18da07c026d43e737", "firstIndex": 122473674385}, +{"blockNumber": 63345847, "blockId": "0x60fbaca8431765b5758bf158756a336a210aa9e9004b697e37bad8af769cee61", "firstIndex": 122540785659}, +{"blockNumber": 63378200, "blockId": "0x779a27a752a209de511b346891a97dc17720f122c34717661ac93d777929f490", "firstIndex": 122607894134}, +{"blockNumber": 63404346, "blockId": "0x5e702a5c9c4dca085c33e9bb8be0bb7286d1f40a7877ec43331c427918b90268", "firstIndex": 122675003099}, +{"blockNumber": 63426507, "blockId": "0xf5ce5d6936e41dd3e52650ecb0d7eebbe86a68c7e0b1f44901bf5f52f04332f3", "firstIndex": 122742110928}, +{"blockNumber": 63448333, "blockId": "0x05f3fe509c74e09a9861c591ded7c08f9063533991c58902c57074db8db7cefc", "firstIndex": 122809219854}, +{"blockNumber": 63470535, "blockId": "0x4377642cfce5ba2caaffa00fc6ba4a9c741ea034b9194b7fcdc6350eabebc5c0", "firstIndex": 122876328666}, +{"blockNumber": 63487827, "blockId": "0x74cdf584fb058c97ab717856c6ff8f0d64063279c21a2ee3257a49801ec4e11e", "firstIndex": 122943437001}, +{"blockNumber": 63509469, "blockId": "0xdf9738798ec6bd1fd16b5a08c1714c5609561c5061709d3bd8392416fc0e740e", "firstIndex": 123010547087}, +{"blockNumber": 63530026, "blockId": "0xc9ff50e616f3d225f133380ff505aa254c9a675fdb0bc1560426e48dc1706147", "firstIndex": 123077653403}, +{"blockNumber": 63551221, "blockId": "0xb9e4315a4d0a7c80f1a93d3b46e0514f7dd5f007db044aaa303a2ea51e4df6c6", "firstIndex": 123144764583}, +{"blockNumber": 63572543, "blockId": "0xfc63c9120df79d3722f8968070e03e8a706e7eb9e8e299385428498adb2286dd", "firstIndex": 123211873252}, +{"blockNumber": 63607434, "blockId": "0xd367abb9275c510c4a94a94341320a3ad09eb2beca7453ff1c39ceaad7893274", "firstIndex": 123278982838}, +{"blockNumber": 63633826, "blockId": "0x52f1b78ad81530524618edc8dcf77e6a9a92af166337bfadcd8690e33af1ea57", "firstIndex": 123346091881}, +{"blockNumber": 63652083, "blockId": "0x60d5eeaa7e92deb56272239b9d0ec29809d772d2578d24751fe33e99cc737822", "firstIndex": 123413199605}, +{"blockNumber": 63670518, "blockId": "0x1c8880ba43230a91991937f88842f080dd280bd03a5cf19fccd7e0c4681a44c5", "firstIndex": 123480306341}, +{"blockNumber": 63688582, "blockId": "0x05d361194241b1bf5aa6ca47fad9f6da7f08329b3786dfe40243a89197eb551e", "firstIndex": 123547417012}, +{"blockNumber": 63716434, "blockId": "0xaf199b9ab05b102ffe5e9f764e8679f214ff69fc32412ec9d2187b729c7d287c", "firstIndex": 123614525784}, +{"blockNumber": 63743609, "blockId": "0xa2aa5e07685103cabb8edfcfd774dc85bc6f5a5c83e27ecc20a7fc31f8b59671", "firstIndex": 123681634572}, +{"blockNumber": 63760021, "blockId": "0xf3b323fc5f9c030a0367bfb8f6e70ea075fd0d939d8bac0509404ac9b20cb2e3", "firstIndex": 123748744757}, +{"blockNumber": 63776099, "blockId": "0xcf71527a9f8194e0917b40095b0f511b965e900fc506d30cbad1e447891657fa", "firstIndex": 123815852521}, +{"blockNumber": 63789039, "blockId": "0xd0ead6d2fa32cdb36c2e5bcbe9cb5721facea0083a1dc839d047ecaff78e9ea6", "firstIndex": 123882961207}, +{"blockNumber": 63800793, "blockId": "0xb9a7db22cc03929cf99a6b46e3d2173ef7283ecd658c23c61bb61dbdb7c2c1d2", "firstIndex": 123950067707}, +{"blockNumber": 63814860, "blockId": "0xb077362b77403c8e7d9e5d7963652d1a9c56719a949edf57bf1d58b67ce8e8ae", "firstIndex": 124017175893}, +{"blockNumber": 63834047, "blockId": "0xbf28e15aff0cf10ba790243962dcfe19fef6e0c59f5c6959ff173ac7d44a2efc", "firstIndex": 124084286964}, +{"blockNumber": 63851696, "blockId": "0x05d9ed19a5d7f557ef11eb7e0372289f4fbdacfa9896c5ef867610629c5515e8", "firstIndex": 124151393612}, +{"blockNumber": 63864571, "blockId": "0x8ff23c693b8dfe771b0c5e9f5913e3793a94d3f990c7f11b30000d2eca7f7edc", "firstIndex": 124218505932}, +{"blockNumber": 63875887, "blockId": "0x48d9ebc772cac7e605e0f068207136cbb1b0424be3286c8bf48a9a67be5abd01", "firstIndex": 124285614483}, +{"blockNumber": 63887520, "blockId": "0x865cb670342651f0d277e203437dbe284b486c41ee28b447c24f25dac9e0e948", "firstIndex": 124352724380}, +{"blockNumber": 63901063, "blockId": "0x8725ceba7edea3f83a3e15385d40ce08f3ce903d31a51d3b66f76f10a6d848fd", "firstIndex": 124419832451}, +{"blockNumber": 63912903, "blockId": "0x3ad861e9d1e4a599bda9df625aeccaa4d85457660ba53429a8dcf5f39625a1f4", "firstIndex": 124486942196}, +{"blockNumber": 63924580, "blockId": "0xa63c2847c88358d281b7264288601dde121e6c4e049a9f40fedf985caff9d61b", "firstIndex": 124554051437}, +{"blockNumber": 63943790, "blockId": "0x88a599a14f46dc8b15c856d5fac184f48c888078552b28c6ceb9d8d27a07eb76", "firstIndex": 124621158834}, +{"blockNumber": 63965931, "blockId": "0x3a2a552ebb10587e08a73962606bb17565b78d5a8596cf0e2309bbd6c23e180a", "firstIndex": 124688266460}, +{"blockNumber": 63981183, "blockId": "0x8e7acea9965d7a44fc7cd41c32dfee3442a1a3d673a9109b14249b95d369a426", "firstIndex": 124755376054}, +{"blockNumber": 63993454, "blockId": "0xe7347738d445dddc25a6e6ebafc0f4b749a4b0025f7b83a964e3c622126e2e47", "firstIndex": 124822480550}, +{"blockNumber": 64003971, "blockId": "0xe5ee970cf62e348a52c5c17f5e9eff9694272d4776b104667199bf5dfc65cfe5", "firstIndex": 124889593601}, +{"blockNumber": 64017935, "blockId": "0xcfddbcb72b3625df494ba725933652f198242999cf537a8402ed787486437372", "firstIndex": 124956702268}, +{"blockNumber": 64029895, "blockId": "0xefe84625eb527dd00ecd25a74d681de271a166512e03f11727a01309f9b7fdad", "firstIndex": 125023809771}, +{"blockNumber": 64046465, "blockId": "0xf7a4864c2c1424723a89e5074aa829514bef7cc62f62a13393c4517e34739b34", "firstIndex": 125090921663}, +{"blockNumber": 64074809, "blockId": "0xa5334d9b1c5aaee2089bbd8761a030afbd07b61d299e4807676a90da536e0b1c", "firstIndex": 125158028913}, +{"blockNumber": 64094036, "blockId": "0x8b4a7ed72238d77abd0503d3afe8473a2b570525cfd3cde9f7c1f673921185be", "firstIndex": 125225140116}, +{"blockNumber": 64108574, "blockId": "0xb4e72eed5a1ba58b5753529e4b0f907da80eceb55826494fe3da23999723fd1c", "firstIndex": 125292247405}, +{"blockNumber": 64124502, "blockId": "0x22c09f4c0a751148e5f061f26bc22cbdadec4d8190c2e4c125f459814d895577", "firstIndex": 125359357354}, +{"blockNumber": 64140343, "blockId": "0x6d732df24ba65d53c3e8dde4b685168f8e5933e6577609e431127b1f58c9f5da", "firstIndex": 125426462371}, +{"blockNumber": 64154989, "blockId": "0x5ffb9f5d7c99eefa11bc2975e0bb91868d1c04805621b30c952febf0868ac77e", "firstIndex": 125493575020}, +{"blockNumber": 64176816, "blockId": "0xb3f08a987c3db358fe0e95f60dd34bdd4e7cc909c2349dd87e6b0acad27fbe04", "firstIndex": 125560682165}, +{"blockNumber": 64194049, "blockId": "0x9860f6c6892f32136392209836e5aa7aad57bdaecb66d58f179f7f4e4c03a920", "firstIndex": 125627792614}, +{"blockNumber": 64213356, "blockId": "0x75b1bc0d3cd5c6c440289b2855fff686058a728d38b6661360d74c9840b9712d", "firstIndex": 125694901805}, +{"blockNumber": 64232053, "blockId": "0x658d5b14f44a5ef9930dd99a838a71b27d2fd96783f4988f786ea3add579e1a5", "firstIndex": 125762010573}, +{"blockNumber": 64249429, "blockId": "0x59a1ed987834d497550c2efd8bf2fc21d71ca99862478f5c81087182c1c63232", "firstIndex": 125829118362}, +{"blockNumber": 64266676, "blockId": "0xa0184b54de4615df8657345efef0a927ea123fc5425602ba77c96c90ca929df6", "firstIndex": 125896228235}, +{"blockNumber": 64292248, "blockId": "0x1e694441046f666e4d5a77a562913231f6129c5499ca39c809f5a7fec9a05acb", "firstIndex": 125963336898}, +{"blockNumber": 64320058, "blockId": "0x1c464cafd3aa9a68d4b8a2b725661ff35fa05e26f08d44dd509111c54a012dea", "firstIndex": 126030445984}, +{"blockNumber": 64339112, "blockId": "0xebd32880cd7593072f5fa10133424d424c936f6a5464b31bf9dde739b8811c54", "firstIndex": 126097554167}, +{"blockNumber": 64356869, "blockId": "0x313b027c9a33b712df815fe5d43fd931ce53ec0d470afa9fce0efd8a49be2dab", "firstIndex": 126164660148}, +{"blockNumber": 64374412, "blockId": "0x45eb2d9763e282a8b82c33590be560bef31fe8cf85be66dbdaf35034455dd51c", "firstIndex": 126231766097}, +{"blockNumber": 64392085, "blockId": "0x0495979f7c65eec1f379f46fda01afc0c23131a06a24e50122f3a575db232d90", "firstIndex": 126298882012}, +{"blockNumber": 64418639, "blockId": "0x1c2c5829a646319df48106fa620f86fa4d06bbb9419957f4b68cc0cac5b2352f", "firstIndex": 126365988897}, +{"blockNumber": 64437274, "blockId": "0x15914441cb058d3a9f25160f8e22fc1209dc253b6dd1b08246d4f76226e68e50", "firstIndex": 126433099127}, +{"blockNumber": 64453882, "blockId": "0xa9a6faae7c4208015f4fc0782d43037889cda1abbfa0afaa16b1867d21f13953", "firstIndex": 126500208540}, +{"blockNumber": 64468641, "blockId": "0xd464df95aeca0c172c1bbf59f04562d58c898eb02120820f97a7ee091a31e6d6", "firstIndex": 126567312997}, +{"blockNumber": 64483825, "blockId": "0x9ae2139cbcfe1e0cda7b12bc56a73f7192009d95078689ecf961bff8ed835535", "firstIndex": 126634424351}, +{"blockNumber": 64497789, "blockId": "0xba2a2b08b42c4073a72c2862d9dfea413cf4142e55869b6936cabbc444fd81a1", "firstIndex": 126701532514}, +{"blockNumber": 64521270, "blockId": "0xd1eb831be12947cb73a22e098bff148a470679b1351d0879091dc055abc446e8", "firstIndex": 126768643802}, +{"blockNumber": 64546085, "blockId": "0x029698f176810f8a9ec95b1ce7ee1f973be50b7bc333affa8c15d7985c149d5b", "firstIndex": 126835750944}, +{"blockNumber": 64564211, "blockId": "0xbed83899f9fa1132cf35d5e90005341ab4dfa5e7b88c4921ac559daa55a51d79", "firstIndex": 126902858612}, +{"blockNumber": 64581615, "blockId": "0x0f443c2e33c9623660773d2505aca0f3291cb793c9099769d8b0b0fdbcada9d8", "firstIndex": 126969969257}, +{"blockNumber": 64598404, "blockId": "0x3e8b52ffd93e2aa88344732e860a25f6a36fb4909d2e546731dee86f6176ff6f", "firstIndex": 127037078558}, +{"blockNumber": 64613923, "blockId": "0x564cabe16d868e4ac0311afde31cb5f4e8175bebe6649553d8587e18f8446339", "firstIndex": 127104187573}, +{"blockNumber": 64639189, "blockId": "0x2cc181ee2073c0c0b2c6902d680af1de8e46c1f086f087922a3a25e9943c8cf4", "firstIndex": 127171295729}, +{"blockNumber": 64662192, "blockId": "0xcabee006751d66f861704259d9f08420d701b6ebd47ff680dba3ecec8c4db1d1", "firstIndex": 127238404717}, +{"blockNumber": 64679037, "blockId": "0x2ae8d9760a17afe122f502526cb9a27a54519d6a4f9466b74efbea8a127f1657", "firstIndex": 127305512334}, +{"blockNumber": 64696230, "blockId": "0x4e45ed5013446e5a5ee8cae9b04d16a16ed2557de64b8cee6b5fa8efdb152db0", "firstIndex": 127372623195}, +{"blockNumber": 64711310, "blockId": "0x097b3535c4b09e3c9bad8fec6e1d06daf0a6778b6369f6dd57119304a1915721", "firstIndex": 127439730055}, +{"blockNumber": 64727351, "blockId": "0xf85302acf6072a563d8fd7f1a252b0ca013c8cf5144f76f3ed4ccfb140b223b8", "firstIndex": 127506838235}, +{"blockNumber": 64752858, "blockId": "0x84ee90c66c41743c38eee94140c6e410d24d3f8f1511e6e72b27ffda23524aea", "firstIndex": 127573948700}, +{"blockNumber": 64778710, "blockId": "0xad97cff0a845225da0a1074be2799ca66c3879f40c00d28c2f30f4cad156e52f", "firstIndex": 127641057349}, +{"blockNumber": 64797879, "blockId": "0x621fa80ea86c3dcc32db4b1edb9eb556d08a2e9ebcfe5aa3373315fc929fa52c", "firstIndex": 127708166236}, +{"blockNumber": 64815431, "blockId": "0x156863274910a2bde2cd14fd3a7ece874f890fb04b1dacc054fbd8ab578a052e", "firstIndex": 127775274475}, +{"blockNumber": 64832607, "blockId": "0x798855ff2f074f2361ccac209dc853f843999b118a7112d31ce906116618631c", "firstIndex": 127842383471}, +{"blockNumber": 64849562, "blockId": "0x1ba6fde219a589ecd4c279acec03894a2c2580b9729611bc15165addb3b26308", "firstIndex": 127909494068}, +{"blockNumber": 64881094, "blockId": "0xc1119758f8fcbce2c33aba8cd4dc246c7021c4212b27b8613b6a949b91aaef0f", "firstIndex": 127976602059}, +{"blockNumber": 64903665, "blockId": "0xaf3bbfec8bb1ee392b00e6b5c92e2533faa1bd44e9bac9eef93bf36a4b16061f", "firstIndex": 128043712345}, +{"blockNumber": 64919683, "blockId": "0xfee423bab8c223e32dedd61d51d9ba86ef95075f914a7882c260a355741ee5d6", "firstIndex": 128110820558}, +{"blockNumber": 64935356, "blockId": "0x6ed8fa00296f9fa7ca55dd133af7070913549c5f6efdb59207064356f0757ca6", "firstIndex": 128177920941}, +{"blockNumber": 64951144, "blockId": "0x75cab46733a7ee330edddd09af15f049e49085ee2e56fe0e43dd9cb8e26e66e8", "firstIndex": 128245037542}, +{"blockNumber": 64972990, "blockId": "0x265c3658d26c14eb4399006b20e3348b66af25f1a912d2cac634ae1206e2969e", "firstIndex": 128312146846}, +{"blockNumber": 65004153, "blockId": "0xf5c97a8b15d664c1177761ffeed5cb795be55941d597ee13311f9b8060a2f777", "firstIndex": 128379253633}, +{"blockNumber": 65026702, "blockId": "0x3cac14abfd066d131748ad0e29eb761684473533705810045f2ec13fcbbec9a0", "firstIndex": 128446364619}, +{"blockNumber": 65045365, "blockId": "0x9f47ce541700bbcd191691046c223cee21093d5faca65559ae7867bcb0f6990c", "firstIndex": 128513472139}, +{"blockNumber": 65063109, "blockId": "0x78e3873fefdbec451d3d117d1a66ccf8b2f8b3fe0dead6dfca523d64d01701c6", "firstIndex": 128580582846}, +{"blockNumber": 65086769, "blockId": "0x0460436585fedab43614f0171c5af1938dc01bf43d3dbc3ebba4017bfc190186", "firstIndex": 128647691998}, +{"blockNumber": 65120922, "blockId": "0x9b42bb5b91c4b8440290955c52ced6d278f7659025eaf517f1d5a06009b81f73", "firstIndex": 128714800025}, +{"blockNumber": 65143976, "blockId": "0xfc93f0440c3fd4666e9391cf2b72a69d2849f9c0b20885b39e14ddeb088a383a", "firstIndex": 128781907986}, +{"blockNumber": 65161937, "blockId": "0x9de8ffb9951303a16e92318ad7f9c26aacd5b9bdfff9ae8c0de222c9dc56c3bb", "firstIndex": 128849015498}, +{"blockNumber": 65179411, "blockId": "0xafc740424a80ec845f6849499cd828ea3b65ab8e35e5964f9752b9f4bae72b98", "firstIndex": 128916127713}, +{"blockNumber": 65203491, "blockId": "0x170219c45e7182fba09346f01bddeddba4f04de4ba70fc4478fc8a894b951e1d", "firstIndex": 128983235795}, +{"blockNumber": 65235265, "blockId": "0x6872d7347ac98740618250ac999281e19b71a43ecf540c502d087005d1981f3d", "firstIndex": 129050344532}, +{"blockNumber": 65254919, "blockId": "0x9e37280efc44044786d88f48713a230f68167116a75109a1c236ebca041b265b", "firstIndex": 129117453538}, +{"blockNumber": 65270463, "blockId": "0x02efa7e476233190289f803e948d799be97841280ce0e18a5ccce2acd04a92e9", "firstIndex": 129184560584}, +{"blockNumber": 65287106, "blockId": "0xe67a8970944f3ad41965be72e203e2cafd1c09170e972dc732a2473836d343da", "firstIndex": 129251672059}, +{"blockNumber": 65303379, "blockId": "0x05c9452bda5126c9af18139f122af60693a720b1635d1825ef107e7f15a8ea65", "firstIndex": 129318780130}, +{"blockNumber": 65334553, "blockId": "0xa87e60adcecec0a5cbb43d28cedaf4383d3ed56074059b14b805d14e326b944c", "firstIndex": 129385889452}, +{"blockNumber": 65360634, "blockId": "0x72d3ec07b132d7a1d90e49c3385db5d6e3f66035fdc78c1c53213d0d0f6b2b06", "firstIndex": 129452997220}, +{"blockNumber": 65381054, "blockId": "0x983c261c7a06914f06695dbc68cf29954f29f7df314a8269703c629483b5af04", "firstIndex": 129520104838}, +{"blockNumber": 65399729, "blockId": "0xdc1338a1d48989716ab24594fcc9051505cee7a2f70f156b490c34b3977d4935", "firstIndex": 129587216346}, +{"blockNumber": 65416050, "blockId": "0x4ab39f45173b62ed5f1cd05e7c1aef35c10f5eb5072916b8d7c94105a5f42426", "firstIndex": 129654325177}, +{"blockNumber": 65440506, "blockId": "0xa3af54b1cbf520b82b1e76f36a7b8db5824b8f99a0c0219d6009953f74dabe47", "firstIndex": 129721432347}, +{"blockNumber": 65470005, "blockId": "0x01675b683ae1912744f1bd0fcab2169fc1f91da85b1c8d54e7c0c863b055413d", "firstIndex": 129788541224}, +{"blockNumber": 65490500, "blockId": "0xea3fc88224869b01255d598515ef95308b7d87151d84a9c1f6969cbd1987d0d9", "firstIndex": 129855651565}, +{"blockNumber": 65509344, "blockId": "0x8dc89514d600e79d3a9a9922e8db7323de2d5387836462d2520dc498c5626183", "firstIndex": 129922755938}, +{"blockNumber": 65524942, "blockId": "0xcfc083f4643459cf660dcff60404ac6bdcdedf5ca7f9b6c44e971110751b3228", "firstIndex": 129989869250}, +{"blockNumber": 65544577, "blockId": "0x079c8f28ba1402b43d4cd5ddf221466e36ee2c17c669505018ef7f2a7158c68f", "firstIndex": 130056976462}, +{"blockNumber": 65576566, "blockId": "0xbad2832b2bc51c75b2c21e029f0e5e21a58334cc646a5bbc2b0f35206b0985b3", "firstIndex": 130124085981}, +{"blockNumber": 65599846, "blockId": "0xb2ea9e591b18cfb8b66bcf78b6e79b178f98277134c58ffbbd29aa6a5018029a", "firstIndex": 130191196026}, +{"blockNumber": 65617183, "blockId": "0x3187beb23914521b004a54014bb9cc20e12ebf8bd25cf8e7710d00eaa50de6ec", "firstIndex": 130258304012}, +{"blockNumber": 65632882, "blockId": "0x57dd069c92cb2db08a602f8015077445ac07f8a6c96f12ca6316b3dea07e4ff1", "firstIndex": 130325408833}, +{"blockNumber": 65647482, "blockId": "0x2ca31f7de60347dae9c499be14393ba2beae5fd1eee3b9f388ca83b630e1c311", "firstIndex": 130392522064}, +{"blockNumber": 65672040, "blockId": "0xc37fe4616f68e052b12452b72dcfe228cd969c25aac308790d3d82a97e908ccb", "firstIndex": 130459630551}, +{"blockNumber": 65700221, "blockId": "0xb1a838864b8e9a60ea543d250901f95f874fe5261a4876dc65afea7bfeee4a29", "firstIndex": 130526740414}, +{"blockNumber": 65721068, "blockId": "0x01c680fd6e4c6be3db50d9846578c8dcf392bab3f3f1be90cae2e1f8fb0dbc0f", "firstIndex": 130593849198}, +{"blockNumber": 65738308, "blockId": "0x1e23ff915190a371759c70d0e94737d9cf19b2e97b32d5cea1780ce336d4811e", "firstIndex": 130660956687}, +{"blockNumber": 65756405, "blockId": "0x2635db5da0c3cca704e975ee27a20b22cf4eb56baa35e6187362e5ebd15bca08", "firstIndex": 130728062986}, +{"blockNumber": 65782689, "blockId": "0x3623841240faaa24ae702df78332bb276abcde9676049158d85e95143a4df358", "firstIndex": 130795175083}, +{"blockNumber": 65814872, "blockId": "0xe562500d3e6ea5a9be9f6024c6830c4ac635fb0e00cd5c23097aa2089f5de17e", "firstIndex": 130862284292}, +{"blockNumber": 65836785, "blockId": "0xe9b69782a9c632f6c5b76d5d9f13b670cdac923316b1cbc113fb2c1437503c2c", "firstIndex": 130929391448}, +{"blockNumber": 65857139, "blockId": "0x1c063b63dfa89894c0bc2bb53455fd63c9d0e4305daa01443a05a585f699f224", "firstIndex": 130996499109}, +{"blockNumber": 65878721, "blockId": "0x9a5a78cbaf3344db334916f2b304169c122a909070c2e77a8b7a992dfb9cae59", "firstIndex": 131063610155}, +{"blockNumber": 65913718, "blockId": "0xba245192d7229b747643e0aa6321155e2a2c6226d050b4e84dac154b1de7c092", "firstIndex": 131130719280}, +{"blockNumber": 65941008, "blockId": "0x9ee7c74ed3bb0c56a3dc0c5e5dae6bf6afb1c336b9f6fe667c009ede346ef2fa", "firstIndex": 131197827215}, +{"blockNumber": 65963562, "blockId": "0x782bee3b58814f159fc6aede28c3c1f164a603eb9f766718254feb0a1a5b1e6e", "firstIndex": 131264936894}, +{"blockNumber": 65984047, "blockId": "0x95a16f23c0aba5a41ce7c2e1e6637f0cf8750ba3eed37b87f8d134c6b2536159", "firstIndex": 131332045655}, +{"blockNumber": 66010811, "blockId": "0x1fb7cead17220b245855a83bd6a14f25ec6116ab8247fa2fe786d6ebcce048e9", "firstIndex": 131399153994}, +{"blockNumber": 66042422, "blockId": "0x6acc3ac42d23d1a9518ba956bdff4d094f964418bec4a683192654ced7a815f4", "firstIndex": 131466262209}, +{"blockNumber": 66064086, "blockId": "0xb21b3a06815df790787e866b416944384a321ca2484e46bb732135e453914b57", "firstIndex": 131533371815}, +{"blockNumber": 66081319, "blockId": "0x89a08e0d40d8a03ce3d69f740b5e98157cac40bfc6352eae0659f2314c659e0d", "firstIndex": 131600482209}, +{"blockNumber": 66098668, "blockId": "0xa7460dbeac258d09292479bc72e5c0e6574c0786a2f439a9ff967c62bef886ad", "firstIndex": 131667586977}, +{"blockNumber": 66121915, "blockId": "0x21b969bdb16d925c7acf8227a8b463efa043e7e5d82d614317b75cc3642d2ebe", "firstIndex": 131734698681}, +{"blockNumber": 66155612, "blockId": "0xa385bbaa17e48b6604a88328f29283b7f59b43a329d434f98d9d2bbfe26fb9ab", "firstIndex": 131801808643}, +{"blockNumber": 66178802, "blockId": "0xaa21616e0dfb8ff11f081bd21e888a36b86abb751a46b7a9f5ad470695b66300", "firstIndex": 131868915683}, +{"blockNumber": 66196092, "blockId": "0x41011c713e834c28fc9bc06f1768870ce6b0ae8faef571c7066f04d79270eabc", "firstIndex": 131936018578}, +{"blockNumber": 66211080, "blockId": "0xb6ffc9c05338f187b0d0c64a6919e108b107f0319bd82bf6868c70e9ec1d7c1b", "firstIndex": 132003133642}, +{"blockNumber": 66230804, "blockId": "0x65764df44a3827a368bedc3a85a1241f9d744279b8c4171497ca79a7f596bcc2", "firstIndex": 132070244209}, +{"blockNumber": 66263814, "blockId": "0xd5ca2bd51515703395c9e8774f87daa64abd737cb36c5a79466154a64de57bc0", "firstIndex": 132137352639}, +{"blockNumber": 66288373, "blockId": "0xa1d5037d1c057c142ba737660ddcfce23ef04c3d2ab86e84ad5a001e2f6b4c72", "firstIndex": 132204459746}, +{"blockNumber": 66307853, "blockId": "0x280d73cad3b6cae54719d69cb38bd62cc2b3c2f2d56cf4673304d461adece512", "firstIndex": 132271567784}, +{"blockNumber": 66325586, "blockId": "0xed5687633e8a11c205cde1c89bbc074a82ae0ea6735e645115ed910e9ff5e5fc", "firstIndex": 132338677315}, +{"blockNumber": 66344343, "blockId": "0x08350dcdd4b180d9db0c9182a08b89706ed89a90f7f369565a2b1e9612426187", "firstIndex": 132405786923}, +{"blockNumber": 66375916, "blockId": "0xcad87d52f5c7ae072911c85984c54bd51d594fed3b0a36afc97ec72b7bea51b0", "firstIndex": 132472895827}, +{"blockNumber": 66400051, "blockId": "0x2e62d86797eac41228ff9678e4dee4cda95b55fcdf445e8e8997aa8a3817102f", "firstIndex": 132540006265}, +{"blockNumber": 66420776, "blockId": "0x64104e38486d18d895219625e9bcd77343c8d704f14981be60b7bf398b2fc8b0", "firstIndex": 132607114378}, +{"blockNumber": 66440025, "blockId": "0xbcb35a57a81fc1e00a9573cd04a862e3b2f0ee392f10560e611ef88183da329e", "firstIndex": 132674223454}, +{"blockNumber": 66457411, "blockId": "0x6432f9726cd69373d9f76c65a7d1c95c2ac0336cdbf9ba85dcdb0ecebce463ed", "firstIndex": 132741330403}, +{"blockNumber": 66487773, "blockId": "0x1e8d2d6ff0ac5cb061ec5083122850761f30e8d4268bf1d942091669b178ff92", "firstIndex": 132808441288}, +{"blockNumber": 66512595, "blockId": "0x22b8c4ba481c51c063d1baad04463c855317263e69fdb56aefd24bb5c919dae9", "firstIndex": 132875549718}, +{"blockNumber": 66534280, "blockId": "0x3bee38c86dcd2e13d0c9cd6a9dbae3f1147719bdc76d13f7be73bdef6139d463", "firstIndex": 132942658756}, +{"blockNumber": 66554276, "blockId": "0x37687f528f4ef5151f73764077f48246e386c2e397bb8b4ac15d434765dd0d86", "firstIndex": 133009767178}, +{"blockNumber": 66574801, "blockId": "0x0c338a2d882d45e682701ef470749c4442c3ea7ef9de8fa668d2daeb4a724de7", "firstIndex": 133076877218}, +{"blockNumber": 66609753, "blockId": "0x1f13505f796faedd52d2936ca40e3cfcef4c83803fe7584f2f530d4aa502f48b", "firstIndex": 133143986006}, +{"blockNumber": 66636559, "blockId": "0xcd953c2ccce4b70caf7ca0f1d79aabbb32b23e79caf6df2a6385fe2e640640d7", "firstIndex": 133211092931}, +{"blockNumber": 66659290, "blockId": "0xb2b91c0df898d2ace1d830a1e94fefaa8018d0efda0737a32d82eccec02b80d0", "firstIndex": 133278202748}, +{"blockNumber": 66680900, "blockId": "0xc47a0810991344812027c8d4753a6e3a5d2340a59736878cd34c31937061555a", "firstIndex": 133345312350}, +{"blockNumber": 66715025, "blockId": "0xeb175f6e8326aa73fff6c7993b8794fef52cf7f4f197a60a0f34948b68d18c1d", "firstIndex": 133412420945}, +{"blockNumber": 66744369, "blockId": "0xc6c27a3b69f1297388a4e006d37d720117ea5d1dbc46f90f6f1e0eb6d9d036f1", "firstIndex": 133479529021}, +{"blockNumber": 66768756, "blockId": "0x1352f556cd36fa2ebb788ae3c94ccb66618ce3193299a6a8aebd2e0663571f53", "firstIndex": 133546638112}, +{"blockNumber": 66790907, "blockId": "0x4238306ff3f49dd55f50607a69ba9eb02950eb29454a9113b79230257fd070f3", "firstIndex": 133613746157}, +{"blockNumber": 66816732, "blockId": "0x0ad45c4c6bbb3b9be7bdafc205693f422c928781bce928be859244fca30564fb", "firstIndex": 133680856471}, +{"blockNumber": 66849164, "blockId": "0x3e57ced6eadfc68e3c47b420e21146747c7cf68cad7af85f753d1a00520d7448", "firstIndex": 133747963777}, +{"blockNumber": 66871360, "blockId": "0x5a3086b6f8534673d2e47bf736482048a17985efac3ec7737e30d35632266846", "firstIndex": 133815071604}, +{"blockNumber": 66890698, "blockId": "0xcfce492bd4742f11a92bd1a64ee93c3a97be1fc23c1b4107a74917da317cfd8b", "firstIndex": 133882181370}, +{"blockNumber": 66910046, "blockId": "0x4aa6b8eafbc7237495adcf96166074b31e6487c90396412f65bd13cc4f08bd81", "firstIndex": 133949291489}, +{"blockNumber": 66936631, "blockId": "0x7467cac128a4442907d6732d0691daf1b6513a5143ee456ae0fcd52c9c643f9b", "firstIndex": 134016399442}, +{"blockNumber": 66967054, "blockId": "0x022c5cea7e6184790c1d52b447a44de84600020f7496afe82139f348d11df406", "firstIndex": 134083508999}, +{"blockNumber": 66988234, "blockId": "0x3e234d1c5fa65d71098c93461a20a1c11bbfb68ef081c950d3939edea58c5c72", "firstIndex": 134150617913}, +{"blockNumber": 67009345, "blockId": "0xae09210a1cef16f790d429e26c1daeabfd3707560b12a0bb645832337ba97655", "firstIndex": 134217725501}, +{"blockNumber": 67028803, "blockId": "0x1957a7a649a4860dd923c4c36d19e653030c33307cf73da1ea61ef9e15eeda63", "firstIndex": 134284836820}, +{"blockNumber": 67052713, "blockId": "0xbc96c4e1e026945c45395d360dbbc82ab624b486589bfcaefbda2c4937e9e96a", "firstIndex": 134351944710}, +{"blockNumber": 67078603, "blockId": "0xa22376f7b8667827b2c3e02dbd2f04a568d4ec8a4a92e75c46c0f2700589fcd0", "firstIndex": 134419052752}, +{"blockNumber": 67102477, "blockId": "0x703e6c92f9d2a6945e7ca79a4070a0a028d57f9bf1898453b188795d6c2147c7", "firstIndex": 134486161630}, +{"blockNumber": 67125036, "blockId": "0xd3ff03c31d5a2c8f2e02fb9ba6d1c92402ce532f9217d657a9fd218530c35519", "firstIndex": 134553269787}, +{"blockNumber": 67143037, "blockId": "0xda25a19d067249a1599441928011961c443702a66c6c497ed0e9ee5ec8e9dcae", "firstIndex": 134620379146}, +{"blockNumber": 67169277, "blockId": "0x5a932bee46908721018b2d615f48f89fc6254db745f3fc202710dee9d83e5b31", "firstIndex": 134687486039}, +{"blockNumber": 67197854, "blockId": "0x8dd08e47640f13e9e43c700d98efa4b4e3efcfd82efce5d902c049aaed55b76f", "firstIndex": 134754598894}, +{"blockNumber": 67221580, "blockId": "0x66f6023abd67083623a4f313c47b4a049769613740f8abdfb50bce9fa702c8b7", "firstIndex": 134821704890}, +{"blockNumber": 67241137, "blockId": "0xe28a86b9087f45e07ecfb55f2f427924e42315bcdf15803d3cf4e9cd2adbcebd", "firstIndex": 134888812479}, +{"blockNumber": 67261200, "blockId": "0xbaa4b27295738acbef0d6e3e7e5d0d9157cb7567544c693c4a5c050f171889ce", "firstIndex": 134955925041}, +{"blockNumber": 67296203, "blockId": "0xe2c1d2288d4ff9594afee4359da4c91cf4370effdc14802c807e41cdab6d8645", "firstIndex": 135023033558}, +{"blockNumber": 67323833, "blockId": "0x0dd791ee5a1677b5e7ee3bbebe40d752319e5d48152451d45812f1b28c494f3f", "firstIndex": 135090140677}, +{"blockNumber": 67347289, "blockId": "0x4cbb6abea9d06d67f9c90e52c3ecc110533582ce6bd6218c3bccb527ad8b9978", "firstIndex": 135157250703}, +{"blockNumber": 67368833, "blockId": "0x171e3a43638b547f4f04eaecd3e27dad47794503e306a75c6fd6903579d68948", "firstIndex": 135224358810}, +{"blockNumber": 67393997, "blockId": "0xcadcf7ad1b18a80260f1783ce71bffd97f22cdd243ef18a8e8a57df17fdbd21a", "firstIndex": 135291468771}, +{"blockNumber": 67428120, "blockId": "0x0536198bd4fb24e8af450ca58eb23a377060128ed496128d963cf132ac9b70dc", "firstIndex": 135358577270}, +{"blockNumber": 67454496, "blockId": "0x24caf92c2c5f3f45d50c599b1ae932a76dd882964f5ce0ba55c4adc44d8b13e9", "firstIndex": 135425687402}, +{"blockNumber": 67479833, "blockId": "0x0a79fe0cd96730e659fb363a66ac9441722ab2998d1f8dcc5ed884061f0ab579", "firstIndex": 135492796310}, +{"blockNumber": 67508812, "blockId": "0x8c1f8a48ceb79dfa3deed678a8d3400e92336400e3526426314045903938876b", "firstIndex": 135559904697}, +{"blockNumber": 67546269, "blockId": "0x5790a5a2f27c8f4ff22f8ac850f1c166104f4787984a60cac22bd8de5527cec5", "firstIndex": 135627012878}, +{"blockNumber": 67572747, "blockId": "0xbb078e49f6432d2863843662e6e6aea7c0c9318bbba8101a5b8d00bb33cf2074", "firstIndex": 135694120845}, +{"blockNumber": 67595258, "blockId": "0x563d19a642da2b25ecac3e8937830ff2fe90be11d3d10787e0e305f9300bed9e", "firstIndex": 135761231693}, +{"blockNumber": 67624371, "blockId": "0x3c03b66a7a467c1627460aa3147b8aa52dff553558bfe9d1bbfc3bdc02188e14", "firstIndex": 135828339746}, +{"blockNumber": 67659940, "blockId": "0x8de281f79616895187b82cf4a540f51839e7ff7173348ef63ffd11770fdda3c5", "firstIndex": 135895448353}, +{"blockNumber": 67685567, "blockId": "0xe36188d5f2e67b3f8787d0fc2ae8ace270dde9411cd957692e553bcfb92a5da8", "firstIndex": 135962557512}, +{"blockNumber": 67707458, "blockId": "0x32ac33de5265ad20b4fe5cbf3857e473d699ecbf621847d86e77298fe93d587f", "firstIndex": 136029665439}, +{"blockNumber": 67733717, "blockId": "0xad80728b0a558acb28c9fa20648bf3723765de2b7d293515244f3e267d0787fe", "firstIndex": 136096775423}, +{"blockNumber": 67771759, "blockId": "0xeb2ca5c7426b30c63cf69d00260d94398f7dd98ef661896afcad9ccfb56dd068", "firstIndex": 136163884461}, +{"blockNumber": 67797442, "blockId": "0x0eb1d1d9becb59e022a1125caa5999ca12525e96e7947dfb06ed585d3baf125f", "firstIndex": 136230993647}, +{"blockNumber": 67818075, "blockId": "0xeb8404c9401883c3b6a7949c08a2ce8e49ba18ab07cdc6d7ca2a7295cb86c1cb", "firstIndex": 136298102038}, +{"blockNumber": 67838537, "blockId": "0x8cab74cd864d61329368d744edb97b93801f5aebf1562040a080c0e2641ff049", "firstIndex": 136365210839}, +{"blockNumber": 67877588, "blockId": "0xb71697fd312819c2a6133a09e3b34fce11f896252a0151f9b4a2a3bc09eda7fe", "firstIndex": 136432318825}, +{"blockNumber": 67905918, "blockId": "0x55594147258dfe6d9175b01cd22c56ff06d0936b2cfe44b8cc11387bda3d4ad2", "firstIndex": 136499428988}, +{"blockNumber": 67930367, "blockId": "0xa762a0b37a0117ac249809fa46e30b6d3a08eb42702258892e213dfcf1431542", "firstIndex": 136566537521}, +{"blockNumber": 67952089, "blockId": "0x53ee526e29a9b8196308839bb8f3928247fe700ab9f3f82b3f4a8f3e70e83c7a", "firstIndex": 136633645400}, +{"blockNumber": 67987889, "blockId": "0xda65cbed29005a46c03ee33c051eaa3b4e5de8a45dd84de75a587195741f1174", "firstIndex": 136700755894}, +{"blockNumber": 68015667, "blockId": "0x8627771000a020bc0afd64b6b7ad8e5aa360cfc0eeb4c4aca55f743ed6b8cd71", "firstIndex": 136767864272}, +{"blockNumber": 68040170, "blockId": "0xea158863fda34d6da6d3d2483b3f0095905ede2a28f752d155c88f9f2568e85e", "firstIndex": 136834972923}, +{"blockNumber": 68058623, "blockId": "0x13f517b047bb636bc8bc4f9453ce1a5f62ed767272cb90eb79df477bf0ab751e", "firstIndex": 136902077612}, +{"blockNumber": 68083463, "blockId": "0xb3e6a0239314ea9569ec5e3f827c293647da028942d459f4939ff55d07904c07", "firstIndex": 136969191042}, +{"blockNumber": 68117042, "blockId": "0x874ee6fabf51c0a32fc4a41cb94a722abf77e4f2ec5e05622ea5d24db89256ef", "firstIndex": 137036299934}, +{"blockNumber": 68142945, "blockId": "0x84fdf7b34ad0b2356a79a198e40135ac7d30801f9d13d673f8befd9c92e8a000", "firstIndex": 137103406109}, +{"blockNumber": 68164978, "blockId": "0x7c107c7ff1358e50db8c95b616cfa76c655a9947ff32db1105f19595b6c6eb36", "firstIndex": 137170517619}, +{"blockNumber": 68188608, "blockId": "0x6f0f9f42eb61314ed9576442f7add142ed20c14564995ec7da64b371a2409491", "firstIndex": 137237626609}, +{"blockNumber": 68227943, "blockId": "0x4cf33c61e6c5ed92df9c66c14d6ce8687b09a73032709c50ceb332ebca105552", "firstIndex": 137304734657}, +{"blockNumber": 68256327, "blockId": "0x757a2e7522bb606280f8fdc46943dcf58e3a20c32d3c1253d323b7e2a36159d1", "firstIndex": 137371843813}, +{"blockNumber": 68281120, "blockId": "0x0911f82b19daf016bad0b42545a23f4dc1395561f758b62845cb9c554b8c4575", "firstIndex": 137438951138}, +{"blockNumber": 68311224, "blockId": "0x5792688c9f070917b2798f8eba391f48eeb1d423b3815fe99d30957c7a25e647", "firstIndex": 137506061599}, +{"blockNumber": 68347025, "blockId": "0xa391e87ec628792e4df21c2bef68071cf5fa73385120b823513d6e70b503d95d", "firstIndex": 137573168423}, +{"blockNumber": 68372705, "blockId": "0x90c2302fa96462fa15220e3457c965b833ddd7024fc18af544415f97e9c5657f", "firstIndex": 137640279599}, +{"blockNumber": 68399296, "blockId": "0xb9ee78d1de0807ec1df4f83bbf5837f402327662716aea015031bbf3bc1d6691", "firstIndex": 137707387425}, +{"blockNumber": 68427275, "blockId": "0x2a44601586d58acf2a404ff42a6fa1be63e5f34d453fc77d00f48e61e3e52eb2", "firstIndex": 137774496700}, +{"blockNumber": 68463486, "blockId": "0x125dc85744d73772156dd3c44a32b520dbc3c2783c981c0c862cd85bb64fc589", "firstIndex": 137841606211}, +{"blockNumber": 68491445, "blockId": "0x35df4eea645414d498b69bda19c41e77fc7de2da5530a174ad3a19336fa24c29", "firstIndex": 137908713007}, +{"blockNumber": 68516289, "blockId": "0x23958598704b3933d0c28d86106458b960db83b7de52e1644dae831e5122b5ab", "firstIndex": 137975822500}, +{"blockNumber": 68544211, "blockId": "0xcad613c1c8ce757f696223d81cb4850cfa5b3699beac735ee1aa16b33b660385", "firstIndex": 138042932229}, +{"blockNumber": 68575960, "blockId": "0x248eaab6e9779e014e62f8a51d1e168f12db64f2e07252e11982442a53a880a7", "firstIndex": 138110040234}, +{"blockNumber": 68599535, "blockId": "0xd8b1e38e61b2986bfc5bb0cb027d506409436729899f7e74ec7a08f11b9a7592", "firstIndex": 138177146854}, +{"blockNumber": 68622292, "blockId": "0x476baadcfdd89bc8de321ee6363f39a129065fb99879cd053b9d8bb932e3cf68", "firstIndex": 138244259562}, +{"blockNumber": 68648732, "blockId": "0x5b0e4f079f7a92c8cb2227acc366587199036cf2d58f5a3dfe74c088af2378bf", "firstIndex": 138311366692}, +{"blockNumber": 68685122, "blockId": "0x78a8ebd4184e87bafd71465f87b7f01e9005c172e8f55c2b7a9c813270000bd4", "firstIndex": 138378474525}, +{"blockNumber": 68710579, "blockId": "0xb8a6da8f0d9ab155aaf86fb7eea106159d22e829db2a97ff53c8dfff4b2ea69c", "firstIndex": 138445586205}, +{"blockNumber": 68734832, "blockId": "0x6604430de8065bc77253e92b274a52cfa3d039b1832780f759e9b8690dd74d54", "firstIndex": 138512693249}, +{"blockNumber": 68758968, "blockId": "0x9080be52b0dcc66e00f04532672c5d5fb682c2fdb114ae12093ed8af3a209068", "firstIndex": 138579803398}, +{"blockNumber": 68796386, "blockId": "0xf9540f591aade875d6fa0c705f3d729f224d5ed6ab26de6058e186d857bd16ef", "firstIndex": 138646912576}, +{"blockNumber": 68824018, "blockId": "0x7c6a8ff0dd8bf5236e3bf798d2c1b33f11b28714d2cb9b924112c755133ca012", "firstIndex": 138714021482}, +{"blockNumber": 68851422, "blockId": "0xbbd4c1fd8f5c6c59a71db83bb8a76441dba65bb603c1904a671b15be115b0d54", "firstIndex": 138781128582}, +{"blockNumber": 68874020, "blockId": "0xe1f698a3c5d34a6f8715310309f32b06fab9711c676555fbfd5e923a3a882ae1", "firstIndex": 138848237966}, +{"blockNumber": 68909895, "blockId": "0x30bdffaf3a1b8aeb9019fb2999a6816c9ecaf19c7c2e11526b7ab1806e88d682", "firstIndex": 138915347154}, +{"blockNumber": 68938800, "blockId": "0xddd86074ec0cd17b24851b67dd4468a55a02d3a8b8e895010662c0bac847e18f", "firstIndex": 138982456263}, +{"blockNumber": 68960402, "blockId": "0x3e4062be930f378aaf19e01cf4257e632e25928104dc2692db9ea0de94fd9ff4", "firstIndex": 139049563053}, +{"blockNumber": 68981497, "blockId": "0x14e3893697e05c5fe11f907cc7924f77aaab5b7da142134b39a76b0c6707dfd5", "firstIndex": 139116675034}, +{"blockNumber": 69007810, "blockId": "0x50bc5f5dbf784993328d2d11f84177b01700a596662687d064b9a724dce497d6", "firstIndex": 139183783155}, +{"blockNumber": 69042242, "blockId": "0xc80cc7c1929776014e3c17a04690f6146b9e1f963bf64b962c1182d201784172", "firstIndex": 139250892338}, +{"blockNumber": 69070002, "blockId": "0x0a0fa615d87890d200ba713d27e15da7aea9ed11fe64837862775bde1085f45b", "firstIndex": 139318001003}, +{"blockNumber": 69095792, "blockId": "0xa510e9bd7cdf5ae7ca2f523c7807255400ef35369f00f52d8030924dbc8ed282", "firstIndex": 139385109644}, +{"blockNumber": 69133598, "blockId": "0xddfe7c585b4a7d7eb49f3efc5505517ac9ba96f7245adc2ea686ea6242d6f469", "firstIndex": 139452218970}, +{"blockNumber": 69164172, "blockId": "0x798dbf745b4b49a3f35e7352c9bf939e1483a63c0e19826942908e1243119ffe", "firstIndex": 139519322683}, +{"blockNumber": 69191926, "blockId": "0xc13e69cf4fd5014a91e4d5f3387b13fd63ae42a3eb6791011ece444c104a10ca", "firstIndex": 139586436072}, +{"blockNumber": 69217765, "blockId": "0xf6b85d465e0cb4a147272a73f569b63a4702a9f9b5e4ec892ec2b87052891039", "firstIndex": 139653542348}, +{"blockNumber": 69254351, "blockId": "0x63586c9aaeffb52d04d2073f05acac0b353684177c202f8e4ab1f57b8a5adb35", "firstIndex": 139720651525}, +{"blockNumber": 69283941, "blockId": "0x729cd716c3879dea44945ae500c2e46e18a06de85743a7bc93a205567e4bcbce", "firstIndex": 139787762517}, +{"blockNumber": 69306646, "blockId": "0xa08df80ec1f740aa77d74363a53acdd7223085e464bd58e830151c4c6b1f6661", "firstIndex": 139854870417}, +{"blockNumber": 69325280, "blockId": "0xf8131da88823b6c04704f5a37ce8b4e1e8b8c9198d99004dca192df32bfad1d4", "firstIndex": 139921978423}, +{"blockNumber": 69343721, "blockId": "0xc4f5640501642056ba2ad0f299253c76c0ed64bb75863aeeed8fb5b94adbe58a", "firstIndex": 139989090076}, +{"blockNumber": 69369146, "blockId": "0xe91cfe5ab53660d2de2dfe540e72372c8b533ee1145dc11e53668e431c5ffe5a", "firstIndex": 140056194710}, +{"blockNumber": 69394024, "blockId": "0x4e9fd8ff61e9f417fbae26266463b227a0ed3fe9e2f74cd239a62e577ef0e64f", "firstIndex": 140123304837}, +{"blockNumber": 69414552, "blockId": "0x5c254fe4b768d08f60d4797137dcffc6f9c295c8d274d64499b7f92ca95cb077", "firstIndex": 140190413628}, +{"blockNumber": 69436175, "blockId": "0x25db1d80496f98d54042056e4d8f7bb88ad873cbc999d9b140bc2257d602e9e7", "firstIndex": 140257518465}, +{"blockNumber": 69456382, "blockId": "0x3ec5328bd5a725334531ef38e5f25c456ba2375e5a868222f81a9507bbd34404", "firstIndex": 140324633161}, +{"blockNumber": 69492946, "blockId": "0x759c1d378ec5355839c9c07cbd369cd37782e4e2e307aa21141326debde62256", "firstIndex": 140391738967}, +{"blockNumber": 69519068, "blockId": "0xc9dafe1e35ebc25663ca414e12f7a122e2f4e51806dcb3884a7bd9cb8d35cadb", "firstIndex": 140458846353}, +{"blockNumber": 69540728, "blockId": "0x740b22f8fd73d05f66d74e4e7daae85ce664619acc6c42dd2fa938d75cae1ac4", "firstIndex": 140525958407}, +{"blockNumber": 69561739, "blockId": "0x60930bc793ffe2e509345e61bcada66c03147b2117eab9d33d00a91edf932a9b", "firstIndex": 140593068264}, +{"blockNumber": 69594971, "blockId": "0x66a707ace0bce1d7cc1e84a19f2da79a204ab8ba971940c4910c28f33a62fd56", "firstIndex": 140660177556}, +{"blockNumber": 69623884, "blockId": "0xf6c8ca03e5d257906f95b1faefbda008f47c918fbbeaf40bb870110253714af8", "firstIndex": 140727286147}, +{"blockNumber": 69649785, "blockId": "0x1d5336429058cea5c1cf2b776a1569cb027813d096c3ab383dcaa258524aab70", "firstIndex": 140794396227}, +{"blockNumber": 69673595, "blockId": "0xbed2e550a23aafb05687af340da247a305c55dc8ea7d8f3fdb5901638a4ae617", "firstIndex": 140861501804}, +{"blockNumber": 69698358, "blockId": "0x26ac984e4a24f288b91cfb687d4cbe078619addbb13f132e506ea3c2793420e5", "firstIndex": 140928613290}, +{"blockNumber": 69726985, "blockId": "0x63a1e33435bf257bfa9f2de9a23eb642c569c4a2dc0ea4f5c5d15e610f11068e", "firstIndex": 140995722822}, +{"blockNumber": 69748680, "blockId": "0xce9cddfb6daac9bd2193997ecf3984d765d2eecb4d395e42fca117f1d930d3ec", "firstIndex": 141062830787}, +{"blockNumber": 69773710, "blockId": "0x30f4227c3b295aa5de5e3e386b6c3afb3f2d21488fafd76d6fba3b3d4dc90537", "firstIndex": 141129940692}, +{"blockNumber": 69801075, "blockId": "0x626ebf6ce5723a60425be593b414b9c4ca9f7fd0a3f270ae5d27a91d663d1692", "firstIndex": 141197046811}, +{"blockNumber": 69840195, "blockId": "0xef4a7ee932655616fda531304a71d40f4700066318ca4ca565fd7c5550638d11", "firstIndex": 141264155888}, +{"blockNumber": 69867687, "blockId": "0x7b5d85388ebd507dfc3c11ba5f5e71e3a58322316f61c88d8b4217b9b638f712", "firstIndex": 141331265330}, +{"blockNumber": 69897564, "blockId": "0x31166923dc5319bbfd69698d3b9b9f4ef83f8decb1b3174af46cec7d9641ec80", "firstIndex": 141398374808}, +{"blockNumber": 69937439, "blockId": "0x17dc6cebd4e6bb12f1f5ba4fc83c668bf6c2b1b1d7f40fea5197112972e9f092", "firstIndex": 141465484288}, +{"blockNumber": 69976767, "blockId": "0x4f834a866f71f3f644e80de82376a3f9f3690fd76c6069d09dca513f1591e9e6", "firstIndex": 141532593734}, +{"blockNumber": 70006808, "blockId": "0xa2750687d10cfecbef6d41ed463782e5e1fe1e136bc40f14257e991d467eea9d", "firstIndex": 141599702390}, +{"blockNumber": 70041451, "blockId": "0x86669c6d79fac0984b07d3366199772b44f73a5cdbb8f6509c76640760d32b30", "firstIndex": 141666811405}, +{"blockNumber": 70079984, "blockId": "0x589c207744afdad9f78f73b4ce6ab6e37c92aa2412b9a8704e7a97b493e7da7c", "firstIndex": 141733920181}, +{"blockNumber": 70108591, "blockId": "0xc1d5a47126c2181dc36763688b8c13d8a40d01a09b05b3781eacdb3483b74ca4", "firstIndex": 141801027912}, +{"blockNumber": 70132733, "blockId": "0x61d75dfa5c6a44d31dbd67ebea052adf921aad5c898346e75c4d7eacb649c38a", "firstIndex": 141868137059}, +{"blockNumber": 70168088, "blockId": "0xe4843c8ca4e6a2a6548b900a04ed601bd964153ade00cf0800ce3cda6ed0c724", "firstIndex": 141935247283}, +{"blockNumber": 70204032, "blockId": "0x924735ddd4e6c6d5908eb39ed433e3a14d592e86f7d9604e05079324f80b5ae7", "firstIndex": 142002353535}, +{"blockNumber": 70232057, "blockId": "0x7860e7b7682d4d93728aebe695b5b93b00d97e5713167bdc8e84870ab9259d8b", "firstIndex": 142069460908}, +{"blockNumber": 70257895, "blockId": "0x7cb56f1783e94bed0c61dc2b296272cf22503da6b582a1b86ee8ecc557885121", "firstIndex": 142136572449}, +{"blockNumber": 70300204, "blockId": "0x6d076fcf49b90552f0dd7696aaa8576f5c1ab88d19df16b0eb09f95be1ef31b2", "firstIndex": 142203682273}, +{"blockNumber": 70328137, "blockId": "0xccce752190103d951dfa4456797c1dc5985aeeb3f39c7545ed52265104665263", "firstIndex": 142270790999}, +{"blockNumber": 70354112, "blockId": "0x19455aff0956bf901a1d29a593801e0e3c725c4bdca9998910b27c46a873e21c", "firstIndex": 142337900087}, +{"blockNumber": 70381488, "blockId": "0x3cc676d267a641d1e244f1d3da2fe8980182fa0f1282a7d791805fb65d904517", "firstIndex": 142405009365}, +{"blockNumber": 70424221, "blockId": "0x0ca800aacddcbd9ccc4d77863162ae22fe09d19d23b691b378e7236fcad54faa", "firstIndex": 142472117986}, +{"blockNumber": 70454927, "blockId": "0x4048c4d8839277f956e236fb590aafa4e4b4df5e0c9d785336e22475cc29a3f3", "firstIndex": 142539225697}, +{"blockNumber": 70481599, "blockId": "0x3fa14b7a17ba196530a4a3fedea2d27515fe9bcb867637403ffd971e7f02ebbf", "firstIndex": 142606335237}, +{"blockNumber": 70523954, "blockId": "0x797c737586e9e2c1e29ec10e64d95e61a0896b34c403d077142eddadbfab9c23", "firstIndex": 142673443676}, +{"blockNumber": 70558204, "blockId": "0x1c431b4d91312e6a4472d06be717c5e3cd22115d4a30b5720511af63280191ec", "firstIndex": 142740552537}, +{"blockNumber": 70586736, "blockId": "0x2ea38330381e037d504bcd9a19d6ca71c0785102e8537c51c7fa3a6b50df24a4", "firstIndex": 142807660186}, +{"blockNumber": 70621217, "blockId": "0x1f6952306efaec04f67ce79e9f47443b829c87f32e1ee94bfd9dc4b34594c1bd", "firstIndex": 142874771134}, +{"blockNumber": 70664503, "blockId": "0x7eff1cd1793ce59983215d852125db8e357e83e445717603f2535db626c43ad5", "firstIndex": 142941879912}, +{"blockNumber": 70694730, "blockId": "0xb2dd5d24bd23817f67cc062b228b536fb9e108141cbb1e76cfc1d55aa20f91ad", "firstIndex": 143008985442}, +{"blockNumber": 70725363, "blockId": "0x4d99b461775b3ee42decf3d8e3e1bcdbe9bdfe4a72ca0209e82528a319e83755", "firstIndex": 143076097164}, +{"blockNumber": 70770052, "blockId": "0x7187e3579ca917707e244e590a85153cd7bdb20b11dd4152681052fa827de4c7", "firstIndex": 143143206586}, +{"blockNumber": 70801973, "blockId": "0x61dbbf3a4dd2ba1f1d9352462d684c12beff54fc46f280853da2cd7aad6ea122", "firstIndex": 143210314211}, +{"blockNumber": 70831178, "blockId": "0x0b84ac29d7ae2ec176eeb54e1e1395f7c7d9b136ac92b7012a7bbcec4212820d", "firstIndex": 143277422972}, +{"blockNumber": 70876240, "blockId": "0x15cfb66b7d37a9d5709be6709dca149ca4735b11fde2f738ddb0f96b7b86044a", "firstIndex": 143344532820}, +{"blockNumber": 70908726, "blockId": "0x019d06eeee9598de21b442509733044ec0c2128f0d3ac5537d07e3bfa8a8e21d", "firstIndex": 143411641575}, +{"blockNumber": 70934482, "blockId": "0xb4ee98714e6d20f3b921d64527e83780bb93a0263af639335899df2f24668a17", "firstIndex": 143478750522}, +{"blockNumber": 70965680, "blockId": "0x40615c9b69236eda8a9c262fad7666a0e9260ff23ba129c1483e4de7ed9538b1", "firstIndex": 143545859371}, +{"blockNumber": 71006303, "blockId": "0x8d88b481c14077317ca9e8ebb2a88c9268809d28c38d09647d4c04460dd4db31", "firstIndex": 143612965644}, +{"blockNumber": 71033924, "blockId": "0x6968d18b513e6c1b453e42b50ede10ab8759c00f0b4f48350bfd515386b80d65", "firstIndex": 143680076464}, +{"blockNumber": 71058065, "blockId": "0x215187a24624dc5a74b5054130e90f889ce79d13544e9a65e0a3f79f79bb8299", "firstIndex": 143747185513}, +{"blockNumber": 71093909, "blockId": "0x7673f32a578440add0d15d230d848acf151be45ba68d57f7e7976047e05e0158", "firstIndex": 143814294904}, +{"blockNumber": 71126721, "blockId": "0x6eda9ef9677f72eda5ecabb66ccced4e6636c13836d5cbd0edbf1c937609c799", "firstIndex": 143881403864} +] \ No newline at end of file diff --git a/core/txpool/blobpool/blobpool.go b/core/txpool/blobpool/blobpool.go index 745d8a225c..e236293771 100644 --- a/core/txpool/blobpool/blobpool.go +++ b/core/txpool/blobpool/blobpool.go @@ -1654,6 +1654,11 @@ func (p *BlobPool) Pending(filter txpool.PendingFilter) map[common.Address][]*tx break // blobfee too low, cannot be included, discard rest of txs from the account } } + if filter.GasLimitCap != 0 { + if tx.execGas > filter.GasLimitCap { + break // execution gas limit is too high + } + } // Transaction was accepted according to the filter, append to the pending list lazies = append(lazies, &txpool.LazyTransaction{ Pool: p, diff --git a/core/txpool/legacypool/legacypool.go b/core/txpool/legacypool/legacypool.go index 882496c09f..e957ca2e9c 100644 --- a/core/txpool/legacypool/legacypool.go +++ b/core/txpool/legacypool/legacypool.go @@ -592,11 +592,19 @@ func (pool *LegacyPool) Pending(filter txpool.PendingFilter) map[common.Address] txs := list.Flatten() // If the miner requests tip enforcement, cap the lists now - if minTipBig != nil { + if minTipBig != nil || filter.GasLimitCap != 0 { for i, tx := range txs { - if tx.EffectiveGasTipIntCmp(minTipBig, baseFeeBig) < 0 { - txs = txs[:i] - break + if minTipBig != nil { + if tx.EffectiveGasTipIntCmp(minTipBig, baseFeeBig) < 0 { + txs = txs[:i] + break + } + } + if filter.GasLimitCap != 0 { + if tx.Gas() > filter.GasLimitCap { + txs = txs[:i] + break + } } } } diff --git a/core/txpool/subpool.go b/core/txpool/subpool.go index a24250700f..ea0bc09ff6 100644 --- a/core/txpool/subpool.go +++ b/core/txpool/subpool.go @@ -77,6 +77,8 @@ type PendingFilter struct { BaseFee *uint256.Int // Minimum 1559 basefee needed to include a transaction BlobFee *uint256.Int // Minimum 4844 blobfee needed to include a blob transaction + GasLimitCap uint64 // Maximum gas allowed per transaction + OnlyPlainTxs bool // Return only plain EVM transactions (peer-join announces, block space filling) OnlyBlobTxs bool // Return only blob transactions (block blob-space filling) } diff --git a/core/txpool/validation.go b/core/txpool/validation.go index 98ec1c82b4..79d8ffdb5f 100644 --- a/core/txpool/validation.go +++ b/core/txpool/validation.go @@ -103,7 +103,7 @@ func ValidateTransaction(tx *types.Transaction, head *types.Header, signer types // Ensure the transaction doesn't exceed the current miner max acceptable limit gas if opts.MaxGas > 0 && opts.MaxGas < tx.Gas() { - return ErrGasLimit + return fmt.Errorf("%w (cap: %d, tx: %d)", core.ErrGasLimitTooHigh, opts.MaxGas, tx.Gas()) } // Sanity check for extremely large numbers (supported by RLP or RPC) diff --git a/eth/handler_bsc.go b/eth/handler_bsc.go index 4fb1824f27..791c60db1e 100644 --- a/eth/handler_bsc.go +++ b/eth/handler_bsc.go @@ -17,22 +17,11 @@ func (h *bscHandler) Chain() *core.BlockChain { return h.chain } // RunPeer is invoked when a peer joins on the `bsc` protocol. func (h *bscHandler) RunPeer(peer *bsc.Peer, hand bsc.Handler) error { - if err := peer.Handshake(); err != nil { - // ensure that waitBscExtension receives the exit signal normally - // otherwise, can't graceful shutdown - ps := h.peers - id := peer.ID() + // Send capability message asynchronously for backward compatibility. + // Old nodes expect this message to complete their handshake. + // We don't wait for response - just send and continue. + peer.SendBscCap() - // Ensure nobody can double connect - ps.lock.Lock() - if wait, ok := ps.bscWait[id]; ok { - delete(ps.bscWait, id) - peer.Log().Error("Bsc extension Handshake failed", "err", err) - wait <- nil - } - ps.lock.Unlock() - return err - } return (*handler)(h).runBscExtension(peer, hand) } diff --git a/eth/handler_bsc_test.go b/eth/handler_bsc_test.go index 3af13018a6..48ac40baa0 100644 --- a/eth/handler_bsc_test.go +++ b/eth/handler_bsc_test.go @@ -108,9 +108,7 @@ func testSendVotes(t *testing.T, protocol uint) { }(localBsc) time.Sleep(200 * time.Millisecond) - remoteBsc.Handshake() - time.Sleep(200 * time.Millisecond) go func(p *eth.Peer) { handler.handler.runEthPeer(p, func(peer *eth.Peer) error { return eth.Handle((*ethHandler)(handler.handler), peer) @@ -209,9 +207,7 @@ func testRecvVotes(t *testing.T, protocol uint) { }(localBsc) time.Sleep(200 * time.Millisecond) - remoteBsc.Handshake() - time.Sleep(200 * time.Millisecond) go func(p *eth.Peer) { handler.handler.runEthPeer(p, func(peer *eth.Peer) error { return eth.Handle((*ethHandler)(handler.handler), peer) diff --git a/eth/protocols/bsc/handler.go b/eth/protocols/bsc/handler.go index 994a362e3a..df15894a14 100644 --- a/eth/protocols/bsc/handler.go +++ b/eth/protocols/bsc/handler.go @@ -85,15 +85,29 @@ type Decoder interface { } var bsc1 = map[uint64]msgHandler{ - VotesMsg: handleVotes, + BscCapMsg: handleBscCap, // ignore capability message for backward compatibility + VotesMsg: handleVotes, } var bsc2 = map[uint64]msgHandler{ + BscCapMsg: handleBscCap, // ignore capability message for backward compatibility VotesMsg: handleVotes, GetBlocksByRangeMsg: handleGetBlocksByRange, BlocksByRangeMsg: handleBlocksByRange, } +// handleBscCap ignores the capability message for backward compatibility. +// Old nodes send BscCapMsg as part of their handshake, we just ignore it +// since P2P layer already negotiated the protocol version. +func handleBscCap(backend Backend, msg Decoder, peer *Peer) error { + // Decode the message to consume it, but ignore the content + var cap BscCapPacket + if err := msg.Decode(&cap); err != nil { + return nil // ignore decode errors for backward compatibility + } + return nil +} + // handleMessage is invoked whenever an inbound message is received from a // remote peer on the `bsc` protocol. The remote connection is torn down upon // returning any error. diff --git a/eth/protocols/bsc/handshake.go b/eth/protocols/bsc/handshake.go index c8e74f3d12..af636762b8 100644 --- a/eth/protocols/bsc/handshake.go +++ b/eth/protocols/bsc/handshake.go @@ -1,68 +1,22 @@ package bsc import ( - "fmt" - "time" - - "github.com/ethereum/go-ethereum/common/gopool" "github.com/ethereum/go-ethereum/p2p" ) -const ( - // handshakeTimeout is the maximum allowed time for the `bsc` handshake to - // complete before dropping the connection as malicious. - handshakeTimeout = 5 * time.Second -) - -// Handshake executes the bsc protocol handshake, -func (p *Peer) Handshake() error { - // Send out own handshake in a new thread - errc := make(chan error, 2) - - var cap BscCapPacket // safe to read after two values have been received from errc - - gopool.Submit(func() { - errc <- p2p.Send(p.rw, BscCapMsg, &BscCapPacket{ +// SendBscCap sends the bsc capability message to the peer asynchronously. +// This is for backward compatibility with old nodes that expect a handshake. +// We send the message but don't wait for a response. +func (p *Peer) SendBscCap() { + // Send capability message asynchronously for backward compatibility. + // Old nodes expect this message to complete their handshake. + // New nodes will ignore it via handleBscCap in handler.go. + go func() { + if err := p2p.Send(p.rw, BscCapMsg, &BscCapPacket{ ProtocolVersion: p.version, Extra: defaultExtra, - }) - }) - gopool.Submit(func() { - errc <- p.readCap(&cap) - }) - timeout := time.NewTimer(handshakeTimeout) - defer timeout.Stop() - for i := 0; i < 2; i++ { - select { - case err := <-errc: - if err != nil { - return err - } - case <-timeout.C: - return p2p.DiscReadTimeout + }); err != nil { + p.Log().Debug("Failed to send bsc capability message", "err", err) } - } - return nil -} - -// readCap reads the remote handshake message. -func (p *Peer) readCap(cap *BscCapPacket) error { - msg, err := p.rw.ReadMsg() - if err != nil { - return err - } - if msg.Code != BscCapMsg { - return fmt.Errorf("%w: first msg has code %x (!= %x)", errNoBscCapMsg, msg.Code, BscCapMsg) - } - if msg.Size > maxMessageSize { - return fmt.Errorf("%w: %v > %v", errMsgTooLarge, msg.Size, maxMessageSize) - } - // Decode the handshake and make sure everything matches - if err := msg.Decode(cap); err != nil { - return fmt.Errorf("%w: message %v: %v", errDecode, msg, err) - } - if cap.ProtocolVersion != p.version { - return fmt.Errorf("%w: %d (!= %d)", errProtocolVersionMismatch, cap.ProtocolVersion, p.version) - } - return nil + }() } diff --git a/eth/protocols/bsc/protocol.go b/eth/protocols/bsc/protocol.go index 572c24debb..fc3eb5b709 100644 --- a/eth/protocols/bsc/protocol.go +++ b/eth/protocols/bsc/protocol.go @@ -40,11 +40,9 @@ const ( var defaultExtra = []byte{0x00} var ( - errNoBscCapMsg = errors.New("no bsc capability message") - errMsgTooLarge = errors.New("message too long") - errDecode = errors.New("invalid message") - errInvalidMsgCode = errors.New("invalid message code") - errProtocolVersionMismatch = errors.New("protocol version mismatch") + errMsgTooLarge = errors.New("message too long") + errDecode = errors.New("invalid message") + errInvalidMsgCode = errors.New("invalid message code") ) // Packet represents a p2p message in the `bsc` protocol. diff --git a/miner/bid_simulator.go b/miner/bid_simulator.go index 9bcb6a1da3..6af721d696 100644 --- a/miner/bid_simulator.go +++ b/miner/bid_simulator.go @@ -93,6 +93,7 @@ type bidSimulator struct { config *minerconfig.MevConfig delayLeftOver time.Duration minGasPrice *big.Int + txMaxGas uint64 chain *core.BlockChain txpool *txpool.TxPool chainConfig *params.ChainConfig @@ -135,6 +136,7 @@ func newBidSimulator( config *minerconfig.MevConfig, delayLeftOver *time.Duration, minGasPrice *big.Int, + txMaxGas uint64, eth Backend, chainConfig *params.ChainConfig, engine consensus.Engine, @@ -143,6 +145,7 @@ func newBidSimulator( b := &bidSimulator{ config: config, minGasPrice: minGasPrice, + txMaxGas: txMaxGas, chain: eth.BlockChain(), txpool: eth.TxPool(), chainConfig: chainConfig, @@ -430,6 +433,13 @@ func (b *bidSimulator) newBidLoop() { continue } + if errCap := b.checkIfBidExceedsTxGasLimit(newBid.bid); errCap != nil { + if newBid.feedback != nil { + newBid.feedback <- errCap + } + continue + } + var replyErr error toCommit := true bidAcceptted := true @@ -520,6 +530,28 @@ func (b *bidSimulator) getBlockInterval(parentHeader *types.Header) uint64 { return blockInterval } +// checkIfBidExceedsTxGasLimit checks whether any transaction in the bid exceeds the max txn gas. +func (b *bidSimulator) checkIfBidExceedsTxGasLimit(bid *types.Bid) error { + if b.txMaxGas < params.MinTxGasLimitCap { + return nil + } + // Scan all txs in the bid to check if any transaction exceeds txGasLimit. + for _, tx := range bid.Txs { + if tx.Gas() > b.txMaxGas { + log.Debug("discard bid due to per-tx gas limit", + "block", bid.BlockNumber, + "bidHash", bid.Hash().TerminalString(), + "txHash", tx.Hash().TerminalString(), + "txGas", tx.Gas(), + "txGasLimit", b.txMaxGas, + ) + + return fmt.Errorf("bid rejected: %w (cap: %d, tx: %d)", core.ErrGasLimitTooHigh, b.txMaxGas, tx.Gas()) + } + } + return nil +} + func (b *bidSimulator) bidBetterBefore(parentHash common.Hash) time.Time { parentHeader := b.chain.GetHeaderByHash(parentHash) return bidutil.BidBetterBefore(parentHeader, b.getBlockInterval(parentHeader), b.delayLeftOver, *b.config.BidSimulationLeftOver) diff --git a/miner/miner.go b/miner/miner.go index 3479f81dce..99de403eb4 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -70,7 +70,7 @@ func New(eth Backend, config *minerconfig.Config, mux *event.TypeMux, engine con worker: newWorker(config, engine, eth, mux), } - miner.bidSimulator = newBidSimulator(&config.Mev, config.DelayLeftOver, config.GasPrice, eth, eth.BlockChain().Config(), engine, miner.worker) + miner.bidSimulator = newBidSimulator(&config.Mev, config.DelayLeftOver, config.GasPrice, config.TxGasLimit, eth, eth.BlockChain().Config(), engine, miner.worker) miner.worker.setBestBidFetcher(miner.bidSimulator) miner.wg.Add(1) @@ -235,3 +235,7 @@ func (miner *Miner) BuildPayload(args *BuildPayloadArgs, witness bool) (*Payload func (miner *Miner) GasCeil() uint64 { return miner.worker.getGasCeil() } + +func (miner *Miner) TxGasLimit() uint64 { + return miner.worker.getTxGasLimit() +} diff --git a/miner/minerconfig/config.go b/miner/minerconfig/config.go index fc13440b30..848e578def 100644 --- a/miner/minerconfig/config.go +++ b/miner/minerconfig/config.go @@ -61,6 +61,7 @@ type Config struct { VoteEnable bool // Whether to vote when mining MaxWaitProposalInSecs *uint64 `toml:",omitempty"` // The maximum time to wait for the proposal to be done, it's aimed to prevent validator being slashed when restarting DisableVoteAttestation bool // Whether to skip assembling vote attestation + TxGasLimit uint64 // Maximum gas for per transaction Mev MevConfig // Mev configuration } @@ -69,7 +70,6 @@ type Config struct { var DefaultConfig = Config{ GasCeil: 100000000, GasPrice: big.NewInt(params.GWei), - // The default recommit time is chosen as two seconds since // consensus-layer usually will wait a half slot of time(6s) // for payload generation. It should be enough for Geth to diff --git a/miner/worker.go b/miner/worker.go index e0f6c3c41f..fa605789de 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -301,6 +301,12 @@ func (w *worker) getGasCeil() uint64 { return w.config.GasCeil } +func (w *worker) getTxGasLimit() uint64 { + w.confMu.RLock() + defer w.confMu.RUnlock() + return w.config.TxGasLimit +} + // setExtra sets the content used to initialize the block extra field. func (w *worker) setExtra(extra []byte) { w.confMu.Lock() @@ -1042,6 +1048,10 @@ func (w *worker) fillTransactions(interruptCh chan int32, env *environment, stop filter.BlobFee = uint256.MustFromBig(eip4844.CalcBlobFee(w.chainConfig, env.header)) } + if cap := w.getTxGasLimit(); cap > 0 { + filter.GasLimitCap = cap + } + filter.OnlyPlainTxs, filter.OnlyBlobTxs = true, false plainTxsStart := time.Now() pendingPlainTxs := w.eth.TxPool().Pending(filter) diff --git a/params/protocol_params.go b/params/protocol_params.go index 3ec5bfd950..f5b4a38a18 100644 --- a/params/protocol_params.go +++ b/params/protocol_params.go @@ -28,6 +28,7 @@ const ( MaxGasLimit uint64 = 0x7fffffffffffffff // Maximum the gas limit (2^63-1). GenesisGasLimit uint64 = 4712388 // Gas limit of the Genesis block. PayBidTxGasLimit uint64 = 25000 // Gas limit of the PayBidTx in the types.BidArgs. + MinTxGasLimitCap uint64 = 1 << 24 // Minimum the transaction gas limit cap. MaximumExtraDataSize uint64 = 32 // Maximum size extra data may be after Genesis. ForkIDSize uint64 = 4 // The length of fork id diff --git a/version/version.go b/version/version.go index 89e9276185..837502c12a 100644 --- a/version/version.go +++ b/version/version.go @@ -19,6 +19,6 @@ package version const ( Major = 1 // Major version component of the current release Minor = 6 // Minor version component of the current release - Patch = 4 // Patch version component of the current release + Patch = 5 // Patch version component of the current release Meta = "" // Version metadata to append to the version string )