@aztec-labs/archiver 6.0.0-nightly.20260829

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/README.md +178 -0
  2. package/dest/archiver.d.ts +194 -0
  3. package/dest/archiver.d.ts.map +1 -0
  4. package/dest/archiver.js +948 -0
  5. package/dest/config.d.ts +34 -0
  6. package/dest/config.d.ts.map +1 -0
  7. package/dest/config.js +100 -0
  8. package/dest/errors.d.ts +97 -0
  9. package/dest/errors.d.ts.map +1 -0
  10. package/dest/errors.js +141 -0
  11. package/dest/factory.d.ts +32 -0
  12. package/dest/factory.d.ts.map +1 -0
  13. package/dest/factory.js +183 -0
  14. package/dest/index.d.ts +20 -0
  15. package/dest/index.d.ts.map +1 -0
  16. package/dest/index.js +18 -0
  17. package/dest/interfaces.d.ts +9 -0
  18. package/dest/interfaces.d.ts.map +1 -0
  19. package/dest/interfaces.js +3 -0
  20. package/dest/l1/bin/retrieve-calldata.d.ts +3 -0
  21. package/dest/l1/bin/retrieve-calldata.d.ts.map +1 -0
  22. package/dest/l1/bin/retrieve-calldata.js +152 -0
  23. package/dest/l1/calldata_retriever.d.ts +143 -0
  24. package/dest/l1/calldata_retriever.d.ts.map +1 -0
  25. package/dest/l1/calldata_retriever.js +413 -0
  26. package/dest/l1/data_retrieval.d.ts +102 -0
  27. package/dest/l1/data_retrieval.d.ts.map +1 -0
  28. package/dest/l1/data_retrieval.js +308 -0
  29. package/dest/l1/debug_tx.d.ts +19 -0
  30. package/dest/l1/debug_tx.d.ts.map +1 -0
  31. package/dest/l1/debug_tx.js +73 -0
  32. package/dest/l1/spire_proposer.d.ts +70 -0
  33. package/dest/l1/spire_proposer.d.ts.map +1 -0
  34. package/dest/l1/spire_proposer.js +149 -0
  35. package/dest/l1/trace_tx.d.ts +43 -0
  36. package/dest/l1/trace_tx.d.ts.map +1 -0
  37. package/dest/l1/trace_tx.js +91 -0
  38. package/dest/l1/types.d.ts +12 -0
  39. package/dest/l1/types.d.ts.map +1 -0
  40. package/dest/l1/types.js +3 -0
  41. package/dest/l1/validate_historical_logs.d.ts +23 -0
  42. package/dest/l1/validate_historical_logs.d.ts.map +1 -0
  43. package/dest/l1/validate_historical_logs.js +108 -0
  44. package/dest/l1/validate_trace.d.ts +32 -0
  45. package/dest/l1/validate_trace.d.ts.map +1 -0
  46. package/dest/l1/validate_trace.js +154 -0
  47. package/dest/modules/contract_data_source_adapter.d.ts +25 -0
  48. package/dest/modules/contract_data_source_adapter.d.ts.map +1 -0
  49. package/dest/modules/contract_data_source_adapter.js +32 -0
  50. package/dest/modules/data_source_base.d.ts +116 -0
  51. package/dest/modules/data_source_base.d.ts.map +1 -0
  52. package/dest/modules/data_source_base.js +334 -0
  53. package/dest/modules/data_store_updater.d.ts +105 -0
  54. package/dest/modules/data_store_updater.d.ts.map +1 -0
  55. package/dest/modules/data_store_updater.js +392 -0
  56. package/dest/modules/instrumentation.d.ts +63 -0
  57. package/dest/modules/instrumentation.d.ts.map +1 -0
  58. package/dest/modules/instrumentation.js +166 -0
  59. package/dest/modules/l1_synchronizer.d.ts +77 -0
  60. package/dest/modules/l1_synchronizer.d.ts.map +1 -0
  61. package/dest/modules/l1_synchronizer.js +1369 -0
  62. package/dest/modules/outbox_trees_resolver.d.ts +64 -0
  63. package/dest/modules/outbox_trees_resolver.d.ts.map +1 -0
  64. package/dest/modules/outbox_trees_resolver.js +184 -0
  65. package/dest/modules/validation.d.ts +40 -0
  66. package/dest/modules/validation.d.ts.map +1 -0
  67. package/dest/modules/validation.js +122 -0
  68. package/dest/store/block_store.d.ts +304 -0
  69. package/dest/store/block_store.d.ts.map +1 -0
  70. package/dest/store/block_store.js +1252 -0
  71. package/dest/store/contract_class_store.d.ts +31 -0
  72. package/dest/store/contract_class_store.d.ts.map +1 -0
  73. package/dest/store/contract_class_store.js +98 -0
  74. package/dest/store/contract_instance_store.d.ts +51 -0
  75. package/dest/store/contract_instance_store.d.ts.map +1 -0
  76. package/dest/store/contract_instance_store.js +129 -0
  77. package/dest/store/data_stores.d.ts +68 -0
  78. package/dest/store/data_stores.d.ts.map +1 -0
  79. package/dest/store/data_stores.js +54 -0
  80. package/dest/store/function_names_cache.d.ts +17 -0
  81. package/dest/store/function_names_cache.d.ts.map +1 -0
  82. package/dest/store/function_names_cache.js +30 -0
  83. package/dest/store/l2_tips_cache.d.ts +25 -0
  84. package/dest/store/l2_tips_cache.d.ts.map +1 -0
  85. package/dest/store/l2_tips_cache.js +26 -0
  86. package/dest/store/log_store.d.ts +59 -0
  87. package/dest/store/log_store.d.ts.map +1 -0
  88. package/dest/store/log_store.js +310 -0
  89. package/dest/store/log_store_codec.d.ts +78 -0
  90. package/dest/store/log_store_codec.d.ts.map +1 -0
  91. package/dest/store/log_store_codec.js +110 -0
  92. package/dest/store/message_store.d.ts +111 -0
  93. package/dest/store/message_store.d.ts.map +1 -0
  94. package/dest/store/message_store.js +522 -0
  95. package/dest/structs/data_retrieval.d.ts +27 -0
  96. package/dest/structs/data_retrieval.d.ts.map +1 -0
  97. package/dest/structs/data_retrieval.js +5 -0
  98. package/dest/structs/inbox_message.d.ts +17 -0
  99. package/dest/structs/inbox_message.d.ts.map +1 -0
  100. package/dest/structs/inbox_message.js +33 -0
  101. package/dest/structs/published.d.ts +2 -0
  102. package/dest/structs/published.d.ts.map +1 -0
  103. package/dest/structs/published.js +1 -0
  104. package/dest/test/fake_l1_state.d.ts +220 -0
  105. package/dest/test/fake_l1_state.d.ts.map +1 -0
  106. package/dest/test/fake_l1_state.js +565 -0
  107. package/dest/test/index.d.ts +5 -0
  108. package/dest/test/index.d.ts.map +1 -0
  109. package/dest/test/index.js +6 -0
  110. package/dest/test/mock_archiver.d.ts +35 -0
  111. package/dest/test/mock_archiver.d.ts.map +1 -0
  112. package/dest/test/mock_archiver.js +93 -0
  113. package/dest/test/mock_l1_to_l2_message_source.d.ts +24 -0
  114. package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -0
  115. package/dest/test/mock_l1_to_l2_message_source.js +79 -0
  116. package/dest/test/mock_l2_block_source.d.ts +139 -0
  117. package/dest/test/mock_l2_block_source.d.ts.map +1 -0
  118. package/dest/test/mock_l2_block_source.js +489 -0
  119. package/dest/test/mock_structs.d.ts +92 -0
  120. package/dest/test/mock_structs.d.ts.map +1 -0
  121. package/dest/test/mock_structs.js +188 -0
  122. package/dest/test/noop_l1_archiver.d.ts +34 -0
  123. package/dest/test/noop_l1_archiver.d.ts.map +1 -0
  124. package/dest/test/noop_l1_archiver.js +88 -0
  125. package/package.json +108 -0
  126. package/src/archiver.ts +785 -0
  127. package/src/config.ts +133 -0
  128. package/src/errors.ts +211 -0
  129. package/src/factory.ts +262 -0
  130. package/src/index.ts +29 -0
  131. package/src/interfaces.ts +9 -0
  132. package/src/l1/README.md +55 -0
  133. package/src/l1/bin/retrieve-calldata.ts +194 -0
  134. package/src/l1/calldata_retriever.ts +529 -0
  135. package/src/l1/data_retrieval.ts +498 -0
  136. package/src/l1/debug_tx.ts +98 -0
  137. package/src/l1/spire_proposer.ts +151 -0
  138. package/src/l1/trace_tx.ts +127 -0
  139. package/src/l1/types.ts +12 -0
  140. package/src/l1/validate_historical_logs.ts +140 -0
  141. package/src/l1/validate_trace.ts +228 -0
  142. package/src/modules/contract_data_source_adapter.ts +46 -0
  143. package/src/modules/data_source_base.ts +482 -0
  144. package/src/modules/data_store_updater.ts +520 -0
  145. package/src/modules/instrumentation.ts +217 -0
  146. package/src/modules/l1_synchronizer.ts +1296 -0
  147. package/src/modules/outbox_trees_resolver.ts +220 -0
  148. package/src/modules/validation.ts +186 -0
  149. package/src/store/block_store.ts +1604 -0
  150. package/src/store/contract_class_store.ts +126 -0
  151. package/src/store/contract_instance_store.ts +178 -0
  152. package/src/store/data_stores.ts +103 -0
  153. package/src/store/function_names_cache.ts +37 -0
  154. package/src/store/l2_tips_cache.ts +35 -0
  155. package/src/store/log_store.ts +380 -0
  156. package/src/store/log_store_codec.ts +143 -0
  157. package/src/store/message_store.ts +621 -0
  158. package/src/structs/data_retrieval.ts +27 -0
  159. package/src/structs/inbox_message.ts +48 -0
  160. package/src/structs/published.ts +1 -0
  161. package/src/test/fake_l1_state.ts +807 -0
  162. package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
  163. package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
  164. package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
  165. package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
  166. package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
  167. package/src/test/fixtures/trace_transaction-proxied.json +128 -0
  168. package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
  169. package/src/test/index.ts +7 -0
  170. package/src/test/mock_archiver.ts +122 -0
  171. package/src/test/mock_l1_to_l2_message_source.ts +81 -0
  172. package/src/test/mock_l2_block_source.ts +620 -0
  173. package/src/test/mock_structs.ts +317 -0
  174. package/src/test/noop_l1_archiver.ts +157 -0
@@ -0,0 +1,128 @@
1
+ [
2
+ {
3
+ "action": {
4
+ "from": "0x8b5606469e21c75edd7c74d1c7a65824675d9aff",
5
+ "callType": "call",
6
+ "gas": "0x3ea78",
7
+ "input": "0x1bc7452600000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb95226000000000000000000000000ca11bde05977b3631167028862be2a173976ca1100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055e610000000000000000000000000000000000000000000000000000000000000e0482ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000603bb2c05d474794ea97805e8de69bccfb3bca12000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000d0448aeda190bf3b7150c20687badb924d180e3eaa507107b45648cee974c2c506a3a5847b02e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d600000000000000000000000000000000000000000000000000000000000398a01fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb00000000000000000000000000000000000000000000000000000000000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073000000000000000000000000000000000000000000000000000000000000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a90000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000012a6a43a5c02d9181de914805f6e795c30578eb13f1f7186a59b29d4b220de12001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f4800000000000000000000000000000000000000000000000000000000692ff81300000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb9522605e99ba6c937cd68f050c561df09103266590858801dd7181710226d968ad173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000009c0000000000000000000000000000000000000000000000000000000000000001c18829e9b7071e55e1dcc90bbaffe92b06b74a8857b8aa6769a09864bd2fbf5873309fcfd19c49dfb21ee6c5fa326384f319d6f434c06028c4424e2b2525ab10a0000000000000000000000000000000000000000000000000000000000000ca0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003fffff5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005be1c1ac25ad550a34b32a56760b9729d277789c39b5f6cf3bf3c0621c9770a56b4ea35d8cd60e473a35343d402371a3afc0c03096a5e367f45dd361a9b955e7570041c9365fe895f28e90160f2c96ad02a249de87d9e00d13aa9d680005f3b6ceca9242fcf35d0358a3f0953a96f27d985eee91c6cb31c7b447655bc5f4db6a0e233f61cfdf92cacf15d8bf897ab57e9c49e8fe6f20da7b6cd46f29c58dd886e405beb9d5ab6a51886ad1ab1d0f7554ee895158fd9ed08d21223dfd234f1b2dfab5c14ed1ce97ff9bb287f50b1bda12e522e246ccb75222367600daeb74b818041f27573e86a5f46c943176d37e4f071c96a9950e03a717fd04c8c132775a0a34dda53e17e1ccaebf5bf2fecbdaef9b9a35f7ba3a7d47a2d7b0745566bc7f02b517c7177ebdf778d1679e19cf7a523aa560fc2c7d46ff67a95311c2aa6fd098c80db04c9d5801b5c5d79c45bd19fb86d349cd634f967976a17da1ba0705f1d84e41a6dd92cc3fc608c55e0037bc89ffe94f27b4042cfdd309b37f04c44b16f58432988c28d2bc91ba8f6b0da71183eb59e6655d1d85145afe867a432168263e03860c156fa32b2293ea9c77368fbc85f526cae96c0f9a715d6aff6aa33922819ee3a897253a084101be4aeeaeaeaa4af2c8371dd4c380c959478fe1a0b417e2700f9308fffcd0b388c3909e02edb0a821bca446c644e46630ee59bfb6fbe74e3d88e52fcb287df30741c0dd87d086fa118fd67b10a40be7c0a9484574c96fdce8c737a7aa6ae9215f13b4d7b20cba2b7490d750f9c884f1cddcdd75cd8e13fdee995a2dbfd648056c8c31bb25e3d166e2e69c336d0f9e5b4c73849d3db1404afbfd53f642786d7e82389781c669e7e0171bbd610490f9b7a86f922606c9c2b8dbd1d0b88d63a31a04f02201cd48a85263c66905ccd249a7aef56ca3a222a44a06cd867df197926e4eb77901277130391c22bc67b37f59d7ef59079433dc91402eadb41b1adcde9164aba2b851c38f2b82d1c95758cdf039c1ad8df882bd4327a2b3808788411e5c56ff5b6156e1a9d795cad409c146448b69e8c51f65264ab25cd4e8021d43d870d86143cd5901c5a39897c312e7901ca9ed8335b1683531219facf0bc75125f004e30f81f188811e516e4a9676c6e00c5c0b23a34731d3b494a44371d184a3648ac1278e903fa71c813674453a9c31e820d6b1a5ffd9e4aa5d8d8cc7dd94e8cde178f714cfa0c54e136fefec5c27eb04dcd9e0712141772284e024adb9571a4a09389e716860de531b09b29ce61d2d2961c883269bbebd99ca7f361c58d8c5f6c06ef0927867ab51d764080b934a451b2a2ae0f9dec85d90f0614c1ddddc78b648f1ba6ffa297ca9d21c34796c31d906e5a61ae03f958448a840e7bd1f2113d7fa3648708a776195811d42bd160183ce5be0fe1bfabb680608404245862b8d6219991646cb35154c14391c487d5f9e2d8507f8c41bc9bcea7a7efda2b448d891845286adf081b1e52f7d3356d0ebabc274e97d50cf2c660d9ddb411f6cf043380220c5b418a005f87bb7d81cd2ae4a5dd62fb4ced4e773c8afb46ddd254d0fb65f3b62f2a407b10ee3f7a6e507fc215401072e51320e05214e2e2e1e60bf3a7adb1a569a4375c3b9644b42721bb69109a8a534b01ac03b79f562cc2aa81573bf943b3e077f0261d9dfdee855e678cf8368c39ab48935d8c7e78f2dc0bb245e77a07f391acb0d97ede9131fdc191b6c0907dd7fbf4d8f829de2f069d02129ec1a6fbe50b654a755eaed2ddc319f8a3b388cec066b268179ee2e9134ec6cb687751c679a85c020bb069adbd7ac45db9d0c6f628d15bd51d41dda5d02b77ea52283ff9d1c7e1a1c172a010c8b831cbc55ccda21aeba265c8076e689262b1df516e3b039c10755f290efb3f36439abc5a5709ce7d34901ec41ff434df298c70eb52e3c6173f8bf4f5ab963e5b6b6e1895260fc953abbefec651b77363be40f0af23366d046d4467e2ea8947d2dad1b21a94aec7c97293041045b1e5bbd27ce9185b6368a932f9787b11bca7f06d74fd8c2f91db3b4f73ec57f78000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000006035f04341c68f9a8e43bf016d2d15e49c9d100b000000000000000000000000f755bad88dfa59abec72efaaaaf30190848a141c000000000000000000000000586e24dbe07ddc751955f89c12d781790b1fe53f000000000000000000000000210e3db61f84ff959c1dce0a0822266fe9d6800200000000000000000000000070f042dc4981c2e1e5fdcebd59981b8aa4e67b3c000000000000000000000000f0b35c28b111a83dd19b79c36b23e71b6bdc22be00000000000000000000000057445cbae08c07315e213189ace01788ebe787f5000000000000000000000000e052bda9f05e8e34ce1ffd72a2b136028efbede000000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb952260000000000000000000000006535deb539a0996d2c68dd1a7825adab4ca87ed40000000000000000000000005e473b14cdc29ddf90b29332652db4f7d6c324ea0000000000000000000000002de16e88e5abd2882c1674c9449c5cfff47b9b7c00000000000000000000000071b4b1611e2dad0122527b80f3db7f4e4bb1266d000000000000000000000000dff79657fb5c92dc60de8a02a21aca14374b9dd4000000000000000000000000a7fcaf657414ee41b0ce86e4de275190e8085a500000000000000000000000002d2eebe1a29c674d4a77c3c62221fdb488862be6000000000000000000000000397431824789531fa895ea94aaf11b6de3232451000000000000000000000000844d4c2daa1b7f6ea83a4f3ef7bbde0c297b4ce90000000000000000000000005335dc50dfd0073df32f5a4a93870fd5b30bee440000000000000000000000009c9f10582ec809f04df20ea2e277806ce559733d000000000000000000000000ac1d53c2cf80760920c1593d5a7210e913d9544000000000000000000000000044ffe0f5738907483254aec89647dd1879576f24000000000000000000000000000000000000000000000000000000000000003101c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
8
+ "to": "0x9ccc2f3ecde026230e11a5c8799ac7524f2bb294",
9
+ "value": "0x0"
10
+ },
11
+ "blockHash": "0xd39f7804c758165d54ecb66a0601292a99865262f3b0ead4f5e43f5419bf1911",
12
+ "blockNumber": 23931800,
13
+ "result": {
14
+ "gasUsed": "0x32728",
15
+ "output": "0x"
16
+ },
17
+ "subtraces": 1,
18
+ "traceAddress": [],
19
+ "transactionHash": "0xd08a109aec1af7d69dffa15272255d64dfda9781f5837163502d4216f0191c03",
20
+ "transactionPosition": 231,
21
+ "type": "call"
22
+ },
23
+ {
24
+ "action": {
25
+ "from": "0x9ccc2f3ecde026230e11a5c8799ac7524f2bb294",
26
+ "callType": "delegatecall",
27
+ "gas": "0x3c4ef",
28
+ "input": "0x1bc7452600000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb95226000000000000000000000000ca11bde05977b3631167028862be2a173976ca1100000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055e610000000000000000000000000000000000000000000000000000000000000e0482ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000603bb2c05d474794ea97805e8de69bccfb3bca12000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000d0448aeda190bf3b7150c20687badb924d180e3eaa507107b45648cee974c2c506a3a5847b02e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d600000000000000000000000000000000000000000000000000000000000398a01fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb00000000000000000000000000000000000000000000000000000000000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073000000000000000000000000000000000000000000000000000000000000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a90000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000012a6a43a5c02d9181de914805f6e795c30578eb13f1f7186a59b29d4b220de12001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f4800000000000000000000000000000000000000000000000000000000692ff81300000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb9522605e99ba6c937cd68f050c561df09103266590858801dd7181710226d968ad173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000009c0000000000000000000000000000000000000000000000000000000000000001c18829e9b7071e55e1dcc90bbaffe92b06b74a8857b8aa6769a09864bd2fbf5873309fcfd19c49dfb21ee6c5fa326384f319d6f434c06028c4424e2b2525ab10a0000000000000000000000000000000000000000000000000000000000000ca0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003fffff5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005be1c1ac25ad550a34b32a56760b9729d277789c39b5f6cf3bf3c0621c9770a56b4ea35d8cd60e473a35343d402371a3afc0c03096a5e367f45dd361a9b955e7570041c9365fe895f28e90160f2c96ad02a249de87d9e00d13aa9d680005f3b6ceca9242fcf35d0358a3f0953a96f27d985eee91c6cb31c7b447655bc5f4db6a0e233f61cfdf92cacf15d8bf897ab57e9c49e8fe6f20da7b6cd46f29c58dd886e405beb9d5ab6a51886ad1ab1d0f7554ee895158fd9ed08d21223dfd234f1b2dfab5c14ed1ce97ff9bb287f50b1bda12e522e246ccb75222367600daeb74b818041f27573e86a5f46c943176d37e4f071c96a9950e03a717fd04c8c132775a0a34dda53e17e1ccaebf5bf2fecbdaef9b9a35f7ba3a7d47a2d7b0745566bc7f02b517c7177ebdf778d1679e19cf7a523aa560fc2c7d46ff67a95311c2aa6fd098c80db04c9d5801b5c5d79c45bd19fb86d349cd634f967976a17da1ba0705f1d84e41a6dd92cc3fc608c55e0037bc89ffe94f27b4042cfdd309b37f04c44b16f58432988c28d2bc91ba8f6b0da71183eb59e6655d1d85145afe867a432168263e03860c156fa32b2293ea9c77368fbc85f526cae96c0f9a715d6aff6aa33922819ee3a897253a084101be4aeeaeaeaa4af2c8371dd4c380c959478fe1a0b417e2700f9308fffcd0b388c3909e02edb0a821bca446c644e46630ee59bfb6fbe74e3d88e52fcb287df30741c0dd87d086fa118fd67b10a40be7c0a9484574c96fdce8c737a7aa6ae9215f13b4d7b20cba2b7490d750f9c884f1cddcdd75cd8e13fdee995a2dbfd648056c8c31bb25e3d166e2e69c336d0f9e5b4c73849d3db1404afbfd53f642786d7e82389781c669e7e0171bbd610490f9b7a86f922606c9c2b8dbd1d0b88d63a31a04f02201cd48a85263c66905ccd249a7aef56ca3a222a44a06cd867df197926e4eb77901277130391c22bc67b37f59d7ef59079433dc91402eadb41b1adcde9164aba2b851c38f2b82d1c95758cdf039c1ad8df882bd4327a2b3808788411e5c56ff5b6156e1a9d795cad409c146448b69e8c51f65264ab25cd4e8021d43d870d86143cd5901c5a39897c312e7901ca9ed8335b1683531219facf0bc75125f004e30f81f188811e516e4a9676c6e00c5c0b23a34731d3b494a44371d184a3648ac1278e903fa71c813674453a9c31e820d6b1a5ffd9e4aa5d8d8cc7dd94e8cde178f714cfa0c54e136fefec5c27eb04dcd9e0712141772284e024adb9571a4a09389e716860de531b09b29ce61d2d2961c883269bbebd99ca7f361c58d8c5f6c06ef0927867ab51d764080b934a451b2a2ae0f9dec85d90f0614c1ddddc78b648f1ba6ffa297ca9d21c34796c31d906e5a61ae03f958448a840e7bd1f2113d7fa3648708a776195811d42bd160183ce5be0fe1bfabb680608404245862b8d6219991646cb35154c14391c487d5f9e2d8507f8c41bc9bcea7a7efda2b448d891845286adf081b1e52f7d3356d0ebabc274e97d50cf2c660d9ddb411f6cf043380220c5b418a005f87bb7d81cd2ae4a5dd62fb4ced4e773c8afb46ddd254d0fb65f3b62f2a407b10ee3f7a6e507fc215401072e51320e05214e2e2e1e60bf3a7adb1a569a4375c3b9644b42721bb69109a8a534b01ac03b79f562cc2aa81573bf943b3e077f0261d9dfdee855e678cf8368c39ab48935d8c7e78f2dc0bb245e77a07f391acb0d97ede9131fdc191b6c0907dd7fbf4d8f829de2f069d02129ec1a6fbe50b654a755eaed2ddc319f8a3b388cec066b268179ee2e9134ec6cb687751c679a85c020bb069adbd7ac45db9d0c6f628d15bd51d41dda5d02b77ea52283ff9d1c7e1a1c172a010c8b831cbc55ccda21aeba265c8076e689262b1df516e3b039c10755f290efb3f36439abc5a5709ce7d34901ec41ff434df298c70eb52e3c6173f8bf4f5ab963e5b6b6e1895260fc953abbefec651b77363be40f0af23366d046d4467e2ea8947d2dad1b21a94aec7c97293041045b1e5bbd27ce9185b6368a932f9787b11bca7f06d74fd8c2f91db3b4f73ec57f78000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000006035f04341c68f9a8e43bf016d2d15e49c9d100b000000000000000000000000f755bad88dfa59abec72efaaaaf30190848a141c000000000000000000000000586e24dbe07ddc751955f89c12d781790b1fe53f000000000000000000000000210e3db61f84ff959c1dce0a0822266fe9d6800200000000000000000000000070f042dc4981c2e1e5fdcebd59981b8aa4e67b3c000000000000000000000000f0b35c28b111a83dd19b79c36b23e71b6bdc22be00000000000000000000000057445cbae08c07315e213189ace01788ebe787f5000000000000000000000000e052bda9f05e8e34ce1ffd72a2b136028efbede000000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb952260000000000000000000000006535deb539a0996d2c68dd1a7825adab4ca87ed40000000000000000000000005e473b14cdc29ddf90b29332652db4f7d6c324ea0000000000000000000000002de16e88e5abd2882c1674c9449c5cfff47b9b7c00000000000000000000000071b4b1611e2dad0122527b80f3db7f4e4bb1266d000000000000000000000000dff79657fb5c92dc60de8a02a21aca14374b9dd4000000000000000000000000a7fcaf657414ee41b0ce86e4de275190e8085a500000000000000000000000002d2eebe1a29c674d4a77c3c62221fdb488862be6000000000000000000000000397431824789531fa895ea94aaf11b6de3232451000000000000000000000000844d4c2daa1b7f6ea83a4f3ef7bbde0c297b4ce90000000000000000000000005335dc50dfd0073df32f5a4a93870fd5b30bee440000000000000000000000009c9f10582ec809f04df20ea2e277806ce559733d000000000000000000000000ac1d53c2cf80760920c1593d5a7210e913d9544000000000000000000000000044ffe0f5738907483254aec89647dd1879576f24000000000000000000000000000000000000000000000000000000000000003101c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
29
+ "to": "0x7d38d47e7c82195e6e607d3b0f1c20c615c7bf42",
30
+ "value": "0x0"
31
+ },
32
+ "blockHash": "0xd39f7804c758165d54ecb66a0601292a99865262f3b0ead4f5e43f5419bf1911",
33
+ "blockNumber": 23931800,
34
+ "result": {
35
+ "gasUsed": "0x310ca",
36
+ "output": "0x"
37
+ },
38
+ "subtraces": 1,
39
+ "traceAddress": [0],
40
+ "transactionHash": "0xd08a109aec1af7d69dffa15272255d64dfda9781f5837163502d4216f0191c03",
41
+ "transactionPosition": 231,
42
+ "type": "call"
43
+ },
44
+ {
45
+ "action": {
46
+ "from": "0x9ccc2f3ecde026230e11a5c8799ac7524f2bb294",
47
+ "callType": "call",
48
+ "gas": "0x39771",
49
+ "input": "0xab98c5f8000000000000000000000000ca11bde05977b3631167028862be2a173976ca11000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0482ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000603bb2c05d474794ea97805e8de69bccfb3bca12000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000d0448aeda190bf3b7150c20687badb924d180e3eaa507107b45648cee974c2c506a3a5847b02e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d600000000000000000000000000000000000000000000000000000000000398a01fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb00000000000000000000000000000000000000000000000000000000000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073000000000000000000000000000000000000000000000000000000000000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a90000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000012a6a43a5c02d9181de914805f6e795c30578eb13f1f7186a59b29d4b220de12001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f4800000000000000000000000000000000000000000000000000000000692ff81300000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb9522605e99ba6c937cd68f050c561df09103266590858801dd7181710226d968ad173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000009c0000000000000000000000000000000000000000000000000000000000000001c18829e9b7071e55e1dcc90bbaffe92b06b74a8857b8aa6769a09864bd2fbf5873309fcfd19c49dfb21ee6c5fa326384f319d6f434c06028c4424e2b2525ab10a0000000000000000000000000000000000000000000000000000000000000ca0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003fffff5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005be1c1ac25ad550a34b32a56760b9729d277789c39b5f6cf3bf3c0621c9770a56b4ea35d8cd60e473a35343d402371a3afc0c03096a5e367f45dd361a9b955e7570041c9365fe895f28e90160f2c96ad02a249de87d9e00d13aa9d680005f3b6ceca9242fcf35d0358a3f0953a96f27d985eee91c6cb31c7b447655bc5f4db6a0e233f61cfdf92cacf15d8bf897ab57e9c49e8fe6f20da7b6cd46f29c58dd886e405beb9d5ab6a51886ad1ab1d0f7554ee895158fd9ed08d21223dfd234f1b2dfab5c14ed1ce97ff9bb287f50b1bda12e522e246ccb75222367600daeb74b818041f27573e86a5f46c943176d37e4f071c96a9950e03a717fd04c8c132775a0a34dda53e17e1ccaebf5bf2fecbdaef9b9a35f7ba3a7d47a2d7b0745566bc7f02b517c7177ebdf778d1679e19cf7a523aa560fc2c7d46ff67a95311c2aa6fd098c80db04c9d5801b5c5d79c45bd19fb86d349cd634f967976a17da1ba0705f1d84e41a6dd92cc3fc608c55e0037bc89ffe94f27b4042cfdd309b37f04c44b16f58432988c28d2bc91ba8f6b0da71183eb59e6655d1d85145afe867a432168263e03860c156fa32b2293ea9c77368fbc85f526cae96c0f9a715d6aff6aa33922819ee3a897253a084101be4aeeaeaeaa4af2c8371dd4c380c959478fe1a0b417e2700f9308fffcd0b388c3909e02edb0a821bca446c644e46630ee59bfb6fbe74e3d88e52fcb287df30741c0dd87d086fa118fd67b10a40be7c0a9484574c96fdce8c737a7aa6ae9215f13b4d7b20cba2b7490d750f9c884f1cddcdd75cd8e13fdee995a2dbfd648056c8c31bb25e3d166e2e69c336d0f9e5b4c73849d3db1404afbfd53f642786d7e82389781c669e7e0171bbd610490f9b7a86f922606c9c2b8dbd1d0b88d63a31a04f02201cd48a85263c66905ccd249a7aef56ca3a222a44a06cd867df197926e4eb77901277130391c22bc67b37f59d7ef59079433dc91402eadb41b1adcde9164aba2b851c38f2b82d1c95758cdf039c1ad8df882bd4327a2b3808788411e5c56ff5b6156e1a9d795cad409c146448b69e8c51f65264ab25cd4e8021d43d870d86143cd5901c5a39897c312e7901ca9ed8335b1683531219facf0bc75125f004e30f81f188811e516e4a9676c6e00c5c0b23a34731d3b494a44371d184a3648ac1278e903fa71c813674453a9c31e820d6b1a5ffd9e4aa5d8d8cc7dd94e8cde178f714cfa0c54e136fefec5c27eb04dcd9e0712141772284e024adb9571a4a09389e716860de531b09b29ce61d2d2961c883269bbebd99ca7f361c58d8c5f6c06ef0927867ab51d764080b934a451b2a2ae0f9dec85d90f0614c1ddddc78b648f1ba6ffa297ca9d21c34796c31d906e5a61ae03f958448a840e7bd1f2113d7fa3648708a776195811d42bd160183ce5be0fe1bfabb680608404245862b8d6219991646cb35154c14391c487d5f9e2d8507f8c41bc9bcea7a7efda2b448d891845286adf081b1e52f7d3356d0ebabc274e97d50cf2c660d9ddb411f6cf043380220c5b418a005f87bb7d81cd2ae4a5dd62fb4ced4e773c8afb46ddd254d0fb65f3b62f2a407b10ee3f7a6e507fc215401072e51320e05214e2e2e1e60bf3a7adb1a569a4375c3b9644b42721bb69109a8a534b01ac03b79f562cc2aa81573bf943b3e077f0261d9dfdee855e678cf8368c39ab48935d8c7e78f2dc0bb245e77a07f391acb0d97ede9131fdc191b6c0907dd7fbf4d8f829de2f069d02129ec1a6fbe50b654a755eaed2ddc319f8a3b388cec066b268179ee2e9134ec6cb687751c679a85c020bb069adbd7ac45db9d0c6f628d15bd51d41dda5d02b77ea52283ff9d1c7e1a1c172a010c8b831cbc55ccda21aeba265c8076e689262b1df516e3b039c10755f290efb3f36439abc5a5709ce7d34901ec41ff434df298c70eb52e3c6173f8bf4f5ab963e5b6b6e1895260fc953abbefec651b77363be40f0af23366d046d4467e2ea8947d2dad1b21a94aec7c97293041045b1e5bbd27ce9185b6368a932f9787b11bca7f06d74fd8c2f91db3b4f73ec57f78000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000006035f04341c68f9a8e43bf016d2d15e49c9d100b000000000000000000000000f755bad88dfa59abec72efaaaaf30190848a141c000000000000000000000000586e24dbe07ddc751955f89c12d781790b1fe53f000000000000000000000000210e3db61f84ff959c1dce0a0822266fe9d6800200000000000000000000000070f042dc4981c2e1e5fdcebd59981b8aa4e67b3c000000000000000000000000f0b35c28b111a83dd19b79c36b23e71b6bdc22be00000000000000000000000057445cbae08c07315e213189ace01788ebe787f5000000000000000000000000e052bda9f05e8e34ce1ffd72a2b136028efbede000000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb952260000000000000000000000006535deb539a0996d2c68dd1a7825adab4ca87ed40000000000000000000000005e473b14cdc29ddf90b29332652db4f7d6c324ea0000000000000000000000002de16e88e5abd2882c1674c9449c5cfff47b9b7c00000000000000000000000071b4b1611e2dad0122527b80f3db7f4e4bb1266d000000000000000000000000dff79657fb5c92dc60de8a02a21aca14374b9dd4000000000000000000000000a7fcaf657414ee41b0ce86e4de275190e8085a500000000000000000000000002d2eebe1a29c674d4a77c3c62221fdb488862be6000000000000000000000000397431824789531fa895ea94aaf11b6de3232451000000000000000000000000844d4c2daa1b7f6ea83a4f3ef7bbde0c297b4ce90000000000000000000000005335dc50dfd0073df32f5a4a93870fd5b30bee440000000000000000000000009c9f10582ec809f04df20ea2e277806ce559733d000000000000000000000000ac1d53c2cf80760920c1593d5a7210e913d9544000000000000000000000000044ffe0f5738907483254aec89647dd1879576f24000000000000000000000000000000000000000000000000000000000000003101c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
50
+ "to": "0x84b4f526b3f4be78f967ebf566bbb65ffbb95226",
51
+ "value": "0x0"
52
+ },
53
+ "blockHash": "0xd39f7804c758165d54ecb66a0601292a99865262f3b0ead4f5e43f5419bf1911",
54
+ "blockNumber": 23931800,
55
+ "result": {
56
+ "gasUsed": "0x2e893",
57
+ "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
58
+ },
59
+ "subtraces": 1,
60
+ "traceAddress": [0, 0],
61
+ "transactionHash": "0xd08a109aec1af7d69dffa15272255d64dfda9781f5837163502d4216f0191c03",
62
+ "transactionPosition": 231,
63
+ "type": "call"
64
+ },
65
+ {
66
+ "action": {
67
+ "from": "0x84b4f526b3f4be78f967ebf566bbb65ffbb95226",
68
+ "callType": "call",
69
+ "gas": "0x379a1",
70
+ "input": "0x82ad56cb000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000603bb2c05d474794ea97805e8de69bccfb3bca12000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000d0448aeda190bf3b7150c20687badb924d180e3eaa507107b45648cee974c2c506a3a5847b02e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d600000000000000000000000000000000000000000000000000000000000398a01fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb00000000000000000000000000000000000000000000000000000000000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073000000000000000000000000000000000000000000000000000000000000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a90000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000012a6a43a5c02d9181de914805f6e795c30578eb13f1f7186a59b29d4b220de12001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f4800000000000000000000000000000000000000000000000000000000692ff81300000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb9522605e99ba6c937cd68f050c561df09103266590858801dd7181710226d968ad173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000009c0000000000000000000000000000000000000000000000000000000000000001c18829e9b7071e55e1dcc90bbaffe92b06b74a8857b8aa6769a09864bd2fbf5873309fcfd19c49dfb21ee6c5fa326384f319d6f434c06028c4424e2b2525ab10a0000000000000000000000000000000000000000000000000000000000000ca0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003fffff5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005be1c1ac25ad550a34b32a56760b9729d277789c39b5f6cf3bf3c0621c9770a56b4ea35d8cd60e473a35343d402371a3afc0c03096a5e367f45dd361a9b955e7570041c9365fe895f28e90160f2c96ad02a249de87d9e00d13aa9d680005f3b6ceca9242fcf35d0358a3f0953a96f27d985eee91c6cb31c7b447655bc5f4db6a0e233f61cfdf92cacf15d8bf897ab57e9c49e8fe6f20da7b6cd46f29c58dd886e405beb9d5ab6a51886ad1ab1d0f7554ee895158fd9ed08d21223dfd234f1b2dfab5c14ed1ce97ff9bb287f50b1bda12e522e246ccb75222367600daeb74b818041f27573e86a5f46c943176d37e4f071c96a9950e03a717fd04c8c132775a0a34dda53e17e1ccaebf5bf2fecbdaef9b9a35f7ba3a7d47a2d7b0745566bc7f02b517c7177ebdf778d1679e19cf7a523aa560fc2c7d46ff67a95311c2aa6fd098c80db04c9d5801b5c5d79c45bd19fb86d349cd634f967976a17da1ba0705f1d84e41a6dd92cc3fc608c55e0037bc89ffe94f27b4042cfdd309b37f04c44b16f58432988c28d2bc91ba8f6b0da71183eb59e6655d1d85145afe867a432168263e03860c156fa32b2293ea9c77368fbc85f526cae96c0f9a715d6aff6aa33922819ee3a897253a084101be4aeeaeaeaa4af2c8371dd4c380c959478fe1a0b417e2700f9308fffcd0b388c3909e02edb0a821bca446c644e46630ee59bfb6fbe74e3d88e52fcb287df30741c0dd87d086fa118fd67b10a40be7c0a9484574c96fdce8c737a7aa6ae9215f13b4d7b20cba2b7490d750f9c884f1cddcdd75cd8e13fdee995a2dbfd648056c8c31bb25e3d166e2e69c336d0f9e5b4c73849d3db1404afbfd53f642786d7e82389781c669e7e0171bbd610490f9b7a86f922606c9c2b8dbd1d0b88d63a31a04f02201cd48a85263c66905ccd249a7aef56ca3a222a44a06cd867df197926e4eb77901277130391c22bc67b37f59d7ef59079433dc91402eadb41b1adcde9164aba2b851c38f2b82d1c95758cdf039c1ad8df882bd4327a2b3808788411e5c56ff5b6156e1a9d795cad409c146448b69e8c51f65264ab25cd4e8021d43d870d86143cd5901c5a39897c312e7901ca9ed8335b1683531219facf0bc75125f004e30f81f188811e516e4a9676c6e00c5c0b23a34731d3b494a44371d184a3648ac1278e903fa71c813674453a9c31e820d6b1a5ffd9e4aa5d8d8cc7dd94e8cde178f714cfa0c54e136fefec5c27eb04dcd9e0712141772284e024adb9571a4a09389e716860de531b09b29ce61d2d2961c883269bbebd99ca7f361c58d8c5f6c06ef0927867ab51d764080b934a451b2a2ae0f9dec85d90f0614c1ddddc78b648f1ba6ffa297ca9d21c34796c31d906e5a61ae03f958448a840e7bd1f2113d7fa3648708a776195811d42bd160183ce5be0fe1bfabb680608404245862b8d6219991646cb35154c14391c487d5f9e2d8507f8c41bc9bcea7a7efda2b448d891845286adf081b1e52f7d3356d0ebabc274e97d50cf2c660d9ddb411f6cf043380220c5b418a005f87bb7d81cd2ae4a5dd62fb4ced4e773c8afb46ddd254d0fb65f3b62f2a407b10ee3f7a6e507fc215401072e51320e05214e2e2e1e60bf3a7adb1a569a4375c3b9644b42721bb69109a8a534b01ac03b79f562cc2aa81573bf943b3e077f0261d9dfdee855e678cf8368c39ab48935d8c7e78f2dc0bb245e77a07f391acb0d97ede9131fdc191b6c0907dd7fbf4d8f829de2f069d02129ec1a6fbe50b654a755eaed2ddc319f8a3b388cec066b268179ee2e9134ec6cb687751c679a85c020bb069adbd7ac45db9d0c6f628d15bd51d41dda5d02b77ea52283ff9d1c7e1a1c172a010c8b831cbc55ccda21aeba265c8076e689262b1df516e3b039c10755f290efb3f36439abc5a5709ce7d34901ec41ff434df298c70eb52e3c6173f8bf4f5ab963e5b6b6e1895260fc953abbefec651b77363be40f0af23366d046d4467e2ea8947d2dad1b21a94aec7c97293041045b1e5bbd27ce9185b6368a932f9787b11bca7f06d74fd8c2f91db3b4f73ec57f78000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000006035f04341c68f9a8e43bf016d2d15e49c9d100b000000000000000000000000f755bad88dfa59abec72efaaaaf30190848a141c000000000000000000000000586e24dbe07ddc751955f89c12d781790b1fe53f000000000000000000000000210e3db61f84ff959c1dce0a0822266fe9d6800200000000000000000000000070f042dc4981c2e1e5fdcebd59981b8aa4e67b3c000000000000000000000000f0b35c28b111a83dd19b79c36b23e71b6bdc22be00000000000000000000000057445cbae08c07315e213189ace01788ebe787f5000000000000000000000000e052bda9f05e8e34ce1ffd72a2b136028efbede000000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb952260000000000000000000000006535deb539a0996d2c68dd1a7825adab4ca87ed40000000000000000000000005e473b14cdc29ddf90b29332652db4f7d6c324ea0000000000000000000000002de16e88e5abd2882c1674c9449c5cfff47b9b7c00000000000000000000000071b4b1611e2dad0122527b80f3db7f4e4bb1266d000000000000000000000000dff79657fb5c92dc60de8a02a21aca14374b9dd4000000000000000000000000a7fcaf657414ee41b0ce86e4de275190e8085a500000000000000000000000002d2eebe1a29c674d4a77c3c62221fdb488862be6000000000000000000000000397431824789531fa895ea94aaf11b6de3232451000000000000000000000000844d4c2daa1b7f6ea83a4f3ef7bbde0c297b4ce90000000000000000000000005335dc50dfd0073df32f5a4a93870fd5b30bee440000000000000000000000009c9f10582ec809f04df20ea2e277806ce559733d000000000000000000000000ac1d53c2cf80760920c1593d5a7210e913d9544000000000000000000000000044ffe0f5738907483254aec89647dd1879576f24000000000000000000000000000000000000000000000000000000000000003101c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
71
+ "to": "0xca11bde05977b3631167028862be2a173976ca11",
72
+ "value": "0x0"
73
+ },
74
+ "blockHash": "0xd39f7804c758165d54ecb66a0601292a99865262f3b0ead4f5e43f5419bf1911",
75
+ "blockNumber": 23931800,
76
+ "result": {
77
+ "gasUsed": "0x2d7fa",
78
+ "output": "0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000"
79
+ },
80
+ "subtraces": 1,
81
+ "traceAddress": [0, 0, 0],
82
+ "transactionHash": "0xd08a109aec1af7d69dffa15272255d64dfda9781f5837163502d4216f0191c03",
83
+ "transactionPosition": 231,
84
+ "type": "call"
85
+ },
86
+ {
87
+ "action": {
88
+ "from": "0xca11bde05977b3631167028862be2a173976ca11",
89
+ "callType": "call",
90
+ "gas": "0x359f0",
91
+ "input": "0x48aeda190bf3b7150c20687badb924d180e3eaa507107b45648cee974c2c506a3a5847b02e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d600000000000000000000000000000000000000000000000000000000000398a01fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb00000000000000000000000000000000000000000000000000000000000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073000000000000000000000000000000000000000000000000000000000000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a90000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000012a6a43a5c02d9181de914805f6e795c30578eb13f1f7186a59b29d4b220de12001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f4800000000000000000000000000000000000000000000000000000000692ff81300000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb9522605e99ba6c937cd68f050c561df09103266590858801dd7181710226d968ad173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000009c0000000000000000000000000000000000000000000000000000000000000001c18829e9b7071e55e1dcc90bbaffe92b06b74a8857b8aa6769a09864bd2fbf5873309fcfd19c49dfb21ee6c5fa326384f319d6f434c06028c4424e2b2525ab10a0000000000000000000000000000000000000000000000000000000000000ca0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003fffff5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005be1c1ac25ad550a34b32a56760b9729d277789c39b5f6cf3bf3c0621c9770a56b4ea35d8cd60e473a35343d402371a3afc0c03096a5e367f45dd361a9b955e7570041c9365fe895f28e90160f2c96ad02a249de87d9e00d13aa9d680005f3b6ceca9242fcf35d0358a3f0953a96f27d985eee91c6cb31c7b447655bc5f4db6a0e233f61cfdf92cacf15d8bf897ab57e9c49e8fe6f20da7b6cd46f29c58dd886e405beb9d5ab6a51886ad1ab1d0f7554ee895158fd9ed08d21223dfd234f1b2dfab5c14ed1ce97ff9bb287f50b1bda12e522e246ccb75222367600daeb74b818041f27573e86a5f46c943176d37e4f071c96a9950e03a717fd04c8c132775a0a34dda53e17e1ccaebf5bf2fecbdaef9b9a35f7ba3a7d47a2d7b0745566bc7f02b517c7177ebdf778d1679e19cf7a523aa560fc2c7d46ff67a95311c2aa6fd098c80db04c9d5801b5c5d79c45bd19fb86d349cd634f967976a17da1ba0705f1d84e41a6dd92cc3fc608c55e0037bc89ffe94f27b4042cfdd309b37f04c44b16f58432988c28d2bc91ba8f6b0da71183eb59e6655d1d85145afe867a432168263e03860c156fa32b2293ea9c77368fbc85f526cae96c0f9a715d6aff6aa33922819ee3a897253a084101be4aeeaeaeaa4af2c8371dd4c380c959478fe1a0b417e2700f9308fffcd0b388c3909e02edb0a821bca446c644e46630ee59bfb6fbe74e3d88e52fcb287df30741c0dd87d086fa118fd67b10a40be7c0a9484574c96fdce8c737a7aa6ae9215f13b4d7b20cba2b7490d750f9c884f1cddcdd75cd8e13fdee995a2dbfd648056c8c31bb25e3d166e2e69c336d0f9e5b4c73849d3db1404afbfd53f642786d7e82389781c669e7e0171bbd610490f9b7a86f922606c9c2b8dbd1d0b88d63a31a04f02201cd48a85263c66905ccd249a7aef56ca3a222a44a06cd867df197926e4eb77901277130391c22bc67b37f59d7ef59079433dc91402eadb41b1adcde9164aba2b851c38f2b82d1c95758cdf039c1ad8df882bd4327a2b3808788411e5c56ff5b6156e1a9d795cad409c146448b69e8c51f65264ab25cd4e8021d43d870d86143cd5901c5a39897c312e7901ca9ed8335b1683531219facf0bc75125f004e30f81f188811e516e4a9676c6e00c5c0b23a34731d3b494a44371d184a3648ac1278e903fa71c813674453a9c31e820d6b1a5ffd9e4aa5d8d8cc7dd94e8cde178f714cfa0c54e136fefec5c27eb04dcd9e0712141772284e024adb9571a4a09389e716860de531b09b29ce61d2d2961c883269bbebd99ca7f361c58d8c5f6c06ef0927867ab51d764080b934a451b2a2ae0f9dec85d90f0614c1ddddc78b648f1ba6ffa297ca9d21c34796c31d906e5a61ae03f958448a840e7bd1f2113d7fa3648708a776195811d42bd160183ce5be0fe1bfabb680608404245862b8d6219991646cb35154c14391c487d5f9e2d8507f8c41bc9bcea7a7efda2b448d891845286adf081b1e52f7d3356d0ebabc274e97d50cf2c660d9ddb411f6cf043380220c5b418a005f87bb7d81cd2ae4a5dd62fb4ced4e773c8afb46ddd254d0fb65f3b62f2a407b10ee3f7a6e507fc215401072e51320e05214e2e2e1e60bf3a7adb1a569a4375c3b9644b42721bb69109a8a534b01ac03b79f562cc2aa81573bf943b3e077f0261d9dfdee855e678cf8368c39ab48935d8c7e78f2dc0bb245e77a07f391acb0d97ede9131fdc191b6c0907dd7fbf4d8f829de2f069d02129ec1a6fbe50b654a755eaed2ddc319f8a3b388cec066b268179ee2e9134ec6cb687751c679a85c020bb069adbd7ac45db9d0c6f628d15bd51d41dda5d02b77ea52283ff9d1c7e1a1c172a010c8b831cbc55ccda21aeba265c8076e689262b1df516e3b039c10755f290efb3f36439abc5a5709ce7d34901ec41ff434df298c70eb52e3c6173f8bf4f5ab963e5b6b6e1895260fc953abbefec651b77363be40f0af23366d046d4467e2ea8947d2dad1b21a94aec7c97293041045b1e5bbd27ce9185b6368a932f9787b11bca7f06d74fd8c2f91db3b4f73ec57f78000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000006035f04341c68f9a8e43bf016d2d15e49c9d100b000000000000000000000000f755bad88dfa59abec72efaaaaf30190848a141c000000000000000000000000586e24dbe07ddc751955f89c12d781790b1fe53f000000000000000000000000210e3db61f84ff959c1dce0a0822266fe9d6800200000000000000000000000070f042dc4981c2e1e5fdcebd59981b8aa4e67b3c000000000000000000000000f0b35c28b111a83dd19b79c36b23e71b6bdc22be00000000000000000000000057445cbae08c07315e213189ace01788ebe787f5000000000000000000000000e052bda9f05e8e34ce1ffd72a2b136028efbede000000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb952260000000000000000000000006535deb539a0996d2c68dd1a7825adab4ca87ed40000000000000000000000005e473b14cdc29ddf90b29332652db4f7d6c324ea0000000000000000000000002de16e88e5abd2882c1674c9449c5cfff47b9b7c00000000000000000000000071b4b1611e2dad0122527b80f3db7f4e4bb1266d000000000000000000000000dff79657fb5c92dc60de8a02a21aca14374b9dd4000000000000000000000000a7fcaf657414ee41b0ce86e4de275190e8085a500000000000000000000000002d2eebe1a29c674d4a77c3c62221fdb488862be6000000000000000000000000397431824789531fa895ea94aaf11b6de3232451000000000000000000000000844d4c2daa1b7f6ea83a4f3ef7bbde0c297b4ce90000000000000000000000005335dc50dfd0073df32f5a4a93870fd5b30bee440000000000000000000000009c9f10582ec809f04df20ea2e277806ce559733d000000000000000000000000ac1d53c2cf80760920c1593d5a7210e913d9544000000000000000000000000044ffe0f5738907483254aec89647dd1879576f24000000000000000000000000000000000000000000000000000000000000003101c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
92
+ "to": "0x603bb2c05d474794ea97805e8de69bccfb3bca12",
93
+ "value": "0x0"
94
+ },
95
+ "blockHash": "0xd39f7804c758165d54ecb66a0601292a99865262f3b0ead4f5e43f5419bf1911",
96
+ "blockNumber": 23931800,
97
+ "result": {
98
+ "gasUsed": "0x2c30f",
99
+ "output": "0x"
100
+ },
101
+ "subtraces": 1,
102
+ "traceAddress": [0, 0, 0, 0],
103
+ "transactionHash": "0xd08a109aec1af7d69dffa15272255d64dfda9781f5837163502d4216f0191c03",
104
+ "transactionPosition": 231,
105
+ "type": "call"
106
+ },
107
+ {
108
+ "action": {
109
+ "from": "0x603bb2c05d474794ea97805e8de69bccfb3bca12",
110
+ "callType": "delegatecall",
111
+ "gas": "0x316c1",
112
+ "input": "0x547b85980bf3b7150c20687badb924d180e3eaa507107b45648cee974c2c506a3a5847b02e33ee2008411c04b99c24b313513d097a0d21a5040b6193d1f978b8226892d600000000000000000000000000000000000000000000000000000000000398a01fd848aa69e1633722fe249a5b7f53b094f1c9cef9f5c694b073fd1cc5850dfb00000000000000000000000000000000000000000000000000000000000000000c499b373a1f0fe1b510a63563546d2d39e206895056a5af0143c5f30d639073000000000000000000000000000000000000000000000000000000000000008023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a90000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000012a6a43a5c02d9181de914805f6e795c30578eb13f1f7186a59b29d4b220de12001cedbd7ea5309ef9d1d159209835409bf41b6b1802597a52fa70cc82e934d900089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f4800000000000000000000000000000000000000000000000000000000692ff81300000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb9522605e99ba6c937cd68f050c561df09103266590858801dd7181710226d968ad173000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000009e0000000000000000000000000000000000000000000000000000000000000001c18829e9b7071e55e1dcc90bbaffe92b06b74a8857b8aa6769a09864bd2fbf5873309fcfd19c49dfb21ee6c5fa326384f319d6f434c06028c4424e2b2525ab10a0000000000000000000000000000000000000000000000000000000000000cc00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003fffff5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005be1c1ac25ad550a34b32a56760b9729d277789c39b5f6cf3bf3c0621c9770a56b4ea35d8cd60e473a35343d402371a3afc0c03096a5e367f45dd361a9b955e7570041c9365fe895f28e90160f2c96ad02a249de87d9e00d13aa9d680005f3b6ceca9242fcf35d0358a3f0953a96f27d985eee91c6cb31c7b447655bc5f4db6a0e233f61cfdf92cacf15d8bf897ab57e9c49e8fe6f20da7b6cd46f29c58dd886e405beb9d5ab6a51886ad1ab1d0f7554ee895158fd9ed08d21223dfd234f1b2dfab5c14ed1ce97ff9bb287f50b1bda12e522e246ccb75222367600daeb74b818041f27573e86a5f46c943176d37e4f071c96a9950e03a717fd04c8c132775a0a34dda53e17e1ccaebf5bf2fecbdaef9b9a35f7ba3a7d47a2d7b0745566bc7f02b517c7177ebdf778d1679e19cf7a523aa560fc2c7d46ff67a95311c2aa6fd098c80db04c9d5801b5c5d79c45bd19fb86d349cd634f967976a17da1ba0705f1d84e41a6dd92cc3fc608c55e0037bc89ffe94f27b4042cfdd309b37f04c44b16f58432988c28d2bc91ba8f6b0da71183eb59e6655d1d85145afe867a432168263e03860c156fa32b2293ea9c77368fbc85f526cae96c0f9a715d6aff6aa33922819ee3a897253a084101be4aeeaeaeaa4af2c8371dd4c380c959478fe1a0b417e2700f9308fffcd0b388c3909e02edb0a821bca446c644e46630ee59bfb6fbe74e3d88e52fcb287df30741c0dd87d086fa118fd67b10a40be7c0a9484574c96fdce8c737a7aa6ae9215f13b4d7b20cba2b7490d750f9c884f1cddcdd75cd8e13fdee995a2dbfd648056c8c31bb25e3d166e2e69c336d0f9e5b4c73849d3db1404afbfd53f642786d7e82389781c669e7e0171bbd610490f9b7a86f922606c9c2b8dbd1d0b88d63a31a04f02201cd48a85263c66905ccd249a7aef56ca3a222a44a06cd867df197926e4eb77901277130391c22bc67b37f59d7ef59079433dc91402eadb41b1adcde9164aba2b851c38f2b82d1c95758cdf039c1ad8df882bd4327a2b3808788411e5c56ff5b6156e1a9d795cad409c146448b69e8c51f65264ab25cd4e8021d43d870d86143cd5901c5a39897c312e7901ca9ed8335b1683531219facf0bc75125f004e30f81f188811e516e4a9676c6e00c5c0b23a34731d3b494a44371d184a3648ac1278e903fa71c813674453a9c31e820d6b1a5ffd9e4aa5d8d8cc7dd94e8cde178f714cfa0c54e136fefec5c27eb04dcd9e0712141772284e024adb9571a4a09389e716860de531b09b29ce61d2d2961c883269bbebd99ca7f361c58d8c5f6c06ef0927867ab51d764080b934a451b2a2ae0f9dec85d90f0614c1ddddc78b648f1ba6ffa297ca9d21c34796c31d906e5a61ae03f958448a840e7bd1f2113d7fa3648708a776195811d42bd160183ce5be0fe1bfabb680608404245862b8d6219991646cb35154c14391c487d5f9e2d8507f8c41bc9bcea7a7efda2b448d891845286adf081b1e52f7d3356d0ebabc274e97d50cf2c660d9ddb411f6cf043380220c5b418a005f87bb7d81cd2ae4a5dd62fb4ced4e773c8afb46ddd254d0fb65f3b62f2a407b10ee3f7a6e507fc215401072e51320e05214e2e2e1e60bf3a7adb1a569a4375c3b9644b42721bb69109a8a534b01ac03b79f562cc2aa81573bf943b3e077f0261d9dfdee855e678cf8368c39ab48935d8c7e78f2dc0bb245e77a07f391acb0d97ede9131fdc191b6c0907dd7fbf4d8f829de2f069d02129ec1a6fbe50b654a755eaed2ddc319f8a3b388cec066b268179ee2e9134ec6cb687751c679a85c020bb069adbd7ac45db9d0c6f628d15bd51d41dda5d02b77ea52283ff9d1c7e1a1c172a010c8b831cbc55ccda21aeba265c8076e689262b1df516e3b039c10755f290efb3f36439abc5a5709ce7d34901ec41ff434df298c70eb52e3c6173f8bf4f5ab963e5b6b6e1895260fc953abbefec651b77363be40f0af23366d046d4467e2ea8947d2dad1b21a94aec7c97293041045b1e5bbd27ce9185b6368a932f9787b11bca7f06d74fd8c2f91db3b4f73ec57f78000000000000000000000000000000000000000000000000000000000000000000160000000000000000000000006035f04341c68f9a8e43bf016d2d15e49c9d100b000000000000000000000000f755bad88dfa59abec72efaaaaf30190848a141c000000000000000000000000586e24dbe07ddc751955f89c12d781790b1fe53f000000000000000000000000210e3db61f84ff959c1dce0a0822266fe9d6800200000000000000000000000070f042dc4981c2e1e5fdcebd59981b8aa4e67b3c000000000000000000000000f0b35c28b111a83dd19b79c36b23e71b6bdc22be00000000000000000000000057445cbae08c07315e213189ace01788ebe787f5000000000000000000000000e052bda9f05e8e34ce1ffd72a2b136028efbede000000000000000000000000084b4f526b3f4be78f967ebf566bbb65ffbb952260000000000000000000000006535deb539a0996d2c68dd1a7825adab4ca87ed40000000000000000000000005e473b14cdc29ddf90b29332652db4f7d6c324ea0000000000000000000000002de16e88e5abd2882c1674c9449c5cfff47b9b7c00000000000000000000000071b4b1611e2dad0122527b80f3db7f4e4bb1266d000000000000000000000000dff79657fb5c92dc60de8a02a21aca14374b9dd4000000000000000000000000a7fcaf657414ee41b0ce86e4de275190e8085a500000000000000000000000002d2eebe1a29c674d4a77c3c62221fdb488862be6000000000000000000000000397431824789531fa895ea94aaf11b6de3232451000000000000000000000000844d4c2daa1b7f6ea83a4f3ef7bbde0c297b4ce90000000000000000000000005335dc50dfd0073df32f5a4a93870fd5b30bee440000000000000000000000009c9f10582ec809f04df20ea2e277806ce559733d000000000000000000000000ac1d53c2cf80760920c1593d5a7210e913d9544000000000000000000000000044ffe0f5738907483254aec89647dd1879576f24000000000000000000000000000000000000000000000000000000000000003101c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
113
+ "to": "0x1e0a5d9f39c4393b71dd4c6d038be4b77266c1a4",
114
+ "value": "0x0"
115
+ },
116
+ "blockHash": "0xd39f7804c758165d54ecb66a0601292a99865262f3b0ead4f5e43f5419bf1911",
117
+ "blockNumber": 23931800,
118
+ "result": {
119
+ "gasUsed": "0x28c37",
120
+ "output": "0x"
121
+ },
122
+ "subtraces": 0,
123
+ "traceAddress": [0, 0, 0, 0, 0],
124
+ "transactionHash": "0xd08a109aec1af7d69dffa15272255d64dfda9781f5837163502d4216f0191c03",
125
+ "transactionPosition": 231,
126
+ "type": "call"
127
+ }
128
+ ]
@@ -0,0 +1,216 @@
1
+ [
2
+ {
3
+ "action": {
4
+ "from": "0x28c6c06298d514db089934071355e5743bf21d60",
5
+ "callType": "call",
6
+ "gas": "0x5f1fc",
7
+ "input": "0x34fcd5be0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000a587116d5cf08e53bd75f3a0a434bf06671098590000000000000000000000000000000000000000000000000000000029a6d78000000000000000000000000000000000000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb0000000000000000000000009f863dfdb5df33fe5f87601b8d2f23c816d5fde8000000000000000000000000000000000000000000000000000000000b7ff86f00000000000000000000000000000000000000000000000000000000",
8
+ "to": "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055",
9
+ "value": "0x0"
10
+ },
11
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
12
+ "blockNumber": 23934803,
13
+ "result": {
14
+ "gasUsed": "0x15b9b",
15
+ "output": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001"
16
+ },
17
+ "subtraces": 1,
18
+ "traceAddress": [],
19
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
20
+ "transactionPosition": 333,
21
+ "type": "call"
22
+ },
23
+ {
24
+ "action": {
25
+ "from": "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055",
26
+ "callType": "delegatecall",
27
+ "gas": "0x5c75c",
28
+ "input": "0x34fcd5be0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000120000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000a587116d5cf08e53bd75f3a0a434bf06671098590000000000000000000000000000000000000000000000000000000029a6d78000000000000000000000000000000000000000000000000000000000000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb0000000000000000000000009f863dfdb5df33fe5f87601b8d2f23c816d5fde8000000000000000000000000000000000000000000000000000000000b7ff86f00000000000000000000000000000000000000000000000000000000",
29
+ "to": "0xd206ac7fef53d83ed4563e770b28dba90d0d9ec8",
30
+ "value": "0x0"
31
+ },
32
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
33
+ "blockNumber": 23934803,
34
+ "result": {
35
+ "gasUsed": "0x1483e",
36
+ "output": "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001"
37
+ },
38
+ "subtraces": 4,
39
+ "traceAddress": [0],
40
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
41
+ "transactionPosition": 333,
42
+ "type": "call"
43
+ },
44
+ {
45
+ "action": {
46
+ "from": "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055",
47
+ "callType": "staticcall",
48
+ "gas": "0x7530",
49
+ "input": "0x01ffc9a701ffc9a700000000000000000000000000000000000000000000000000000000",
50
+ "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
51
+ "value": "0x0"
52
+ },
53
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
54
+ "blockNumber": 23934803,
55
+ "error": "Reverted",
56
+ "result": {
57
+ "gasUsed": "0x1d64",
58
+ "output": "0x"
59
+ },
60
+ "subtraces": 1,
61
+ "traceAddress": [0, 0],
62
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
63
+ "transactionPosition": 333,
64
+ "type": "call"
65
+ },
66
+ {
67
+ "action": {
68
+ "from": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
69
+ "callType": "delegatecall",
70
+ "gas": "0x5783",
71
+ "input": "0x01ffc9a701ffc9a700000000000000000000000000000000000000000000000000000000",
72
+ "to": "0x43506849d7c04f9138d1a2050bbf3a0c054402dd",
73
+ "value": "0x0"
74
+ },
75
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
76
+ "blockNumber": 23934803,
77
+ "error": "Reverted",
78
+ "result": {
79
+ "gasUsed": "0xf0",
80
+ "output": "0x"
81
+ },
82
+ "subtraces": 0,
83
+ "traceAddress": [0, 0, 0],
84
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
85
+ "transactionPosition": 333,
86
+ "type": "call"
87
+ },
88
+ {
89
+ "action": {
90
+ "from": "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055",
91
+ "callType": "call",
92
+ "gas": "0x541ba",
93
+ "input": "0xa9059cbb000000000000000000000000a587116d5cf08e53bd75f3a0a434bf06671098590000000000000000000000000000000000000000000000000000000029a6d780",
94
+ "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
95
+ "value": "0x0"
96
+ },
97
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
98
+ "blockNumber": 23934803,
99
+ "result": {
100
+ "gasUsed": "0x9ecc",
101
+ "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
102
+ },
103
+ "subtraces": 1,
104
+ "traceAddress": [0, 1],
105
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
106
+ "transactionPosition": 333,
107
+ "type": "call"
108
+ },
109
+ {
110
+ "action": {
111
+ "from": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
112
+ "callType": "delegatecall",
113
+ "gas": "0x510d8",
114
+ "input": "0xa9059cbb000000000000000000000000a587116d5cf08e53bd75f3a0a434bf06671098590000000000000000000000000000000000000000000000000000000029a6d780",
115
+ "to": "0x43506849d7c04f9138d1a2050bbf3a0c054402dd",
116
+ "value": "0x0"
117
+ },
118
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
119
+ "blockNumber": 23934803,
120
+ "result": {
121
+ "gasUsed": "0x8253",
122
+ "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
123
+ },
124
+ "subtraces": 0,
125
+ "traceAddress": [0, 1, 0],
126
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
127
+ "transactionPosition": 333,
128
+ "type": "call"
129
+ },
130
+ {
131
+ "action": {
132
+ "from": "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055",
133
+ "callType": "staticcall",
134
+ "gas": "0x7530",
135
+ "input": "0x01ffc9a701ffc9a700000000000000000000000000000000000000000000000000000000",
136
+ "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
137
+ "value": "0x0"
138
+ },
139
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
140
+ "blockNumber": 23934803,
141
+ "error": "Reverted",
142
+ "result": {
143
+ "gasUsed": "0x400",
144
+ "output": "0x"
145
+ },
146
+ "subtraces": 1,
147
+ "traceAddress": [0, 2],
148
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
149
+ "transactionPosition": 333,
150
+ "type": "call"
151
+ },
152
+ {
153
+ "action": {
154
+ "from": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
155
+ "callType": "delegatecall",
156
+ "gas": "0x7081",
157
+ "input": "0x01ffc9a701ffc9a700000000000000000000000000000000000000000000000000000000",
158
+ "to": "0x43506849d7c04f9138d1a2050bbf3a0c054402dd",
159
+ "value": "0x0"
160
+ },
161
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
162
+ "blockNumber": 23934803,
163
+ "error": "Reverted",
164
+ "result": {
165
+ "gasUsed": "0xf0",
166
+ "output": "0x"
167
+ },
168
+ "subtraces": 0,
169
+ "traceAddress": [0, 2, 0],
170
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
171
+ "transactionPosition": 333,
172
+ "type": "call"
173
+ },
174
+ {
175
+ "action": {
176
+ "from": "0xee7ae85f2fe2239e27d9c1e23fffe168d63b4055",
177
+ "callType": "call",
178
+ "gas": "0x4997e",
179
+ "input": "0xa9059cbb0000000000000000000000009f863dfdb5df33fe5f87601b8d2f23c816d5fde8000000000000000000000000000000000000000000000000000000000b7ff86f",
180
+ "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
181
+ "value": "0x0"
182
+ },
183
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
184
+ "blockNumber": 23934803,
185
+ "result": {
186
+ "gasUsed": "0x280c",
187
+ "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
188
+ },
189
+ "subtraces": 1,
190
+ "traceAddress": [0, 3],
191
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
192
+ "transactionPosition": 333,
193
+ "type": "call"
194
+ },
195
+ {
196
+ "action": {
197
+ "from": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
198
+ "callType": "delegatecall",
199
+ "gas": "0x4843b",
200
+ "input": "0xa9059cbb0000000000000000000000009f863dfdb5df33fe5f87601b8d2f23c816d5fde8000000000000000000000000000000000000000000000000000000000b7ff86f",
201
+ "to": "0x43506849d7c04f9138d1a2050bbf3a0c054402dd",
202
+ "value": "0x0"
203
+ },
204
+ "blockHash": "0x5c463f21273435fbe71ab85a203ce4566e8f0d83deafcc757913ac2b5839367d",
205
+ "blockNumber": 23934803,
206
+ "result": {
207
+ "gasUsed": "0x24f7",
208
+ "output": "0x0000000000000000000000000000000000000000000000000000000000000001"
209
+ },
210
+ "subtraces": 0,
211
+ "traceAddress": [0, 3, 0],
212
+ "transactionHash": "0x622c1ca0d4c20a4d58f4111bf24cafa633318ededb24819ee3d977a73b1a1ff9",
213
+ "transactionPosition": 333,
214
+ "type": "call"
215
+ }
216
+ ]
@@ -0,0 +1,7 @@
1
+ export * from './mock_structs.js';
2
+ export * from './mock_l2_block_source.js';
3
+ export * from './mock_l1_to_l2_message_source.js';
4
+ export * from './mock_archiver.js';
5
+ // NOTE: noop_l1_archiver.js is intentionally NOT exported here because it imports
6
+ // jest-mock-extended, which depends on @jest/globals and can only run inside Jest.
7
+ // Import it directly: import { NoopL1Archiver } from '@aztec-labs/archiver/test/noop-l1';
@@ -0,0 +1,122 @@
1
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
2
+ import type { L2BlockSource } from '@aztec-labs/stdlib/block';
3
+ import type { Checkpoint } from '@aztec-labs/stdlib/checkpoint';
4
+ import type { InboxBucket, L1ToL2MessageSource } from '@aztec-labs/stdlib/messaging';
5
+
6
+ import { MockL1ToL2MessageSource } from './mock_l1_to_l2_message_source.js';
7
+ import { MockL2BlockSource } from './mock_l2_block_source.js';
8
+
9
+ /**
10
+ * A mocked implementation of the archiver that implements L2BlockSource and L1ToL2MessageSource.
11
+ */
12
+ export class MockArchiver extends MockL2BlockSource implements L2BlockSource, L1ToL2MessageSource {
13
+ private messageSource = new MockL1ToL2MessageSource(0);
14
+
15
+ public setInboxBucket(bucket: InboxBucket, msgs: Fr[] = []) {
16
+ this.messageSource.setInboxBucket(bucket, msgs);
17
+ }
18
+
19
+ getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined> {
20
+ return this.messageSource.getL1ToL2MessageIndex(_l1ToL2Message);
21
+ }
22
+
23
+ getLatestInboxBucketAtOrBefore(timestamp: bigint): Promise<InboxBucket | undefined> {
24
+ return this.messageSource.getLatestInboxBucketAtOrBefore(timestamp);
25
+ }
26
+
27
+ getInboxBucket(seq: bigint): Promise<InboxBucket | undefined> {
28
+ return this.messageSource.getInboxBucket(seq);
29
+ }
30
+
31
+ getInboxBucketByTotalMsgCount(totalMsgCount: bigint): Promise<InboxBucket | undefined> {
32
+ return this.messageSource.getInboxBucketByTotalMsgCount(totalMsgCount);
33
+ }
34
+
35
+ getL1ToL2MessagesBetweenBuckets(fromExclusive: bigint, toInclusive: bigint): Promise<Fr[]> {
36
+ return this.messageSource.getL1ToL2MessagesBetweenBuckets(fromExclusive, toInclusive);
37
+ }
38
+
39
+ getL1ToL2MessagesBetweenLeafCounts(startLeafCount: bigint, endLeafCount: bigint): Promise<Fr[]> {
40
+ return this.messageSource.getL1ToL2MessagesBetweenLeafCounts(startLeafCount, endLeafCount);
41
+ }
42
+ }
43
+
44
+ /**
45
+ * A mocked implementation of the archiver with a set of precomputed blocks and messages.
46
+ */
47
+ export class MockPrefilledArchiver extends MockArchiver {
48
+ private prefilled: Checkpoint[] = [];
49
+ private prefilledMessages: Fr[][] = [];
50
+
51
+ constructor(prefilled: { checkpoint: Checkpoint; messages: Fr[] }[]) {
52
+ super();
53
+ this.setPrefilled(prefilled);
54
+ }
55
+
56
+ public setPrefilled(prefilled: { checkpoint: Checkpoint; messages: Fr[] }[]) {
57
+ for (const { checkpoint } of prefilled) {
58
+ this.prefilled[checkpoint.number - 1] = checkpoint;
59
+ if (checkpoint.blocks.length !== 1) {
60
+ throw new Error('Prefilled checkpoint must only have 1 block at the moment.');
61
+ }
62
+ }
63
+
64
+ for (const { checkpoint, messages } of prefilled) {
65
+ this.prefilledMessages[checkpoint.number - 1] = messages;
66
+ }
67
+
68
+ // Register the Inbox buckets the streaming world-state synchronizer reconstructs each block's consumed
69
+ // message bundle from: a genesis sentinel (totalMsgCount 0) so a leaf count of 0
70
+ // resolves to a bucket, plus one bucket per message-carrying checkpoint whose cumulative totalMsgCount
71
+ // matches the block's post-insertion L1-to-L2 leaf count. Rebuilt from the full prefilled chain (not just
72
+ // this call's checkpoints) so a reorg re-prefill that replaces a suffix keeps the cumulative aligned.
73
+ // Without these the synchronizer derives an empty bundle and the reconstructed block state diverges.
74
+ this.setInboxBucket(
75
+ {
76
+ seq: 0n,
77
+ inboxRollingHash: Fr.ZERO,
78
+ totalMsgCount: 0n,
79
+ timestamp: 0n,
80
+ msgCount: 0,
81
+ lastMessageIndex: 0n,
82
+ },
83
+ [],
84
+ );
85
+ let bucketSeq = 0n;
86
+ let totalMsgCount = 0n;
87
+ for (let i = 0; i < this.prefilled.length; i++) {
88
+ const messages = this.prefilledMessages[i] ?? [];
89
+ if (messages.length === 0) {
90
+ continue;
91
+ }
92
+ bucketSeq += 1n;
93
+ totalMsgCount += BigInt(messages.length);
94
+ this.setInboxBucket(
95
+ {
96
+ seq: bucketSeq,
97
+ inboxRollingHash: Fr.ZERO,
98
+ totalMsgCount,
99
+ timestamp: bucketSeq,
100
+ msgCount: messages.length,
101
+ lastMessageIndex: totalMsgCount - 1n,
102
+ },
103
+ messages,
104
+ );
105
+ }
106
+ }
107
+
108
+ public override createBlocks(numBlocks: number) {
109
+ const flattenedBlocks = this.prefilled.flatMap(c => c.blocks);
110
+ if (this.l2Blocks.length + numBlocks > flattenedBlocks.length) {
111
+ throw new Error(
112
+ `Not enough precomputed blocks to create ${numBlocks} more blocks (already at ${this.l2Blocks.length})`,
113
+ );
114
+ }
115
+
116
+ const fromBlock = this.l2Blocks.length;
117
+ const checkpointsToAdd = this.prefilled.slice(fromBlock, fromBlock + numBlocks);
118
+ this.addProposedBlocks(checkpointsToAdd.flatMap(c => c.blocks));
119
+ this.checkpointList.push(...checkpointsToAdd);
120
+ return Promise.resolve();
121
+ }
122
+ }
@@ -0,0 +1,81 @@
1
+ import { BlockNumber, CheckpointNumber } from '@aztec-labs/foundation/branded-types';
2
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
3
+ import type { CheckpointId, L2BlockId, L2TipId, L2Tips } from '@aztec-labs/stdlib/block';
4
+ import type { InboxBucket, L1ToL2MessageSource } from '@aztec-labs/stdlib/messaging';
5
+
6
+ /**
7
+ * A mocked implementation of L1ToL2MessageSource to be used in tests.
8
+ */
9
+ export class MockL1ToL2MessageSource implements L1ToL2MessageSource {
10
+ private buckets = new Map<bigint, InboxBucket>();
11
+ private messagesPerBucket = new Map<bigint, Fr[]>();
12
+
13
+ constructor(private blockNumber: number) {}
14
+
15
+ public setInboxBucket(bucket: InboxBucket, msgs: Fr[] = []) {
16
+ this.buckets.set(bucket.seq, bucket);
17
+ this.messagesPerBucket.set(bucket.seq, msgs);
18
+ }
19
+
20
+ public setBlockNumber(blockNumber: number) {
21
+ this.blockNumber = blockNumber;
22
+ }
23
+
24
+ getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined> {
25
+ throw new Error('Method not implemented.');
26
+ }
27
+
28
+ getInboxBucket(seq: bigint): Promise<InboxBucket | undefined> {
29
+ return Promise.resolve(this.buckets.get(seq));
30
+ }
31
+
32
+ getInboxBucketByTotalMsgCount(totalMsgCount: bigint): Promise<InboxBucket | undefined> {
33
+ if (totalMsgCount === 0n) {
34
+ return Promise.resolve(this.buckets.get(0n));
35
+ }
36
+ return Promise.resolve([...this.buckets.values()].find(bucket => bucket.totalMsgCount === totalMsgCount));
37
+ }
38
+
39
+ getLatestInboxBucketAtOrBefore(timestamp: bigint): Promise<InboxBucket | undefined> {
40
+ const atOrBefore = [...this.buckets.values()]
41
+ .filter(bucket => bucket.timestamp <= timestamp)
42
+ .sort((a, b) => Number(a.seq - b.seq));
43
+ return Promise.resolve(atOrBefore.at(-1));
44
+ }
45
+
46
+ getL1ToL2MessagesBetweenBuckets(fromExclusive: bigint, toInclusive: bigint): Promise<Fr[]> {
47
+ const seqs = [...this.messagesPerBucket.keys()]
48
+ .filter(seq => seq > fromExclusive && seq <= toInclusive)
49
+ .sort((a, b) => Number(a - b));
50
+ return Promise.resolve(seqs.flatMap(seq => this.messagesPerBucket.get(seq) ?? []));
51
+ }
52
+
53
+ async getL1ToL2MessagesBetweenLeafCounts(startLeafCount: bigint, endLeafCount: bigint): Promise<Fr[]> {
54
+ const startBucket = await this.getInboxBucketByTotalMsgCount(startLeafCount);
55
+ const endBucket = await this.getInboxBucketByTotalMsgCount(endLeafCount);
56
+ if (startBucket === undefined || endBucket === undefined) {
57
+ throw new Error(`No mocked Inbox bucket boundary at ${startLeafCount} or ${endLeafCount}`);
58
+ }
59
+ return this.getL1ToL2MessagesBetweenBuckets(startBucket.seq, endBucket.seq);
60
+ }
61
+
62
+ getBlockNumber() {
63
+ return Promise.resolve(BlockNumber(this.blockNumber));
64
+ }
65
+
66
+ getL2Tips(): Promise<L2Tips> {
67
+ const number = this.blockNumber;
68
+ const blockId: L2BlockId = { number: BlockNumber(number), hash: new Fr(number).toString() };
69
+ const checkpointId: CheckpointId = {
70
+ number: CheckpointNumber(number),
71
+ hash: new Fr(number + 1).toString(),
72
+ };
73
+ const tip: L2TipId = { block: blockId, checkpoint: checkpointId };
74
+ return Promise.resolve({
75
+ proposed: blockId,
76
+ checkpointed: tip,
77
+ proven: tip,
78
+ finalized: tip,
79
+ });
80
+ }
81
+ }