From eaca47479b906116c7f999f7da53fe247b9c9356 Mon Sep 17 00:00:00 2001 From: Tamara Date: Tue, 23 Sep 2025 10:57:43 -0400 Subject: [PATCH] feat: Simulate txs against RPC (#261) * feat: (WIP) Simulate txs against RPC * fix: include test_executor_addresses.json We should probably fetch this from execution instead. Will do later * feat: (WIP) Attempt to use TokenProxyOverwriteFactory * feat: (WIP) Attempt to use TokenProxyOverwriteFactory * feat: Add simulating execution using debug_traceCall Decoded amount out from execution and compared with the one from simulation Allow for printing the execution traces Moved all execution methods into execution.rs Created traces.rs (heavily clauded) that prints the traces nicely and gets the function selectors frm 4byte (I decided not to use EtherscanIdentifier from foundry because adding foundry as a dependency is really heavy and I expect problems because of it) Temporary: hardcoded storage slots for test_weighted_pool_v4 to pass #time 1h 55m * feat: Use BalanceSlotDetector and AllowanceSlotDetector from tycho_ethereum #time 1h 14m * fix: Improve traces.rs #time 2m * feat: Add skip_execution Also get tycho router bytecode at compile time #time 22m * test: Skip tests that are before the Shanghai upgrade Remove unnecessary TODOs #time 35m * feat: Point tycho dependencies to specific commits #time 9m * fix: Set historical_trade to true in TychoRouterEncoderBuilder #time 41m #time 0m * feat: Improve traces.rs (use foundry instead of 4bytes) Improved the format of the printed trace as well #time 1h 7m * fix: After merge fixes #time 3m * feat: Use new executors_addresses in tycho-execution and read it at startup #time 1h 25m * feat: Create a new flag to enable execution_traces #time 9m * fix: Small code, log and trace improvements Add trying to decode method's calldatas in tracing #time 1m * fix: Simplify simulate_transactions_with_tracing by introducing a new method: bytes_to_fixed_32 #time 13m * fix: After merge fixes #time 1m * fix: Include executor's bytecode at compile time #time 11m --------- Co-authored-by: TAMARA LIPOWSKI Co-authored-by: Diana Carvalho --- evm/test/router/TychoRouter.runtime.json | 1 + protocol-testing/Cargo.lock | 4151 +++++++++++++---- protocol-testing/Cargo.toml | 17 +- protocol-testing/src/config.rs | 2 + protocol-testing/src/encoding.rs | 93 +- protocol-testing/src/execution.rs | 328 ++ protocol-testing/src/main.rs | 11 +- protocol-testing/src/rpc.rs | 245 +- protocol-testing/src/test_runner.rs | 176 +- protocol-testing/src/traces.rs | 402 ++ protocol-testing/src/tycho_rpc.rs | 4 +- protocol-testing/src/utils.rs | 4 +- protocol-testing/test_executor_addresses.json | 14 + .../integration_test.tycho.yaml | 5 + 14 files changed, 4425 insertions(+), 1028 deletions(-) create mode 100644 evm/test/router/TychoRouter.runtime.json create mode 100644 protocol-testing/src/execution.rs create mode 100644 protocol-testing/src/traces.rs create mode 100644 protocol-testing/test_executor_addresses.json diff --git a/evm/test/router/TychoRouter.runtime.json b/evm/test/router/TychoRouter.runtime.json new file mode 100644 index 0000000..4a0d71a --- /dev/null +++ b/evm/test/router/TychoRouter.runtime.json @@ -0,0 +1 @@ +{"runtimeBytecode":"0x6080806040526004361015610211575b5036156102085734610170577f098a7a3b47801589e8cdf9ec791b93ad44273246946c32ef1fc4dbe45390c80e5c6001600160a01b038116805f52600160205260ff60405f205416156101dd575f808360405160208101907f7003fdf400000000000000000000000000000000000000000000000000000000825260206024820152366044820152368460648301376064368281018201869052601f01601f191682018290036044810183526100c69101826115c7565b51915af46100d2611b68565b9015610174575f7f098a7a3b47801589e8cdf9ec791b93ad44273246946c32ef1fc4dbe45390c80e5d80518101906020818184019303126101705760208101519067ffffffffffffffff8211610170570181603f8201121561017057602081015161013c81611b4c565b9161014a60405193846115c7565b81835260208301936040828401011161017057815f92604060209301865e830101525190f35b5f80fd5b80511561019c57610198905b60405191829162461bcd60e51b8352600483016121b0565b0390fd5b506101986040517f43616c6c6261636b206661696c656400000000000000000000000000000000006020820152600f81526101d8602f826115c7565b610180565b7fa6cdd2a5000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b333b1561017057005b5f905f3560e01c90816301ffc9a7146115295750806312261ee7146114e6578063157620ab146112c35780631d452e46146111f95780632478842914611195578063248a9ca3146111635780632f2ff15d146111265780632f622e6b1461109057806330ace1b114610f0a57806336568abe14610eac5780633f4ba83a14610db557806346b5cb5914610d075780634e573d0914610ccc57806351bcc7b614610b635780635c4b639c14610a8f5780635c975abb14610a6c5780637c553846146107d65780638456cb591461070557806391d14854146106bb5780639ac2a0111461067e578063a217fddf14610662578063c20f3bd714610627578063d547741f146105e0578063e21dd0d31461050c578063e63ab1e9146104d1578063e65ffe7c1461037f5763fb1bb9de0361000f573461037c578060031936011261037c5760206040517f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a8152f35b80fd5b5061014036600319011261037c57600435610398611615565b906103a1611641565b916103aa6116e6565b6103b26116f5565b906103bb611657565b9361010435908115918215036104cd576101243567ffffffffffffffff81116104c957916020989593916103f96104b5999896943690600401611704565b989097610404611c27565b61040c611c5b565b6104168883611c94565b9383906104c2575b877f25712b2458c26c244401cacab2c4d40a337e6c15af51d98c87ca8c05ed74935f5d7f9042309497172c3d7a894cb22c754029d2b44522a8039afc41f7d5ad87a35cb55d7f8b09772a37ddaa0009affae61f4c227f5ae294cb166289f28313bcce05ea53585d337f6249046ac25ba4612871a1715b1abd1de7cf9c973c5045a9b08ce3f441ce6e3a5d60c4359560643592611f55565b6001600355604051908152f35b508061041e565b8880fd5b8780fd5b503461037c578060031936011261037c5760206040517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b60206104b58361051b366117f4565b9961052f9991999892959694979398611c27565b610537611c5b565b6105418985611c94565b958290156105d9575b837f25712b2458c26c244401cacab2c4d40a337e6c15af51d98c87ca8c05ed74935f5d7f9042309497172c3d7a894cb22c754029d2b44522a8039afc41f7d5ad87a35cb55d7f8b09772a37ddaa0009affae61f4c227f5ae294cb166289f28313bcce05ea53585d337f6249046ac25ba4612871a1715b1abd1de7cf9c973c5045a9b08ce3f441ce6e3a5d611e93565b508061054a565b503461037c57604036600319011261037c57610623600435610600611615565b9061061e610619825f525f602052600160405f20015490565b611a7f565b611e10565b5080f35b503461037c578060031936011261037c5760206040517f912e45d663a6f4cc1d0491d8f046e06c616f40352565ea1cdb86a0e1aaefa41b8152f35b503461037c578060031936011261037c57602090604051908152f35b503461037c57602036600319011261037c5760ff60406020926001600160a01b036106a761162b565b168152600184522054166040519015158152f35b503461037c57604036600319011261037c576001600160a01b0360406106df611615565b926004358152806020522091165f52602052602060ff60405f2054166040519015158152f35b503461037c578060031936011261037c577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a815280602052604081206001600160a01b0333165f5260205260ff60405f2054161561079f57610765611c27565b600160ff1960025416176002557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b8063e2517d3f60e01b60449252336004527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a602452fd5b5061020036600319011261037c576004356107ef611615565b6107f7611641565b906108006116e6565b6108086116f5565b90610811611657565b9360c036610103190112610a68576101c43567ffffffffffffffff81116104cd57610840903690600401611704565b9690916101e43567ffffffffffffffff8111610a6457610864903690600401611704565b99909861086f611c27565b610877611c5b565b6108818984611c94565b946001600160a01b038916610939575b60206104b58d8d8d8d8d8d8d8d8d857f25712b2458c26c244401cacab2c4d40a337e6c15af51d98c87ca8c05ed74935f5d817f9042309497172c3d7a894cb22c754029d2b44522a8039afc41f7d5ad87a35cb55d60017f8b09772a37ddaa0009affae61f4c227f5ae294cb166289f28313bcce05ea53585d337f6249046ac25ba4612871a1715b1abd1de7cf9c973c5045a9b08ce3f441ce6e3a5d60c4359560643592611f55565b6001600160a01b037f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba31690813b15610a6057604051926302b67b5760e41b8452336004850152610104356001600160a01b038116809103610a5c576024850152610124356001600160a01b038116809103610a5c5760448501526101443565ffffffffffff8116809103610a5c5760648501526101643565ffffffffffff8116809103610a5c576084850152610184356001600160a01b038116809103610a5c578585610a278195839795839560a48501526101a43560c485015261010060e48501526101048401916118d4565b03925af18015610a5157610a3c575b80610891565b610a478280926115c7565b61037c5780610a36565b6040513d84823e3d90fd5b8580fd5b8380fd5b8980fd5b8680fd5b503461037c578060031936011261037c57602060ff600254166040519015158152f35b60206104b583610a9e366117f4565b99610ab29991999892959694979398611c27565b610aba611c5b565b610ac48985611c94565b95829015610b5c575b837f25712b2458c26c244401cacab2c4d40a337e6c15af51d98c87ca8c05ed74935f5d7f9042309497172c3d7a894cb22c754029d2b44522a8039afc41f7d5ad87a35cb55d7f8b09772a37ddaa0009affae61f4c227f5ae294cb166289f28313bcce05ea53585d337f6249046ac25ba4612871a1715b1abd1de7cf9c973c5045a9b08ce3f441ce6e3a5d611d0f565b5080610acd565b50610b6d36611732565b9b91909a9296979598949993610b81611c27565b610b89611c5b565b610b938b87611c94565b976001600160a01b038616610c44575b60206104b58f8f8f8f8f8f8f8f8f8f817f25712b2458c26c244401cacab2c4d40a337e6c15af51d98c87ca8c05ed74935f5d807f9042309497172c3d7a894cb22c754029d2b44522a8039afc41f7d5ad87a35cb55d60017f8b09772a37ddaa0009affae61f4c227f5ae294cb166289f28313bcce05ea53585d337f6249046ac25ba4612871a1715b1abd1de7cf9c973c5045a9b08ce3f441ce6e3a5d611e93565b6001600160a01b037f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba31691823b15610cc85791610c9d9391858094604051968795869485936302b67b5760e41b855233600486016118f4565b03925af18015610a5157610cb3575b8080610ba3565b610cbe8280926115c7565b61037c5780610cac565b8480fd5b503461037c578060031936011261037c5760206040517f6a1dd52dcad5bd732e45b6af4e7344fa284e2d7d4b23b5b09cb55d36b0685c878152f35b503461037c57604036600319011261037c576004359060243567ffffffffffffffff8111610db157610d3d903690600401611681565b81805281602052604082206001600160a01b0333165f5260205260ff60405f20541615610d9a57815b8151811015610d965780610d8f6001600160a01b03610d87600194866118ad565b511686611abf565b5001610d66565b8280f35b60448263e2517d3f60e01b81523360045280602452fd5b5080fd5b503461037c578060031936011261037c577f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a815280602052604081206001600160a01b0333165f5260205260ff60405f20541615610e755760025460ff811615610e4d5760ff19166002557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b6004827f8dfc202b000000000000000000000000000000000000000000000000000000008152fd5b8063e2517d3f60e01b60449252336004527f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a602452fd5b503461037c57604036600319011261037c57610ec6611615565b336001600160a01b03821603610ee25761062390600435611e10565b6004827f6697b232000000000000000000000000000000000000000000000000000000008152fd5b610f1336611732565b9992610f269b929698959994919b611c27565b610f2e611c5b565b610f388a86611c94565b966001600160a01b038516610fe9575b60206104b58d8f8e8e8e8e8e8e8e8e817f25712b2458c26c244401cacab2c4d40a337e6c15af51d98c87ca8c05ed74935f5d807f9042309497172c3d7a894cb22c754029d2b44522a8039afc41f7d5ad87a35cb55d60017f8b09772a37ddaa0009affae61f4c227f5ae294cb166289f28313bcce05ea53585d337f6249046ac25ba4612871a1715b1abd1de7cf9c973c5045a9b08ce3f441ce6e3a5d611d0f565b6001600160a01b039c999795939b9a989694929c7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba31691823b15610170576040516302b67b5760e41b81529d8e9283926110479233600486016118f4565b03815a5f948591f1998a156110855760209b6104b59b611075575b81939597999c50829496989a9b50610f48565b5f61107f916115c7565b5f611062565b6040513d5f823e3d90fd5b34610170576020366003190112610170576001600160a01b036110b161162b565b6110b96119a1565b1680156110fe5747806110c857005b816110fc925f7e1a143d5b175701cb3246058ffac3d63945192075a926ff73a19930f09d587a6020604051868152a3611b97565b005b7fbea0e082000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610170576040366003190112610170576110fc600435611145611615565b9061115e610619825f525f602052600160405f20015490565b611abf565b3461017057602036600319011261017057602061118d6004355f525f602052600160405f20015490565b604051908152f35b34610170576020366003190112610170576001600160a01b036111b661162b565b6111be611a10565b16805f52600160205260405f2060ff1981541690557f4a2cf608bfb427f53279ec7f0eadf48913b9346ccefc3af138dbdec14ea0907d5f80a2005b346101705760203660031901126101705760043567ffffffffffffffff81116101705761122a903690600401611681565b611232611a10565b5f5b81518110156110fc576001600160a01b0361124f82846118ad565b511690813b1561129b57816001925f528260205260405f208360ff198254161790557f3e3c5e6d5b512eaa5d5a80669846cfbaf8bde70fc6f7a3be9828cffc9ba5f1db5f80a201611234565b7f931cf050000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101705760403660031901126101705760043567ffffffffffffffff811161017057366023820112156101705780600401356112ff816115fd565b9161130d60405193846115c7565b8183526024602084019260051b8201019036821161017057602401915b8183106114c657836001600160a01b03611342611615565b61134a6119a1565b1680156110fe575f5b82518110156110fc57602460206001600160a01b0361137284876118ad565b5116604051928380926370a0823160e01b82523060048301525afa908115611085575f91611495575b50806113ab575b50600101611353565b826001600160a01b036113be84876118ad565b51167e1a143d5b175701cb3246058ffac3d63945192075a926ff73a19930f09d587a6020604051858152a360205f6001600160a01b036113fe85886118ad565b511692604051838101917fa9059cbb0000000000000000000000000000000000000000000000000000000083528760248301526044820152604481526114456064826115c7565b519082855af115611085575f513d61148c5750803b155b156113a2577f5274afe7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6001141561145c565b90506020813d82116114be575b816114af602093836115c7565b8101031261017057518461139b565b3d91506114a2565b82356001600160a01b03811681036101705781526020928301920161132a565b34610170575f3660031901126101705760206040516001600160a01b037f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3168152f35b3461017057602036600319011261017057600435907fffffffff00000000000000000000000000000000000000000000000000000000821680920361017057817f7965db0b000000000000000000000000000000000000000000000000000000006020931490811561159d575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483611596565b90601f8019910116810190811067ffffffffffffffff8211176115e957604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff81116115e95760051b60200190565b602435906001600160a01b038216820361017057565b600435906001600160a01b038216820361017057565b604435906001600160a01b038216820361017057565b60e435906001600160a01b038216820361017057565b35906001600160a01b038216820361017057565b9080601f83011215610170578135611698816115fd565b926116a660405194856115c7565b81845260208085019260051b82010192831161017057602001905b8282106116ce5750505090565b602080916116db8461166d565b8152019101906116c1565b60843590811515820361017057565b60a43590811515820361017057565b9181601f840112156101705782359167ffffffffffffffff8311610170576020838186019501011161017057565b6101e060031982011261017057600435916024356001600160a01b038116810361017057916044356001600160a01b03811681036101705791606435916084358015158103610170579160a4358015158103610170579160c4356001600160a01b0381168103610170579160c060e3198301126101705760e4916101a43567ffffffffffffffff811161017057816117cc91600401611704565b929092916101c4359067ffffffffffffffff8211610170576117f091600401611704565b9091565b61012060031982011261017057600435916024356001600160a01b038116810361017057916044356001600160a01b03811681036101705791606435916084358015158103610170579160a4358015158103610170579160c4356001600160a01b0381168103610170579160e43580151581036101705791610104359067ffffffffffffffff8211610170576117f091600401611704565b8051156118995760200190565b634e487b7160e01b5f52603260045260245ffd5b80518210156118995760209160051b010190565b359065ffffffffffff8216820361017057565b908060209392818452848401375f828201840152601f01601f1916010190565b9391906001600160a01b031684526001600160a01b036119138261166d565b1660208501526020810135936001600160a01b0385168095036101705760a06101009261199e96604084015265ffffffffffff611952604083016118c1565b16606084015265ffffffffffff61196b606083016118c1565b1660808401526001600160a01b036119856080830161166d565b1682840152013560c08201528160e082015201916118d4565b90565b335f9081527f209125b8393c0fae5003bf4988d7482cad57ffee02ff2068341f2651699d9bc3602052604090205460ff16156119d957565b63e2517d3f60e01b5f52336004527f912e45d663a6f4cc1d0491d8f046e06c616f40352565ea1cdb86a0e1aaefa41b60245260445ffd5b335f9081527ffad11248e1247cf2be78b2297df0a99e014395bebbed387f9305d245195f092d602052604090205460ff1615611a4857565b63e2517d3f60e01b5f52336004527f6a1dd52dcad5bd732e45b6af4e7344fa284e2d7d4b23b5b09cb55d36b0685c8760245260445ffd5b805f525f60205260405f206001600160a01b0333165f5260205260ff60405f20541615611aa95750565b63e2517d3f60e01b5f523360045260245260445ffd5b805f525f60205260405f206001600160a01b0383165f5260205260ff60405f205416155f14611b4657805f525f60205260405f206001600160a01b0383165f5260205260405f20600160ff198254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b67ffffffffffffffff81116115e957601f01601f191660200190565b3d15611b92573d90611b7982611b4c565b91611b8760405193846115c7565b82523d5f602084013e565b606090565b814710611bf7575f8080936001600160a01b038294165af1611bb7611b68565b9015611bc05750565b805115611bcf57805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b50477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b60ff60025416611c3357565b7fd93c0665000000000000000000000000000000000000000000000000000000005f5260045ffd5b600260035414611c6c576002600355565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b031680611ca757503190565b906001600160a01b03602460209260405194859384926370a0823160e01b84521660048301525afa908115611085575f91611ce0575090565b90506020813d602011611d07575b81611cfb602093836115c7565b81010312610170575190565b3d9150611cee565b96959199979298949093946001600160a01b0387169384156110fe578a15611de8578892611da0575b611d4e9291611d4691612288565b9290916122a2565b97808910611d8a57509187989188611d6f98999594611d71575b5050612478565b565b611d8391611d7e826123f4565b611b97565b5f84611d68565b88633f559c2360e21b5f5260045260245260445ffd5b945090611d46611d4e92611db3836121da565b6001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216969150919250611d38565b7fe1cd26e2000000000000000000000000000000000000000000000000000000005f5260045ffd5b805f525f60205260405f206001600160a01b0383165f5260205260ff60405f2054165f14611b4657805f525f60205260405f206001600160a01b0383165f5260205260405f2060ff1981541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b9695999794909192986001600160a01b0387169182156110fe578a15611de857611f1a575b8795815b611ef45750508498808610611ede575084611d6f98999a611d71575050612478565b85633f559c2360e21b5f5260045260245260445ffd5b611f05611d469792611f149261252c565b93929491999093998a95612288565b96611ebc565b9150611f25876121da565b6001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21691611eb8565b97969a98909299919394959a6001600160a01b0388169687156110fe578b15611de857612175575b8291921561214d575f611f98611f92836124ed565b926124ed565b925f948b611fa58661188c565b52818c611fb18661188c565b525b611ff557505060ff1691905081611fe4575050935b8498808610611ede575084611d6f98999a611d71575050612478565b611fee92506118ad565b5193611fc8565b611fff925061252c565b92939291801561189957843560f81c90806001101561189957600186013560f81c8160051161017057600287013560e81c826019116101705790968791906005810135821561212a57612052868c6118ad565b51838102938185041490151715612116576019946001600160a01b0362ffffff61208b95049687925b6018190194019260601c166122a2565b98816120e5578593926120dc926120c46120bd6120ab8e6120d59661251f565b9d5b6120b7848d6118ad565b5161251f565b918a6118ad565b526120cf84896118ad565b5161246b565b91866118ad565b52939293611fb3565b98859392826120c46120bd848d6121108561210a6120d5996120b76120dc9c866118ad565b926118ad565b526120ad565b634e487b7160e01b5f52601160045260245ffd5b61208b92506019946001600160a01b03612144888c6118ad565b5196879261207b565b7fbc0c932b000000000000000000000000000000000000000000000000000000005f5260045ffd5b9250612180886121da565b6001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21692611f7d565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b803403612259576001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc216803b15610170575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156110855761224f5750565b5f611d6f916115c7565b7fb692af07000000000000000000000000000000000000000000000000000000005f523460045260245260445ffd5b918160141161017057823560601c92601401916013190190565b929190916001600160a01b038416805f52600160205260ff60405f205416156101dd57509183916123485f959486957f098a7a3b47801589e8cdf9ec791b93ad44273246946c32ef1fc4dbe45390c80e5d61233a60405193849260208401967fbd0625ab00000000000000000000000000000000000000000000000000000000885260248501526040604485015260648401916118d4565b03601f1981018352826115c7565b51915af4612354611b68565b905f7f098a7a3b47801589e8cdf9ec791b93ad44273246946c32ef1fc4dbe45390c80e5d156123955760208151918180820193849201010312610170575190565b8051156123b8576101989060405191829162461bcd60e51b8352600483016121b0565b506101986040517f457865637574696f6e206661696c6564000000000000000000000000000000006020820152601081526101d86030826115c7565b6001600160a01b037f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21690813b15610170575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af180156110855761224f5750565b9190820391821161211657565b6001600160a01b03806124936124a397989495969886611c94565b94169116146124dc575b5061246b565b8181036124ae575050565b7ff7bf5832000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b6124e6919261246b565b905f61249d565b906124f7826115fd565b61250460405191826115c7565b8281528092612515601f19916115fd565b0190602036910137565b9190820180921161211657565b9091821560011461255357813560f01c906002830193600283809501019260011991030190565b5f92508291508190819056fea26469706673582212209bbb904097193ebac430ded80f0a89f7c6de1ea7fdd33366abebcb5092d9f65264736f6c634300081a0033"} \ No newline at end of file diff --git a/protocol-testing/Cargo.lock b/protocol-testing/Cargo.lock index 64db2ad..cc8e164 100644 --- a/protocol-testing/Cargo.lock +++ b/protocol-testing/Cargo.lock @@ -2,6 +2,16 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + [[package]] name = "addr2line" version = "0.24.2" @@ -13,9 +23,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -30,15 +40,15 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.2.15", + "getrandom 0.3.3", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -58,15 +68,16 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6b7b6a501cba311fdb8f7d7798a6d9ca8a5bec16609f1629efeafbac68476e" +checksum = "36f63701831729cb154cf0b6945256af46c426074646c98b9d123148ba1d8bde" dependencies = [ "alloy-consensus", "alloy-contract", "alloy-core", "alloy-eips", "alloy-genesis", + "alloy-json-rpc", "alloy-network", "alloy-node-bindings", "alloy-provider", @@ -92,14 +103,14 @@ dependencies = [ "alloy-primitives", "num_enum", "serde", - "strum 0.27.1", + "strum 0.27.2", ] [[package]] name = "alloy-consensus" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d213580c17d239ae83c0d897ac3315db7cda83d2d4936a9823cc3517552f2e24" +checksum = "64a3bd0305a44fb457cae77de1e82856eadd42ea3cdf0dae29df32eb3b592979" dependencies = [ "alloy-eips", "alloy-primitives", @@ -110,7 +121,7 @@ dependencies = [ "arbitrary", "auto_impl", "c-kzg", - "derive_more", + "derive_more 2.0.1", "either", "k256", "once_cell", @@ -118,14 +129,14 @@ dependencies = [ "secp256k1 0.30.0", "serde", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-consensus-any" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81443e3b8dccfeac7cd511aced15928c97ff253f4177acbb97de97178e543f6c" +checksum = "7a842b4023f571835e62ac39fb8d523d19fcdbacfa70bf796ff96e7e19586f50" dependencies = [ "alloy-consensus", "alloy-eips", @@ -138,9 +149,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a411d7b472b11ceb953741faf26bad31dcac8236e2df84078951a6951561c4" +checksum = "591104333286b52b03ec4e8162983e31122b318d21ae2b0900d1e8b51727ad40" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -155,7 +166,7 @@ dependencies = [ "futures 0.3.31", "futures-util", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] @@ -182,7 +193,7 @@ dependencies = [ "alloy-sol-type-parser", "alloy-sol-types", "arbitrary", - "derive_more", + "derive_more 2.0.1", "itoa", "proptest", "serde", @@ -202,7 +213,7 @@ dependencies = [ "crc", "rand 0.8.5", "serde", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] @@ -230,14 +241,14 @@ dependencies = [ "k256", "rand 0.8.5", "serde", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-eips" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a15b4b0f6bab47aae017d52bb5a739bda381553c09fb9918b7172721ef5f5de" +checksum = "5cd749c57f38f8cbf433e651179fc5a676255e6b95044f467d49255d2b81725a" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -248,19 +259,19 @@ dependencies = [ "arbitrary", "auto_impl", "c-kzg", - "derive_more", + "derive_more 2.0.1", "either", "serde", "serde_with", "sha2 0.10.9", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-ens" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "becb0c6c71cd2bda64a92d63dde68e650fc3c3515f0de6473cf3b88b10ed7417" +checksum = "d0a7feb13ccb13b784cdd5c1bb8756f74dd5b322c10ccfb737c8979ff26f9808" dependencies = [ "alloy-primitives", ] @@ -278,18 +289,18 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", - "derive_more", + "derive_more 2.0.1", "op-alloy-consensus", "op-revm", "revm", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-genesis" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ba1cbc25a07e0142e8875fcbe80e1fdb02be8160ae186b90f4b9a69a72ed2b" +checksum = "7d32cbf6c26d7d87e8a4e5925bbce41456e0bbeed95601add3443af277cd604e" dependencies = [ "alloy-eips", "alloy-primitives", @@ -326,24 +337,24 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8882ec8e4542cfd02aadc6dccbe90caa73038f60016d936734eb6ced53d2167" +checksum = "f614019a029c8fec14ae661aa7d4302e6e66bdbfb869dab40e78dcfba935fc97" dependencies = [ "alloy-primitives", "alloy-sol-types", - "http 1.2.0", + "http 1.3.1", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", ] [[package]] name = "alloy-network" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d6d87d588bda509881a7a66ae77c86514bd1193ac30fbff0e0f24db95eb5a5" +checksum = "be8b6d58e98803017bbfea01dde96c4d270a29e7aed3beb65c8d28b5ab464e0e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -358,18 +369,18 @@ dependencies = [ "alloy-sol-types", "async-trait", "auto_impl", - "derive_more", + "derive_more 2.0.1", "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-network-primitives" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b14fa9ba5774e0b30ae6a04176d998211d516c8af69c9c530af7c6c42a8c508" +checksum = "db489617bffe14847bf89f175b1c183e5dd7563ef84713936e2c34255cfbd845" dependencies = [ "alloy-consensus", "alloy-eips", @@ -380,9 +391,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d82efad69266f38e1ef3c6fbfe2f86fa7aec3cf4726368a64914ff5f7a37a0d" +checksum = "50536212c8b686907f66dbac78799b8d39e18558648963594544ac1a05f4306d" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -394,7 +405,7 @@ dependencies = [ "rand 0.8.5", "serde_json", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", "url", ] @@ -438,18 +449,18 @@ dependencies = [ "bytes", "cfg-if", "const-hex", - "derive_more", + "derive_more 2.0.1", "foldhash", - "getrandom 0.3.1", - "hashbrown 0.15.2", - "indexmap 2.7.1", + "getrandom 0.3.3", + "hashbrown 0.15.5", + "indexmap 2.11.3", "itoa", "k256", "keccak-asm", "paste", "proptest", "proptest-derive", - "rand 0.9.0", + "rand 0.9.2", "ruint", "rustc-hash", "serde", @@ -459,9 +470,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf52603a852c8040686e45649f1211987fa6c96885174a5c4a31a1e07c1ddef7" +checksum = "ed90278374435e076a04dbddbb6d714bdd518eb274a64dbd70f65701429dd747" dependencies = [ "alloy-chains", "alloy-consensus", @@ -474,6 +485,7 @@ dependencies = [ "alloy-rpc-client", "alloy-rpc-types-anvil", "alloy-rpc-types-eth", + "alloy-rpc-types-trace", "alloy-signer", "alloy-sol-types", "alloy-transport", @@ -485,13 +497,13 @@ dependencies = [ "either", "futures 0.3.31", "futures-utils-wasm", - "lru 0.16.0", + "lru 0.13.0", "parking_lot", "pin-project 1.1.10", - "reqwest", + "reqwest 0.12.23", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -500,9 +512,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b1eda077b102b167effaf0c9d9109b1232948a6c7fcaff74abdb5deb562a17" +checksum = "9f539a4caaa5496ad54af38f5615adb54cc7b3ec1a42e530e706291cce074f4a" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -515,16 +527,16 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower", + "tower 0.5.2", "tracing", "wasmtimer", ] [[package]] name = "alloy-rlp" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -533,20 +545,20 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "alloy-rpc-client" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87118d5dc24e682978fb51e3dc1cccb3ef3021e4b98825a357c3efb9256187d5" +checksum = "33732242ca63f107f5f8284190244038905fb233280f4b7c41f641d4f584d40d" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -554,12 +566,12 @@ dependencies = [ "alloy-transport-http", "futures 0.3.31", "pin-project 1.1.10", - "reqwest", + "reqwest 0.12.23", "serde", "serde_json", "tokio", "tokio-stream", - "tower", + "tower 0.5.2", "tracing", "url", "wasmtimer", @@ -567,22 +579,23 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835576f756f0e99b6341eb44d2de4bf162586995819da81f808b32265953167e" +checksum = "bb2683049c5f3037d64722902e2c1081f3d45de68696aca0511bbea834905746" dependencies = [ "alloy-primitives", "alloy-rpc-types-engine", "alloy-rpc-types-eth", + "alloy-rpc-types-trace", "alloy-serde", "serde", ] [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c8cad42fa936000be72ab80fcd97386a6a226c35c2989212756da9e76c1521" +checksum = "b757081f2a68e683de3731108494fa058036d5651bf10141ec2430bc1315c362" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -592,9 +605,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01bac57c987c93773787619e20f89167db74d460a2d1d40f591d94fb7c22c379" +checksum = "18f27c0c41a16cd0af4f5dbf791f7be2a60502ca8b0e840e0ad29803fac2d587" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -603,9 +616,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b42dbddf7aca6b1772979c8376b5f69d3e7ff0cf6ea1013d720d860b360528f" +checksum = "dec35a39206f0e04e8544d763c9fe324cc01f74de8821ef4b61e25ac329682f9" dependencies = [ "alloy-consensus", "alloy-eips", @@ -613,18 +626,18 @@ dependencies = [ "alloy-rlp", "alloy-serde", "arbitrary", - "derive_more", - "jsonwebtoken", + "derive_more 2.0.1", + "jsonwebtoken 9.3.1", "rand 0.8.5", "serde", - "strum 0.27.1", + "strum 0.27.2", ] [[package]] name = "alloy-rpc-types-eth" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd1e1b4dcdf13eaa96343e5c0dafc2d2e8ce5d20b90347169d46a1df0dec210" +checksum = "7f5812f81c3131abc2cd8953dc03c41999e180cff7252abbccaba68676e15027" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -639,28 +652,28 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-rpc-types-trace" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc33d9d0e0b3cfe9c2e82a1a427c9ed516fcfebe764f0adf7ceb8107f702dd1" +checksum = "1070e7e92dae6a9c48885980f4f9ca9faa70f945fcd62fbb94472182ca08854f" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-serde" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b3b1078b8775077525bc9fe9f6577e815ceaecd6c412a4f3b4d8aa2836e8f6" +checksum = "04dfe41a47805a34b848c83448946ca96f3d36842e8c074bcf8fa0870e337d12" dependencies = [ "alloy-primitives", "arbitrary", @@ -670,9 +683,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10ab1b8d4649bf7d0db8ab04e31658a6cc20364d920795484d886c35bed3bab4" +checksum = "f79237b4c1b0934d5869deea4a54e6f0a7425a8cd943a739d6293afdf893d847" dependencies = [ "alloy-dyn-abi", "alloy-primitives", @@ -682,14 +695,14 @@ dependencies = [ "either", "elliptic-curve", "k256", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] name = "alloy-signer-aws" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a46118173eb381b2911202a83dc4f39267027b0fe7d3533449f5e4ebc0eadcab" +checksum = "c5cbc38711b7e5ee7b53a7489e8e718a54c6b138d382cfb86e293a2ad5ac894d" dependencies = [ "alloy-consensus", "alloy-network", @@ -700,15 +713,15 @@ dependencies = [ "aws-sdk-kms", "k256", "spki", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", ] [[package]] name = "alloy-signer-gcp" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a6aae8a120c191cc5b333bafa9877b3d5ccb2174ea25b6c2c08df28ca9d64b" +checksum = "dc77e474f2384192f1f27a07a2dd13dd7530064ae96c5941aa1b6ddf33fc7540" dependencies = [ "alloy-consensus", "alloy-network", @@ -718,15 +731,15 @@ dependencies = [ "gcloud-sdk", "k256", "spki", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", ] [[package]] name = "alloy-signer-ledger" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb0444055415b5d97c84b0f5d7a611849e68b63caa574aa1737035310dc1dba" +checksum = "56b13d57b88e25281272533cd55bbf086db9b867be001e02954aa3346ea9fa8e" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -737,44 +750,44 @@ dependencies = [ "async-trait", "coins-ledger", "futures-util", - "semver 1.0.26", - "thiserror 2.0.12", + "semver 1.0.27", + "thiserror 2.0.16", "tracing", ] [[package]] name = "alloy-signer-local" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bdeec36c8d9823102b571b3eab8b323e053dc19c12da14a9687bd474129bf2a" +checksum = "d6e90a3858da59d1941f496c17db8d505f643260f7e97cdcdd33823ddca48fc1" dependencies = [ "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", "async-trait", - "coins-bip32", - "coins-bip39", + "coins-bip32 0.12.0", + "coins-bip39 0.12.0", "eth-keystore", "k256", "rand 0.8.5", - "thiserror 2.0.12", + "thiserror 2.0.16", "zeroize", ] [[package]] name = "alloy-signer-trezor" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be2329afbeb7318ed33b8f69b94c30a4ef71c81557bfb3d579acacb4a4fe670" +checksum = "c58930e48ab90c91978aaaccb5c042858c5982cb3a6f9432742fbf939b80f58a" dependencies = [ "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", "async-trait", - "semver 1.0.26", - "thiserror 2.0.12", + "semver 1.0.27", + "thiserror 2.0.16", "tracing", "trezor-client", ] @@ -790,7 +803,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -803,11 +816,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.7.1", + "indexmap 2.11.3", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", "syn-solidity", "tiny-keccak", ] @@ -826,7 +839,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.99", + "syn 2.0.106", "syn-solidity", ] @@ -854,23 +867,23 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a568f574d8d11fc054e3a32f19f476fdcc4db9216246b1db0b2ecad157a6f963" +checksum = "cb43750e137fe3a69a325cd89a8f8e2bbf4f83e70c0f60fbe49f22511ca075e8" dependencies = [ "alloy-json-rpc", "alloy-primitives", "auto_impl", "base64 0.22.1", - "derive_more", + "derive_more 2.0.1", "futures 0.3.31", "futures-utils-wasm", "parking_lot", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", - "tower", + "tower 0.5.2", "tracing", "url", "wasmtimer", @@ -878,24 +891,24 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df4c00f7c7c6af5660423e6747d22f04ca7e019371eae2dc6535c17b1d636469" +checksum = "f9b42c7d8b666eed975739201f407afc3320d3cd2e4d807639c2918fc736ea67" dependencies = [ "alloy-json-rpc", "alloy-transport", - "reqwest", + "reqwest 0.12.23", "serde_json", - "tower", + "tower 0.5.2", "tracing", "url", ] [[package]] name = "alloy-transport-ipc" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ae5c6655e5cda1227f0c70b7686ecfb8af856771deebacad8dab9a7fbc51864" +checksum = "f07b920e2d4ec9b08cb12a32fa8e5e95dfcf706fe1d7f46453e24ee7089e29f0" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -913,15 +926,15 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb2141958a1f13722cb20a2e01c130fb375209fa428849ae553c1518bc33a0d" +checksum = "83db1cc29cce5f692844d6cf1b6b270ae308219c5d90a7246a74f3479b9201c2" dependencies = [ "alloy-pubsub", "alloy-transport", "futures 0.3.31", - "http 1.2.0", - "rustls", + "http 1.3.1", + "rustls 0.23.31", "serde_json", "tokio", "tokio-tungstenite 0.26.2", @@ -940,7 +953,7 @@ dependencies = [ "arbitrary", "arrayvec", "derive_arbitrary", - "derive_more", + "derive_more 2.0.1", "nybbles", "proptest", "proptest-derive", @@ -951,23 +964,17 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.30" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b5becb9c269a7d05a2f28d549f86df5a5dbc923e2667eff84fdecac8cda534c" +checksum = "e434e0917dce890f755ea774f59d6f12557bc8c7dd9fa06456af80cfe0f0181e" dependencies = [ "alloy-primitives", "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -985,14 +992,14 @@ checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" dependencies = [ "anstyle", "memchr", - "unicode-width 0.2.0", + "unicode-width 0.2.1", ] [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" dependencies = [ "anstyle", "anstyle-parse", @@ -1005,50 +1012,50 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "once_cell", - "windows-sys 0.59.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.97" +version = "1.0.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +checksum = "59d2a3357dde987206219e78ecfbbb6e8dad06cbb65292758d3270e6254f7355" [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" dependencies = [ "derive_arbitrary", ] @@ -1090,7 +1097,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.2", + "hashbrown 0.15.5", "itertools 0.13.0", "num-bigint", "num-integer", @@ -1183,7 +1190,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -1221,7 +1228,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -1236,7 +1243,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.2", + "hashbrown 0.15.5", ] [[package]] @@ -1310,7 +1317,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -1358,6 +1365,15 @@ dependencies = [ "serde", ] +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + [[package]] name = "async-compression" version = "0.4.30" @@ -1390,7 +1406,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -1401,7 +1417,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -1417,9 +1433,9 @@ dependencies = [ [[package]] name = "atomic" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340" dependencies = [ "bytemuck", ] @@ -1430,6 +1446,17 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + [[package]] name = "aurora-engine-modexp" version = "1.2.0" @@ -1448,14 +1475,14 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" @@ -1465,6 +1492,8 @@ checksum = "8bc1b40fb26027769f16960d2f4a6bc20c4bb755d403e552c8c1a73af433c246" dependencies = [ "aws-credential-types", "aws-runtime", + "aws-sdk-sso", + "aws-sdk-ssooidc", "aws-sdk-sts", "aws-smithy-async", "aws-smithy-http", @@ -1475,11 +1504,14 @@ dependencies = [ "aws-types", "bytes", "fastrand", - "http 1.2.0", + "hex", + "http 1.3.1", + "ring 0.17.14", "time", "tokio", "tracing", "url", + "zeroize", ] [[package]] @@ -1494,6 +1526,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "aws-lc-rs" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", +] + [[package]] name = "aws-runtime" version = "1.5.10" @@ -1520,9 +1575,53 @@ dependencies = [ [[package]] name = "aws-sdk-kms" -version = "1.86.0" +version = "1.87.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e7ef7189e532a6d7654befd668b535d31f261c61342397da47ccfa3fb0505a" +checksum = "865b1f9214c318bc3d4baaf0aa918f7d648b993fcb83601f7b3ede06ba6ce08f" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-sso" +version = "1.84.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357a841807f6b52cb26123878b3326921e2a25faca412fabdd32bd35b7edd5d3" +dependencies = [ + "aws-credential-types", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand", + "http 0.2.12", + "regex-lite", + "tracing", +] + +[[package]] +name = "aws-sdk-ssooidc" +version = "1.85.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e05f33b6c9026fecfe9b3b6740f34d41bc6ff641a6a32dabaab60209245b75" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1542,9 +1641,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.85.0" +version = "1.86.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410309ad0df4606bc721aff0d89c3407682845453247213a0ccc5ff8801ee107" +checksum = "e7d835f123f307cafffca7b9027c14979f1d403b417d8541d67cf252e8a21e35" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1578,7 +1677,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.2.0", + "http 1.3.1", "percent-encoding", "sha2 0.10.9", "time", @@ -1608,7 +1707,7 @@ dependencies = [ "bytes-utils", "futures-core", "http 0.2.12", - "http 1.2.0", + "http 1.3.1", "http-body 0.4.6", "percent-encoding", "pin-project-lite", @@ -1616,6 +1715,36 @@ dependencies = [ "tracing", ] +[[package]] +name = "aws-smithy-http-client" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147e8eea63a40315d704b97bf9bc9b8c1402ae94f89d5ad6f7550d963309da1b" +dependencies = [ + "aws-smithy-async", + "aws-smithy-runtime-api", + "aws-smithy-types", + "h2 0.3.27", + "h2 0.4.12", + "http 0.2.12", + "http 1.3.1", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper 1.7.0", + "hyper-rustls 0.24.2", + "hyper-rustls 0.27.7", + "hyper-util", + "pin-project-lite", + "rustls 0.21.12", + "rustls 0.23.31", + "rustls-native-certs 0.8.1", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.3", + "tower 0.5.2", + "tracing", +] + [[package]] name = "aws-smithy-json" version = "0.61.5" @@ -1652,13 +1781,14 @@ checksum = "4fa63ad37685ceb7762fa4d73d06f1d5493feb88e3f27259b9ed277f4c01b185" dependencies = [ "aws-smithy-async", "aws-smithy-http", + "aws-smithy-http-client", "aws-smithy-observability", "aws-smithy-runtime-api", "aws-smithy-types", "bytes", "fastrand", "http 0.2.12", - "http 1.2.0", + "http 1.3.1", "http-body 0.4.6", "http-body 1.0.1", "pin-project-lite", @@ -1677,7 +1807,7 @@ dependencies = [ "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.2.0", + "http 1.3.1", "pin-project-lite", "tokio", "tracing", @@ -1693,8 +1823,9 @@ dependencies = [ "base64-simd", "bytes", "bytes-utils", + "futures-core", "http 0.2.12", - "http 1.2.0", + "http 1.3.1", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -1705,6 +1836,8 @@ dependencies = [ "ryu", "serde", "time", + "tokio", + "tokio-util", ] [[package]] @@ -1732,26 +1865,71 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.4" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ - "axum-core", + "async-trait", + "axum-core 0.3.4", + "bitflags 1.3.2", "bytes", "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "http-body-util", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", "itoa", - "matchit", + "matchit 0.7.3", "memchr", "mime", "percent-encoding", "pin-project-lite", "rustversion", "serde", - "sync_wrapper", - "tower", + "sync_wrapper 0.1.2", + "tower 0.4.13", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core 0.5.2", + "bytes", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "itoa", + "matchit 0.8.4", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 1.0.2", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 0.2.12", + "http-body 0.4.6", + "mime", + "rustversion", "tower-layer", "tower-service", ] @@ -1764,13 +1942,13 @@ checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" dependencies = [ "bytes", "futures-core", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", ] @@ -1783,9 +1961,9 @@ checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -1811,6 +1989,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.21.7" @@ -1835,9 +2019,9 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bech32" @@ -1851,15 +2035,50 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.10.5", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.106", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + [[package]] name = "bit-set" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec", + "bit-vec 0.8.0", ] +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bit-vec" version = "0.8.0" @@ -1962,7 +2181,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -1993,9 +2212,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byte-slice-cast" @@ -2011,9 +2230,9 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.22.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b1fc10dbac614ebc03540c9dbd60e83887fda27794998c6528f1782047d540" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" [[package]] name = "byteorder" @@ -2040,6 +2259,26 @@ dependencies = [ "either", ] +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + [[package]] name = "c-kzg" version = "2.1.1" @@ -2058,11 +2297,11 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.12" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" +checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2082,25 +2321,51 @@ checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" dependencies = [ "camino", "cargo-platform", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", ] [[package]] -name = "cc" -version = "1.2.16" +name = "cargo_metadata" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.27", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "cc" +version = "1.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", "shlex", ] [[package]] -name = "cfg-if" -version = "1.0.0" +name = "cexpr" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -2110,17 +2375,16 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.0", ] [[package]] @@ -2161,10 +2425,21 @@ dependencies = [ ] [[package]] -name = "clap" -version = "4.5.31" +name = "clang-sys" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.5.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" dependencies = [ "clap_builder", "clap_derive", @@ -2172,9 +2447,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.31" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863" +checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" dependencies = [ "anstream", "anstyle", @@ -2182,26 +2457,51 @@ dependencies = [ "strsim", "terminal_size", "unicase", - "unicode-width 0.2.0", + "unicode-width 0.2.1", ] [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + +[[package]] +name = "coins-bip32" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" +dependencies = [ + "bs58", + "coins-core 0.8.7", + "digest 0.10.7", + "hmac", + "k256", + "serde", + "sha2 0.10.9", + "thiserror 1.0.69", +] [[package]] name = "coins-bip32" @@ -2210,7 +2510,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2073678591747aed4000dd468b97b14d7007f7936851d3f2f01846899f5ebf08" dependencies = [ "bs58", - "coins-core", + "coins-core 0.12.0", "digest 0.10.7", "hmac", "k256", @@ -2219,6 +2519,22 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "coins-bip39" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +dependencies = [ + "bitvec", + "coins-bip32 0.8.7", + "hmac", + "once_cell", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", +] + [[package]] name = "coins-bip39" version = "0.12.0" @@ -2226,7 +2542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74b169b26623ff17e9db37a539fe4f15342080df39f129ef7631df7683d6d9d4" dependencies = [ "bitvec", - "coins-bip32", + "coins-bip32 0.12.0", "hmac", "once_cell", "pbkdf2 0.12.2", @@ -2235,6 +2551,26 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "coins-core" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +dependencies = [ + "base64 0.21.7", + "bech32", + "bs58", + "digest 0.10.7", + "generic-array", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2 0.10.9", + "sha3", + "thiserror 1.0.69", +] + [[package]] name = "coins-core" version = "0.12.0" @@ -2264,7 +2600,7 @@ dependencies = [ "byteorder", "cfg-if", "const-hex", - "getrandom 0.2.15", + "getrandom 0.2.16", "hidapi-rusb", "js-sys", "log", @@ -2279,9 +2615,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "colored" @@ -2289,7 +2625,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -2300,7 +2636,7 @@ checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" dependencies = [ "crossterm", "unicode-segmentation", - "unicode-width 0.2.0", + "unicode-width 0.2.1", ] [[package]] @@ -2329,21 +2665,58 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.0", + "unicode-width 0.2.1", "windows-sys 0.59.0", ] [[package]] -name = "const-hex" -version = "1.14.0" +name = "console-api" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +checksum = "a257c22cd7e487dd4a13d413beabc512c5052f0bc048db0da6a84c3d8a6142fd" +dependencies = [ + "futures-core", + "prost 0.12.6", + "prost-types 0.12.6", + "tonic 0.11.0", + "tracing-core", +] + +[[package]] +name = "console-subscriber" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31c4cc54bae66f7d9188996404abdf7fdfa23034ef8e43478c8810828abad758" +dependencies = [ + "console-api", + "crossbeam-channel", + "crossbeam-utils", + "futures-task", + "hdrhistogram", + "humantime", + "prost 0.12.6", + "prost-types 0.12.6", + "serde", + "serde_json", + "thread_local", + "tokio", + "tokio-stream", + "tonic 0.11.0", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.20", +] + +[[package]] +name = "const-hex" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -2372,6 +2745,32 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "contracts" +version = "0.1.0" +source = "git+https://github.com/cowprotocol/services?tag=v2.326.0#7ace07f9c24442fe3441bccd11c9db5fc86e54ba" +dependencies = [ + "alloy", + "anyhow", + "ethcontract", + "ethcontract-generate", + "maplit", + "paste", + "serde", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "convert_case" version = "0.7.1" @@ -2381,6 +2780,34 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cookie" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6" +dependencies = [ + "cookie", + "idna 0.3.0", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -2442,9 +2869,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ "crossbeam-utils", ] @@ -2499,9 +2926,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -2536,12 +2963,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core 0.20.10", - "darling_macro 0.20.10", + "darling_core 0.20.11", + "darling_macro 0.20.11", ] [[package]] @@ -2556,16 +2983,16 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -2580,18 +3007,18 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core 0.20.10", + "darling_core 0.20.11", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -2602,7 +3029,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -2634,15 +3061,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "pem-rfc7468", @@ -2651,9 +3078,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" dependencies = [ "powerfmt", "serde", @@ -2678,18 +3105,18 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "derive_arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -2707,10 +3134,10 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling 0.20.10", + "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -2720,7 +3147,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.99", + "syn 2.0.106", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.106", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl 1.0.0", ] [[package]] @@ -2729,7 +3178,18 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" dependencies = [ - "derive_more-impl", + "derive_more-impl 2.0.1", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -2738,10 +3198,10 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ - "convert_case", + "convert_case 0.7.1", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", "unicode-xid", ] @@ -2791,13 +3251,44 @@ dependencies = [ "subtle", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", +] + [[package]] name = "dirs" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" dependencies = [ - "dirs-sys", + "dirs-sys 0.5.0", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.4.6", + "windows-sys 0.48.0", ] [[package]] @@ -2808,8 +3299,19 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users", - "windows-sys 0.60.2", + "redox_users 0.5.2", + "windows-sys 0.61.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users 0.4.6", + "winapi", ] [[package]] @@ -2820,7 +3322,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -2844,6 +3346,12 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +[[package]] +name = "downcast" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" + [[package]] name = "dunce" version = "1.0.5" @@ -2852,9 +3360,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "dyn-clone" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "ecdsa" @@ -2880,7 +3388,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -2913,6 +3421,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + [[package]] name = "encode_unicode" version = "1.0.0" @@ -2928,6 +3445,24 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "enr" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" +dependencies = [ + "base64 0.21.7", + "bytes", + "hex", + "k256", + "log", + "rand 0.8.5", + "rlp", + "serde", + "sha3", + "zeroize", +] + [[package]] name = "enum-ordinalize" version = "4.3.0" @@ -2945,7 +3480,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -2980,22 +3515,23 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" dependencies = [ "serde", + "serde_core", "typeid", ] [[package]] name = "errno" -version = "0.3.10" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] [[package]] @@ -3030,12 +3566,392 @@ dependencies = [ ] [[package]] -name = "evm_ekubo_sdk" -version = "0.6.4" +name = "ethabi" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "042cb3a13176fc0631489038bb0cebe9496ac15d2dac2b055d520fd56c3f6d9a" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror 1.0.69", + "uint 0.9.5", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethcontract" +version = "0.25.9" +source = "git+https://github.com/cowprotocol/ethcontract-rs?rev=8817f4ba868e686f21cda886d6c8b75834eb51f2#8817f4ba868e686f21cda886d6c8b75834eb51f2" +dependencies = [ + "arrayvec", + "aws-config", + "aws-sdk-kms", + "ethcontract-common", + "futures 0.3.31", + "futures-timer", + "hex", + "jsonrpc-core", + "lazy_static", + "primitive-types", + "rlp", + "secp256k1 0.27.0", + "serde", + "serde_json", + "thiserror 1.0.69", + "uint 0.9.5", + "web3", + "zeroize", +] + +[[package]] +name = "ethcontract-common" +version = "0.25.9" +source = "git+https://github.com/cowprotocol/ethcontract-rs?rev=8817f4ba868e686f21cda886d6c8b75834eb51f2#8817f4ba868e686f21cda886d6c8b75834eb51f2" +dependencies = [ + "ethabi", + "hex", + "serde", + "serde_derive", + "serde_json", + "thiserror 1.0.69", + "tiny-keccak", + "web3", +] + +[[package]] +name = "ethcontract-generate" +version = "0.25.9" +source = "git+https://github.com/cowprotocol/ethcontract-rs?rev=8817f4ba868e686f21cda886d6c8b75834eb51f2#8817f4ba868e686f21cda886d6c8b75834eb51f2" +dependencies = [ + "Inflector", + "anyhow", + "ethcontract-common", + "proc-macro2", + "quote", + "syn 2.0.106", + "url", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint 0.9.5", +] + +[[package]] +name = "ethers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" +dependencies = [ + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project 1.1.10", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" +dependencies = [ + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest 0.11.27", + "serde", + "serde_json", + "syn 2.0.106", + "toml 0.8.23", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" +dependencies = [ + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.106", +] + +[[package]] +name = "ethers-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "cargo_metadata 0.18.1", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array", + "k256", + "num_enum", + "once_cell", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum 0.26.3", + "syn 2.0.106", + "tempfile", + "thiserror 1.0.69", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" +dependencies = [ + "chrono", + "ethers-core", + "reqwest 0.11.27", + "semver 1.0.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.7", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http 0.2.12", + "instant", + "jsonwebtoken 8.3.0", + "once_cell", + "pin-project 1.1.10", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tokio-tungstenite 0.20.1", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" +dependencies = [ + "async-trait", + "coins-bip32 0.8.7", + "coins-bip39 0.8.7", + "const-hex", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "rand 0.8.5", + "sha2 0.10.9", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" +dependencies = [ + "cfg-if", + "const-hex", + "dirs 5.0.1", + "dunce", + "ethers-core", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.27", + "serde", + "serde_json", + "solang-parser", + "svm-rs 0.3.5", + "thiserror 1.0.69", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi 0.5.1", +] + +[[package]] +name = "ethrpc" +version = "0.1.0" +source = "git+https://github.com/cowprotocol/services?tag=v2.326.0#7ace07f9c24442fe3441bccd11c9db5fc86e54ba" +dependencies = [ + "alloy", + "anyhow", + "async-trait", + "contracts", + "ethcontract", + "futures 0.3.31", + "hex", + "hex-literal", + "itertools 0.14.0", + "mockall", + "observe", + "primitive-types", + "prometheus", + "prometheus-metric-storage", + "reqwest 0.11.27", + "scopeguard", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tracing", + "url", + "web3", +] + +[[package]] +name = "evm_ekubo_sdk" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eaf56840ccbfb0b6d4fb27dd20d96a13586482923b280f5d6eb1a5fa980e818" dependencies = [ - "insta", "num-traits", "uint 0.10.0", ] @@ -3086,9 +4002,9 @@ dependencies = [ [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "rand_core 0.6.4", "subtle", @@ -3104,11 +4020,17 @@ dependencies = [ "pear", "serde", "serde_yaml", - "toml 0.8.20", + "toml 0.8.23", "uncased", "version_check", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -3121,6 +4043,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" version = "1.1.2" @@ -3140,9 +4068,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -3178,9 +4106,9 @@ dependencies = [ [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -3195,8 +4123,8 @@ dependencies = [ "alloy-json-abi", "alloy-primitives", "foundry-compilers", - "reqwest", - "semver 1.0.26", + "reqwest 0.12.23", + "semver 1.0.27", "serde", "serde_json", "thiserror 1.0.69", @@ -3242,14 +4170,14 @@ dependencies = [ "p256", "parking_lot", "proptest", - "rand 0.9.0", + "rand 0.9.2", "revm", "revm-inspectors", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.12", - "toml 0.9.5", + "thiserror 2.0.16", + "toml 0.9.6", "tracing", "walkdir", ] @@ -3304,21 +4232,21 @@ dependencies = [ "num-format", "path-slash", "regex", - "reqwest", - "semver 1.0.26", + "reqwest 0.12.23", + "semver 1.0.27", "serde", "serde_json", "solar-parse", "solar-sema", "terminal_size", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", - "tower", + "tower 0.5.2", "tracing", "url", "vergen", "walkdir", - "yansi", + "yansi 1.0.1", ] [[package]] @@ -3336,7 +4264,7 @@ dependencies = [ "revm", "serde", "serde_json", - "yansi", + "yansi 1.0.1", ] [[package]] @@ -3348,7 +4276,7 @@ dependencies = [ "alloy-json-abi", "alloy-primitives", "auto_impl", - "derive_more", + "derive_more 2.0.1", "dyn-clone", "foundry-compilers-artifacts", "foundry-compilers-core", @@ -3356,19 +4284,19 @@ dependencies = [ "itertools 0.14.0", "path-slash", "rayon", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "sha2 0.10.9", "solar-parse", "solar-sema", - "svm-rs", + "svm-rs 0.5.19", "svm-rs-builds", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "winnow", - "yansi", + "yansi 1.0.1", ] [[package]] @@ -3394,14 +4322,14 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "walkdir", - "yansi", + "yansi 1.0.1", ] [[package]] @@ -3415,7 +4343,7 @@ dependencies = [ "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", - "semver 1.0.26", + "semver 1.0.27", "serde", ] @@ -3430,11 +4358,11 @@ dependencies = [ "dunce", "path-slash", "regex", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", - "svm-rs", - "thiserror 2.0.12", + "svm-rs 0.5.19", + "thiserror 2.0.16", "tokio", "walkdir", "xxhash-rust", @@ -3448,7 +4376,7 @@ dependencies = [ "alloy-chains", "alloy-primitives", "clap", - "dirs", + "dirs 6.0.0", "dunce", "eyre", "figment", @@ -3462,20 +4390,20 @@ dependencies = [ "number_prefix", "path-slash", "regex", - "reqwest", + "reqwest 0.12.23", "revm", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "solar-interface", "solar-parse", "soldeer-core", - "thiserror 2.0.12", - "toml 0.9.5", - "toml_edit", + "thiserror 2.0.16", + "toml 0.9.6", + "toml_edit 0.22.27", "tracing", "walkdir", - "yansi", + "yansi 1.0.1", ] [[package]] @@ -3505,7 +4433,7 @@ dependencies = [ "revm-inspectors", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", "uuid 1.18.1", ] @@ -3517,7 +4445,7 @@ source = "git+https://github.com/foundry-rs/foundry?rev=5a552bb0de7126fa35170fd8 dependencies = [ "alloy-primitives", "alloy-sol-types", - "derive_more", + "derive_more 2.0.1", "foundry-common-fmt", "foundry-macros", "itertools 0.14.0", @@ -3556,7 +4484,7 @@ dependencies = [ "revm-inspectors", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -3574,7 +4502,7 @@ dependencies = [ "foundry-evm-core", "rayon", "revm", - "semver 1.0.26", + "semver 1.0.27", "tracing", ] @@ -3596,10 +4524,10 @@ dependencies = [ "itertools 0.14.0", "parking_lot", "proptest", - "rand 0.9.0", + "rand 0.9.2", "revm", "serde", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", ] @@ -3650,7 +4578,7 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -3663,8 +4591,8 @@ source = "git+https://github.com/foundry-rs/foundry?rev=5a552bb0de7126fa35170fd8 dependencies = [ "alloy-primitives", "foundry-compilers", - "semver 1.0.26", - "thiserror 2.0.12", + "semver 1.0.27", + "thiserror 2.0.16", ] [[package]] @@ -3675,7 +4603,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -3700,10 +4628,32 @@ dependencies = [ "foundry-config", "rpassword", "serde", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", ] +[[package]] +name = "fragile" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "funty" version = "2.0.0" @@ -3764,6 +4714,16 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -3772,7 +4732,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -3787,6 +4747,16 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +[[package]] +name = "futures-timer" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + [[package]] name = "futures-util" version = "0.3.31" @@ -3812,6 +4782,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "gcloud-sdk" version = "0.27.4" @@ -3822,18 +4801,18 @@ dependencies = [ "bytes", "chrono", "futures 0.3.31", - "hyper 1.6.0", - "jsonwebtoken", + "hyper 1.7.0", + "jsonwebtoken 9.3.1", "once_cell", "prost 0.13.5", "prost-types 0.13.5", - "reqwest", + "reqwest 0.12.23", "secret-vault-value", "serde", "serde_json", "tokio", - "tonic", - "tower", + "tonic 0.13.1", + "tower 0.5.2", "tower-layer", "tower-util", "tracing", @@ -3853,29 +4832,29 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.13.3+wasi-0.2.2", + "r-efi", + "wasi 0.14.7+wasi-0.2.4", "wasm-bindgen", - "windows-targets 0.52.6", ] [[package]] @@ -3886,9 +4865,9 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" @@ -3899,8 +4878,20 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", ] [[package]] @@ -3926,17 +4917,36 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.8" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.11.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.2.0", - "indexmap 2.7.1", + "http 1.3.1", + "indexmap 2.11.3", "slab", "tokio", "tokio-util", @@ -3967,9 +4977,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -3983,6 +4993,52 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "hdrhistogram" +version = "7.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" +dependencies = [ + "base64 0.21.7", + "byteorder", + "flate2", + "nom", + "num-traits", +] + +[[package]] +name = "headers" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +dependencies = [ + "base64 0.21.7", + "bytes", + "headers-core", + "http 0.2.12", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http 0.2.12", +] + [[package]] name = "heck" version = "0.4.1" @@ -3997,9 +5053,12 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] [[package]] name = "hermit-abi" @@ -4012,9 +5071,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-conservative" @@ -4025,6 +5081,12 @@ dependencies = [ "arrayvec", ] +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + [[package]] name = "hidapi-rusb" version = "1.3.3" @@ -4068,9 +5130,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -4095,18 +5157,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.2.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.2.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] @@ -4123,6 +5185,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humantime" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" + [[package]] name = "hyper" version = "0.14.32" @@ -4133,12 +5201,14 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", + "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -4147,20 +5217,22 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", - "h2", - "http 1.2.0", + "futures-core", + "h2 0.4.12", + "http 1.3.1", "http-body 1.0.1", "httparse", "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -4168,21 +5240,48 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http 1.2.0", - "hyper 1.6.0", + "http 0.2.12", + "hyper 0.14.32", + "log", + "rustls 0.21.12", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http 1.3.1", + "hyper 1.7.0", "hyper-util", - "rustls", - "rustls-native-certs", + "rustls 0.23.31", + "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.3", "tower-service", - "webpki-roots 0.26.11", + "webpki-roots 1.0.2", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper 0.14.32", + "pin-project-lite", + "tokio", + "tokio-io-timeout", ] [[package]] @@ -4191,13 +5290,26 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "pin-project-lite", "tokio", "tower-service", ] +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper 0.14.32", + "native-tls", + "tokio", + "tokio-native-tls", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -4206,7 +5318,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "native-tls", "tokio", @@ -4216,24 +5328,24 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.7.0", "ipnet", "libc", "percent-encoding", "pin-project-lite", "socket2 0.6.0", - "system-configuration", + "system-configuration 0.6.1", "tokio", "tower-service", "tracing", @@ -4242,14 +5354,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -4265,21 +5378,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -4288,31 +5402,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -4320,67 +5414,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.99", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -4389,9 +5470,29 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -4400,9 +5501,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -4418,7 +5519,7 @@ dependencies = [ "globset", "log", "memchr", - "regex-automata 0.4.9", + "regex-automata", "same-file", "walkdir", "winapi-util", @@ -4433,6 +5534,24 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + [[package]] name = "impl-trait-for-tuples" version = "0.2.3" @@ -4441,7 +5560,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -4469,14 +5588,15 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "92119844f513ffa41556430369ab02c295a3578af21cf945caa3e9e0c2481ac3" dependencies = [ "arbitrary", "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.5", "serde", + "serde_core", ] [[package]] @@ -4488,7 +5608,7 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width 0.2.0", + "unicode-width 0.2.1", "web-time", ] @@ -4508,14 +5628,12 @@ dependencies = [ ] [[package]] -name = "insta" -version = "1.43.2" +name = "instant" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fdb647ebde000f43b5b53f773c30cf9b0cb4300453208713fa38b2c70935a0" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "console", - "once_cell", - "similar", + "cfg-if", ] [[package]] @@ -4548,9 +5666,9 @@ dependencies = [ [[package]] name = "inventory" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab08d7cd2c5897f2c949e5383ea7c7db03fb19130ffcfbf7eda795137ae3cb83" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" dependencies = [ "rustversion", ] @@ -4614,6 +5732,24 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.13.0" @@ -4661,7 +5797,7 @@ checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -4680,10 +5816,20 @@ dependencies = [ ] [[package]] -name = "js-sys" -version = "0.3.77" +name = "jobserver" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e" dependencies = [ "once_cell", "wasm-bindgen", @@ -4700,6 +5846,35 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonrpc-core" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" +dependencies = [ + "futures 0.3.31", + "futures-executor", + "futures-util", + "log", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "jsonwebtoken" +version = "8.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +dependencies = [ + "base64 0.21.7", + "pem 1.1.1", + "ring 0.16.20", + "serde", + "serde_json", + "simple_asn1", +] + [[package]] name = "jsonwebtoken" version = "9.3.1" @@ -4708,8 +5883,8 @@ checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" dependencies = [ "base64 0.22.1", "js-sys", - "pem", - "ring", + "pem 3.0.5", + "ring 0.17.14", "serde", "serde_json", "simple_asn1", @@ -4749,6 +5924,36 @@ dependencies = [ "sha3-asm", ] +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set 0.5.3", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" +dependencies = [ + "regex-automata", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -4762,19 +5967,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] -name = "libm" -version = "0.2.11" +name = "libloading" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.48.5", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags 2.9.4", "libc", + "redox_syscall", ] [[package]] @@ -4846,15 +6062,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.9.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "litrs" @@ -4864,9 +6080,9 @@ checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -4874,9 +6090,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.26" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "value-bag", ] @@ -4887,16 +6103,16 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.5", ] [[package]] name = "lru" -version = "0.16.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ea4e65087ff52f3862caff188d489f1fab49a0cb09e01b2e3f1a617b10aaed" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.5", ] [[package]] @@ -4913,9 +6129,15 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + [[package]] name = "match_cfg" version = "0.1.0" @@ -4924,13 +6146,19 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "matchit" version = "0.8.4" @@ -4949,9 +6177,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memoffset" @@ -5000,7 +6228,7 @@ checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -5035,23 +6263,56 @@ dependencies = [ ] [[package]] -name = "miniz_oxide" -version = "0.8.5" +name = "minimal-lexical" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", +] + +[[package]] +name = "mockall" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43766c2b5203b10de348ffe19f7e54564b64f3d6018ff7648d1e2d6d3a0f0a48" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -5071,6 +6332,12 @@ dependencies = [ "tempfile", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nix" version = "0.26.4" @@ -5084,6 +6351,16 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "normalize-path" version = "0.2.1" @@ -5092,12 +6369,11 @@ checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d" [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -5193,33 +6469,34 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.2", "libc", ] [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -5239,9 +6516,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "nybbles" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63cb50036b1ad148038105af40aaa70ff24d8a14fbc44ae5c914e1348533d12e" +checksum = "bfa11e84403164a9f12982ab728f3c67c6fd4ab5b5f0254ffc217bdbd3b28ab0" dependencies = [ "alloy-rlp", "arbitrary", @@ -5261,12 +6538,45 @@ dependencies = [ "memchr", ] +[[package]] +name = "observe" +version = "0.1.0" +source = "git+https://github.com/cowprotocol/services?tag=v2.326.0#7ace07f9c24442fe3441bccd11c9db5fc86e54ba" +dependencies = [ + "async-trait", + "atty", + "chrono", + "console-subscriber", + "futures 0.3.31", + "opentelemetry", + "opentelemetry-otlp", + "opentelemetry_sdk", + "pin-project-lite", + "prometheus", + "prometheus-metric-storage", + "serde", + "serde_json", + "time", + "tokio", + "tracing", + "tracing-opentelemetry", + "tracing-serde", + "tracing-subscriber 0.3.20", + "warp", +] + [[package]] name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" + [[package]] name = "once_map" version = "0.4.22" @@ -5289,8 +6599,8 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", - "derive_more", - "thiserror 2.0.12", + "derive_more 2.0.1", + "thiserror 2.0.16", ] [[package]] @@ -5312,10 +6622,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] -name = "openssl" -version = "0.10.71" +name = "open-fastrlp" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ "bitflags 2.9.4", "cfg-if", @@ -5334,7 +6669,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -5345,9 +6680,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.106" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -5355,6 +6690,80 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "opentelemetry" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf416e4cb72756655126f7dd7bb0af49c674f4c1b9903e80c009e0c37e552e6" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "opentelemetry-http" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f6639e842a97dbea8886e3439710ae463120091e2e064518ba8e716e6ac36d" +dependencies = [ + "async-trait", + "bytes", + "http 1.3.1", + "opentelemetry", + "reqwest 0.12.23", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbee664a43e07615731afc539ca60c6d9f1a9425e25ca09c57bc36c87c55852b" +dependencies = [ + "http 1.3.1", + "opentelemetry", + "opentelemetry-http", + "opentelemetry-proto", + "opentelemetry_sdk", + "prost 0.13.5", + "reqwest 0.12.23", + "thiserror 2.0.16", + "tokio", + "tonic 0.13.1", + "tracing", +] + +[[package]] +name = "opentelemetry-proto" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e046fd7660710fe5a05e8748e70d9058dc15c94ba914e7c4faa7c728f0e8ddc" +dependencies = [ + "opentelemetry", + "opentelemetry_sdk", + "prost 0.13.5", + "tonic 0.13.1", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f644aa9e5e31d11896e024305d7e3c98a88884d9f8919dbf37a9991bc47a4b" +dependencies = [ + "futures-channel", + "futures-executor", + "futures-util", + "opentelemetry", + "percent-encoding", + "rand 0.9.2", + "serde_json", + "thiserror 2.0.16", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -5367,12 +6776,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "owo-colors" version = "4.2.2" @@ -5393,9 +6796,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fde3d0718baf5bc92f577d652001da0f8d54cd03a7974e118d04fc888dc23d" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", @@ -5409,21 +6812,21 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.7.4" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581c837bb6b9541ce7faa9377c20616e4fb7650f6b0f68bc93c827ee504fb7b3" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -5431,9 +6834,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", @@ -5442,6 +6845,17 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "paste" version = "1.0.15" @@ -5461,6 +6875,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" dependencies = [ "digest 0.10.7", + "hmac", + "password-hash", + "sha2 0.10.9", ] [[package]] @@ -5481,7 +6898,7 @@ checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" dependencies = [ "inlinable_string", "pear_codegen", - "yansi", + "yansi 1.0.1", ] [[package]] @@ -5493,7 +6910,16 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.99", + "syn 2.0.106", +] + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", ] [[package]] @@ -5517,21 +6943,31 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.7.15" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" dependencies = [ "memchr", - "thiserror 2.0.12", + "thiserror 2.0.16", "ucd-trie", ] +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.11.3", +] + [[package]] name = "pharos" version = "0.5.3" @@ -5573,7 +7009,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -5622,7 +7058,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -5695,7 +7131,7 @@ dependencies = [ "hmac", "md-5", "memchr", - "rand 0.9.0", + "rand 0.9.2", "sha2 0.10.9", "stringprep", ] @@ -5711,6 +7147,15 @@ dependencies = [ "postgres-protocol", ] +[[package]] +name = "potential_utf" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -5719,21 +7164,53 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.7.35", + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "predicates" +version = "3.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +dependencies = [ + "anstyle", + "predicates-core", +] + +[[package]] +name = "predicates-core" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" + +[[package]] +name = "predicates-tree" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +dependencies = [ + "predicates-core", + "termtree", ] [[package]] name = "prettyplease" -version = "0.2.34" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6837b9e10d61f45f987d50808f83d1ee3d206c66acf650c3e4ae2e1f6ddedf55" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -5753,16 +7230,19 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", "uint 0.9.5", ] [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.5", ] [[package]] @@ -5808,14 +7288,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "proc-macro2" -version = "1.0.94" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -5828,9 +7308,46 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", "version_check", - "yansi", + "yansi 1.0.1", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "protobuf 2.28.0", + "thiserror 1.0.69", +] + +[[package]] +name = "prometheus-metric-storage" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3282447ea0b07baa9011e45de96794c5963db0162c1001d2867750715d63ff14" +dependencies = [ + "lazy_static", + "prometheus", + "prometheus-metric-storage-derive", +] + +[[package]] +name = "prometheus-metric-storage-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239221aa10cd35277c58b8f6509280b2613321760b49584d7a7351a6aacb6963" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -5839,15 +7356,15 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ - "bit-set", - "bit-vec", + "bit-set 0.8.0", + "bit-vec 0.8.0", "bitflags 2.9.4", "lazy_static", "num-traits", - "rand 0.9.0", + "rand 0.9.2", "rand_chacha 0.9.0", "rand_xorshift", - "regex-syntax 0.8.5", + "regex-syntax", "rusty-fork", "tempfile", "unarray", @@ -5861,7 +7378,17 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", +] + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive 0.12.6", ] [[package]] @@ -5884,6 +7411,19 @@ dependencies = [ "prost-derive 0.14.1", ] +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "prost-derive" version = "0.13.5" @@ -5894,7 +7434,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -5907,7 +7447,16 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", +] + +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost 0.12.6", ] [[package]] @@ -5928,6 +7477,12 @@ dependencies = [ "prost 0.14.1", ] +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + [[package]] name = "protobuf" version = "3.3.0" @@ -5958,13 +7513,18 @@ dependencies = [ "colored", "dotenv", "figment", + "foundry-config", + "foundry-evm", "glob", "hex", "itertools 0.14.0", "miette", "num-bigint", + "num-rational", "num-traits", "postgres", + "reqwest 0.12.23", + "revm", "serde", "serde_json", "serde_yaml", @@ -5972,12 +7532,29 @@ dependencies = [ "termsize", "tokio", "tracing", - "tracing-subscriber 0.3.19", + "tracing-subscriber 0.3.20", "tycho-client", "tycho-common", + "tycho-ethereum", "tycho-simulation", ] +[[package]] +name = "psl-types" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" + +[[package]] +name = "publicsuffix" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" +dependencies = [ + "idna 1.1.0", + "psl-types", +] + [[package]] name = "pulldown-cmark" version = "0.9.6" @@ -6007,9 +7584,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls", + "rustls 0.23.31", "socket2 0.6.0", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "web-time", @@ -6022,15 +7599,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.1", + "getrandom 0.3.3", "lru-slab", - "rand 0.9.0", - "ring", + "rand 0.9.2", + "ring 0.17.14", "rustc-hash", - "rustls", + "rustls 0.23.31", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.16", "tinyvec", "tracing", "web-time", @@ -6052,13 +7629,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.39" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -6079,14 +7662,13 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", "serde", - "zerocopy 0.8.23", ] [[package]] @@ -6115,7 +7697,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -6124,7 +7706,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.1", + "getrandom 0.3.3", "serde", ] @@ -6165,22 +7747,33 @@ checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" [[package]] name = "redox_syscall" -version = "0.5.10" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ "bitflags 2.9.4", ] +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + [[package]] name = "redox_users" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] @@ -6200,39 +7793,30 @@ checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] @@ -6243,15 +7827,55 @@ checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] -name = "regex-syntax" -version = "0.8.5" +name = "reqwest" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "cookie", + "cookie_store", + "encoding_rs", + "futures-core", + "futures-util", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-rustls 0.24.2", + "hyper-tls 0.5.0", + "ipnet", + "js-sys", + "log", + "mime", + "native-tls", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.12", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", + "tokio", + "tokio-native-tls", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.4", + "winreg", +] [[package]] name = "reqwest" @@ -6266,13 +7890,13 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", - "http 1.2.0", + "h2 0.4.12", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", - "hyper-rustls", - "hyper-tls", + "hyper 1.7.0", + "hyper-rustls 0.27.7", + "hyper-tls 0.6.0", "hyper-util", "js-sys", "log", @@ -6282,18 +7906,18 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls", - "rustls-native-certs", + "rustls 0.23.31", + "rustls-native-certs 0.8.1", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tokio-native-tls", - "tokio-rustls", + "tokio-rustls 0.26.3", "tokio-util", - "tower", + "tower 0.5.2", "tower-http", "tower-service", "url", @@ -6450,7 +8074,7 @@ dependencies = [ "revm", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] @@ -6528,15 +8152,30 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.13" +version = "0.16.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ac5d832aa16abd7d1def883a8545280c20a60f523a370aa3a9617c2b8550ee" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted 0.7.1", + "web-sys", + "winapi", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", - "untrusted", + "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -6556,9 +8195,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", + "rlp-derive", "rustc-hex", ] +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "rpassword" version = "7.4.0" @@ -6612,7 +8263,7 @@ dependencies = [ "primitive-types", "proptest", "rand 0.8.5", - "rand 0.9.0", + "rand 0.9.2", "rlp", "ruint-macro", "serde", @@ -6638,9 +8289,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -6672,37 +8323,62 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", ] [[package]] name = "rustix" -version = "1.0.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dade4812df5c384711475be5fcd8c162555352945401aed22a35bffeab61f657" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ "bitflags 2.9.4", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] [[package]] name = "rustls" -version = "0.23.23" +version = "0.21.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ + "log", + "ring 0.17.14", + "rustls-webpki 0.101.7", + "sct", +] + +[[package]] +name = "rustls" +version = "0.23.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +dependencies = [ + "aws-lc-rs", "log", "once_cell", - "ring", + "ring 0.17.14", "rustls-pki-types", - "rustls-webpki", + "rustls-webpki 0.103.6", "subtle", "zeroize", ] +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework 2.11.1", +] + [[package]] name = "rustls-native-certs" version = "0.8.1" @@ -6712,34 +8388,55 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework 3.4.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", ] [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", + "zeroize", ] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring", + "ring 0.17.14", + "untrusted 0.9.0", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" +dependencies = [ + "aws-lc-rs", + "ring 0.17.14", "rustls-pki-types", - "untrusted", + "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" @@ -6787,12 +8484,36 @@ dependencies = [ ] [[package]] -name = "schannel" -version = "0.1.27" +name = "scale-info" +version = "2.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "346a3b32eba2640d17a9cb5927056b08f3de90f65b72fe09402c2ad07d684d0b" dependencies = [ - "windows-sys 0.59.0", + "cfg-if", + "derive_more 1.0.0", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6630024bf739e2179b91fb424b28898baf819414262c5d376677dbff1fe7ebf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.0", ] [[package]] @@ -6843,6 +8564,16 @@ dependencies = [ "sha2 0.10.9", ] +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring 0.17.14", + "untrusted 0.9.0", +] + [[package]] name = "sec1" version = "0.7.3" @@ -6858,6 +8589,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "secp256k1-sys 0.8.2", +] + [[package]] name = "secp256k1" version = "0.30.0" @@ -6877,10 +8617,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" dependencies = [ "bitcoin_hashes", - "rand 0.9.0", + "rand 0.9.2", "secp256k1-sys 0.11.0", ] +[[package]] +name = "secp256k1-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" +dependencies = [ + "cc", +] + [[package]] name = "secp256k1-sys" version = "0.10.1" @@ -6927,9 +8676,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "60b369d18893388b345804dc0007963c99b7d665ae71d275812d828c6f089640" dependencies = [ "bitflags 2.9.4", "core-foundation 0.10.1", @@ -6940,9 +8689,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -6959,11 +8708,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -6975,6 +8725,12 @@ dependencies = [ "pest", ] +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + [[package]] name = "send_wrapper" version = "0.6.0" @@ -6983,22 +8739,32 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.218" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" +checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.225" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.218" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" +checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -7012,15 +8778,16 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.11.3", "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -7034,11 +8801,11 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" +checksum = "2789234a13a53fc4be1b51ea1bab45a3c338bdb884862a257d10e5a74ae009e6" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -7063,7 +8830,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.7.1", + "indexmap 2.11.3", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -7079,10 +8846,10 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ - "darling 0.20.10", + "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -7091,7 +8858,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.11.3", "itoa", "ryu", "serde", @@ -7186,9 +8953,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -7223,7 +8990,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.12", + "thiserror 2.0.16", "time", ] @@ -7240,7 +9007,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" dependencies = [ "bytecount", - "cargo_metadata", + "cargo_metadata 0.14.2", "error-chain", "glob", "pulldown-cmark", @@ -7250,18 +9017,15 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" -version = "1.14.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "arbitrary", "serde", @@ -7269,9 +9033,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", @@ -7287,6 +9051,20 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "solang-parser" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", +] + [[package]] name = "solar-ast" version = "0.1.5" @@ -7298,11 +9076,11 @@ dependencies = [ "either", "num-bigint", "num-rational", - "semver 1.0.26", + "semver 1.0.27", "solar-data-structures", "solar-interface", "solar-macros", - "strum 0.27.1", + "strum 0.27.2", "typed-arena", ] @@ -7312,18 +9090,18 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "643ddf85ab917f5643ec47eb79ee6db6c6158cfaf7415e39840e154eecf7176f" dependencies = [ - "strum 0.27.1", + "strum 0.27.2", ] [[package]] name = "solar-data-structures" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4022a9a35fb9914f7162ea96f3c6bf00d8066018cc90cf7939b360b1009ce028" +checksum = "3cc21b4df6061e1c825c16faf8e1f16c2341f4c46a2b2a60e03069c4453fc5ac" dependencies = [ "bumpalo", "index_vec", - "indexmap 2.7.1", + "indexmap 2.11.3", "parking_lot", "rayon", "rustc-hash", @@ -7340,7 +9118,7 @@ dependencies = [ "anstream", "anstyle", "const-hex", - "derive_more", + "derive_more 2.0.1", "dunce", "inturn", "itertools 0.14.0", @@ -7352,20 +9130,20 @@ dependencies = [ "solar-config", "solar-data-structures", "solar-macros", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", - "unicode-width 0.2.0", + "unicode-width 0.2.1", ] [[package]] name = "solar-macros" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ecd98081d2aa15f8747a484a772e059df5359c2936e8caa8fd18ecc51e4a8e" +checksum = "00b3d7b35daa205064e7965584b3144b73b38acce2257c21d01e351b8f8812d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -7399,7 +9177,7 @@ dependencies = [ "alloy-primitives", "bitflags 2.9.4", "bumpalo", - "derive_more", + "derive_more 2.0.1", "either", "once_map", "paste", @@ -7411,7 +9189,7 @@ dependencies = [ "solar-interface", "solar-macros", "solar-parse", - "strum 0.27.1", + "strum 0.27.2", "thread_local", "tracing", "typed-arena", @@ -7426,7 +9204,7 @@ dependencies = [ "bon", "chrono", "const-hex", - "derive_more", + "derive_more 2.0.1", "dunce", "home", "ignore", @@ -7434,20 +9212,26 @@ dependencies = [ "path-slash", "rayon", "regex", - "reqwest", + "reqwest 0.12.23", "sanitize-filename", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "sha2 0.10.9", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", - "toml_edit", + "toml_edit 0.22.27", "uuid 1.18.1", - "zip", + "zip 4.6.1", "zip-extract", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "spki" version = "0.7.3" @@ -7470,6 +9254,18 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + [[package]] name = "stringprep" version = "0.1.5" @@ -7495,11 +9291,20 @@ checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" [[package]] name = "strum" -version = "0.27.1" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros 0.27.1", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", ] [[package]] @@ -7512,20 +9317,32 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "strum_macros" -version = "0.27.1" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn 2.0.99", + "syn 2.0.106", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -7633,6 +9450,26 @@ dependencies = [ "sval_nested", ] +[[package]] +name = "svm-rs" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" +dependencies = [ + "dirs 5.0.1", + "fs2", + "hex", + "once_cell", + "reqwest 0.11.27", + "semver 1.0.27", + "serde", + "serde_json", + "sha2 0.10.9", + "thiserror 1.0.69", + "url", + "zip 0.6.6", +] + [[package]] name = "svm-rs" version = "0.5.19" @@ -7640,16 +9477,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11f15cc0fb280301739995e3b9f0f0dde3aecb876814f4768689f9138570cd3b" dependencies = [ "const-hex", - "dirs", - "reqwest", - "semver 1.0.26", + "dirs 6.0.0", + "reqwest 0.12.23", + "semver 1.0.27", "serde", "serde_json", "sha2 0.10.9", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.16", "url", - "zip", + "zip 4.6.1", ] [[package]] @@ -7659,9 +9496,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31affc47068aeef445accc5c3d5f7fd24f9072cae0a651cef564239003c94ff8" dependencies = [ "const-hex", - "semver 1.0.26", + "semver 1.0.27", "serde_json", - "svm-rs", + "svm-rs 0.5.19", ] [[package]] @@ -7677,9 +9514,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.99" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -7695,9 +9532,15 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -7709,13 +9552,24 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", +] + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "system-configuration-sys 0.5.0", ] [[package]] @@ -7726,7 +9580,17 @@ checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags 2.9.4", "core-foundation 0.9.4", - "system-configuration-sys", + "system-configuration-sys 0.6.0", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", ] [[package]] @@ -7753,25 +9617,36 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" dependencies = [ "fastrand", - "getrandom 0.3.1", + "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.60.2", + "windows-sys 0.61.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", ] [[package]] name = "terminal_size" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" +checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" dependencies = [ "rustix", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -7784,6 +9659,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "termtree" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" + [[package]] name = "textwrap" version = "0.16.2" @@ -7791,7 +9672,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" dependencies = [ "unicode-linebreak", - "unicode-width 0.2.0", + "unicode-width 0.2.1", ] [[package]] @@ -7805,11 +9686,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.16", ] [[package]] @@ -7820,28 +9701,27 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -7855,12 +9735,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.39" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" +checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" dependencies = [ "deranged", - "itoa", "libc", "num-conv", "num_threads", @@ -7872,15 +9751,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.20" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -7897,9 +9776,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -7907,9 +9786,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -7941,6 +9820,16 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "tokio-io-timeout" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bd86198d9ee903fedd2f9a2e72014287c0d9167e4ae43b5853007205dda1b76" +dependencies = [ + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-macros" version = "2.5.0" @@ -7949,7 +9838,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -7981,8 +9870,8 @@ dependencies = [ "pin-project-lite", "postgres-protocol", "postgres-types", - "rand 0.9.0", - "socket2 0.5.8", + "rand 0.9.2", + "socket2 0.5.10", "tokio", "tokio-util", "whoami", @@ -7990,11 +9879,21 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f63835928ca123f1bef57abbcd23bb2ba0ac9ae1235f1e65bda0d06e7786bd" +dependencies = [ + "rustls 0.23.31", "tokio", ] @@ -8019,9 +9918,12 @@ dependencies = [ "futures-util", "log", "native-tls", + "rustls 0.21.12", "tokio", "tokio-native-tls", + "tokio-rustls 0.24.1", "tungstenite 0.20.1", + "webpki-roots 0.25.4", ] [[package]] @@ -8032,19 +9934,19 @@ checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", - "rustls", + "rustls 0.23.31", "rustls-pki-types", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.3", "tungstenite 0.26.2", "webpki-roots 0.26.11", ] [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -8055,26 +9957,26 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned 0.6.9", - "toml_datetime 0.6.8", - "toml_edit", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] name = "toml" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" +checksum = "ae2a4cf385da23d1d53bc15cdfa5c2109e93d8d362393c801e87da2f72f0e201" dependencies = [ - "indexmap 2.7.1", - "serde", - "serde_spanned 1.0.0", - "toml_datetime 0.7.0", + "indexmap 2.11.3", + "serde_core", + "serde_spanned 1.0.1", + "toml_datetime 0.7.1", "toml_parser", "toml_writer", "winnow", @@ -8082,32 +9984,45 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] name = "toml_datetime" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" +checksum = "a197c0ec7d131bfc6f7e82c8442ba1595aeab35da7adbf05b6b73cd06a16b6be" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.11.3", "serde", "serde_spanned 0.6.9", - "toml_datetime 0.6.8", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2ad0b7ae9cfeef5605163839cb9221f453399f15cfb5c10be9885fcf56611f9" +dependencies = [ + "indexmap 2.11.3", + "toml_datetime 0.7.1", + "toml_parser", "winnow", ] @@ -8120,12 +10035,45 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "toml_writer" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64" +[[package]] +name = "tonic" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +dependencies = [ + "async-stream", + "async-trait", + "axum 0.6.20", + "base64 0.21.7", + "bytes", + "h2 0.3.27", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.32", + "hyper-timeout 0.4.1", + "percent-encoding", + "pin-project 1.1.10", + "prost 0.12.6", + "tokio", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tonic" version = "0.13.1" @@ -8133,25 +10081,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" dependencies = [ "async-trait", - "axum", + "axum 0.8.4", "base64 0.22.1", "bytes", - "h2", - "http 1.2.0", + "h2 0.4.12", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", - "hyper-timeout", + "hyper 1.7.0", + "hyper-timeout 0.5.2", "hyper-util", "percent-encoding", "pin-project 1.1.10", "prost 0.13.5", - "rustls-native-certs", - "socket2 0.5.8", + "rustls-native-certs 0.8.1", + "socket2 0.5.10", "tokio", - "tokio-rustls", + "tokio-rustls 0.26.3", "tokio-stream", - "tower", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project 1.1.10", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -8165,10 +10133,10 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.7.1", + "indexmap 2.11.3", "pin-project-lite", "slab", - "sync_wrapper", + "sync_wrapper 1.0.2", "tokio", "tokio-util", "tower-layer", @@ -8185,11 +10153,11 @@ dependencies = [ "bitflags 2.9.4", "bytes", "futures-util", - "http 1.2.0", + "http 1.3.1", "http-body 1.0.1", "iri-string", "pin-project-lite", - "tower", + "tower 0.5.2", "tower-layer", "tower-service", ] @@ -8224,6 +10192,7 @@ version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -8238,30 +10207,40 @@ dependencies = [ "crossbeam-channel", "thiserror 1.0.69", "time", - "tracing-subscriber 0.3.19", + "tracing-subscriber 0.3.20", ] [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", ] +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project 1.1.10", + "tracing", +] + [[package]] name = "tracing-log" version = "0.2.0" @@ -8273,6 +10252,24 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-opentelemetry" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddcf5959f39507d0d04d6413119c04f33b623f4f951ebcbdddddfad2d0623a9c" +dependencies = [ + "js-sys", + "once_cell", + "opentelemetry", + "opentelemetry_sdk", + "smallvec", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber 0.3.20", + "web-time", +] + [[package]] name = "tracing-serde" version = "0.2.0" @@ -8294,25 +10291,47 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "serde", "serde_json", "sharded-slab", "smallvec", "thread_local", + "time", "tracing", "tracing-core", "tracing-log", "tracing-serde", ] +[[package]] +name = "tracing-test" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "557b891436fe0d5e0e363427fc7f217abf9ccd510d5136549847bdcbcd011d68" +dependencies = [ + "tracing-core", + "tracing-subscriber 0.3.20", + "tracing-test-macro", +] + +[[package]] +name = "tracing-test-macro" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" +dependencies = [ + "quote", + "syn 2.0.106", +] + [[package]] name = "trezor-client" version = "0.1.4" @@ -8321,7 +10340,7 @@ checksum = "10636211ab89c96ed2824adc5ec0d081e1080aeacc24c37abb318dcb31dcc779" dependencies = [ "byteorder", "hex", - "protobuf", + "protobuf 3.3.0", "rusb", "thiserror 1.0.69", "tracing", @@ -8353,6 +10372,7 @@ dependencies = [ "log", "native-tls", "rand 0.8.5", + "rustls 0.21.12", "sha1", "thiserror 1.0.69", "url", @@ -8367,22 +10387,21 @@ checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13" dependencies = [ "bytes", "data-encoding", - "http 1.2.0", + "http 1.3.1", "httparse", "log", - "rand 0.9.0", - "rustls", + "rand 0.9.2", + "rustls 0.23.31", "rustls-pki-types", "sha1", - "thiserror 2.0.12", + "thiserror 2.0.16", "utf-8", ] [[package]] name = "tycho-client" -version = "0.83.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da113f5301ba1fb8e4441df405afa1e7b728a83017681b94851c5bc36d758dc" +version = "0.85.0" +source = "git+https://github.com/propeller-heads/tycho-indexer.git?rev=28d013a906c497d95e27f01f48fc887fb22dbbbc#28d013a906c497d95e27f01f48fc887fb22dbbbc" dependencies = [ "anyhow", "async-trait", @@ -8392,7 +10411,7 @@ dependencies = [ "hex", "hyper 0.14.32", "lru 0.12.5", - "reqwest", + "reqwest 0.12.23", "serde", "serde_json", "thiserror 1.0.69", @@ -8400,16 +10419,15 @@ dependencies = [ "tokio-tungstenite 0.20.1", "tracing", "tracing-appender", - "tracing-subscriber 0.3.19", + "tracing-subscriber 0.3.20", "tycho-common", "uuid 1.18.1", ] [[package]] name = "tycho-common" -version = "0.83.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ecbbf6f701a01569e351d19ee3a3e36418e8d1be539fd6ed925137eb84a2b2" +version = "0.85.0" +source = "git+https://github.com/propeller-heads/tycho-indexer.git?rev=28d013a906c497d95e27f01f48fc887fb22dbbbc#28d013a906c497d95e27f01f48fc887fb22dbbbc" dependencies = [ "anyhow", "async-trait", @@ -8430,11 +10448,41 @@ dependencies = [ "uuid 1.18.1", ] +[[package]] +name = "tycho-ethereum" +version = "0.85.0" +source = "git+https://github.com/propeller-heads/tycho-indexer.git?rev=28d013a906c497d95e27f01f48fc887fb22dbbbc#28d013a906c497d95e27f01f48fc887fb22dbbbc" +dependencies = [ + "alloy", + "alloy-rpc-types-trace", + "anyhow", + "async-trait", + "chrono", + "clap", + "contracts", + "ethcontract", + "ethers", + "ethrpc", + "futures 0.3.31", + "humantime", + "rand 0.8.5", + "reqwest 0.11.27", + "serde", + "serde_json", + "thiserror 1.0.69", + "tokio", + "tracing", + "tracing-test", + "tycho-common", + "unicode-segmentation", + "url", + "web3", +] + [[package]] name = "tycho-execution" version = "0.124.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9da3bca6f82da18f6e59a995ba1dfe416a070a0e0a1dc58ef5bc5a9f288de783" +source = "git+https://github.com/propeller-heads/tycho-execution.git?rev=14a1e497999999c5058dfaf9eee51bec0c025d12#14a1e497999999c5058dfaf9eee51bec0c025d12" dependencies = [ "alloy", "chrono", @@ -8454,8 +10502,8 @@ dependencies = [ [[package]] name = "tycho-simulation" -version = "0.159.0" -source = "git+https://github.com/propeller-heads/tycho-simulation.git?tag=0.159.0#d9e801b60adc5b31942ef5a5ff0701d3459d8ba3" +version = "0.160.1" +source = "git+https://github.com/propeller-heads/tycho-simulation.git?rev=6585823a859a29bd64600cc1d2fa7d502d48d3e6#6585823a859a29bd64600cc1d2fa7d502d48d3e6" dependencies = [ "alloy", "async-stream", @@ -8469,19 +10517,20 @@ dependencies = [ "foundry-evm", "futures 0.3.31", "hex", - "http 1.2.0", + "http 1.3.1", "itertools 0.10.5", "lazy_static", "mini-moka", "num-bigint", "num-traits", "prost 0.13.5", - "reqwest", + "reqwest 0.12.23", "revm", "revm-inspectors", "serde", "serde_json", "solar-config", + "solar-data-structures", "strum 0.25.0", "strum_macros 0.25.3", "thiserror 1.0.69", @@ -8534,7 +10583,7 @@ checksum = "35f5380909ffc31b4de4f4bdf96b877175a016aa2ca98cee39fcfd8c4d53d952" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -8596,9 +10645,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-linebreak" @@ -8635,9 +10684,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" [[package]] name = "unicode-xid" @@ -8651,6 +10700,12 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + [[package]] name = "untrusted" version = "0.9.0" @@ -8659,13 +10714,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", - "idna", + "idna 1.1.0", "percent-encoding", + "serde", ] [[package]] @@ -8680,12 +10736,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -8704,7 +10754,7 @@ version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5afb1a60e207dca502682537fefcfd9921e71d0b83e9576060f09abc6efab23" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.11.3", "serde", "serde_json", "utoipa-gen", @@ -8719,7 +10769,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -8728,7 +10778,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "serde", ] @@ -8738,9 +10788,9 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.1", + "getrandom 0.3.3", "js-sys", - "rand 0.9.0", + "rand 0.9.2", "serde", "uuid-macro-internal", "wasm-bindgen", @@ -8754,7 +10804,7 @@ checksum = "d9384a660318abfbd7f8932c34d67e4d1ec511095f95972ddc01e19d7ba8413f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -8858,18 +10908,53 @@ dependencies = [ ] [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +name = "warp" +version = "0.3.7" +source = "git+https://github.com/cowprotocol/warp.git?rev=586244e#586244eabb564b9f9573436ee0e23edfc73f4861" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "headers", + "http 0.2.12", + "hyper 0.14.32", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project 1.1.10", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-util", + "tower-service", + "tracing", +] [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" dependencies = [ - "wit-bindgen-rt", + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", ] [[package]] @@ -8880,35 +10965,36 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "a0b221ff421256839509adbb55998214a70d829d3a28c69b4a6672e9d2a42f67" dependencies = [ "cfg-if", "js-sys", @@ -8919,9 +11005,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8929,22 +11015,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf" dependencies = [ "unicode-ident", ] @@ -8978,9 +11064,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "fbe734895e869dc429d78c4b433f8d17d95f8d05317440b4fad5ab2d33e596dc" dependencies = [ "js-sys", "wasm-bindgen", @@ -8996,6 +11082,38 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web3" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5388522c899d1e1c96a4c307e3797e0f697ba7c77dd8e0e625ecba9dd0342937" +dependencies = [ + "arrayvec", + "derive_more 0.99.20", + "ethabi", + "ethereum-types", + "futures 0.3.31", + "futures-timer", + "hex", + "idna 0.4.0", + "jsonrpc-core", + "log", + "once_cell", + "parking_lot", + "pin-project 1.1.10", + "rlp", + "secp256k1 0.27.0", + "serde", + "serde_json", + "tiny-keccak", +] + +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + [[package]] name = "webpki-roots" version = "0.26.11" @@ -9016,11 +11134,11 @@ dependencies = [ [[package]] name = "whoami" -version = "1.5.2" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ - "redox_syscall", + "libredox", "wasite", "web-sys", ] @@ -9053,7 +11171,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.48.0", ] [[package]] @@ -9064,11 +11182,37 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.52.0" +version = "0.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link 0.2.0", + "windows-result 0.4.0", + "windows-strings 0.5.0", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -9077,15 +11221,21 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + [[package]] name = "windows-registry" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] @@ -9094,7 +11244,16 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -9103,7 +11262,25 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" +dependencies = [ + "windows-link 0.2.0", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", ] [[package]] @@ -9133,6 +11310,30 @@ dependencies = [ "windows-targets 0.53.3", ] +[[package]] +name = "windows-sys" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +dependencies = [ + "windows-link 0.2.0", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -9155,7 +11356,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -9166,6 +11367,12 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -9178,6 +11385,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -9190,6 +11403,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -9214,6 +11433,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -9226,6 +11451,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -9238,6 +11469,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -9250,6 +11487,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -9272,25 +11515,26 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.33.0" +name = "winreg" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "bitflags 2.9.4", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] -name = "write16" -version = "1.0.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "ws_stream_wasm" @@ -9304,8 +11548,8 @@ dependencies = [ "log", "pharos", "rustc_version 0.4.1", - "send_wrapper", - "thiserror 2.0.12", + "send_wrapper 0.6.0", + "thiserror 2.0.16", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -9332,6 +11576,12 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + [[package]] name = "yansi" version = "1.0.1" @@ -9343,9 +11593,9 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -9355,55 +11605,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", "synstructure", ] [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "byteorder", - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" -dependencies = [ - "zerocopy-derive 0.8.23", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.99", + "syn 2.0.106", ] [[package]] @@ -9423,7 +11652,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", "synstructure", ] @@ -9444,14 +11673,25 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", ] [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -9460,13 +11700,33 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.99", + "syn 2.0.106", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes", + "byteorder", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", ] [[package]] @@ -9478,7 +11738,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.7.1", + "indexmap 2.11.3", "memchr", "zopfli", ] @@ -9490,8 +11750,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fa5b9958fd0b5b685af54f2c3fa21fca05fe295ebaf3e77b6d24d96c4174037" dependencies = [ "log", - "thiserror 2.0.12", - "zip", + "thiserror 2.0.16", + "zip 4.6.1", ] [[package]] @@ -9511,3 +11771,32 @@ dependencies = [ "log", "simd-adler32", ] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/protocol-testing/Cargo.toml b/protocol-testing/Cargo.toml index 4370c43..41ba453 100644 --- a/protocol-testing/Cargo.toml +++ b/protocol-testing/Cargo.toml @@ -9,15 +9,18 @@ miette = { version = "7.6.0", features = ["fancy"] } # Logging & Tracing tracing = "0.1.37" # Tycho dependencies -tycho-common = "0.83.4" -tycho-client = "0.83.4" -tycho-simulation = { git = "https://github.com/propeller-heads/tycho-simulation.git", tag = "0.159.0", features = ["evm"] } +tycho-common = { git = "https://github.com/propeller-heads/tycho-indexer.git", rev = "28d013a906c497d95e27f01f48fc887fb22dbbbc" } +tycho-client = { git = "https://github.com/propeller-heads/tycho-indexer.git", rev = "28d013a906c497d95e27f01f48fc887fb22dbbbc" } +tycho-simulation = { git = "https://github.com/propeller-heads/tycho-simulation.git", rev = "6585823a859a29bd64600cc1d2fa7d502d48d3e6" } ## TODO: for local development -#tycho-simulation = { path = "../../tycho-simulation" } +#tycho-simulation = { path = "../../tycho-simulation", features = ["evm"] } +tycho-ethereum = { git = "https://github.com/propeller-heads/tycho-indexer.git", rev = "28d013a906c497d95e27f01f48fc887fb22dbbbc", features = ["onchain_data"] } num-bigint = "0.4" num-traits = "0.2" +num-rational = "0.4.2" # EVM dependencies -alloy = { version = "1.0.27", features = ["arbitrary", "json", "dyn-abi", "sol-types", "contract", "provider-http"] } +alloy = { version = "1.0.30", features = ["arbitrary", "json", "dyn-abi", "sol-types", "contract", "provider-http", "providers", "signer-local", "rpc-types-eth", "rpc-types-trace"] } +reqwest = { version = "0.12", features = ["json"] } tokio = { version = "1", features = ["full"] } serde_json = "1.0.140" clap = "4.5.31" @@ -33,3 +36,7 @@ colored = "3.0.0" similar = "2.7.0" termsize = "0.1.9" itertools = "0.14.0" +# Foundry dependencies (same versions as tycho-simulation) +foundry-config = { git = "https://github.com/foundry-rs/foundry", rev = "5a552bb0de7126fa35170fd84532bbd3d40cd348" } +foundry-evm = { git = "https://github.com/foundry-rs/foundry", rev = "5a552bb0de7126fa35170fd84532bbd3d40cd348" } +revm = { version = "27.0.3", features = ["alloydb", "serde"] } diff --git a/protocol-testing/src/config.rs b/protocol-testing/src/config.rs index 1fe6464..ca512af 100644 --- a/protocol-testing/src/config.rs +++ b/protocol-testing/src/config.rs @@ -22,6 +22,8 @@ pub struct ProtocolComponentWithTestConfig { pub base: ProtocolComponentExpectation, #[serde(default = "default_false")] pub skip_simulation: bool, + #[serde(default = "default_false")] + pub skip_execution: bool, } impl ProtocolComponentExpectation { diff --git a/protocol-testing/src/encoding.rs b/protocol-testing/src/encoding.rs index 19550ef..587d60f 100644 --- a/protocol-testing/src/encoding.rs +++ b/protocol-testing/src/encoding.rs @@ -1,3 +1,9 @@ +//! Transaction encoding utilities for swap solutions. +//! +//! This module provides functions to encode swap parameters into executable transactions +//! using the Tycho framework. It handles the conversion of high-level swap +//! specifications into low-level transaction data that can be executed on-chain. + use std::str::FromStr; use alloy::{primitives::Keccak256, sol_types::SolValue}; @@ -16,6 +22,51 @@ use tycho_simulation::{ }, }; +use crate::execution::EXECUTORS_JSON; + +/// Creates a Solution for the given swap parameters. +/// +/// # Parameters +/// - `component`: The protocol component to swap through +/// - `token_in`: Input token address +/// - `token_out`: Output token address +/// - `amount_in`: Amount of input token to swap +/// - `amount_out`: Expected amount of output token +/// +/// # Returns +/// A `Result` containing the solution, or an error if creation fails. +pub fn get_solution( + component: ProtocolComponent, + token_in: Bytes, + token_out: Bytes, + amount_in: BigUint, + amount_out: BigUint, +) -> miette::Result { + let alice_address = Bytes::from_str("0xcd09f75E2BF2A4d11F3AB23f1389FcC1621c0cc2") + .into_diagnostic() + .wrap_err("Failed to parse Alice's address for Tycho router encoding")?; + + let swap = SwapBuilder::new(component, token_in.clone(), token_out.clone()).build(); + + let slippage = 0.0025; // 0.25% slippage + let bps = BigUint::from(10_000u32); + let slippage_percent = BigUint::from((slippage * 10000.0) as u32); + let multiplier = &bps - slippage_percent; + let min_amount_out = (amount_out * &multiplier) / &bps; + + Ok(Solution { + sender: alice_address.clone(), + receiver: alice_address.clone(), + given_token: token_in, + given_amount: amount_in, + checked_token: token_out, + exact_out: false, + checked_amount: min_amount_out, + swaps: vec![swap], + ..Default::default() + }) +} + /// Encodes swap data for the Tycho router. /// /// Assumes a single swap solution and encodes the data ready to be used by the Tycho router @@ -29,7 +80,7 @@ use tycho_simulation::{ /// - `amount_out`: Expected amount of output token /// /// # Returns -/// A `Result` containing the encoded transaction data for the Tycho +/// A `Result` containing the encoded transaction data for the Tycho /// router, or an error if encoding fails. pub fn encode_swap( component: ProtocolComponent, @@ -37,46 +88,34 @@ pub fn encode_swap( token_out: Bytes, amount_in: BigUint, amount_out: BigUint, -) -> miette::Result { +) -> miette::Result<(Transaction, Solution)> { let chain: tycho_common::models::Chain = Chain::Ethereum.into(); - let alice_address = Bytes::from_str("0xcd09f75E2BF2A4d11F3AB23f1389FcC1621c0cc2") - .into_diagnostic() - .wrap_err("Failed to parse Alice's address for Tycho router encoding")?; + let encoder = TychoRouterEncoderBuilder::new() .chain(chain) .user_transfer_type(UserTransferType::TransferFrom) + .executors_addresses(EXECUTORS_JSON.to_string()) + .historical_trade() .build() .into_diagnostic() .wrap_err("Failed to build encoder")?; - let swap = SwapBuilder::new(component, token_in.clone(), token_out.clone()).build(); - - let slippage = 0.0025; // 0.25% slippage - let bps = BigUint::from(10_000u32); - let slippage_percent = BigUint::from((slippage * 10000.0) as u32); - let multiplier = &bps - slippage_percent; - let min_amount_out = (amount_out * &multiplier) / &bps; - - let solution = Solution { - sender: alice_address.clone(), - receiver: alice_address.clone(), - given_token: token_in, - given_amount: amount_in, - checked_token: token_out, - exact_out: false, - checked_amount: min_amount_out, - swaps: vec![swap], - ..Default::default() - }; + let solution = get_solution(component, token_in, token_out, amount_in, amount_out)?; let encoded_solution = encoder .encode_solutions(vec![solution.clone()]) .into_diagnostic() - .wrap_err("Failed to encode router calldata")?[0] + .wrap_err("Failed to encode solution")?[0] .clone(); - encode_tycho_router_call(encoded_solution, &solution, &chain.wrapped_native_token().address) - .into_diagnostic() + let transaction = encode_tycho_router_call( + encoded_solution, + &solution, + &chain.wrapped_native_token().address, + ) + .into_diagnostic() + .wrap_err("Failed to encode router calldata")?; + Ok((transaction, solution)) } /// Encodes a transaction for the Tycho Router using `singleSwap` method and regular token diff --git a/protocol-testing/src/execution.rs b/protocol-testing/src/execution.rs new file mode 100644 index 0000000..588cbff --- /dev/null +++ b/protocol-testing/src/execution.rs @@ -0,0 +1,328 @@ +//! Swap execution simulation module. +//! +//! This module provides functionality to simulate executing swaps through RPC requests +//! using state overwrites and historical blockchain data. It allows testing swap execution +//! against specific block states without actually performing on-chain transactions. + +use std::{collections::HashMap, str::FromStr, sync::LazyLock}; + +use alloy::{ + primitives::{Address, U256}, + rpc::types::{Block, TransactionRequest}, +}; +use miette::{miette, IntoDiagnostic, WrapErr}; +use num_bigint::BigUint; +use serde_json::Value; +use tracing::info; +use tycho_common::traits::{AllowanceSlotDetector, BalanceSlotDetector}; +use tycho_ethereum::entrypoint_tracer::{ + allowance_slot_detector::{AllowanceSlotDetectorConfig, EVMAllowanceSlotDetector}, + balance_slot_detector::{BalanceSlotDetectorConfig, EVMBalanceSlotDetector}, +}; +use tycho_simulation::{ + evm::protocol::u256_num::u256_to_biguint, tycho_execution::encoding::models::Solution, +}; + +use crate::rpc::RPCProvider; +const ROUTER_BYTECODE_JSON: &str = include_str!("../../evm/test/router/TychoRouter.runtime.json"); +pub const EXECUTORS_JSON: &str = include_str!("../test_executor_addresses.json"); + +// Include all executor bytecode files at compile time +const UNISWAP_V2_BYTECODE_JSON: &str = + include_str!("../../evm/test/executors/UniswapV2.runtime.json"); +const UNISWAP_V3_BYTECODE_JSON: &str = + include_str!("../../evm/test/executors/UniswapV3.runtime.json"); +const UNISWAP_V4_BYTECODE_JSON: &str = + include_str!("../../evm/test/executors/UniswapV4.runtime.json"); +const BALANCER_V2_BYTECODE_JSON: &str = + include_str!("../../evm/test/executors/BalancerV2.runtime.json"); +const BALANCER_V3_BYTECODE_JSON: &str = + include_str!("../../evm/test/executors/BalancerV3.runtime.json"); +const CURVE_BYTECODE_JSON: &str = include_str!("../../evm/test/executors/Curve.runtime.json"); +const MAVERICK_V2_BYTECODE_JSON: &str = + include_str!("../../evm/test/executors/MaverickV2.runtime.json"); +const EKUBO_BYTECODE_JSON: &str = include_str!("../../evm/test/executors/Ekubo.runtime.json"); + +/// Mapping from protocol component patterns to executor bytecode JSON strings +static EXECUTOR_MAPPING: LazyLock> = LazyLock::new(|| { + let mut map = HashMap::new(); + map.insert("uniswap_v2", UNISWAP_V2_BYTECODE_JSON); + map.insert("sushiswap", UNISWAP_V2_BYTECODE_JSON); + map.insert("pancakeswap_v2", UNISWAP_V2_BYTECODE_JSON); + map.insert("uniswap_v3", UNISWAP_V3_BYTECODE_JSON); + map.insert("pancakeswap_v3", UNISWAP_V3_BYTECODE_JSON); + map.insert("uniswap_v4", UNISWAP_V4_BYTECODE_JSON); + map.insert("balancer_v2", BALANCER_V2_BYTECODE_JSON); + map.insert("balancer_v3", BALANCER_V3_BYTECODE_JSON); + map.insert("curve", CURVE_BYTECODE_JSON); + map.insert("maverick_v2", MAVERICK_V2_BYTECODE_JSON); + map.insert("ekubo", EKUBO_BYTECODE_JSON); + map +}); + +/// Executor addresses loaded from test_executor_addresses.json at startup +pub static EXECUTOR_ADDRESSES: LazyLock> = LazyLock::new(|| { + let json_value: Value = serde_json::from_str(&EXECUTORS_JSON) + .expect("Failed to parse test_executor_addresses.json"); + + let ethereum_addresses = json_value["ethereum"] + .as_object() + .expect("Missing 'ethereum' key in test_executor_addresses.json"); + + let mut addresses = HashMap::new(); + for (protocol_name, address_value) in ethereum_addresses { + let address_str = address_value + .as_str() + .unwrap_or_else(|| panic!("Invalid address format for protocol '{protocol_name}'")); + + let address = Address::from_str(address_str).unwrap_or_else(|_| { + panic!("Invalid address '{address_str}' for protocol '{protocol_name}'") + }); + + addresses.insert(protocol_name.clone(), address); + } + addresses +}); + +#[derive(Debug, Clone)] +pub struct StateOverride { + pub code: Option>, + pub balance: Option, + pub state_diff: HashMap, +} + +impl StateOverride { + pub fn new() -> Self { + Self { code: None, balance: None, state_diff: HashMap::new() } + } + + pub fn with_code(mut self, code: Vec) -> Self { + self.code = Some(code); + self + } + + pub fn with_balance(mut self, balance: U256) -> Self { + self.balance = Some(balance); + self + } + + pub fn with_state_diff( + mut self, + slot: alloy::primitives::Bytes, + value: alloy::primitives::Bytes, + ) -> Self { + self.state_diff.insert(slot, value); + self + } +} + +/// Get executor bytecode JSON based on component ID +fn get_executor_bytecode_json(component_id: &str) -> miette::Result<&'static str> { + for (pattern, executor_json) in EXECUTOR_MAPPING.iter() { + if component_id.contains(pattern) { + return Ok(executor_json); + } + } + Err(miette!("Unknown component type '{}' - no matching executor found", component_id)) +} + +/// Get executor address for a given component ID +fn get_executor_address(component_id: &str) -> miette::Result
{ + if let Some(&address) = EXECUTOR_ADDRESSES.get(component_id) { + return Ok(address); + } + Err(miette!("No executor address found for component type '{}'", component_id)) +} + +/// Load executor bytecode from embedded constants based on solution component +fn load_executor_bytecode(solution: &Solution) -> miette::Result> { + let first_swap = solution.swaps.first().unwrap(); + let component_id = &first_swap.component; + + let executor_json = get_executor_bytecode_json(&component_id.protocol_system)?; + + let json_value: serde_json::Value = serde_json::from_str(executor_json) + .into_diagnostic() + .wrap_err("Failed to parse executor JSON")?; + + let bytecode_str = json_value["runtimeBytecode"] + .as_str() + .ok_or_else(|| miette!("No bytecode field found in executor JSON"))?; + + // Remove 0x prefix if present + let bytecode_hex = + if let Some(stripped) = bytecode_str.strip_prefix("0x") { stripped } else { bytecode_str }; + + hex::decode(bytecode_hex) + .into_diagnostic() + .wrap_err("Failed to decode executor bytecode from hex") +} + +/// Calculate gas fees based on block base fee +fn calculate_gas_fees(block_header: &Block) -> miette::Result<(U256, U256)> { + let base_fee = block_header + .header + .base_fee_per_gas + .ok_or_else(|| miette::miette!("Block does not have base fee (pre-EIP-1559)"))?; + // Set max_priority_fee_per_gas to a reasonable value (2 Gwei) + let max_priority_fee_per_gas = U256::from(2_000_000_000u64); // 2 Gwei + // Set max_fee_per_gas to base_fee * 2 + max_priority_fee_per_gas to handle fee fluctuations + let max_fee_per_gas = U256::from(base_fee) * U256::from(2u64) + max_priority_fee_per_gas; + + info!( + "Gas pricing: base_fee={}, max_priority_fee_per_gas={}, max_fee_per_gas={}", + base_fee, max_priority_fee_per_gas, max_fee_per_gas + ); + + Ok((max_fee_per_gas, max_priority_fee_per_gas)) +} + +/// Set up all state overrides needed for simulation +async fn setup_state_overrides( + solution: &Solution, + transaction: &tycho_simulation::tycho_execution::encoding::models::Transaction, + user_address: Address, + executor_bytecode: &[u8], + rpc_url: String, + block: &Block, +) -> miette::Result> { + let mut state_overwrites = HashMap::new(); + let token_address = Address::from_slice(&solution.given_token[..20]); + + // Extract executor address from the encoded solution's swaps data. + // The solution should only have one swap for the test, so this should be safe. + let executor_address = if let Some(first_swap) = solution.swaps.first() { + get_executor_address(&first_swap.component.protocol_system)? + } else { + return Err(miette!("No swaps in solution - cannot determine executor address")); + }; + + // Add bytecode overwrite for the executor + state_overwrites + .insert(executor_address, StateOverride::new().with_code(executor_bytecode.to_vec())); + + // Add ETH balance override for the user to ensure they have enough gas funds + state_overwrites.insert( + user_address, + StateOverride::new().with_balance(U256::from_str("100000000000000000000").unwrap()), // 100 ETH + ); + + let detector = EVMBalanceSlotDetector::new(BalanceSlotDetectorConfig { + rpc_url: rpc_url.clone(), + ..Default::default() + }) + .into_diagnostic()?; + + let results = detector + .detect_balance_slots( + &[solution.given_token.clone()], + (**user_address).into(), + (*block.header.hash).into(), + ) + .await; + + let balance_slot = + if let Some(Ok((_storage_addr, slot))) = results.get(&solution.given_token.clone()) { + slot + } else { + return Err(miette!("Couldn't find balance storage slot for token {token_address}")); + }; + + let detector = EVMAllowanceSlotDetector::new(AllowanceSlotDetectorConfig { + rpc_url, + ..Default::default() + }) + .into_diagnostic()?; + + let results = detector + .detect_allowance_slots( + &[solution.given_token.clone()], + (**user_address).into(), + transaction.to.clone(), // tycho router + (*block.header.hash).into(), + ) + .await; + + let allowance_slot = + if let Some(Ok((_storage_addr, slot))) = results.get(&solution.given_token.clone()) { + slot + } else { + return Err(miette!("Couldn't find allowance storage slot for token {token_address}")); + }; + + state_overwrites.insert( + token_address, + StateOverride::new() + .with_state_diff( + alloy::primitives::Bytes::from(allowance_slot.to_vec()), + alloy::primitives::Bytes::from(U256::MAX.to_be_bytes::<32>()), + ) + .with_state_diff( + alloy::primitives::Bytes::from(balance_slot.to_vec()), + alloy::primitives::Bytes::from(U256::MAX.to_be_bytes::<32>()), + ), + ); + + Ok(state_overwrites) +} + +/// Simulate a trade using eth_call for historical blocks +pub async fn simulate_trade_with_eth_call( + rpc_provider: &RPCProvider, + transaction: &tycho_simulation::tycho_execution::encoding::models::Transaction, + solution: &Solution, + block_number: u64, + block: &Block, +) -> miette::Result { + let executor_bytecode = load_executor_bytecode(solution)?; + let user_address = Address::from_slice(&solution.sender[..20]); + let (max_fee_per_gas, max_priority_fee_per_gas) = calculate_gas_fees(block)?; + // Convert main transaction to alloy TransactionRequest + let execution_tx = TransactionRequest::default() + .to(Address::from_slice(&transaction.to[..20])) + .input(transaction.data.clone().into()) + .value(U256::from_str(&transaction.value.to_string()).unwrap_or_default()) + .from(user_address) + .max_fee_per_gas( + max_fee_per_gas + .try_into() + .unwrap_or(u128::MAX), + ) + .max_priority_fee_per_gas( + max_priority_fee_per_gas + .try_into() + .unwrap_or(u128::MAX), + ); + let tycho_router_address = Address::from_slice(&transaction.to[..20]); + + // Copy router storage and code from current block to historical block + let router_override = rpc_provider + .copy_contract_storage_and_code(tycho_router_address, ROUTER_BYTECODE_JSON) + .await + .wrap_err("Failed to create router override")?; + + // Set up state overrides including router override + let mut state_overwrites = setup_state_overrides( + solution, + transaction, + user_address, + &executor_bytecode, + rpc_provider.url.to_string(), + block, + ) + .await?; // Include executor override for historical blocks + + // Add the router override + state_overwrites.insert(tycho_router_address, router_override); + + let execution_amount_out = rpc_provider + .simulate_transactions_with_tracing(execution_tx, block_number, state_overwrites) + .await + .map_err(|e| { + info!("Execution transaction failed with error: {}", e); + e + }) + .wrap_err("Execution simulation failed")?; + + Ok(u256_to_biguint(execution_amount_out)) +} diff --git a/protocol-testing/src/main.rs b/protocol-testing/src/main.rs index ed230a5..58f07b9 100644 --- a/protocol-testing/src/main.rs +++ b/protocol-testing/src/main.rs @@ -1,8 +1,10 @@ mod adapter_builder; mod config; mod encoding; +mod execution; mod rpc; mod test_runner; +mod traces; mod tycho_rpc; mod tycho_runner; mod utils; @@ -38,7 +40,11 @@ struct Args { /// Enable tracing during vm simulations #[arg(long, default_value_t = false)] - vm_traces: bool, + vm_simulation_traces: bool, + + /// Enable tracing during execution simulations + #[arg(long, default_value_t = false)] + execution_traces: bool, } impl Args { @@ -91,7 +97,8 @@ fn main() -> miette::Result<()> { args.package, args.match_test, args.db_url, - args.vm_traces, + args.vm_simulation_traces, + args.execution_traces, ); test_runner.run_tests() diff --git a/protocol-testing/src/rpc.rs b/protocol-testing/src/rpc.rs index 07b6c88..43dd0b4 100644 --- a/protocol-testing/src/rpc.rs +++ b/protocol-testing/src/rpc.rs @@ -1,13 +1,31 @@ +use std::{collections::HashMap, str::FromStr}; + use alloy::{ contract::{ContractInstance, Interface}, dyn_abi::DynSolValue, eips::eip1898::BlockId, - primitives::{address, Address, U256}, + primitives::{address, keccak256, map::AddressHashMap, Address, FixedBytes, U256}, providers::{Provider, ProviderBuilder}, - rpc::types::Block, + rpc::types::{ + state::AccountOverride, + trace::geth::{ + GethDebugBuiltInTracerType, GethDebugTracerType, GethDebugTracingCallOptions, + GethDebugTracingOptions, + }, + Block, TransactionRequest, + }, + sol_types::SolValue, transports::http::reqwest::Url, }; use miette::{IntoDiagnostic, WrapErr}; +use serde_json::Value; +use tracing::info; +use tycho_common::Bytes; + +use crate::{ + execution::{StateOverride, EXECUTOR_ADDRESSES}, + traces::print_call_trace, +}; const NATIVE_ALIASES: &[Address] = &[ address!("0x0000000000000000000000000000000000000000"), @@ -17,13 +35,14 @@ const NATIVE_ALIASES: &[Address] = &[ const ERC_20_ABI: &str = r#"[{"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"}]"#; pub struct RPCProvider { - url: Url, + pub url: Url, + trace: bool, } impl RPCProvider { - pub fn new(url: String) -> Self { + pub fn new(url: String, trace: bool) -> Self { let url = url.as_str().parse().unwrap(); - RPCProvider { url } + RPCProvider { url, trace } } pub async fn get_token_balance( @@ -81,6 +100,216 @@ impl RPCProvider { .wrap_err("Failed to fetch block header") .and_then(|block_opt| block_opt.ok_or_else(|| miette::miette!("Block not found"))) } + + /// Helper function to get the contract's storage at the given slot at the latest block. + pub async fn get_storage_at( + &self, + contract_address: Address, + slot: FixedBytes<32>, + ) -> miette::Result> { + let provider = ProviderBuilder::new().connect_http(self.url.clone()); + let storage_value = provider + .get_storage_at(contract_address, slot.into()) + .await + .into_diagnostic() + .wrap_err("Failed to fetch storage slot")?; + + Ok(storage_value.into()) + } + + pub async fn copy_contract_storage_and_code( + &self, + contract_address: Address, + router_bytecode_json: &str, + ) -> miette::Result { + let json_value: serde_json::Value = serde_json::from_str(router_bytecode_json) + .into_diagnostic() + .wrap_err("Failed to parse router JSON")?; + + let bytecode_str = json_value["runtimeBytecode"] + .as_str() + .ok_or_else(|| miette::miette!("No runtimeBytecode field found in router JSON"))?; + + // Remove 0x prefix if present + let bytecode_hex = if let Some(stripped) = bytecode_str.strip_prefix("0x") { + stripped + } else { + bytecode_str + }; + + let router_bytecode = hex::decode(bytecode_hex) + .into_diagnostic() + .wrap_err("Failed to decode router bytecode from hex")?; + + // Start with the router bytecode override + let mut state_override = StateOverride::new().with_code(router_bytecode); + + for (protocol_name, &executor_address) in EXECUTOR_ADDRESSES.iter() { + let storage_slot = self.calculate_executor_storage_slot(executor_address); + + match self + .get_storage_at(contract_address, storage_slot) + .await + { + Ok(value) => { + state_override = state_override.with_state_diff( + alloy::primitives::Bytes::from(storage_slot.to_vec()), + alloy::primitives::Bytes::from(value.to_vec()), + ); + } + Err(e) => { + info!( + "Failed to fetch executor approval for {} ({:?}): {}", + protocol_name, executor_address, e + ); + } + } + } + Ok(state_override) + } + + /// Calculate storage slot for Solidity mapping. + /// + /// The solidity code: + /// keccak256(abi.encodePacked(bytes32(key), bytes32(slot))) + pub fn calculate_executor_storage_slot(&self, key: Address) -> FixedBytes<32> { + // Convert key (20 bytes) to 32-byte left-padded array (uint256) + let mut key_bytes = [0u8; 32]; + key_bytes[12..].copy_from_slice(key.as_slice()); + + // The base of the executor storage slot is 1, since there is only one + // variable that is initialized before it (which is _roles in AccessControl.sol). + // In this case, _roles gets slot 0. + // The slots are given in order to the parent contracts' variables first and foremost. + let slot = U256::from(1); + + // Convert U256 slot to 32-byte big-endian array + let slot_bytes = slot.to_be_bytes::<32>(); + + // Concatenate key_bytes + slot_bytes, then keccak hash + let mut buf = [0u8; 64]; + buf[..32].copy_from_slice(&key_bytes); + buf[32..].copy_from_slice(&slot_bytes); + keccak256(buf) + } + + fn bytes_to_fixed_32(bytes: &[u8]) -> [u8; 32] { + let mut arr = [0u8; 32]; + let len = bytes.len().min(32); + // Right-pad by copying to the end of the array + arr[32 - len..].copy_from_slice(&bytes[bytes.len() - len..]); + arr + } + + pub async fn simulate_transactions_with_tracing( + &self, + transaction: TransactionRequest, + block_number: u64, + state_overwrites: HashMap, + ) -> miette::Result { + let provider = ProviderBuilder::new().connect_http(self.url.clone()); + // Convert our StateOverride to alloy's state override format + let mut alloy_state_overrides = AddressHashMap::default(); + for (address, override_data) in state_overwrites { + let mut account_override = AccountOverride::default(); + + if let Some(code) = override_data.code { + account_override.code = Some(alloy::primitives::Bytes::from(code)); + } + + if let Some(balance) = override_data.balance { + account_override.balance = Some(balance); + } + + if !override_data.state_diff.is_empty() { + // Convert Bytes to FixedBytes<32> for storage slots + let mut state_diff = HashMap::default(); + for (slot, value) in override_data.state_diff { + let slot_bytes = Self::bytes_to_fixed_32(&slot); + let value_bytes = Self::bytes_to_fixed_32(&value); + state_diff.insert(FixedBytes(slot_bytes), FixedBytes(value_bytes)); + } + account_override.state_diff = Some(state_diff); + } + + alloy_state_overrides.insert(address, account_override); + } + + // Configure tracing options - use callTracer for better formatted results + let tracing_options = GethDebugTracingOptions { + tracer: Some(GethDebugTracerType::BuiltInTracer( + GethDebugBuiltInTracerType::CallTracer, + )), + config: Default::default(), + tracer_config: Default::default(), + timeout: None, + }; + + let trace_options = GethDebugTracingCallOptions { + tracing_options, + state_overrides: if alloy_state_overrides.is_empty() { + None + } else { + Some(alloy_state_overrides) + }, + block_overrides: None, + }; + + let result: Value = provider + .client() + .request("debug_traceCall", (transaction, BlockId::from(block_number), trace_options)) + .await + .into_diagnostic() + .wrap_err("Failed to debug trace call many")?; + + if self.trace { + print_call_trace(&result, 0).await; + } + let has_error = result + .as_object() + .and_then(|obj| obj.get("error")) + .is_some(); + + let has_failed = result + .as_object() + .and_then(|obj| obj.get("failed")) + .and_then(|v| v.as_bool()) + .unwrap_or(false); + + if has_error || has_failed { + if let Some(result_obj) = result.as_object() { + if let Some(error) = result_obj.get("error") { + return Err(miette::miette!("Transaction execution failed: {}", error)); + } + if let Some(revert_reason) = result_obj.get("revertReason") { + return Err(miette::miette!("Transaction reverted: {}", revert_reason)); + } + } + return Err(miette::miette!("Transaction failed")); + } else { + info!("Transaction successfully simulated."); + } + + let mut executed_amount_out = U256::ZERO; + if let Some(result_obj) = result.as_object() { + if let Some(gas_used) = result_obj + .get("gasUsed") + .and_then(|v| v.as_str()) + { + let gas_used_decoded = U256::from_str_radix(gas_used.trim_start_matches("0x"), 16) + .into_diagnostic()?; + info!("Gas used: {}", gas_used_decoded); + } + if let Some(output) = result_obj + .get("output") + .and_then(|v| v.as_str()) + { + executed_amount_out = U256::abi_decode(&Bytes::from_str(output).into_diagnostic()?) + .into_diagnostic()?; + } + } + Ok(executed_amount_out) + } } #[cfg(test)] @@ -95,7 +324,7 @@ mod tests { async fn get_token_balance_native_token() { let eth_rpc_url = env::var("RPC_URL").expect("Missing RPC_URL in environment"); - let rpc_provider = RPCProvider::new(eth_rpc_url); + let rpc_provider = RPCProvider::new(eth_rpc_url, false); let token_address = address!("0x0000000000000000000000000000000000000000"); let wallet_address = address!("0x787B8840100d9BaAdD7463f4a73b5BA73B00C6cA"); let block_number = 21998530; @@ -115,7 +344,7 @@ mod tests { async fn get_token_balance_erc20_token() { let eth_rpc_url = env::var("RPC_URL").expect("Missing RPC_URL in environment"); - let rpc_provider = RPCProvider::new(eth_rpc_url); + let rpc_provider = RPCProvider::new(eth_rpc_url, false); let token_address = address!("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"); let wallet_address = address!("0x787B8840100d9BaAdD7463f4a73b5BA73B00C6cA"); let block_number = 21998530; @@ -132,7 +361,7 @@ mod tests { async fn get_block_header() { let eth_rpc_url = env::var("RPC_URL").expect("Missing RPC_URL in environment"); - let rpc_provider = RPCProvider::new(eth_rpc_url); + let rpc_provider = RPCProvider::new(eth_rpc_url, false); let block_number = 21998530; let block_header = rpc_provider diff --git a/protocol-testing/src/test_runner.rs b/protocol-testing/src/test_runner.rs index f32a69e..b32c6fd 100644 --- a/protocol-testing/src/test_runner.rs +++ b/protocol-testing/src/test_runner.rs @@ -1,14 +1,15 @@ use std::{collections::HashMap, env, path::PathBuf, str::FromStr, sync::LazyLock}; -use alloy::primitives::U256; +use alloy::primitives::{Address, U256}; use figment::{ providers::{Format, Yaml}, Figment, }; use itertools::Itertools; use miette::{miette, IntoDiagnostic, WrapErr}; -use num_bigint::BigUint; -use num_traits::Zero; +use num_bigint::{BigInt, BigUint}; +use num_rational::BigRational; +use num_traits::{Signed, ToPrimitive, Zero}; use postgres::{Client, Error, NoTls}; use tokio::runtime::Runtime; use tracing::{debug, error, info, warn}; @@ -39,6 +40,7 @@ use crate::{ adapter_builder::AdapterContractBuilder, config::{IntegrationTest, IntegrationTestsConfig, ProtocolComponentWithTestConfig}, encoding::encode_swap, + execution, rpc::RPCProvider, tycho_rpc::TychoClient, tycho_runner::TychoRunner, @@ -54,7 +56,8 @@ static CLONE_TO_BASE_PROTOCOL: LazyLock> = LazyLock::new(|| pub struct TestRunner { db_url: String, - vm_traces: bool, + vm_simulation_traces: bool, + execution_traces: bool, substreams_path: PathBuf, adapter_contract_builder: AdapterContractBuilder, match_test: Option, @@ -68,6 +71,7 @@ impl TestRunner { match_test: Option, db_url: String, vm_traces: bool, + execution_traces: bool, ) -> Self { let base_protocol = CLONE_TO_BASE_PROTOCOL .get(protocol.as_str()) @@ -96,7 +100,8 @@ impl TestRunner { Self { db_url, - vm_traces, + vm_simulation_traces: vm_traces, + execution_traces, substreams_path, adapter_contract_builder, match_test, @@ -112,10 +117,7 @@ impl TestRunner { // Skip if test files don't exist if !self.config_file_path.exists() { - warn!( - "Config file not found at {}.", - self.config_file_path.display() - ); + warn!("Config file not found at {}.", self.config_file_path.display()); return Ok(()); } @@ -237,7 +239,8 @@ impl TestRunner { stop_block, config, &self.adapter_contract_builder, - self.vm_traces, + self.vm_simulation_traces, + self.execution_traces, ) }, &test.expected_components, @@ -268,7 +271,8 @@ fn validate_state( stop_block: u64, config: &IntegrationTestsConfig, adapter_contract_builder: &AdapterContractBuilder, - vm_traces: bool, + vm_simulation_traces: bool, + execution_traces: bool, ) -> miette::Result<()> { let rt = Runtime::new().unwrap(); @@ -314,10 +318,8 @@ fn validate_state( .map(|s| (s.component_id.to_lowercase(), s)) .collect(); - info!("Found {} protocol components", components_by_id.len()); - info!("Found {} protocol states", protocol_states_by_id.len()); - - info!("Validating state..."); + debug!("Found {} protocol components", components_by_id.len()); + debug!("Found {} protocol states", protocol_states_by_id.len()); // Step 1: Validate that all expected components are present on Tycho after indexing debug!("Validating {:?} expected components", expected_components.len()); @@ -350,10 +352,21 @@ fn validate_state( info!("All expected components were successfully found on Tycho and match the expected state"); // Step 2: Validate Token Balances + let rpc_url = env::var("RPC_URL") + .into_diagnostic() + .wrap_err("Missing RPC_URL in environment")?; + let rpc_provider = RPCProvider::new(rpc_url, execution_traces); + match config.skip_balance_check { true => info!("Skipping balance check"), false => { - validate_token_balances(&components_by_id, &protocol_states_by_id, start_block, &rt)?; + validate_token_balances( + &components_by_id, + &protocol_states_by_id, + start_block, + &rt, + &rpc_provider, + )?; info!("All token balances match the values found onchain") } } @@ -368,7 +381,7 @@ fn validate_state( info!("Components to simulate: {}", simulation_component_ids.len()); for id in &simulation_component_ids { - info!(" Simulating component: {}", id); + info!("Simulating component: {}", id); } if simulation_component_ids.is_empty() { @@ -376,6 +389,13 @@ fn validate_state( return Ok(()); } + // Filter out components that have skip_execution = true + let execution_component_ids: std::collections::HashSet = expected_components + .iter() + .filter(|c| !c.skip_execution) + .map(|c| c.base.id.clone().to_lowercase()) + .collect(); + let adapter_contract_path; let mut adapter_contract_path_str: Option<&str> = None; @@ -386,7 +406,7 @@ fn validate_state( adapter_contract_path = match adapter_contract_builder.find_contract(adapter_contract_name) { Ok(path) => { - info!("Found adapter contract at: {}", path.display()); + debug!("Found adapter contract at: {}", path.display()); path } Err(_) => { @@ -412,7 +432,7 @@ fn validate_state( tycho_simulation::evm::engine_db::SHARED_TYCHO_DB.clear(); let mut decoder = TychoStreamDecoder::new(); - let mut decoder_context = DecoderContext::new().vm_traces(vm_traces); + let mut decoder_context = DecoderContext::new().vm_traces(vm_simulation_traces); if let Some(vm_adapter_path) = adapter_contract_path_str { decoder_context = decoder_context.vm_adapter_path(vm_adapter_path); @@ -461,7 +481,8 @@ fn validate_state( state, component: component.clone(), component_tvl: None, - // Neither UniswapV4 with hooks not certain balancer pools are currently supported for SDK testing + // Neither UniswapV4 with hooks not certain balancer pools are currently supported for + // SDK testing entrypoints: vec![], }; states.insert(component_id.clone(), component_with_state); @@ -477,10 +498,6 @@ fn validate_state( let bytes = [0u8; 32]; // Get block header to extract the timestamp - let rpc_url = env::var("RPC_URL") - .into_diagnostic() - .wrap_err("Missing RPC_URL in environment")?; - let rpc_provider = RPCProvider::new(rpc_url); let block_header = rt .block_on(rpc_provider.get_block_header(stop_block)) .wrap_err("Failed to get block header")?; @@ -505,7 +522,7 @@ fn validate_state( .block_on(tycho_client.get_tokens(Chain::Ethereum, None, None)) .into_diagnostic() .wrap_err("Failed to get tokens")?; - info!("Loaded {} tokens", all_tokens.len()); + debug!("Loaded {} tokens", all_tokens.len()); rt.block_on(decoder.set_tokens(all_tokens)); @@ -514,7 +531,7 @@ fn validate_state( let message: FeedMessage = FeedMessage { state_msgs, sync_states: Default::default() }; let block_msg = rt - .block_on(decoder.decode(message)) + .block_on(decoder.decode(&message)) .into_diagnostic() .wrap_err("Failed to decode message")?; @@ -527,7 +544,6 @@ fn validate_state( for (id, state) in block_msg.states.iter() { if let Some(tokens) = pairs.get(id) { let formatted_token_str = format!("{:}/{:}", &tokens[0].symbol, &tokens[1].symbol); - info!("Amount out for {}: calculating for tokens {:?}", id, formatted_token_str); state .spot_price(&tokens[0], &tokens[1]) .map(|price| info!("Spot price {:?}: {:?}", formatted_token_str, price)) @@ -584,7 +600,7 @@ fn validate_state( ))?; info!( - "Amount out for trading {:.1}% of max: ({} {} -> {} {}) (gas: {})", + "Simulated amount out for trading {:.1}% of max: ({} {} -> {} {}) (gas: {})", percentage * 100.0, amount_in, token_in.symbol, @@ -593,22 +609,68 @@ fn validate_state( amount_out_result.gas ); - let protocol_component = block_msg.new_pairs.get(id); - if let Some(pc) = protocol_component { - encode_swap( - pc.clone(), - token_in.address.clone(), - token_out.address.clone(), - amount_in, - amount_out_result.amount, - )?; - info!("Encoded swap successfully"); + // Only execute for components that should have execution + if !execution_component_ids.contains(id) { + info!("Skipping execution for component {id}"); + continue; + } + + let protocol_component = block_msg.new_pairs.get(id).unwrap(); + + let (calldata, solution) = encode_swap( + protocol_component.clone(), + token_in.address.clone(), + token_out.address.clone(), + amount_in, + amount_out_result.amount.clone(), + )?; + + info!("Simulating swap at historical block {}", block_header.header.number); + // Simulate the trade using debug_traceCall with overwrites + let execution_amount_out = + rt.block_on(execution::simulate_trade_with_eth_call( + &rpc_provider, + &calldata, + &solution, + stop_block, + &block_header, + )); + + match execution_amount_out { + Ok(amount_out) => { + info!( + "Simulating execution passed with {} {} -> {} {}", + solution.given_amount, + token_in.symbol, + amount_out, + token_out.symbol + ); + + // Compare execution amount out with simulation amount out + let diff = BigInt::from(amount_out_result.amount) - + BigInt::from(amount_out.clone()); + + let slippage: BigRational = + BigRational::new(diff.abs(), BigInt::from(amount_out)); + if slippage.to_f64() > Some(0.05) { + return Err(miette!( + "Execution amount and simulation amount differ more than 5%!" + )); + } + } + Err(e) => { + return Err(miette!( + "Simulating execution failed for {} -> {}: {}", + token_in.symbol, + token_out.symbol, + e + )); + } } } } } } - info!("✅ Simulation validation passed"); Ok(()) } @@ -619,12 +681,8 @@ fn validate_token_balances( protocol_states_by_id: &HashMap, start_block: u64, rt: &Runtime, + rpc_provider: &RPCProvider, ) -> miette::Result<()> { - let rpc_url = env::var("RPC_URL") - .into_diagnostic() - .wrap_err("Missing RPC_URL in environment")?; - let rpc_provider = RPCProvider::new(rpc_url.to_string()); - for (id, component) in components_by_id.iter() { let component_state = protocol_states_by_id.get(id); @@ -640,8 +698,8 @@ fn validate_token_balances( } info!("Validating token balance for component {} and token {}", component.id, token); - let token_address = alloy::primitives::Address::from_slice(&token[..20]); - let component_address = alloy::primitives::Address::from_str(component.id.as_str()) + let token_address = Address::from_slice(&token[..20]); + let component_address = Address::from_str(component.id.as_str()) .expect("Failed to parse component address"); let node_balance = rt.block_on(rpc_provider.get_token_balance( token_address, @@ -666,7 +724,7 @@ fn validate_token_balances( #[cfg(test)] mod tests { - use std::collections::HashMap; + use std::{collections::HashMap, str::FromStr}; use dotenv::dotenv; use glob::glob; @@ -725,6 +783,9 @@ mod tests { #[test] fn test_token_balance_validation() { + dotenv().ok(); + let eth_rpc_url = env::var("RPC_URL").expect("Missing RPC_URL in environment"); + let rpc_provider = RPCProvider::new(eth_rpc_url, false); // Setup mock data let block_number = 21998530; let token_bytes = Bytes::from_str("0x0000000000000000000000000000000000000000").unwrap(); @@ -756,13 +817,21 @@ mod tests { let rt = Runtime::new().unwrap(); dotenv().ok(); - let result = - validate_token_balances(&components_by_id, &protocol_states_by_id, block_number, &rt); + let result = validate_token_balances( + &components_by_id, + &protocol_states_by_id, + block_number, + &rt, + &rpc_provider, + ); assert!(result.is_ok(), "Should pass when balance check is performed and balances match"); } #[test] fn test_token_balance_validation_fails_on_mismatch() { + dotenv().ok(); + let eth_rpc_url = env::var("RPC_URL").expect("Missing RPC_URL in environment"); + let rpc_provider = RPCProvider::new(eth_rpc_url, false); // Setup mock data let block_number = 21998530; let token_bytes = Bytes::from_str("0x0000000000000000000000000000000000000000").unwrap(); @@ -791,8 +860,13 @@ mod tests { let rt = Runtime::new().unwrap(); dotenv().ok(); - let result = - validate_token_balances(&components_by_id, &protocol_states_by_id, block_number, &rt); + let result = validate_token_balances( + &components_by_id, + &protocol_states_by_id, + block_number, + &rt, + &rpc_provider, + ); assert!( result.is_err(), "Should fail when balance check is performed and balances do not match" diff --git a/protocol-testing/src/traces.rs b/protocol-testing/src/traces.rs new file mode 100644 index 0000000..935519b --- /dev/null +++ b/protocol-testing/src/traces.rs @@ -0,0 +1,402 @@ +//! Transaction trace analysis with foundry signature decoding. +//! +//! This module provides utilities for analyzing Ethereum transaction traces +//! and decoding method signatures using foundry's comprehensive signature database. + +use alloy::dyn_abi::{DynSolType, DynSolValue}; +use colored::Colorize; +use foundry_evm::traces::identifier::SignaturesIdentifier; +use serde_json::Value; + +/// Decode method selectors and return function info +pub async fn decode_method_selector_with_info(input: &str) -> Option<(String, Vec)> { + if input.len() < 10 || !input.starts_with("0x") { + return None; + } + + let selector_bytes = hex::decode(&input[2..10]).ok()?; + if selector_bytes.len() != 4 { + return None; + } + let selector: [u8; 4] = selector_bytes.try_into().ok()?; + let selector_fixed: alloy::primitives::FixedBytes<4> = selector.into(); + + // Use foundry's signature identifier + if let Ok(sig_identifier) = SignaturesIdentifier::new(true) { + if let Some(signature) = sig_identifier + .identify_function(selector_fixed) + .await + { + let formatted_sig = format!( + "{}({})", + signature.name, + signature + .inputs + .iter() + .map(|p| p.ty.as_str()) + .collect::>() + .join(",") + ); + + // Filter out scam/honeypot signatures + if is_legitimate_signature(&formatted_sig) { + // Parse parameter types + let param_types: Vec = signature + .inputs + .iter() + .filter_map(|p| p.ty.as_str().parse().ok()) + .collect(); + + return Some((signature.name.clone(), param_types)); + } + } + } + + None +} + +/// Decode method selectors using foundry's signature database with scam filtering +pub async fn decode_method_selector(input: &str) -> Option { + if let Some((name, param_types)) = decode_method_selector_with_info(input).await { + let type_names: Vec = param_types + .iter() + .map(|t| t.to_string()) + .collect(); + return Some(format!("{}({})", name, type_names.join(","))); + } + + // Return unknown if not found + if input.len() >= 10 { + Some(format!("{} (unknown)", &input[0..10])) + } else { + None + } +} + +/// Decode function calldata and format with parameter values +pub async fn decode_function_with_params(input: &str) -> Option { + if input.len() < 10 || !input.starts_with("0x") { + return decode_method_selector(input).await; + } + + if let Some((name, param_types)) = decode_method_selector_with_info(input).await { + // Try to decode the calldata + if input.len() > 10 { + let calldata_hex = &input[10..]; // Skip the 4-byte selector + if let Ok(calldata) = hex::decode(calldata_hex) { + if let Ok(decoded_values) = + DynSolType::Tuple(param_types.clone()).abi_decode(&calldata) + { + if let DynSolValue::Tuple(values) = decoded_values { + let formatted_params: Vec = values + .iter() + .zip(param_types.iter()) + .map(|(value, ty)| format_parameter_value(value, ty)) + .collect(); + + return Some(format!("{}({})", name, formatted_params.join(", "))); + } + } + } + } + + // Fallback: if decoding fails, put the whole calldata inside the method call + return Some(format!("{}({})", name, input)); + } + + // Return unknown if not found + Some(format!("{} (unknown)", &input[0..10])) +} + +/// Format a parameter value for display +fn format_parameter_value(value: &DynSolValue, _ty: &DynSolType) -> String { + match value { + DynSolValue::Address(addr) => format!("{:#x}", addr), + DynSolValue::Uint(uint, _) => { + let value_str = uint.to_string(); + // Add scientific notation for large numbers + if value_str.len() > 15 { + format!("{} [{}e{}]", value_str, &value_str[0..4], value_str.len() - 1) + } else { + value_str + } + } + DynSolValue::Int(int, _) => int.to_string(), + DynSolValue::Bool(b) => b.to_string(), + DynSolValue::Bytes(bytes) => format!("0x{}", hex::encode(bytes)), + DynSolValue::FixedBytes(bytes, _) => format!("0x{}", hex::encode(bytes)), + DynSolValue::String(s) => format!("\"{}\"", s), + DynSolValue::Array(arr) | DynSolValue::FixedArray(arr) => { + let elements: Vec = arr + .iter() + .map(|v| format_parameter_value(v, _ty)) + .collect(); + format!("[{}]", elements.join(", ")) + } + DynSolValue::Tuple(tuple) => { + let elements: Vec = tuple + .iter() + .map(|v| format_parameter_value(v, _ty)) + .collect(); + format!("({})", elements.join(", ")) + } + DynSolValue::Function(_) => "function".to_string(), + DynSolValue::CustomStruct { .. } => "struct".to_string(), + } +} + +/// Check if a signature looks legitimate (not a scam/honeypot) +fn is_legitimate_signature(signature: &str) -> bool { + let sig_lower = signature.to_lowercase(); + + // Reject obvious scam patterns + let scam_patterns = [ + "watch_tg", + "_tg_", + "telegram", + "discord", + "twitter", + "social", + "invite", + "gift", + "bonus", + "airdrop", + "referral", + "ref_", + "_reward", + "claim_reward", + "_bonus", + "_gift", + "_invite", + "honeypot", + "rug", + "scam", + "phish", + "sub2juniononyoutube", + "youtube", + "sub2", + "junion", + ]; + + for pattern in &scam_patterns { + if sig_lower.contains(pattern) { + return false; + } + } + + // Reject signatures that are suspiciously long (likely auto-generated scam functions) + if signature.len() > 80 { + return false; + } + + // Reject signatures with too many underscores (common in scam functions) + let underscore_count = signature.matches('_').count(); + if underscore_count > 3 { + return false; + } + + // Reject signatures that look like random hex or encoded data + if signature + .matches(char::is_numeric) + .count() > + signature.len() / 2 + { + return false; + } + + true +} + +/// Trace printing with foundry-style formatting and colors +pub async fn print_call_trace(call: &Value, depth: usize) { + if depth == 0 { + println!("{}", "Traces:".cyan().bold()); + } + + if let Some(call_obj) = call.as_object() { + // Parse trace data + let call_type = call_obj + .get("type") + .and_then(|v| v.as_str()) + .unwrap_or("UNKNOWN"); + + let _from = call_obj + .get("from") + .and_then(|v| v.as_str()) + .unwrap_or("0x?"); + + let to = call_obj + .get("to") + .and_then(|v| v.as_str()) + .unwrap_or("0x?"); + + let gas_used = call_obj + .get("gasUsed") + .and_then(|v| v.as_str()) + .unwrap_or("0x0"); + + let _value = call_obj + .get("value") + .and_then(|v| v.as_str()) + .unwrap_or("0x0"); + + // Convert hex values for display + let gas_used_dec = if let Some(stripped) = gas_used.strip_prefix("0x") { + u64::from_str_radix(stripped, 16).unwrap_or(0) + } else { + gas_used.parse().unwrap_or(0) + }; + + // Check if call failed + let has_error = call_obj.get("error").is_some(); + let has_revert = call_obj.get("revertReason").is_some(); + let has_other_error = ["revert", "reverted", "message", "errorMessage", "reason"] + .iter() + .any(|field| call_obj.get(*field).is_some()); + let call_failed = has_error || has_revert || has_other_error; + + // Debug: if there's any failure, print all fields to help identify the error structure + if call_failed && depth <= 2 { + eprintln!("DEBUG: Failed call at depth {}: {:#?}", depth, call_obj); + } + + // Create tree structure prefix + let tree_prefix = if depth == 0 { "".to_string() } else { " ".repeat(depth) + "├─ " }; + + // Get input for method signature decoding + let input = call_obj + .get("input") + .and_then(|v| v.as_str()) + .unwrap_or("0x"); + + // Decode method signature with parameters + let method_sig = if !input.is_empty() && input != "0x" { + decode_function_with_params(input) + .await + .unwrap_or_else(|| "unknown".to_string()) + } else { + format!("{}()", call_type.to_lowercase()) + }; + + // Format the main call line with colors + let gas_str = format!("[{}]", gas_used_dec); + let call_part = format!("{}::{}", to, method_sig); + + if call_failed { + println!("{}{} {}", tree_prefix, gas_str, call_part.red()); + } else { + println!("{}{} {}", tree_prefix, gas_str, call_part.green()); + } + + // Print return/revert information with proper indentation + let result_indent = " ".repeat(depth + 1) + "└─ ← "; + + // Check for various error/revert patterns + let mut found_error = false; + + if let Some(error) = call_obj.get("error") { + println!("{}{}", result_indent, format!("[Error] {}", error)); + found_error = true; + } + + if let Some(revert_reason) = call_obj.get("revertReason") { + println!("{}{}", result_indent, format!("[Revert] {}", revert_reason)); + found_error = true; + } + + // Check for other possible error fields + for error_field in ["revert", "reverted", "message", "errorMessage", "reason"] { + if let Some(error_val) = call_obj.get(error_field) { + println!("{}{}", result_indent, format!("[{}] {}", error_field, error_val)); + found_error = true; + } + } + + // Check for revert data in output (sometimes revert reasons are hex-encoded in output) + if let Some(output) = call_obj + .get("output") + .and_then(|v| v.as_str()) + { + if !output.is_empty() && output != "0x" { + // Try to decode revert reason from output if it looks like revert data + if output.starts_with("0x08c379a0") { + // Error(string) selector + if let Ok(decoded) = hex::decode(&output[10..]) { + if let Ok(reason) = alloy::dyn_abi::DynSolType::String.abi_decode(&decoded) + { + if let alloy::dyn_abi::DynSolValue::String(reason_str) = reason { + println!( + "{}{}", + result_indent, + format!("[Revert] {}", reason_str).red() + ); + found_error = true; + } + } + } + } + + if !found_error { + println!("{}{}", result_indent, format!("[Return] {}", output)); + } + } else if !found_error { + println!("{}{}", result_indent, "[Return]"); + } + } + + // If we haven't found any output yet and there was no explicit error, show empty return + if !found_error && call_obj.get("output").is_none() { + println!("{}{}", result_indent, "[Return]".green()); + } + + // Recursively print nested calls + if let Some(calls) = call_obj.get("calls") { + if let Some(calls_array) = calls.as_array() { + for nested_call in calls_array { + Box::pin(print_call_trace(nested_call, depth + 1)).await; + } + } + } + } +} + +#[cfg(test)] +mod tests { + use serde_json::json; + + use super::*; + + #[tokio::test] + async fn test_foundry_signature_decoder() { + // Test foundry signature resolution + let transfer_input = "0xa9059cbb000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045000000000000000000000000000000000000000000000000016345785d8a0000"; + let result = decode_method_selector(transfer_input).await; + println!("Foundry decoded transfer: {result:?}"); + + // Test some other common selector + let approve_input = "0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045000000000000000000000000000000000000000000000000016345785d8a0000"; + let result = decode_method_selector(approve_input).await; + println!("Foundry decoded approve: {result:?}"); + + // Should return something (either signature or unknown) + assert!(result.is_some()); + } + + #[tokio::test] + async fn test_print_call_trace_with_foundry_decoding() { + // Test trace with ERC20 transfer + let trace_json = json!({ + "type": "CALL", + "from": "0x1234567890abcdef1234567890abcdef12345678", + "to": "0xabcdef1234567890abcdef1234567890abcdef12", + "gasUsed": "0x5208", + "value": "0x0", + "input": "0xa9059cbb000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045000000000000000000000000000000000000000000000000016345785d8a0000", + "output": "0x0000000000000000000000000000000000000000000000000000000000000001", + "calls": [] + }); + + // This test mainly ensures the function runs without panicking + print_call_trace(&trace_json, 0).await; + } +} diff --git a/protocol-testing/src/tycho_rpc.rs b/protocol-testing/src/tycho_rpc.rs index 6128f88..491d699 100644 --- a/protocol-testing/src/tycho_rpc.rs +++ b/protocol-testing/src/tycho_rpc.rs @@ -1,6 +1,6 @@ use std::{collections::HashMap, error::Error as StdError, fmt}; -use tracing::info; +use tracing::debug; use tycho_client::{rpc::RPCClient, HttpRPCClient}; use tycho_common::{ dto::{ @@ -125,7 +125,7 @@ impl TychoClient { min_quality: Option, max_days_since_last_trade: Option, ) -> Result, RpcError> { - info!("Loading tokens from Tycho..."); + debug!("Loading tokens from Tycho..."); #[allow(clippy::mutable_key_type)] let res = self diff --git a/protocol-testing/src/utils.rs b/protocol-testing/src/utils.rs index 1e5e2f0..ff79231 100644 --- a/protocol-testing/src/utils.rs +++ b/protocol-testing/src/utils.rs @@ -10,7 +10,7 @@ use figment::{ Figment, }; use miette::{miette, IntoDiagnostic}; -use tracing::{error, info}; +use tracing::{debug, error, info}; /// Build a Substreams package with modifications to the YAML file. pub fn build_spkg(yaml_file_path: &PathBuf, initial_block: u64) -> miette::Result { @@ -86,7 +86,7 @@ pub fn build_spkg(yaml_file_path: &PathBuf, initial_block: u64) -> miette::Resul // Restore the original YAML from backup fs::copy(&backup_file_path, yaml_file_path).into_diagnostic()?; fs::remove_file(&backup_file_path).into_diagnostic()?; - info!("Spkg built successfully: {}", spkg_name); + debug!("Spkg built successfully: {}", spkg_name); Ok(spkg_name) } diff --git a/protocol-testing/test_executor_addresses.json b/protocol-testing/test_executor_addresses.json new file mode 100644 index 0000000..8b3bc73 --- /dev/null +++ b/protocol-testing/test_executor_addresses.json @@ -0,0 +1,14 @@ +{ + "ethereum": { + "uniswap_v2": "0xaE04CA7E9Ed79cBD988f6c536CE11C621166f41B", + "uniswap_v3": "0xbab7124C9662B15C6b9AF0b1f329907dD55a24FC", + "uniswap_v4": "0x2C2EaB81Cf983602153E67b1890164BC4CABC6ed", + "vm:balancer_v2": "0xB5b8dc3F0a1Be99685a0DEd015Af93bFBB55C411", + "vm:balancer_v3": "0xec5cE4bF6FbcB7bB0148652c92a4AEC8c1d474Ec", + "sushiswap_v2": "0x2017ad7035D781C14699C8E44ed62d3083723A18", + "pancakeswap_v2": "0xC9db3FEB380E4fd9af239e2595ECdEcE3b5c34A4", + "pancakeswap_v3": "0x9D32e9F569B22Ae8d8C6f788037C1CD53632A059", + "vm:curve": "0x879F3008D96EBea0fc584aD684c7Df31777F3165", + "vm:maverick_v2": "0xF35e3F5F205769B41508A18787b62A21bC80200B" + } +} \ No newline at end of file diff --git a/substreams/ethereum-balancer-v2/integration_test.tycho.yaml b/substreams/ethereum-balancer-v2/integration_test.tycho.yaml index 56dcc6a..6254573 100644 --- a/substreams/ethereum-balancer-v2/integration_test.tycho.yaml +++ b/substreams/ethereum-balancer-v2/integration_test.tycho.yaml @@ -26,6 +26,7 @@ tests: manual_updates: "0x01" pool_type: "0x5765696768746564506f6f6c466163746f72795634" creation_tx: "0xa63c671046ad2075ec8ea83ac21199cf3e3a5f433e72ec4c117cbabfb9b18de2" + skip_execution: false # WeightedPool2TokensFactory - 0xA5bf2ddF098bb0Ef6d120C98217dD6B141c74EE0 - name: weighted_legacy_creation @@ -42,6 +43,7 @@ tests: manual_updates: "0x01" pool_type: "0x5765696768746564506f6f6c32546f6b656e73466163746f7279" creation_tx: "0xdced662e41b1608c386551bbc89894a10321fd8bd58782e22077d1044cf99cb5" + skip_execution: true # the block is before the Shanghai upgrade and our router needs functionality introduced there # ERC4626LinearPoolFactory - 0x813EE7a840CE909E7Fea2117A44a90b8063bd4fd - name: test_erc4626_linear_pool_creation @@ -80,6 +82,7 @@ tests: normalized_weights: "0x5b22307830326336386166306262313430303030222c22307830623161326263326563353030303030225d" pool_type: "0x5765696768746564506f6f6c466163746f72795631" skip_simulation: false + skip_execution: true # the block is before the Shanghai upgrade and our router needs functionality introduced there creation_tx: "0xc5c3b384644363aa15cf9a0c33dfebd22df351446bce92ee49ead7d5d896b4e9" # WeightedPoolFactoryV2 - 0xcC508a455F5b0073973107Db6a878DdBDab957bC @@ -100,6 +103,7 @@ tests: pool_type: "0x5765696768746564506f6f6c466163746f72795632" skip_simulation: false creation_tx: "0x9a949a52e4179d0c57dcffd6884d5787febfb92f8f4b7e114ef8cfbda0292a79" + skip_execution: true # the block is before the Shanghai upgrade and our router needs functionality introduced there # WeightedPoolFactoryV3 - 0x5Dd94Da3644DDD055fcf6B3E1aa310Bb7801EB8b - name: test_weighted_pool_v3 @@ -118,6 +122,7 @@ tests: pool_type: "0x5765696768746564506f6f6c466163746f72795633" skip_simulation: false creation_tx: "0x628d8e5df9940f6c52844082b03160ef3fb7e06c17877a9a21c8188406e6a201" + skip_execution: true # the block is before the Shanghai upgrade and our router needs functionality introduced there # ######################################################################################################################### # TEST BELOW ARE NOT RELEVANT BECAUSE THE FACTORIES ARE DISABLED AND NO ONE OF THE POOLS HAVE RELEVANT LIQUIDITY