@aztec/archiver 0.0.1-commit.9593d84 → 0.0.1-commit.96bb3f7
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.
- package/README.md +14 -14
- package/dest/archiver/archiver.d.ts +105 -85
- package/dest/archiver/archiver.d.ts.map +1 -1
- package/dest/archiver/archiver.js +949 -255
- package/dest/archiver/archiver_store.d.ts +109 -49
- package/dest/archiver/archiver_store.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts +1 -1
- package/dest/archiver/archiver_store_test_suite.d.ts.map +1 -1
- package/dest/archiver/archiver_store_test_suite.js +1871 -390
- package/dest/archiver/config.d.ts +5 -4
- package/dest/archiver/config.d.ts.map +1 -1
- package/dest/archiver/config.js +12 -5
- package/dest/archiver/errors.d.ts +25 -1
- package/dest/archiver/errors.d.ts.map +1 -1
- package/dest/archiver/errors.js +37 -0
- package/dest/archiver/index.d.ts +2 -2
- package/dest/archiver/index.d.ts.map +1 -1
- package/dest/archiver/instrumentation.d.ts +3 -1
- package/dest/archiver/instrumentation.d.ts.map +1 -1
- package/dest/archiver/instrumentation.js +22 -59
- package/dest/archiver/kv_archiver_store/block_store.d.ts +60 -20
- package/dest/archiver/kv_archiver_store/block_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/block_store.js +345 -89
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/contract_class_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/contract_class_store.js +1 -1
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts +2 -2
- package/dest/archiver/kv_archiver_store/contract_instance_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts +49 -58
- package/dest/archiver/kv_archiver_store/kv_archiver_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/kv_archiver_store.js +68 -48
- package/dest/archiver/kv_archiver_store/log_store.d.ts +12 -16
- package/dest/archiver/kv_archiver_store/log_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/log_store.js +149 -84
- package/dest/archiver/kv_archiver_store/message_store.d.ts +6 -5
- package/dest/archiver/kv_archiver_store/message_store.d.ts.map +1 -1
- package/dest/archiver/kv_archiver_store/message_store.js +15 -14
- package/dest/archiver/l1/bin/retrieve-calldata.d.ts +3 -0
- package/dest/archiver/l1/bin/retrieve-calldata.d.ts.map +1 -0
- package/dest/archiver/l1/bin/retrieve-calldata.js +149 -0
- package/dest/archiver/l1/calldata_retriever.d.ts +112 -0
- package/dest/archiver/l1/calldata_retriever.d.ts.map +1 -0
- package/dest/archiver/l1/calldata_retriever.js +471 -0
- package/dest/archiver/l1/data_retrieval.d.ts +90 -0
- package/dest/archiver/l1/data_retrieval.d.ts.map +1 -0
- package/dest/archiver/{data_retrieval.js → l1/data_retrieval.js} +52 -107
- package/dest/archiver/l1/debug_tx.d.ts +19 -0
- package/dest/archiver/l1/debug_tx.d.ts.map +1 -0
- package/dest/archiver/l1/debug_tx.js +73 -0
- package/dest/archiver/l1/spire_proposer.d.ts +70 -0
- package/dest/archiver/l1/spire_proposer.d.ts.map +1 -0
- package/dest/archiver/l1/spire_proposer.js +157 -0
- package/dest/archiver/l1/trace_tx.d.ts +97 -0
- package/dest/archiver/l1/trace_tx.d.ts.map +1 -0
- package/dest/archiver/l1/trace_tx.js +91 -0
- package/dest/archiver/l1/types.d.ts +12 -0
- package/dest/archiver/l1/types.d.ts.map +1 -0
- package/dest/archiver/l1/types.js +3 -0
- package/dest/archiver/l1/validate_trace.d.ts +29 -0
- package/dest/archiver/l1/validate_trace.d.ts.map +1 -0
- package/dest/archiver/l1/validate_trace.js +150 -0
- package/dest/archiver/structs/inbox_message.d.ts +4 -4
- package/dest/archiver/structs/inbox_message.d.ts.map +1 -1
- package/dest/archiver/structs/inbox_message.js +6 -5
- package/dest/archiver/structs/published.d.ts +1 -2
- package/dest/archiver/structs/published.d.ts.map +1 -1
- package/dest/archiver/validation.d.ts +4 -4
- package/dest/archiver/validation.d.ts.map +1 -1
- package/dest/archiver/validation.js +1 -1
- package/dest/factory.d.ts +2 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +4 -3
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/test/mock_archiver.d.ts +16 -8
- package/dest/test/mock_archiver.d.ts.map +1 -1
- package/dest/test/mock_archiver.js +19 -14
- package/dest/test/mock_l1_to_l2_message_source.d.ts +7 -6
- package/dest/test/mock_l1_to_l2_message_source.d.ts.map +1 -1
- package/dest/test/mock_l1_to_l2_message_source.js +21 -11
- package/dest/test/mock_l2_block_source.d.ts +23 -8
- package/dest/test/mock_l2_block_source.d.ts.map +1 -1
- package/dest/test/mock_l2_block_source.js +95 -35
- package/dest/test/mock_structs.d.ts +3 -2
- package/dest/test/mock_structs.d.ts.map +1 -1
- package/dest/test/mock_structs.js +9 -8
- package/package.json +17 -16
- package/src/archiver/archiver.ts +751 -344
- package/src/archiver/archiver_store.ts +123 -48
- package/src/archiver/archiver_store_test_suite.ts +1943 -365
- package/src/archiver/config.ts +17 -12
- package/src/archiver/errors.ts +64 -0
- package/src/archiver/index.ts +1 -1
- package/src/archiver/instrumentation.ts +24 -59
- package/src/archiver/kv_archiver_store/block_store.ts +475 -106
- package/src/archiver/kv_archiver_store/contract_class_store.ts +1 -1
- package/src/archiver/kv_archiver_store/contract_instance_store.ts +1 -1
- package/src/archiver/kv_archiver_store/kv_archiver_store.ts +92 -72
- package/src/archiver/kv_archiver_store/log_store.ts +209 -99
- package/src/archiver/kv_archiver_store/message_store.ts +21 -18
- package/src/archiver/l1/README.md +98 -0
- package/src/archiver/l1/bin/retrieve-calldata.ts +182 -0
- package/src/archiver/l1/calldata_retriever.ts +641 -0
- package/src/archiver/{data_retrieval.ts → l1/data_retrieval.ts} +101 -165
- package/src/archiver/l1/debug_tx.ts +99 -0
- package/src/archiver/l1/spire_proposer.ts +160 -0
- package/src/archiver/l1/trace_tx.ts +128 -0
- package/src/archiver/l1/types.ts +13 -0
- package/src/archiver/l1/validate_trace.ts +211 -0
- package/src/archiver/structs/inbox_message.ts +8 -8
- package/src/archiver/structs/published.ts +0 -1
- package/src/archiver/validation.ts +6 -6
- package/src/factory.ts +4 -3
- package/src/index.ts +1 -1
- package/src/test/fixtures/debug_traceTransaction-multicall3.json +88 -0
- package/src/test/fixtures/debug_traceTransaction-multiplePropose.json +153 -0
- package/src/test/fixtures/debug_traceTransaction-proxied.json +122 -0
- package/src/test/fixtures/trace_transaction-multicall3.json +65 -0
- package/src/test/fixtures/trace_transaction-multiplePropose.json +319 -0
- package/src/test/fixtures/trace_transaction-proxied.json +128 -0
- package/src/test/fixtures/trace_transaction-randomRevert.json +216 -0
- package/src/test/mock_archiver.ts +22 -16
- package/src/test/mock_l1_to_l2_message_source.ts +18 -11
- package/src/test/mock_l2_block_source.ts +115 -37
- package/src/test/mock_structs.ts +10 -9
- package/dest/archiver/data_retrieval.d.ts +0 -79
- package/dest/archiver/data_retrieval.d.ts.map +0 -1
|
@@ -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
|
+
]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { L2Block, type L2BlockSource } from '@aztec/stdlib/block';
|
|
4
|
+
import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
3
5
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
4
6
|
|
|
5
7
|
import { MockL1ToL2MessageSource } from './mock_l1_to_l2_message_source.js';
|
|
@@ -11,12 +13,12 @@ import { MockL2BlockSource } from './mock_l2_block_source.js';
|
|
|
11
13
|
export class MockArchiver extends MockL2BlockSource implements L2BlockSource, L1ToL2MessageSource {
|
|
12
14
|
private messageSource = new MockL1ToL2MessageSource(0);
|
|
13
15
|
|
|
14
|
-
public setL1ToL2Messages(
|
|
15
|
-
this.messageSource.setL1ToL2Messages(
|
|
16
|
+
public setL1ToL2Messages(checkpointNumber: CheckpointNumber, msgs: Fr[]) {
|
|
17
|
+
this.messageSource.setL1ToL2Messages(checkpointNumber, msgs);
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
getL1ToL2Messages(
|
|
19
|
-
return this.messageSource.getL1ToL2Messages(
|
|
20
|
+
getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]> {
|
|
21
|
+
return this.messageSource.getL1ToL2Messages(checkpointNumber);
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined> {
|
|
@@ -28,30 +30,34 @@ export class MockArchiver extends MockL2BlockSource implements L2BlockSource, L1
|
|
|
28
30
|
* A mocked implementation of the archiver with a set of precomputed blocks and messages.
|
|
29
31
|
*/
|
|
30
32
|
export class MockPrefilledArchiver extends MockArchiver {
|
|
31
|
-
private
|
|
33
|
+
private prefilled: Checkpoint[] = [];
|
|
32
34
|
|
|
33
|
-
constructor(
|
|
35
|
+
constructor(prefilled: { checkpoint: Checkpoint; messages: Fr[] }[]) {
|
|
34
36
|
super();
|
|
35
|
-
this.
|
|
36
|
-
messages.forEach((msgs, i) => this.setL1ToL2Messages(i + 1, msgs));
|
|
37
|
+
this.setPrefilled(prefilled);
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
public
|
|
40
|
-
for (const
|
|
41
|
-
this.
|
|
40
|
+
public setPrefilled(prefilled: { checkpoint: Checkpoint; messages: Fr[] }[]) {
|
|
41
|
+
for (const { checkpoint, messages } of prefilled) {
|
|
42
|
+
this.prefilled[checkpoint.number - 1] = checkpoint;
|
|
43
|
+
if (checkpoint.blocks.length !== 1) {
|
|
44
|
+
throw new Error('Prefilled checkpoint must only have 1 block at the moment.');
|
|
45
|
+
}
|
|
46
|
+
this.setL1ToL2Messages(checkpoint.number, messages);
|
|
42
47
|
}
|
|
43
|
-
messages.forEach((msgs, i) => this.setL1ToL2Messages(blocks[i].number, msgs));
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
public override createBlocks(numBlocks: number) {
|
|
47
|
-
|
|
51
|
+
const flattenedBlocks = this.prefilled.flatMap(c => c.blocks);
|
|
52
|
+
if (this.l2Blocks.length + numBlocks > flattenedBlocks.length) {
|
|
48
53
|
throw new Error(
|
|
49
54
|
`Not enough precomputed blocks to create ${numBlocks} more blocks (already at ${this.l2Blocks.length})`,
|
|
50
55
|
);
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
const fromBlock = this.l2Blocks.length;
|
|
54
|
-
|
|
59
|
+
// TODO: Add L2 blocks and checkpoints separately once archiver has the apis for that.
|
|
60
|
+
this.addBlocks(this.prefilled.slice(fromBlock, fromBlock + numBlocks).map(c => L2Block.fromCheckpoint(c)));
|
|
55
61
|
return Promise.resolve();
|
|
56
62
|
}
|
|
57
63
|
}
|
|
@@ -1,40 +1,47 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import type { CheckpointId, L2BlockId, L2TipId, L2Tips } from '@aztec/stdlib/block';
|
|
3
4
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* A mocked implementation of L1ToL2MessageSource to be used in tests.
|
|
7
8
|
*/
|
|
8
9
|
export class MockL1ToL2MessageSource implements L1ToL2MessageSource {
|
|
9
|
-
private
|
|
10
|
+
private messagesPerCheckpoint = new Map<CheckpointNumber, Fr[]>();
|
|
10
11
|
|
|
11
12
|
constructor(private blockNumber: number) {}
|
|
12
13
|
|
|
13
|
-
public setL1ToL2Messages(
|
|
14
|
-
this.
|
|
14
|
+
public setL1ToL2Messages(checkpointNumber: CheckpointNumber, msgs: Fr[]) {
|
|
15
|
+
this.messagesPerCheckpoint.set(checkpointNumber, msgs);
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
public setBlockNumber(blockNumber: number) {
|
|
18
19
|
this.blockNumber = blockNumber;
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
getL1ToL2Messages(
|
|
22
|
-
return Promise.resolve(this.
|
|
22
|
+
getL1ToL2Messages(checkpointNumber: CheckpointNumber): Promise<Fr[]> {
|
|
23
|
+
return Promise.resolve(this.messagesPerCheckpoint.get(checkpointNumber) ?? []);
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
getL1ToL2MessageIndex(_l1ToL2Message: Fr): Promise<bigint | undefined> {
|
|
26
27
|
throw new Error('Method not implemented.');
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
getBlockNumber()
|
|
30
|
-
return Promise.resolve(this.blockNumber);
|
|
30
|
+
getBlockNumber() {
|
|
31
|
+
return Promise.resolve(BlockNumber(this.blockNumber));
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
getL2Tips(): Promise<L2Tips> {
|
|
34
35
|
const number = this.blockNumber;
|
|
35
|
-
const
|
|
36
|
+
const blockId: L2BlockId = { number: BlockNumber(number), hash: new Fr(number).toString() };
|
|
37
|
+
const checkpointId: CheckpointId = {
|
|
38
|
+
number: CheckpointNumber(number),
|
|
39
|
+
hash: new Fr(number + 1).toString(),
|
|
40
|
+
};
|
|
41
|
+
const tip: L2TipId = { block: blockId, checkpoint: checkpointId };
|
|
36
42
|
return Promise.resolve({
|
|
37
|
-
|
|
43
|
+
proposed: blockId,
|
|
44
|
+
checkpointed: tip,
|
|
38
45
|
proven: tip,
|
|
39
46
|
finalized: tip,
|
|
40
47
|
});
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
2
|
-
import { DefaultL1ContractsConfig } from '@aztec/ethereum';
|
|
3
|
-
import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
3
|
+
import { BlockNumber, CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
5
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
6
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
7
7
|
import { createLogger } from '@aztec/foundation/log';
|
|
8
8
|
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
9
9
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
10
|
import {
|
|
11
|
+
CheckpointedL2Block,
|
|
11
12
|
L2Block,
|
|
12
13
|
L2BlockHash,
|
|
14
|
+
L2BlockNew,
|
|
13
15
|
type L2BlockSource,
|
|
14
16
|
type L2Tips,
|
|
15
17
|
PublishedL2Block,
|
|
16
|
-
type
|
|
18
|
+
type ValidateCheckpointResult,
|
|
17
19
|
} from '@aztec/stdlib/block';
|
|
20
|
+
import { type Checkpoint, L1PublishedData } from '@aztec/stdlib/checkpoint';
|
|
18
21
|
import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
19
22
|
import { EmptyL1RollupConstants, type L1RollupConstants, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
|
|
20
23
|
import { type BlockHeader, TxHash, TxReceipt, TxStatus } from '@aztec/stdlib/tx';
|
|
@@ -28,13 +31,14 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
28
31
|
|
|
29
32
|
private provenBlockNumber: number = 0;
|
|
30
33
|
private finalizedBlockNumber: number = 0;
|
|
34
|
+
private checkpointedBlockNumber: number = 0;
|
|
31
35
|
|
|
32
36
|
private log = createLogger('archiver:mock_l2_block_source');
|
|
33
37
|
|
|
34
38
|
public async createBlocks(numBlocks: number) {
|
|
35
39
|
for (let i = 0; i < numBlocks; i++) {
|
|
36
40
|
const blockNum = this.l2Blocks.length + 1;
|
|
37
|
-
const block = await L2Block.random(blockNum);
|
|
41
|
+
const block = await L2Block.random(BlockNumber(blockNum));
|
|
38
42
|
this.l2Blocks.push(block);
|
|
39
43
|
}
|
|
40
44
|
|
|
@@ -62,6 +66,10 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
62
66
|
this.finalizedBlockNumber = finalizedBlockNumber;
|
|
63
67
|
}
|
|
64
68
|
|
|
69
|
+
public setCheckpointedBlockNumber(checkpointedBlockNumber: number) {
|
|
70
|
+
this.checkpointedBlockNumber = checkpointedBlockNumber;
|
|
71
|
+
}
|
|
72
|
+
|
|
65
73
|
/**
|
|
66
74
|
* Method to fetch the rollup contract address at the base-layer.
|
|
67
75
|
* @returns The rollup address.
|
|
@@ -83,11 +91,47 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
83
91
|
* @returns In this mock instance, returns the number of L2 blocks that we've mocked.
|
|
84
92
|
*/
|
|
85
93
|
public getBlockNumber() {
|
|
86
|
-
return Promise.resolve(this.l2Blocks.length);
|
|
94
|
+
return Promise.resolve(BlockNumber(this.l2Blocks.length));
|
|
87
95
|
}
|
|
88
96
|
|
|
89
|
-
public getProvenBlockNumber()
|
|
90
|
-
return Promise.resolve(this.provenBlockNumber);
|
|
97
|
+
public getProvenBlockNumber() {
|
|
98
|
+
return Promise.resolve(BlockNumber(this.provenBlockNumber));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined> {
|
|
102
|
+
if (number > this.checkpointedBlockNumber) {
|
|
103
|
+
return Promise.resolve(undefined);
|
|
104
|
+
}
|
|
105
|
+
const block = this.l2Blocks[number - 1];
|
|
106
|
+
if (!block) {
|
|
107
|
+
return Promise.resolve(undefined);
|
|
108
|
+
}
|
|
109
|
+
const checkpointedBlock = new CheckpointedL2Block(
|
|
110
|
+
CheckpointNumber(number),
|
|
111
|
+
block.toL2Block(),
|
|
112
|
+
new L1PublishedData(BigInt(number), BigInt(number), `0x${number.toString(16).padStart(64, '0')}`),
|
|
113
|
+
[],
|
|
114
|
+
);
|
|
115
|
+
return Promise.resolve(checkpointedBlock);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
public async getCheckpointedBlocks(
|
|
119
|
+
from: BlockNumber,
|
|
120
|
+
limit: number,
|
|
121
|
+
_proven?: boolean,
|
|
122
|
+
): Promise<CheckpointedL2Block[]> {
|
|
123
|
+
const result: CheckpointedL2Block[] = [];
|
|
124
|
+
for (let i = 0; i < limit; i++) {
|
|
125
|
+
const blockNum = from + i;
|
|
126
|
+
if (blockNum > this.checkpointedBlockNumber) {
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
const block = await this.getCheckpointedBlock(BlockNumber(blockNum));
|
|
130
|
+
if (block) {
|
|
131
|
+
result.push(block);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return result;
|
|
91
135
|
}
|
|
92
136
|
|
|
93
137
|
/**
|
|
@@ -99,6 +143,16 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
99
143
|
return Promise.resolve(this.l2Blocks[number - 1]);
|
|
100
144
|
}
|
|
101
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Gets an L2 block (new format).
|
|
148
|
+
* @param number - The block number to return.
|
|
149
|
+
* @returns The requested L2 block.
|
|
150
|
+
*/
|
|
151
|
+
public getL2BlockNew(number: BlockNumber): Promise<L2BlockNew | undefined> {
|
|
152
|
+
const block = this.l2Blocks[number - 1];
|
|
153
|
+
return Promise.resolve(block?.toL2Block());
|
|
154
|
+
}
|
|
155
|
+
|
|
102
156
|
/**
|
|
103
157
|
* Gets up to `limit` amount of L2 blocks starting from `from`.
|
|
104
158
|
* @param from - Number of the first block to return (inclusive).
|
|
@@ -113,32 +167,39 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
113
167
|
);
|
|
114
168
|
}
|
|
115
169
|
|
|
170
|
+
public async getPublishedCheckpoints(from: CheckpointNumber, limit: number) {
|
|
171
|
+
// TODO: Implement this properly. This only works when we have one block per checkpoint.
|
|
172
|
+
return (await this.getPublishedBlocks(from, limit)).map(block => block.toPublishedCheckpoint());
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
public async getCheckpointByArchive(archive: Fr): Promise<Checkpoint | undefined> {
|
|
176
|
+
// TODO: Implement this properly. This only works when we have one block per checkpoint.
|
|
177
|
+
return (await this.getPublishedBlockByArchive(archive))?.block.toCheckpoint();
|
|
178
|
+
}
|
|
179
|
+
|
|
116
180
|
public async getPublishedBlocks(from: number, limit: number, proven?: boolean) {
|
|
117
181
|
const blocks = await this.getBlocks(from, limit, proven);
|
|
118
182
|
return blocks.map(block =>
|
|
119
183
|
PublishedL2Block.fromFields({
|
|
120
184
|
block,
|
|
121
|
-
l1:
|
|
122
|
-
blockNumber: BigInt(block.number),
|
|
123
|
-
blockHash: Buffer32.random().toString(),
|
|
124
|
-
timestamp: BigInt(block.number),
|
|
125
|
-
},
|
|
185
|
+
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
126
186
|
attestations: [],
|
|
127
187
|
}),
|
|
128
188
|
);
|
|
129
189
|
}
|
|
130
190
|
|
|
191
|
+
async getL2BlocksNew(from: BlockNumber, limit: number, proven?: boolean): Promise<L2BlockNew[]> {
|
|
192
|
+
const blocks = await this.getBlocks(from, limit, proven);
|
|
193
|
+
return blocks.map(x => x.toL2Block());
|
|
194
|
+
}
|
|
195
|
+
|
|
131
196
|
public async getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined> {
|
|
132
197
|
for (const block of this.l2Blocks) {
|
|
133
198
|
const hash = await block.hash();
|
|
134
199
|
if (hash.equals(blockHash)) {
|
|
135
200
|
return PublishedL2Block.fromFields({
|
|
136
201
|
block,
|
|
137
|
-
l1:
|
|
138
|
-
blockNumber: BigInt(block.number),
|
|
139
|
-
blockHash: Buffer32.random().toString(),
|
|
140
|
-
timestamp: BigInt(block.number),
|
|
141
|
-
},
|
|
202
|
+
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
142
203
|
attestations: [],
|
|
143
204
|
});
|
|
144
205
|
}
|
|
@@ -154,11 +215,7 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
154
215
|
return Promise.resolve(
|
|
155
216
|
PublishedL2Block.fromFields({
|
|
156
217
|
block,
|
|
157
|
-
l1:
|
|
158
|
-
blockNumber: BigInt(block.number),
|
|
159
|
-
blockHash: Buffer32.random().toString(),
|
|
160
|
-
timestamp: BigInt(block.number),
|
|
161
|
-
},
|
|
218
|
+
l1: new L1PublishedData(BigInt(block.number), BigInt(block.number), Buffer32.random().toString()),
|
|
162
219
|
attestations: [],
|
|
163
220
|
}),
|
|
164
221
|
);
|
|
@@ -183,6 +240,11 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
183
240
|
return Promise.resolve(this.l2Blocks.at(typeof number === 'number' ? number - 1 : -1)?.getBlockHeader());
|
|
184
241
|
}
|
|
185
242
|
|
|
243
|
+
getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]> {
|
|
244
|
+
// TODO: Implement this properly. This only works when we have one block per checkpoint.
|
|
245
|
+
return this.getBlocksForEpoch(epochNumber).then(blocks => blocks.map(b => b.toCheckpoint()));
|
|
246
|
+
}
|
|
247
|
+
|
|
186
248
|
getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2Block[]> {
|
|
187
249
|
const epochDuration = DefaultL1ContractsConfig.aztecEpochDuration;
|
|
188
250
|
const [start, end] = getSlotRangeForEpoch(epochNumber, { epochDuration });
|
|
@@ -243,29 +305,45 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
243
305
|
}
|
|
244
306
|
|
|
245
307
|
async getL2Tips(): Promise<L2Tips> {
|
|
246
|
-
const [latest, proven, finalized] = [
|
|
308
|
+
const [latest, proven, finalized, checkpointed] = [
|
|
247
309
|
await this.getBlockNumber(),
|
|
248
310
|
await this.getProvenBlockNumber(),
|
|
249
311
|
this.finalizedBlockNumber,
|
|
312
|
+
this.checkpointedBlockNumber,
|
|
250
313
|
] as const;
|
|
251
314
|
|
|
252
315
|
const latestBlock = this.l2Blocks[latest - 1];
|
|
253
316
|
const provenBlock = this.l2Blocks[proven - 1];
|
|
254
317
|
const finalizedBlock = this.l2Blocks[finalized - 1];
|
|
318
|
+
const checkpointedBlock = this.l2Blocks[checkpointed - 1];
|
|
319
|
+
|
|
320
|
+
const latestBlockId = {
|
|
321
|
+
number: BlockNumber(latest),
|
|
322
|
+
hash: (await latestBlock?.hash())?.toString(),
|
|
323
|
+
};
|
|
324
|
+
const provenBlockId = {
|
|
325
|
+
number: BlockNumber(proven),
|
|
326
|
+
hash: (await provenBlock?.hash())?.toString(),
|
|
327
|
+
};
|
|
328
|
+
const finalizedBlockId = {
|
|
329
|
+
number: BlockNumber(finalized),
|
|
330
|
+
hash: (await finalizedBlock?.hash())?.toString(),
|
|
331
|
+
};
|
|
332
|
+
const checkpointedBlockId = {
|
|
333
|
+
number: BlockNumber(checkpointed),
|
|
334
|
+
hash: (await checkpointedBlock?.hash())?.toString(),
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
const makeTipId = (blockId: typeof latestBlockId) => ({
|
|
338
|
+
block: blockId,
|
|
339
|
+
checkpoint: { number: CheckpointNumber(blockId.number), hash: blockId.hash },
|
|
340
|
+
});
|
|
255
341
|
|
|
256
342
|
return {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
proven: {
|
|
262
|
-
number: proven,
|
|
263
|
-
hash: (await provenBlock?.hash())?.toString(),
|
|
264
|
-
},
|
|
265
|
-
finalized: {
|
|
266
|
-
number: finalized,
|
|
267
|
-
hash: (await finalizedBlock?.hash())?.toString(),
|
|
268
|
-
},
|
|
343
|
+
proposed: latestBlockId,
|
|
344
|
+
checkpointed: makeTipId(checkpointedBlockId),
|
|
345
|
+
proven: makeTipId(provenBlockId),
|
|
346
|
+
finalized: makeTipId(finalizedBlockId),
|
|
269
347
|
};
|
|
270
348
|
}
|
|
271
349
|
|
|
@@ -343,7 +421,7 @@ export class MockL2BlockSource implements L2BlockSource, ContractDataSource {
|
|
|
343
421
|
return Promise.resolve(false);
|
|
344
422
|
}
|
|
345
423
|
|
|
346
|
-
getPendingChainValidationStatus(): Promise<
|
|
424
|
+
getPendingChainValidationStatus(): Promise<ValidateCheckpointResult> {
|
|
347
425
|
return Promise.resolve({ valid: true });
|
|
348
426
|
}
|
|
349
427
|
}
|
package/src/test/mock_structs.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Buffer16, Buffer32 } from '@aztec/foundation/buffer';
|
|
2
|
-
import { randomBigInt, randomInt } from '@aztec/foundation/crypto';
|
|
3
|
-
import { Fr } from '@aztec/foundation/
|
|
3
|
+
import { randomBigInt, randomInt } from '@aztec/foundation/crypto/random';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
5
|
import { InboxLeaf } from '@aztec/stdlib/messaging';
|
|
5
6
|
|
|
6
7
|
import { type InboxMessage, updateRollingHash } from '../archiver/structs/inbox_message.js';
|
|
@@ -9,17 +10,17 @@ export function makeInboxMessage(
|
|
|
9
10
|
previousRollingHash = Buffer16.ZERO,
|
|
10
11
|
overrides: Partial<InboxMessage> = {},
|
|
11
12
|
): InboxMessage {
|
|
12
|
-
const {
|
|
13
|
+
const { checkpointNumber = CheckpointNumber(randomInt(100) + 1) } = overrides;
|
|
13
14
|
const { l1BlockNumber = randomBigInt(100n) + 1n } = overrides;
|
|
14
15
|
const { l1BlockHash = Buffer32.random() } = overrides;
|
|
15
16
|
const { leaf = Fr.random() } = overrides;
|
|
16
17
|
const { rollingHash = updateRollingHash(previousRollingHash, leaf) } = overrides;
|
|
17
|
-
const { index = InboxLeaf.
|
|
18
|
+
const { index = InboxLeaf.smallestIndexForCheckpoint(checkpointNumber) } = overrides;
|
|
18
19
|
|
|
19
20
|
return {
|
|
20
21
|
index,
|
|
21
22
|
leaf,
|
|
22
|
-
|
|
23
|
+
checkpointNumber,
|
|
23
24
|
l1BlockNumber,
|
|
24
25
|
l1BlockHash,
|
|
25
26
|
rollingHash,
|
|
@@ -30,17 +31,17 @@ export function makeInboxMessages(
|
|
|
30
31
|
count: number,
|
|
31
32
|
opts: {
|
|
32
33
|
initialHash?: Buffer16;
|
|
33
|
-
|
|
34
|
+
initialCheckpointNumber?: CheckpointNumber;
|
|
34
35
|
overrideFn?: (msg: InboxMessage, index: number) => InboxMessage;
|
|
35
36
|
} = {},
|
|
36
37
|
): InboxMessage[] {
|
|
37
|
-
const { initialHash = Buffer16.ZERO, overrideFn = msg => msg,
|
|
38
|
+
const { initialHash = Buffer16.ZERO, overrideFn = msg => msg, initialCheckpointNumber = 1 } = opts;
|
|
38
39
|
const messages: InboxMessage[] = [];
|
|
39
40
|
let rollingHash = initialHash;
|
|
40
41
|
for (let i = 0; i < count; i++) {
|
|
41
42
|
const leaf = Fr.random();
|
|
42
|
-
const
|
|
43
|
-
const message = overrideFn(makeInboxMessage(rollingHash, { leaf,
|
|
43
|
+
const checkpointNumber = CheckpointNumber(i + initialCheckpointNumber);
|
|
44
|
+
const message = overrideFn(makeInboxMessage(rollingHash, { leaf, checkpointNumber }), i);
|
|
44
45
|
rollingHash = message.rollingHash;
|
|
45
46
|
messages.push(message);
|
|
46
47
|
}
|