@aztec/protocol-contracts 0.77.0-testnet-ignition.26 → 0.77.0-testnet-ignition.28

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.
@@ -4,10 +4,12 @@
4
4
  "name": "Router",
5
5
  "functions": [
6
6
  {
7
- "name": "public_dispatch",
7
+ "name": "_check_block_number",
8
8
  "is_unconstrained": true,
9
9
  "custom_attributes": [
10
- "public"
10
+ "public",
11
+ "internal",
12
+ "view"
11
13
  ],
12
14
  "abi": {
13
15
  "error_types": {
@@ -15,28 +17,11 @@
15
17
  "error_kind": "string",
16
18
  "string": "Function _check_block_number can only be called statically"
17
19
  },
18
- "11405868724477732285": {
19
- "error_kind": "string",
20
- "string": "Function _check_timestamp can only be called internally"
21
- },
22
- "13418685691864489983": {
23
- "error_kind": "string",
24
- "string": "Function _check_timestamp can only be called statically"
25
- },
26
20
  "1433889167918961673": {
27
21
  "error_kind": "fmtstring",
28
22
  "item_types": [],
29
23
  "length": 17
30
24
  },
31
- "16541607464495309456": {
32
- "error_kind": "fmtstring",
33
- "item_types": [],
34
- "length": 16
35
- },
36
- "16761564377371454734": {
37
- "error_kind": "string",
38
- "string": "Array index out of bounds"
39
- },
40
25
  "17843811134343075018": {
41
26
  "error_kind": "string",
42
27
  "string": "Stack too deep"
@@ -45,13 +30,63 @@
45
30
  "error_kind": "string",
46
31
  "string": "Block number mismatch."
47
32
  },
48
- "5019202896831570965": {
49
- "error_kind": "string",
50
- "string": "attempt to add with overflow"
51
- },
52
33
  "8209322232883590150": {
53
34
  "error_kind": "string",
54
35
  "string": "Function _check_block_number can only be called internally"
36
+ }
37
+ },
38
+ "parameters": [
39
+ {
40
+ "name": "operation",
41
+ "type": {
42
+ "kind": "integer",
43
+ "sign": "unsigned",
44
+ "width": 8
45
+ },
46
+ "visibility": "private"
47
+ },
48
+ {
49
+ "name": "value",
50
+ "type": {
51
+ "kind": "field"
52
+ },
53
+ "visibility": "private"
54
+ }
55
+ ],
56
+ "return_type": null
57
+ },
58
+ "bytecode": "JgACBAEnAAABBIBLJgAABAMmAgMEAiYCBAQAHxgABAADgEkdAIBJgEkCLQiASQABLQiASgACJAAAAFIkAAAAfScCAAEEgEsmAgIEADoNAAEAAicAgEMCAAQnAIBEAgAGJwCARQIAAScAgEYCAAInAIBHAgAFJwCASAIAAyUkAAADQR4CAAQBHgIABQAKOAQFBiMCAAYAAACeJAAAA2oeAgAECSYCBQABCjgEBQYjAgAGAAAAuiQAAAN8HgIABAUKOAQCBQw4BAIGCygAAYBFAAImAgQBASMCAAIAAAMqIgAAAOMLKAABgEYABxYMBQgjAgAHAAADGCIAAAD8CygAAYBIAAkjAgAJAAADBiIAAAERCygAAYBDAAojAgAKAAAC7yIAAAEmCygAAYBHAAoWDAYLIwIACgAAAtgiAAABPwsoAAGARAAIIwIACAAAAsYiAAABVCYCAQJ2JgIIAm8mAgoCaSYCCwJlJgIMAiAmAg0CbCYCDgJuJgIPAnQmAhACcCYCEQJkJgISAmEmAhMCSSYCFAJyLAgBFSYCFgQSABABFgEmAxUEAQAoFQIWLAwWFywOExcAKBcCFywODhcAKBcCFywOARcAKBcCFywOEhcAKBcCFywODRcAKBcCFywOChcAKBcCFywOERcAKBcCFywODBcAKBcCFywOCBcAKBcCFywOEBcAKBcCFywOCxcAKBcCFywOFBcAKBcCFywOEhcAKBcCFywODxcAKBcCFywOChcAKBcCFywOCBcAKBcCFywODhcmAgEEACYCCAEACjgIBAojAgAKAAACvSYCCwQTLAgBDCYCDQQTABABDQEsDAwNKQMADQUT5jKZ5RcUCQAoDQINACgVAg4mAg8EES0EAA6AAy0EAA2ABC0EAA+ABSQAAAOOJgIOBBEAOA0ODSwOAQ0AKA0CDTsNDAssDAgGIgAAAs8sDAsGIgAAAs8sDAYFIgAAAuYEOAsIASwMAQUiAAAC5iwMBQkiAAAC/RI4BgUBLAwBCSIAAAL9LAwJByIAAAMPLAwGByIAAAMPLAwHAiIAAAMhLAwIAiIAAAMhLAwCAyIAAAMzLAwFAyIAAAMzIwIAAwAAA0AkAAAD1CUnAIAEBHgADQAAAIAEgAMjAIADAAADaSkBAAEF96Hzr6Wt1Mo7AQECJSkBAAEFce1fE3G+NAY7AQECJSkBAAEFkKJCubMVTz47AQECJQEAgAOABYAHLQCAA4AILQCABIAJCwCACIAHgAojAIAKAAAD0y0BgAiABi0CgAaACQEAgAgAAoAIAQCACQACgAkiAAADoiUpAQABBR8gi4cBmc/9OwEBAiUtABjKGMo=",
59
+ "debug_symbols": "zVrbTuMwEP2XPufB47maX1khVCCgSlWLSllphfj3TaBOQ5NS2mYkvyBczfScOfEZu7HfZ4/1/dvz3WL1tH6d3fx5ny3XD/PtYr1qRu8f1ex+s1guF893/Y9nof0DGD4TXl/mq3b8up1vtrMbAIxYzerV4+f/BM2XPC2WdTOK4aMaxJNA3IWTtBG7aMWRYEMOu2BD4X7wbdUw4iOMSPeMRE8xIkyZEZGdYBQtV2sxpUNG9BuNJH1j9JnHl+UxXphn43lG0uWZ2AnlxCwLLSngz8qlQPlZpiB4qJzgLxhpGFQidlmeXohncGGejOYJdlNVeD9TBUYUZJP8VNlUT0xUgUyoSdNDudN4GRJTR0ftZzqYLNsm9GaK2ReAXA1AMVdAGL8BjMwuNMqzi0LP8mPByB11lCD7YB0LhpTnLUaAn4MBgnI3D0Lq69LKEsP1ujc9KsuidKh7jHo1AEMumFEHAEea7jkAGvKzUgwDAI7XV6AZQMIQ4Ij1zwEQzE4UGQIk8pUIw/USqXbtode5MwAkZ4AjC+WEAOwMwN4VsHcF4l2BeFeg3hWodwXmXYF5V5C8K0jOFVAI3gDuFTi3awLyBvCuIHpXEL0rQPQGUGcAit4A4gzA4A3g3Sq8F30Sb6OJt9HU22hqzgDmbTTzbhXJ22jJuVWw966CvXcV7L2rYO9dBYOz0TiiN4Cz0RijN4C30Qi8AbyN5v0qgdnbaOzdKsTbaOLdKtTbaOrdKux6oxl1p2f6/bXmCJl8Ttg76mD4YiKlMEnFaJJK0UQCFcMklcIEsBgmVgqTWIwmE+yyJmIywbnIVEy4FCZcjCZcjCZSyrojUox3tJh+osX0WCtGEytGkxSLYVKKdzRO8POHuq8f3onQCd6cS8dfbHDhyM4+QWqTzl74bz+a0d/5ZjG/X9a7O5NPb6uH3hXK7b+X+uA25ctm/VA/vm3q9l7l/kpl601QqMCgIQPtMgecKhBqh61gIFaBhga1Qf4P",
60
+ "brillig_names": [
61
+ "_check_block_number"
62
+ ]
63
+ },
64
+ {
65
+ "name": "_check_timestamp",
66
+ "is_unconstrained": true,
67
+ "custom_attributes": [
68
+ "public",
69
+ "internal",
70
+ "view"
71
+ ],
72
+ "abi": {
73
+ "error_types": {
74
+ "11405868724477732285": {
75
+ "error_kind": "string",
76
+ "string": "Function _check_timestamp can only be called internally"
77
+ },
78
+ "13418685691864489983": {
79
+ "error_kind": "string",
80
+ "string": "Function _check_timestamp can only be called statically"
81
+ },
82
+ "1433889167918961673": {
83
+ "error_kind": "fmtstring",
84
+ "item_types": [],
85
+ "length": 17
86
+ },
87
+ "17843811134343075018": {
88
+ "error_kind": "string",
89
+ "string": "Stack too deep"
55
90
  },
56
91
  "8443716675528357851": {
57
92
  "error_kind": "string",
@@ -60,23 +95,34 @@
60
95
  },
61
96
  "parameters": [
62
97
  {
63
- "name": "selector",
98
+ "name": "operation",
64
99
  "type": {
65
- "kind": "field"
100
+ "kind": "integer",
101
+ "sign": "unsigned",
102
+ "width": 8
103
+ },
104
+ "visibility": "private"
105
+ },
106
+ {
107
+ "name": "value",
108
+ "type": {
109
+ "kind": "integer",
110
+ "sign": "unsigned",
111
+ "width": 64
66
112
  },
67
113
  "visibility": "private"
68
114
  }
69
115
  ],
70
116
  "return_type": null
71
117
  },
72
- "bytecode": "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",
73
- "debug_symbols": "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",
118
+ "bytecode": "JgACBAEnAAABBIBLJgAABAMmAgMEAiYCBAQAHxgABAADgEkdAIBJgEkCHQCASoBKBS0IgEkAAS0IgEoAAiQAAABZJAAAAIQnAgABBIBLJgICBAA6DQABAAInAIBDAgAEJwCARAIABicAgEUCAAEnAIBGAgACJwCARwIABScAgEgCAAMlJAAAA1IeAgAEAR4CAAUACjgEBQYjAgAGAAAApSQAAAN7HgIABAkmAgUAAQo4BAUGIwIABgAAAMEkAAADjR4CAAQGHAwEBQAcDAIEAAo4BQQCDDgFBAYLKAABgEUABCYCBQEBIwIABAAAAzsiAAAA9AsoAAGARgAHFgwCCCMCAAcAAAMpIgAAAQ0LKAABgEgACSMCAAkAAAMXIgAAASILKAABgEMACiMCAAoAAAMAIgAAATcLKAABgEcAChYMBgsjAgAKAAAC6SIAAAFQCygAAYBEAAgjAgAIAAAC1yIAAAFlJgIBAkkmAggCZCYCCgJhJgILAnImAgwCbyYCDQJpJgIOAnYmAg8CZSYCEAIgJgIRAmwmAhICbiYCEwJ0JgIUAnAsCAEVJgIWBBIAEAEWASYDFQQBACgVAhYsDBYXLA4BFwAoFwIXLA4SFwAoFwIXLA4OFwAoFwIXLA4KFwAoFwIXLA4RFwAoFwIXLA4NFwAoFwIXLA4IFwAoFwIXLA4QFwAoFwIXLA4MFwAoFwIXLA4UFwAoFwIXLA4PFwAoFwIXLA4LFwAoFwIXLA4KFwAoFwIXLA4TFwAoFwIXLA4NFwAoFwIXLA4MFwAoFwIXLA4SFyYCAQEAJgIIBAAKOAEFCiMCAAoAAALOJgILBBMsCAEMJgINBBMAEAENASwMDA0pAwANBRPmMpnlFxQJACgNAg0AKBUCDiYCDwQRLQQADoADLQQADYAELQQAD4AFJAAAA58mAg4EEQA4DQ4NLA4IDQAoDQINOw0MCywMAQYiAAAC4CwMCwYiAAAC4CwMBgIiAAAC9wQ4CwgBLAwBAiIAAAL3LAwCCSIAAAMOEjgGAgEsDAEJIgAAAw4sDAkHIgAAAyAsDAYHIgAAAyAsDAcEIgAAAzIsDAgEIgAAAzIsDAQDIgAAA0QsDAIDIgAAA0QjAgADAAADUSQAAAPlJScAgAQEeAANAAAAgASAAyMAgAMAAAN6KQEAAQX3ofOvpa3UyjsBAQIlKQEAAQWeScksjTulvTsBAQIlKQEAAQW6OL+KoDMf/zsBAQIlAQCAA4AFgActAIADgAgtAIAEgAkLAIAIgAeACiMAgAoAAAPkLQGACIAGLQKABoAJAQCACAACgAgBAIAJAAKACSIAAAOzJSkBAAEFdS4blGTo99s7AQECJS0AGMoYyg==",
119
+ "debug_symbols": "zVrbTuNADP2XPPfBHntsz/7KCqECAVWqWlTKSivEv2/S7aSBhBaaWJoXRMDuuSTHmSbzVj3Ud69Pt6vN4/al+vX7rVpv75f71XbTHL29L6q73Wq9Xj3d9v9cQfsDSQ8NL8/LTXv8sl/u9tUvRAq0qOrNw+F3xuZDHlfrujkK8L4Y1LNgOJaztBXHaqWRYqMIx2Ijif3im0WFHL5gxHpiJHqJEVPKjJjtAqNgWa2FlAaMvuORpA+M2r4YrusTuLIvjvcZS9dnYhecE7NstCSg884l4HwuEwh9dk7hG4wUBko0XtdnV+KZXdeXaKwvaTYwJe56BMfMBsJsNnC4cJmK5ZQ1ZOCz2cnOk0GA2GfT9AQYFYAnVgg8bBp3CyR0ZkE4r5uS5XRC74I0OwAgTQbgkM8cU/gAMHIRk3E+YQy9yTJWTLGjTgJyKtaxYkw5HhQQzxc3ojSeBKa+L/9tme57MwqzLcoD35knA0TMgiPpAOCLifgTAIV8rpRgACBpugLlLpFDgASTAYTyGBcZABCir0XNJTkdQHO4rHeDyAAkzgBRnQEkeAN4K1BvBeqtwLwVmLeC5K0gOStgCN4A3grQWwF6KwjeCoLzuGZCbwBvBeytgL0VRPAGYG8A52ULC3kDmDOA902fvW/6bN5BM++gJe+gpegN4By0COwN4By0iOQN4By06L2qiN6riui9qojkHLTI4A3gHTT2HhXRO2jRe1R4P0qI3o8SonoHTb1HhXkHzbxHhXkHLXmPijQ9aMbdSzr9+FhzhEz+WD09hI6HtxcCVAyTYjzBYjwJWAwTKYUJQTFMYilMuBhPZlhlzcRkhvciMzGZYdUzF5NiPNFiPNFi7jtWTHZSMfMklTJjFUrxRKEcT1IpTLCU7CjP8PWHu48f7onQGZ6cS8dfbLDhyH78Bqlt+vGN/+a9Ofqz3K2Wd+v6uDXz8XVz39upuf/7XH/atPm8297XD6+7ut2+edq52a7YUXmBxg0ZbKOKDTKKtoftKhotNv/VBrVB/gc=",
74
120
  "brillig_names": [
75
- "public_dispatch"
121
+ "_check_timestamp"
76
122
  ]
77
123
  },
78
124
  {
79
- "name": "check_timestamp",
125
+ "name": "check_block_number",
80
126
  "is_unconstrained": false,
81
127
  "custom_attributes": [
82
128
  "private"
@@ -586,9 +632,7 @@
586
632
  {
587
633
  "name": "value",
588
634
  "type": {
589
- "kind": "integer",
590
- "sign": "unsigned",
591
- "width": 64
635
+ "kind": "field"
592
636
  },
593
637
  "visibility": "private"
594
638
  }
@@ -1700,151 +1744,13 @@
1700
1744
  "visibility": "databus"
1701
1745
  }
1702
1746
  },
1703
- "bytecode": "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",
1704
- "debug_symbols": "7VVbasMwELyLvv2xu9LqkauUUpzECQZjB8cplJC7Vwq2lKRKiiktFPJjvNKMdpgdy0exrpaH7Vvdbrq9WLwcRdOtyqHuWl8dBfJ5bb8r21Duh7IfxIIUu0JU7Tq8Gj4VYlM3lVggwan4iiZtJjRZF9GOcmCn7AiWQPgYjGwcjWhkCzrCycjc4Uh6UoIq6SaX041Sy+lwhXCFfi0E6qc196wxT2vuWWOz1kgnkzX2G2sURP0KKaENnTu43+5AkOtgJIwUixQZGrMTYKPiBDSYBOcMXGpOYpJyP4ogBn8sRqNJYjQ8FoOOZUyPY+UuzcnF2FqIOXbgbr2k/y1f/q18AjQxxyDNdTR9sezrpqm3b1d/MQgPpXJSGXE8jhlus6V4PkXPp5j5FDuT4isMyHzcOH7tht0FUXqiL9/Lvi6XTRW8DLuHdjVZ68vhYzftTObv+m5VrQ99FcaQJhCyIrFQGG6pcIcwFMxR23mJuJDgu/rOnw==",
1747
+ "bytecode": "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",
1748
+ "debug_symbols": "7VXRisIwEPyXPPchu8kmWX/lOKRqlUJppdaDQ/z3S8Qm6kWPwt2B4EvpJrPZycwmOYhVtdhv5nW77nZi9nYQTbcsh7prfXQQoE9ju23ZhnA3lP0gZqiJC1G1q/Br6ViIdd1UYgYoj8V3NBo7otFxRDPmwKzdGawkwmMwkGU8o4GcNBGOVuUWBzQjE9CJN3KONyijxsU1yCv0eyGAXtLck8a8pLknjc1Ko1gladwP0mgZ+WvAhLZ4quD+vALnKoByaeMm5RjIeuCkTR7opJOhDFwZSnQSd2+Gp4PyN+iQTHRYPaYDTCp2EJPmS4FyreycjL3Mkm/0RHj2DeB/bwAl2NjPUtnrFvXBoq+bpt7Mr14zGT46+6QRwHk5InnbYZqmp5jpKXZ6ipuY4iMIyLxjFE+9Jb5IVD7Rhx9lX5eLpgpahtl9uxyl9eHwuR1nRvG3fbesVvu+CjYkB5SvraDQEO6ScHi980SR22kIqVDSV/WVvwA=",
1705
1749
  "brillig_names": [
1706
1750
  "store_in_execution_cache_oracle_wrapper",
1707
1751
  "enqueue_public_function_call_internal"
1708
1752
  ],
1709
- "verification_key": "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"
1710
- },
1711
- {
1712
- "name": "_check_block_number",
1713
- "is_unconstrained": true,
1714
- "custom_attributes": [
1715
- "public",
1716
- "internal",
1717
- "view"
1718
- ],
1719
- "abi": {
1720
- "error_types": {
1721
- "10421965853029650238": {
1722
- "error_kind": "string",
1723
- "string": "Function _check_block_number can only be called statically"
1724
- },
1725
- "1433889167918961673": {
1726
- "error_kind": "fmtstring",
1727
- "item_types": [],
1728
- "length": 17
1729
- },
1730
- "17843811134343075018": {
1731
- "error_kind": "string",
1732
- "string": "Stack too deep"
1733
- },
1734
- "2242946026394210301": {
1735
- "error_kind": "string",
1736
- "string": "Block number mismatch."
1737
- },
1738
- "8209322232883590150": {
1739
- "error_kind": "string",
1740
- "string": "Function _check_block_number can only be called internally"
1741
- }
1742
- },
1743
- "parameters": [
1744
- {
1745
- "name": "operation",
1746
- "type": {
1747
- "kind": "integer",
1748
- "sign": "unsigned",
1749
- "width": 8
1750
- },
1751
- "visibility": "private"
1752
- },
1753
- {
1754
- "name": "value",
1755
- "type": {
1756
- "kind": "field"
1757
- },
1758
- "visibility": "private"
1759
- }
1760
- ],
1761
- "return_type": null
1762
- },
1763
- "bytecode": "JgACBAEnAAABBIBLJgAABAMmAgMEAiYCBAQAHxgABAADgEkdAIBJgEkCLQiASQABLQiASgACJAAAAFIkAAAAfScCAAEEgEsmAgIEADoNAAEAAicAgEMCAAQnAIBEAgAGJwCARQIAAScAgEYCAAInAIBHAgAFJwCASAIAAyUkAAADQR4CAAQBHgIABQAKOAQFBiMCAAYAAACeJAAAA2oeAgAECSYCBQABCjgEBQYjAgAGAAAAuiQAAAN8HgIABAUKOAQCBQw4BAIGCygAAYBFAAImAgQBASMCAAIAAAMqIgAAAOMLKAABgEYABxYMBQgjAgAHAAADGCIAAAD8CygAAYBIAAkjAgAJAAADBiIAAAERCygAAYBDAAojAgAKAAAC7yIAAAEmCygAAYBHAAoWDAYLIwIACgAAAtgiAAABPwsoAAGARAAIIwIACAAAAsYiAAABVCYCAQJ2JgIIAm8mAgoCaSYCCwJlJgIMAiAmAg0CbCYCDgJuJgIPAnQmAhACcCYCEQJkJgISAmEmAhMCSSYCFAJyLAgBFSYCFgQSABABFgEmAxUEAQAoFQIWLAwWFywOExcAKBcCFywODhcAKBcCFywOARcAKBcCFywOEhcAKBcCFywODRcAKBcCFywOChcAKBcCFywOERcAKBcCFywODBcAKBcCFywOCBcAKBcCFywOEBcAKBcCFywOCxcAKBcCFywOFBcAKBcCFywOEhcAKBcCFywODxcAKBcCFywOChcAKBcCFywOCBcAKBcCFywODhcmAgEEACYCCAEACjgIBAojAgAKAAACvSYCCwQTLAgBDCYCDQQTABABDQEsDAwNKQMADQUT5jKZ5RcUCQAoDQINACgVAg4mAg8EES0EAA6AAy0EAA2ABC0EAA+ABSQAAAOOJgIOBBEAOA0ODSwOAQ0AKA0CDTsNDAssDAgGIgAAAs8sDAsGIgAAAs8sDAYFIgAAAuYEOAsIASwMAQUiAAAC5iwMBQkiAAAC/RI4BgUBLAwBCSIAAAL9LAwJByIAAAMPLAwGByIAAAMPLAwHAiIAAAMhLAwIAiIAAAMhLAwCAyIAAAMzLAwFAyIAAAMzIwIAAwAAA0AkAAAD1CUnAIAEBHgADQAAAIAEgAMjAIADAAADaSkBAAEF96Hzr6Wt1Mo7AQECJSkBAAEFce1fE3G+NAY7AQECJSkBAAEFkKJCubMVTz47AQECJQEAgAOABYAHLQCAA4AILQCABIAJCwCACIAHgAojAIAKAAAD0y0BgAiABi0CgAaACQEAgAgAAoAIAQCACQACgAkiAAADoiUpAQABBR8gi4cBmc/9OwEBAiUtABjKGMo=",
1764
- "debug_symbols": "zVrbTuMwEP2XPufB47maX1khVCCgSlWLSllphfj3TaBOQ5NS2mYkvyBczfScOfEZu7HfZ4/1/dvz3WL1tH6d3fx5ny3XD/PtYr1qRu8f1ex+s1guF893/Y9nof0DGD4TXl/mq3b8up1vtrMbAIxYzerV4+f/BM2XPC2WdTOK4aMaxJNA3IWTtBG7aMWRYEMOu2BD4X7wbdUw4iOMSPeMRE8xIkyZEZGdYBQtV2sxpUNG9BuNJH1j9JnHl+UxXphn43lG0uWZ2AnlxCwLLSngz8qlQPlZpiB4qJzgLxhpGFQidlmeXohncGGejOYJdlNVeD9TBUYUZJP8VNlUT0xUgUyoSdNDudN4GRJTR0ftZzqYLNsm9GaK2ReAXA1AMVdAGL8BjMwuNMqzi0LP8mPByB11lCD7YB0LhpTnLUaAn4MBgnI3D0Lq69LKEsP1ujc9KsuidKh7jHo1AEMumFEHAEea7jkAGvKzUgwDAI7XV6AZQMIQ4Ij1zwEQzE4UGQIk8pUIw/USqXbtode5MwAkZ4AjC+WEAOwMwN4VsHcF4l2BeFeg3hWodwXmXYF5V5C8K0jOFVAI3gDuFTi3awLyBvCuIHpXEL0rQPQGUGcAit4A4gzA4A3g3Sq8F30Sb6OJt9HU22hqzgDmbTTzbhXJ22jJuVWw966CvXcV7L2rYO9dBYOz0TiiN4Cz0RijN4C30Qi8AbyN5v0qgdnbaOzdKsTbaOLdKtTbaOrdKux6oxl1p2f6/bXmCJl8Ttg76mD4YiKlMEnFaJJK0UQCFcMklcIEsBgmVgqTWIwmE+yyJmIywbnIVEy4FCZcjCZcjCZSyrojUox3tJh+osX0WCtGEytGkxSLYVKKdzRO8POHuq8f3onQCd6cS8dfbHDhyM4+QWqTzl74bz+a0d/5ZjG/X9a7O5NPb6uH3hXK7b+X+uA25ctm/VA/vm3q9l7l/kpl601QqMCgIQPtMgecKhBqh61gIFaBhga1Qf4P",
1765
- "brillig_names": [
1766
- "_check_block_number"
1767
- ]
1768
- },
1769
- {
1770
- "name": "_check_timestamp",
1771
- "is_unconstrained": true,
1772
- "custom_attributes": [
1773
- "public",
1774
- "internal",
1775
- "view"
1776
- ],
1777
- "abi": {
1778
- "error_types": {
1779
- "11405868724477732285": {
1780
- "error_kind": "string",
1781
- "string": "Function _check_timestamp can only be called internally"
1782
- },
1783
- "13418685691864489983": {
1784
- "error_kind": "string",
1785
- "string": "Function _check_timestamp can only be called statically"
1786
- },
1787
- "1433889167918961673": {
1788
- "error_kind": "fmtstring",
1789
- "item_types": [],
1790
- "length": 17
1791
- },
1792
- "17843811134343075018": {
1793
- "error_kind": "string",
1794
- "string": "Stack too deep"
1795
- },
1796
- "8443716675528357851": {
1797
- "error_kind": "string",
1798
- "string": "Timestamp mismatch."
1799
- }
1800
- },
1801
- "parameters": [
1802
- {
1803
- "name": "operation",
1804
- "type": {
1805
- "kind": "integer",
1806
- "sign": "unsigned",
1807
- "width": 8
1808
- },
1809
- "visibility": "private"
1810
- },
1811
- {
1812
- "name": "value",
1813
- "type": {
1814
- "kind": "integer",
1815
- "sign": "unsigned",
1816
- "width": 64
1817
- },
1818
- "visibility": "private"
1819
- }
1820
- ],
1821
- "return_type": null
1822
- },
1823
- "bytecode": "JgACBAEnAAABBIBLJgAABAMmAgMEAiYCBAQAHxgABAADgEkdAIBJgEkCHQCASoBKBS0IgEkAAS0IgEoAAiQAAABZJAAAAIQnAgABBIBLJgICBAA6DQABAAInAIBDAgAEJwCARAIABicAgEUCAAEnAIBGAgACJwCARwIABScAgEgCAAMlJAAAA1IeAgAEAR4CAAUACjgEBQYjAgAGAAAApSQAAAN7HgIABAkmAgUAAQo4BAUGIwIABgAAAMEkAAADjR4CAAQGHAwEBQAcDAIEAAo4BQQCDDgFBAYLKAABgEUABCYCBQEBIwIABAAAAzsiAAAA9AsoAAGARgAHFgwCCCMCAAcAAAMpIgAAAQ0LKAABgEgACSMCAAkAAAMXIgAAASILKAABgEMACiMCAAoAAAMAIgAAATcLKAABgEcAChYMBgsjAgAKAAAC6SIAAAFQCygAAYBEAAgjAgAIAAAC1yIAAAFlJgIBAkkmAggCZCYCCgJhJgILAnImAgwCbyYCDQJpJgIOAnYmAg8CZSYCEAIgJgIRAmwmAhICbiYCEwJ0JgIUAnAsCAEVJgIWBBIAEAEWASYDFQQBACgVAhYsDBYXLA4BFwAoFwIXLA4SFwAoFwIXLA4OFwAoFwIXLA4KFwAoFwIXLA4RFwAoFwIXLA4NFwAoFwIXLA4IFwAoFwIXLA4QFwAoFwIXLA4MFwAoFwIXLA4UFwAoFwIXLA4PFwAoFwIXLA4LFwAoFwIXLA4KFwAoFwIXLA4TFwAoFwIXLA4NFwAoFwIXLA4MFwAoFwIXLA4SFyYCAQEAJgIIBAAKOAEFCiMCAAoAAALOJgILBBMsCAEMJgINBBMAEAENASwMDA0pAwANBRPmMpnlFxQJACgNAg0AKBUCDiYCDwQRLQQADoADLQQADYAELQQAD4AFJAAAA58mAg4EEQA4DQ4NLA4IDQAoDQINOw0MCywMAQYiAAAC4CwMCwYiAAAC4CwMBgIiAAAC9wQ4CwgBLAwBAiIAAAL3LAwCCSIAAAMOEjgGAgEsDAEJIgAAAw4sDAkHIgAAAyAsDAYHIgAAAyAsDAcEIgAAAzIsDAgEIgAAAzIsDAQDIgAAA0QsDAIDIgAAA0QjAgADAAADUSQAAAPlJScAgAQEeAANAAAAgASAAyMAgAMAAAN6KQEAAQX3ofOvpa3UyjsBAQIlKQEAAQWeScksjTulvTsBAQIlKQEAAQW6OL+KoDMf/zsBAQIlAQCAA4AFgActAIADgAgtAIAEgAkLAIAIgAeACiMAgAoAAAPkLQGACIAGLQKABoAJAQCACAACgAgBAIAJAAKACSIAAAOzJSkBAAEFdS4blGTo99s7AQECJS0AGMoYyg==",
1824
- "debug_symbols": "zVrbTuNADP2XPPfBHntsz/7KCqECAVWqWlTKSivEv2/S7aSBhBaaWJoXRMDuuSTHmSbzVj3Ud69Pt6vN4/al+vX7rVpv75f71XbTHL29L6q73Wq9Xj3d9v9cQfsDSQ8NL8/LTXv8sl/u9tUvRAq0qOrNw+F3xuZDHlfrujkK8L4Y1LNgOJaztBXHaqWRYqMIx2Ijif3im0WFHL5gxHpiJHqJEVPKjJjtAqNgWa2FlAaMvuORpA+M2r4YrusTuLIvjvcZS9dnYhecE7NstCSg884l4HwuEwh9dk7hG4wUBko0XtdnV+KZXdeXaKwvaTYwJe56BMfMBsJsNnC4cJmK5ZQ1ZOCz2cnOk0GA2GfT9AQYFYAnVgg8bBp3CyR0ZkE4r5uS5XRC74I0OwAgTQbgkM8cU/gAMHIRk3E+YQy9yTJWTLGjTgJyKtaxYkw5HhQQzxc3ojSeBKa+L/9tme57MwqzLcoD35knA0TMgiPpAOCLifgTAIV8rpRgACBpugLlLpFDgASTAYTyGBcZABCir0XNJTkdQHO4rHeDyAAkzgBRnQEkeAN4K1BvBeqtwLwVmLeC5K0gOStgCN4A3grQWwF6KwjeCoLzuGZCbwBvBeytgL0VRPAGYG8A52ULC3kDmDOA902fvW/6bN5BM++gJe+gpegN4By0COwN4By0iOQN4By06L2qiN6riui9qojkHLTI4A3gHTT2HhXRO2jRe1R4P0qI3o8SonoHTb1HhXkHzbxHhXkHLXmPijQ9aMbdSzr9+FhzhEz+WD09hI6HtxcCVAyTYjzBYjwJWAwTKYUJQTFMYilMuBhPZlhlzcRkhvciMzGZYdUzF5NiPNFiPNFi7jtWTHZSMfMklTJjFUrxRKEcT1IpTLCU7CjP8PWHu48f7onQGZ6cS8dfbLDhyH78Bqlt+vGN/+a9Ofqz3K2Wd+v6uDXz8XVz39upuf/7XH/atPm8297XD6+7ut2+edq52a7YUXmBxg0ZbKOKDTKKtoftKhotNv/VBrVB/gc=",
1825
- "brillig_names": [
1826
- "_check_timestamp"
1827
- ]
1828
- },
1829
- {
1830
- "name": "sync_notes",
1831
- "is_unconstrained": true,
1832
- "custom_attributes": [],
1833
- "abi": {
1834
- "error_types": {
1835
- "17843811134343075018": {
1836
- "error_kind": "string",
1837
- "string": "Stack too deep"
1838
- }
1839
- },
1840
- "parameters": [],
1841
- "return_type": null
1842
- },
1843
- "bytecode": "H4sIAAAAAAAA/7WTyw7CIBBFqcUo0sTEx39MU0y7dOHafyCtLHVRN+766dZkJkyI0QVwEzJMgMNcHoXwKjBKESGCHDEqjAs2Xs7tjDnEqVbBvin5HRijvvhLWH+jkFnk4QPxM50/rJBzmTyfe6F913PTrF8J/z5y+af7y+l//8OzRq9bzCvh/8P4uvfXx/M2ij/SbJGc0ptoOwAqvkT+EvmhJBvn8w+Yb4Svj6KMqNO1tnaNdfZkh8H0dhfwP+KH/QbzqHp4zgQAAA==",
1844
- "debug_symbols": "ZY5bCoMwEEX3Mt/5MKZSdCtSJOoogZBIHoUSsvdORGioP5e5w+FyEqw4x31SZrMehjGBtosMyhpqKTOYndJa7VP9hqYEFyfvD2lK9UG6AAMXvWgYoFnP+yloY1MaqbU8sxsv+vaiH5z/2K7Lr0z1LZ2Ss8bLZotmqeTC58A/z8PZBdfosBhXspQj71jb0CxNfwE=",
1845
- "brillig_names": [
1846
- "sync_notes"
1847
- ]
1753
+ "verification_key": "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"
1848
1754
  },
1849
1755
  {
1850
1756
  "name": "process_log",
@@ -1959,7 +1865,79 @@
1959
1865
  ]
1960
1866
  },
1961
1867
  {
1962
- "name": "check_block_number",
1868
+ "name": "public_dispatch",
1869
+ "is_unconstrained": true,
1870
+ "custom_attributes": [
1871
+ "public"
1872
+ ],
1873
+ "abi": {
1874
+ "error_types": {
1875
+ "10421965853029650238": {
1876
+ "error_kind": "string",
1877
+ "string": "Function _check_block_number can only be called statically"
1878
+ },
1879
+ "11405868724477732285": {
1880
+ "error_kind": "string",
1881
+ "string": "Function _check_timestamp can only be called internally"
1882
+ },
1883
+ "13418685691864489983": {
1884
+ "error_kind": "string",
1885
+ "string": "Function _check_timestamp can only be called statically"
1886
+ },
1887
+ "1433889167918961673": {
1888
+ "error_kind": "fmtstring",
1889
+ "item_types": [],
1890
+ "length": 17
1891
+ },
1892
+ "16541607464495309456": {
1893
+ "error_kind": "fmtstring",
1894
+ "item_types": [],
1895
+ "length": 16
1896
+ },
1897
+ "16761564377371454734": {
1898
+ "error_kind": "string",
1899
+ "string": "Array index out of bounds"
1900
+ },
1901
+ "17843811134343075018": {
1902
+ "error_kind": "string",
1903
+ "string": "Stack too deep"
1904
+ },
1905
+ "2242946026394210301": {
1906
+ "error_kind": "string",
1907
+ "string": "Block number mismatch."
1908
+ },
1909
+ "5019202896831570965": {
1910
+ "error_kind": "string",
1911
+ "string": "attempt to add with overflow"
1912
+ },
1913
+ "8209322232883590150": {
1914
+ "error_kind": "string",
1915
+ "string": "Function _check_block_number can only be called internally"
1916
+ },
1917
+ "8443716675528357851": {
1918
+ "error_kind": "string",
1919
+ "string": "Timestamp mismatch."
1920
+ }
1921
+ },
1922
+ "parameters": [
1923
+ {
1924
+ "name": "selector",
1925
+ "type": {
1926
+ "kind": "field"
1927
+ },
1928
+ "visibility": "private"
1929
+ }
1930
+ ],
1931
+ "return_type": null
1932
+ },
1933
+ "bytecode": "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",
1934
+ "debug_symbols": "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",
1935
+ "brillig_names": [
1936
+ "public_dispatch"
1937
+ ]
1938
+ },
1939
+ {
1940
+ "name": "check_timestamp",
1963
1941
  "is_unconstrained": false,
1964
1942
  "custom_attributes": [
1965
1943
  "private"
@@ -2469,7 +2447,9 @@
2469
2447
  {
2470
2448
  "name": "value",
2471
2449
  "type": {
2472
- "kind": "field"
2450
+ "kind": "integer",
2451
+ "sign": "unsigned",
2452
+ "width": 64
2473
2453
  },
2474
2454
  "visibility": "private"
2475
2455
  }
@@ -3581,13 +3561,33 @@
3581
3561
  "visibility": "databus"
3582
3562
  }
3583
3563
  },
3584
- "bytecode": "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",
3585
- "debug_symbols": "7VXbisIwEP2XPPdhZpLJxV9ZFqlapVBaqXVhEf99E7GJutGlsLsg+FI6yTmZkzOT5CBW1WK/mdftutuJ2dtBNN2yHOqu9dFBoDqN7bZlG8LdUPaDmJFiV4iqXYVfw8dCrOumEjMkOBbf0aTNiCbrItpRDuyUPYMlED4GIxtHZzSyBR3hZGRucSQ9KkGVdJPL6Uap5bi4QrhCvxcC+WXNPWv0y5p71pisNdLJZI39wRoFUb9CSmhDpwz2zzO4XAaUNm1cJ47GbA3YqFgDDSbBOQOXmpOcpN0Xw8sh+AU5Gk2So+GxHHQsYwc5Vu7SoFwrWwuxlx24Gz8Jn30D9N8bIEAT+xmkuW5RHyz6umnqzfzqNYPwUdknjRHPyzHDbYcpnk7R0ylmOsVOpPgIAzJfMY6n3rC7IEpP9OFH2dfloqmCl2F23y5Ha304fG7HmdH8bd8tq9W+r0IZUgWkzy2xUBjuknB4GQrmqO00RFxI8Fl95i8=",
3564
+ "bytecode": "H4sIAAAAAAAA/+XdBXRT99/H8dSA4lYYE2yCQ7RNcHd3h0qKDoZtzDt3d2fK3F2Zb8zdN7bBFHfn+XxHMm5D2DnPvzf7P+/z3HPep22S3rx+N9I0uZLm2TvVzfB4dqfv/T5NZcS+2kkNE06Lf3V+n5XkcpWSnFYlyWnVkpxWI8lpdVTnhNMaJLlcwySnNUpyWuMkpzVJclpTVSHhtGYxi3NKi32Nnx7w5gaD0Tx/1Bfw5Xv9kYJwyBsMFeSGfWFfKBwq8ocDgWg4GM6LFETyvBFfMBD1FYcigWLv3qlaxr55ecs0+QtT6az+nzsDiSeYrabKdFhtOex23Ba7HbdB/PvqscvEf6+Gfq6paqnaGftOj0/pCcvAW7bJ18TF5ZmT4Z7LeZ+1+TZ0LKN0z4Enl67fn5bketJcXvZN3ZuXN1XGZikwlprcvkM774RlvUPXSdEduo7jDh3/I+RJ8Z0tzZPaG7Ks8w6F84v9+VFvKpdBjYzULAO3nTkZ/7dvq7gzzTFPeyFWakp8YJf1wegmvLknNQvY7TG7+KD1tYCMOd3FMbeEjDnDxTG3+pfG7C3b5Gvt4vKjPLG38TCcXojTB3H6Ic4AxBmEOEMQZy7EmQdxhiHOCMTZFuJsB3G2hzg7QJwdIc5OEGdniLMLxNkV4uwGcXaHOHtAnD0hzl4QZ2+Isw/E2Rfi7Adx9oc4B0CcAyHOQRDnYIhzCMQ5FOIcBnEOhzhHQJwjIc5REOdoiHMMxDkW4hwHcY6HOCdAnBMhzkkQ52SIMx/iLIA4CyHOIogzCnEWQ5xTIM6pEOc0iHM6xDkD4pwJcR4Ncc6COGdDnMdAnHMgzrkQ5zyIcz7EuQDiPBbiPA7iXAhxHg9xngBxnghxngRxngxxngJxngpxlkCcp0Gcp0OcZ0CcZ0KcZ0GcZ0Oc50Cc50Kc50Gc50OcF0CcF0KcF0GcF0Ocl0Ccl0Kcl0Gcl0OcV0CcV0KcV0GcV0Oc10Cc10Kc10Gc10OcN0CcN0KcN0GcN0Oct0CciyDOWyHO2yDO2yHOOyDOOyHOuyDOxRDn3RDnPRDnvRDnfRDn/RDnAxDngxDnQxDnwxDnIxDnoxDnYxDn4xDnExDnkxDnUxDn0xDnMxDnsxDncxDn8xDnCxDnixDnSxDnEojzZYjzFYjzVYjzNYjzdYjzDYjzTYjzLYjzbYhzKcT5DsT5LsT5HsT5PsT5AcT5IcT5EcT5McT5CcT5KcT5GcT5OcT5BcT5JcT5FcT5NcT5DcT5LcT5HcT5PcT5A8S5DOL8EeL8CeL8GeJcDnGugDh/gTh/hTh/gzh/hzj/gDj/hDhXQpyrIM7VEOcaiHMtxLkO4lwPcW6AODdCnJsgzs0Q5xaIcyvEuQ3i3A5x7oA4d0KcuyDO3RDnHojTZkhwpkGc6RBnBsSZCXFmQZzlIM7yEGcFiDMb4qwIcVaCOCtDnFUgzqoQZzWIszrEWQPirAlx1oI4a0OcORBnHYizLsR5EMRZD+I8GOI8BOI8FOI8DOKsD3E2gDgbQpyNIM7GEOfhEOcREOeREOdREGcTiLMpxNkM4mwOcbaAOFtCnK0gztYQZxuI0wtx+iBOP8QZgDiDEGcI4syFOPMgzjDEGYE420Kc7VLkTE9wBry5wWA0zx/1BXz5Xn+kIBzyBkMFuWFf2BcKh4r84UAgGg6G8yIFkTxvxBcMRH3FoUigODbvNBfH3P7/4Zg7QO6PHdPKvvx8+QUF0WBxMJXOTmnu3c7/dB/ylm3ydXbRWTfj33nceMs2+bq4OOacDMbjpivk8d0N4uwOcfaAOHtCnL0gzt4QZx+Isy/E2Q/i7A9xDoA4B0KcgyDOwRDnEIhzKMQ5DOIcDnGOgDhHQpyjIM7REOcYiHMsxDkO4hwPcU6AOCdCnJMgzskQZz7EWQBxFkKcRRBnFOIshjinQJxTIc5pEOd0iHMGxDkT4jwa4pwFcc6GOI+BOOdAnHMhznkQ53yIcwHEeSzEeRzEuRDiPB7iPAHiPBHiPAniPBniPAXiPBXiLIE4T4M4T4c4z4A4z4Q4z4I4z4Y4z4E4z4U4z4M4z4c4L4A4L4Q4L4I4L4Y4L4E4L4U4L4M4L4c4r4A4r4Q4r4I4r4Y4r4E4r4U4r4M4r4c4b4A4b4Q4b4I4b4Y4b4E4F0Gct0Kct0Gct0Ocd0Ccd0Kcd0GciyHOuyHOeyDOeyHO+yDO+yHOByDOByHOhyDOhyHORyDORyHOxyDOxyHOJyDOJyHOpyDOpyHOZyDOZyHO5yDO5yHOFyDOFyHOlyDOJRDnyxDnKxDnqxDnaxDn6xDnGxDnmxDnWxDn2xDnUojzHYjzXYjzPYjzfYjzA4jzQ4jzI4jzY4jzE4jzU4jzM4jzc4jzC4jzS4jzK4jza4jzG4jzW4jzO4jze4jzB4hzGcT5I8T5E8T5M8S5HOJcAXH+AnH+CnH+BnH+DnH+AXH+CXGuhDhXQZyrIc41EOdaiHMdxLke4twAcW6EODdBnJshzi0Q51aIcxvEuR3i3AFx7oQ4d0GcuyHOPRCnJ53hTIM40yHODIgzE+LMgjjLQZzlIc4KEGc2xFkR4qwEcVaGOKtAnFUhzmoQZ3WIswbEWRPirAVx1oY4cyDOOhBnXYjzIIizHsR5MMR5CMR5KMR5GMRZH+JsAHE2hDgbQZyNIc7DIc4jIM4jIc6jIM4mEGdTiLMZxNkc4mwBcbaEOFtBnK0hzjYQpxfi9EGcfogzAHEGIc4QxJkLceZBnGGIMwJxtoU420Gc7SHODhBnR4izE8TZGeLsAnF2hTi7QZzdIc4eEGdPiLMXxNkb4uwDcfaFOPtBnP0hzgEQ50CIcxDEORjiHAJxDoU4h0GcwyHOERDnSIhzFMQ5GuIcA3GOhTjHQZzjIc4JEOdEiHMSxDkZ4syHOAsgzkKIswjijEKcxRDnFIhzKsQ5DeKcDnHOgDhnQpxHQ5yzIM7ZEOcxEOcciHMuxDkP4pwPcS6AOI+FOI+DOBdCnMdDnCdAnCdCnCdBnCdDnKdAnKdCnCUQ52kQ5+kQ5xkQ55kQ51kQ59kQ5zkQ57kQ53kQ5/kQ5wUQ54UQ50UQ58UQ5yUQ56UQ52UQ5+UQ5xUQ55UQ51UQ59UQ5zUQ57UQ53UQ5/UQ5w0Q540Q500Q580Q5y0Q5yKI81aI8zaI83aI8w6I806I8y6IczHEeTfEeQ/EeS/EeR/EeT/E+QDE+SDE+RDE+TDE+QjE+SjE+RjE+TjE+QTE+STE+RTE+TTE+QzE+SzE+RzE+TzE+QLE+SLE+RLEuQTifBnifAXifBXifA3ifB3ifAPifBPifAvifBviXApxvgNxvgtxvgdxvg9xfgBxfghxfgRxfgxxfgJxfgpxfgZxfg5xfgFxfglxfgVxfg1xfgNxfgtxfgdxfg9x/gBxLoM4f4Q4f4I4f4Y4l0OcKyDOXyDOXyHO3yDO31PkTE9wBry5wWA0zx/1BXz5Xn+kIBzyBkMFuWFf2BcKh4r84UAgGg6G8yIFkTxvxBcMRH3FoUigODbvJi6O+Y9/aczesk2+P9PdW351Mhi3c6aLy28l5L6d5eKYV0HGXM7FMa+GjLm8i2NeAxlzBRfHvBYy5mwXx7wOMuaKLo55PWTMlVwc8wbImCu7OOaNkDFXcXHMmyBjrurimDdDxlzNxTFvgYy5uotj3goZcw0Xx7wNMuaaLo55O2TMtVwc8w7ImGu7OOadkDHnuDjmXZAx13FxzLshY67r4pj3QMZ8kItj9kDeA6zn4pjTIGM+2MUxp0PGfIiLY86AjPlQF8ecCRnzYS6OOQsy5voujrkcZMwNXBxzeciYG7o45gqQMTdycczZkDE3dnHMFSFjPtzFMVeCjPkIF8dcGTLmI10ccxXImI9yccxVXRyzZvXXOj4rYgNurlqolqqVaq3a2PUon/LbslBBFVK5Kk+FVUS1Ve1Ue9VBdVSdYmPvorqqbqq76qF6ql6qt+qj+qp+qr8aoAaqQWqwGqKGqmFquBqhRqpRarQao8aqcWq8mqAmqklqsspXBapQFamoKlZT1FQ1TU1XM9RMdbSapWarY9QcNVfNU/PVAnWsOk4tVMerE9SJ6iR1sjpFnapK1GnqdHWGOlOdpc5W56hz1XnqfHWBulBdpC5Wl6hL1WXqcnWFulJdpa5W16hr1XXqenWDulHdpG5Wt6hF6lZ1m7pd3aHuVHepxepudY+6V92n7lcPqAfVQ+ph9Yh6VD2mHldPqCfVU+pp9Yx6Vj2nnlcvqBfVS2qJelm9ol5Vr6nX1RvqTfWWelstVe+od9V76n31gfpQfaQ+Vp+oT9Vn6nP1hfpSfaW+Vt+ob9V36nv1g1qmflQ/qZ/VcrVC/aJ+Vb+p39Uf6k+1Uq1Sq9UatVatU+vVBrVRbVKb1Ra1VW1T29UOtVPtUrvVHmUPsjSVrjJUpspS5VR5VUFlq4qqkqqsqqiqqpqqrmqomqqWqq1yVB1VVx2k6qmD1SHqUHWYqq8aqIaqkWqsDldHqCPVUaqJaqqaqeaqhWqpWqnWqo3yKp/yq4AKqpDKVXkqrCKqrWqn2qsOqqPqpDqrLqqr6qa6qx6qp+qleqs+qq/qp/qrAWqgGqQGqyFqqBqmhqsRaqQapUarMWqsGqfGqwlqopqkJqt8VaAKVZGKqmI1RU1V09R0NUPNVEerWWq2OkbNUXPVPDVfLVDHquPUQnW8OkGdqE5SJ6tT1KmqRJ2mTldnqDPVWepsdY46V52nzlcXqAvVRepidYm6VF2mLldXqCvVVepqdY26Vl2nrlc3qBvVTepmdYtapG5Vt6nb1R3qTnWXWqzuVveoe9V96n71gHpQPaQeVo+oR9Vj6nH1hHpSPaWeVs+oZ9Vz6nn1gnpRvaSWqJfVK+pV9Zp6Xb2h3lRvqbfVUvWOele9p95XH6gP1UfqY/WJ+lR9pj5XX6gv1Vfqa/WN+lZ9p75XP6hl6kf1k/pZLVcr1C/qV/Wb+l39of5UK9UqtVqtUWvVOrVebVAb1Sa1WW1RW9U2tV3tUDvVLrVb7VH2giJNpasMlamyVDlVXlVQ2aqiqqQqqyqqqqqmqqsaqqaqpWqrHFVH1VUHqXrqYHWIOlQdpuqrBqqhaqQaq8PVEepIdZRqopqqZqq5aqFaqlaqtWqjvMqn/CqggiqkclWeCquIaqvaqfaqg+qoOqnOqovqqrqp7qqH6ql6qd6qj+qr+qn+aoAaqAapwWqIGqqGqeFqhBqpRqnRaowaq8ap8WqCmqgmqckqXxWoQlWkoqpYTVFT1TQ1Xc1Qdrx6Oxa8HWfdjmFuxwe3Y2/bca3tmNF2PGY71rEdR9iO0WvHv7Vjy9pxW+2YqHa8UTuWpx0n045BWaLs2Il2XEI75p8dT8+OVWfHgbNjrNnxy+zYYHbcLTumlR0vyo7FZMc5smMI2fF57Ng3dlwZO2aLHQ/FjjVix/GwY2TY8Sfs2A523AQ7JoHt79/2pW/7qbd9wC9Stu9y2y+47XPb9mdt+4q2/TDbPo5t/8G2b17b763tU9b212r7QrX9jNo+PG3/mLbvSduvo+0z0fZHaPv6s/3o2T7qbP9vtm8122+Z7RPM9rdl+7Ky/UTZPpiWKNt3kO2Xx/Z5Y/uTsX212H5QbB8jtv8O2zeG7XfC9ulg+0uwfRHYdv62Db1tn27bftt21bbNsm0PbNva2nasto2obX9p2zbadoO2TZ5t72bbktl2WrYN1DJl2+7YdjG2zYltz2GveW07BFvH39aft3XTbV1tWw/a1uW1dVttXU9b99HWBbR142xdMVt3ytYlsnVrbF0TW/fC1kWwz+bts2r77NY+y7TP9uyzLvvsxz4Lsc8G7L1ye+/Y3ku19xbtvTZ778nei7H3Jux/dfvf1f6Xs/9t7LV++t6XDx5bV9mm5p59U+ypxWb/1/m2bq+t62rrftq6kLZuoK0rZ+uO2bpUtm6RrWtj657Yuhi2boJ9Vm+fXdtnufbZpn3WZ5992WdB9tmIfVZg753be8n23qq912jvvTVUjVRjZf+72/+y9r+d/a9j6883Vc08+0/pju9rxb7mLO9Sb87SxT2cl6tzgPPivx+Ofc1OOD0ttjw6x372lm3yZTvm6/b8w95gXran9OSyP5DtmGcq55+Zmvn/tR6zTd1LSs/fk3C9GQmXS/Y7VWLfp3n2v0x8HKm4H+l2DqV4Ofnj8y+Xots5vtyyHMsuI8mY4tdfxVP6toqfn+yrx1P6NvUkXFdFT0rvw75/GpvTH79vVE+4fOIyONC8sv6X8/pv3qbOZe28Tf+6TMm+89ITzst0nJeVcF5Wyf5jtL9TDRyXS/YYjF+uueP7FgnLKJXPz6l6XrCpVhK/87psKl/i+XuKL48Mx2nx5RpfzhWcl084L9txXmZJ6eupGPs503E9znnFHVkJl4//na8W+1rO8Tvx36+e5PrLJVx/KXeS0xKXS3aSy2cnubzdfxvHvq8Uy+5Dfsf8DvQ4cL5eiX9fzbP/Yz7+uyl+zPrTPPs/LyU+vziv31735cS+nzd/9txon1k9FkYLF8yfNntWt/zCqVHnk3DiTDxJBh8/L81x+oH+KCf+Tobj8s6pkmffC7nMktKX7xw73VuGKS/s9cavM/6AyPKUXoiehOvPSrh8Xuznio7xOMfb+T90Fufl+4oD+cX5ofyiomBhfs2E+Xs8+5ajLaf4kyX8hW/+v/XCN0UPxL9f0JVPzfyTvvB1jiV+fvw+3KNk37LsUVLaFL9ML8dleh3gMr0dl+ntuIxN//QCOvGPt9OR7MVgz4TzMj372+LnOZ+Y4yZ7Aq/t2fd9jsNoU5+Sffa//2B4UvoiP5Lif7Z8tTwHfoEU/6NWL/ZzZcf30VlzFkQXRAcvKJg5rbDnglmFe5/9Z85MfPJ33sGcU1bC5RJ/L9kTvfPnzISfs5LM90C/n3jage6MTj/hD0r92M//7T8o/wMgWDyPjBsCAA==",
3565
+ "debug_symbols": "7VVbasMwELyLvv2xu9LqkauUUpzECQZjB8cplJC7Vwq2lKRKiiktFPJjvNKMdpgdy0exrpaH7Vvdbrq9WLwcRdOtyqHuWl8dBfJ5bb8r21Duh7IfxIIUu0JU7Tq8Gj4VYlM3lVggwan4iiZtJjRZF9GOcmCn7AiWQPgYjGwcjWhkCzrCycjc4Uh6UoIq6SaX041Sy+lwhXCFfi0E6qc196wxT2vuWWOz1kgnkzX2G2sURP0KKaENnTu43+5AkOtgJIwUixQZGrMTsGDSBFRySXMGLjUnMUm5H0UQgz8Xw5DEOPlYDDqWMT2Olbs0JxdjayHm2IG79ZL+t3z5t/IJ0MQcgzTX0fTFsq+bpt6+Xf3FIDyUykllxPE4ZrjNluL5FD2fYuZT7EyKrzAg83Hj+LUbdhdE6Ym+fC/7ulw2VfAy7B7a1WStL4eP3bQzmb/ru1W1PvRVGEOaQMiKxEJhuKXCHeInzxy1nZeICwm+q+/8CQ==",
3586
3566
  "brillig_names": [
3587
3567
  "store_in_execution_cache_oracle_wrapper",
3588
3568
  "enqueue_public_function_call_internal"
3589
3569
  ],
3590
- "verification_key": "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"
3570
+ "verification_key": "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"
3571
+ },
3572
+ {
3573
+ "name": "sync_notes",
3574
+ "is_unconstrained": true,
3575
+ "custom_attributes": [],
3576
+ "abi": {
3577
+ "error_types": {
3578
+ "17843811134343075018": {
3579
+ "error_kind": "string",
3580
+ "string": "Stack too deep"
3581
+ }
3582
+ },
3583
+ "parameters": [],
3584
+ "return_type": null
3585
+ },
3586
+ "bytecode": "H4sIAAAAAAAA/7WTyw7CIBBFqcUo0sTEx39MU0y7dOHafyCtLHVRN+766dZkJkyI0QVwEzJMgMNcHoXwKjBKESGCHDEqjAs2Xs7tjDnEqVbBvin5HRijvvhLWH+jkFnk4QPxM50/rJBzmTyfe6F913PTrF8J/z5y+af7y+l//8OzRq9bzCvh/8P4uvfXx/M2ij/SbJGc0ptoOwAqvkT+EvmhJBvn8w+Yb4Svj6KMqNO1tnaNdfZkh8H0dhfwP+KH/QbzqHp4zgQAAA==",
3587
+ "debug_symbols": "ZY5bCoMwEEX3Mt/5MKZSdCtSJOoogZBIHoUSsvdORGioP5e5w+FyEqw4x31SZrMehjGBtosMyhpqKTOYndJa7VP9hqYEFyfvD2lK9UG6AAMXvWgYoFnP+yloY1MaqbU8sxsv+vaiH5z/2K7Lr0z1LZ2Ss8bLZotmqeTC58A/z8PZBdfosBhXspQj71jb0CxNfwE=",
3588
+ "brillig_names": [
3589
+ "sync_notes"
3590
+ ]
3591
3591
  }
3592
3592
  ],
3593
3593
  "outputs": {
@@ -3611,17 +3611,19 @@
3611
3611
  {
3612
3612
  "name": "value",
3613
3613
  "type": {
3614
- "kind": "field"
3614
+ "kind": "integer",
3615
+ "sign": "unsigned",
3616
+ "width": 64
3615
3617
  }
3616
3618
  }
3617
3619
  ],
3618
3620
  "kind": "struct",
3619
- "path": "Router::check_block_number_parameters"
3621
+ "path": "Router::check_timestamp_parameters"
3620
3622
  }
3621
3623
  }
3622
3624
  ],
3623
3625
  "kind": "struct",
3624
- "path": "Router::check_block_number_abi"
3626
+ "path": "Router::check_timestamp_abi"
3625
3627
  },
3626
3628
  {
3627
3629
  "fields": [
@@ -3640,19 +3642,17 @@
3640
3642
  {
3641
3643
  "name": "value",
3642
3644
  "type": {
3643
- "kind": "integer",
3644
- "sign": "unsigned",
3645
- "width": 64
3645
+ "kind": "field"
3646
3646
  }
3647
3647
  }
3648
3648
  ],
3649
3649
  "kind": "struct",
3650
- "path": "Router::check_timestamp_parameters"
3650
+ "path": "Router::check_block_number_parameters"
3651
3651
  }
3652
3652
  }
3653
3653
  ],
3654
3654
  "kind": "struct",
3655
- "path": "Router::check_timestamp_abi"
3655
+ "path": "Router::check_block_number_abi"
3656
3656
  },
3657
3657
  {
3658
3658
  "fields": [
@@ -3671,19 +3671,17 @@
3671
3671
  {
3672
3672
  "name": "value",
3673
3673
  "type": {
3674
- "kind": "integer",
3675
- "sign": "unsigned",
3676
- "width": 64
3674
+ "kind": "field"
3677
3675
  }
3678
3676
  }
3679
3677
  ],
3680
3678
  "kind": "struct",
3681
- "path": "Router::_check_timestamp_parameters"
3679
+ "path": "Router::_check_block_number_parameters"
3682
3680
  }
3683
3681
  }
3684
3682
  ],
3685
3683
  "kind": "struct",
3686
- "path": "Router::_check_timestamp_abi"
3684
+ "path": "Router::_check_block_number_abi"
3687
3685
  },
3688
3686
  {
3689
3687
  "fields": [
@@ -3702,17 +3700,19 @@
3702
3700
  {
3703
3701
  "name": "value",
3704
3702
  "type": {
3705
- "kind": "field"
3703
+ "kind": "integer",
3704
+ "sign": "unsigned",
3705
+ "width": 64
3706
3706
  }
3707
3707
  }
3708
3708
  ],
3709
3709
  "kind": "struct",
3710
- "path": "Router::_check_block_number_parameters"
3710
+ "path": "Router::_check_timestamp_parameters"
3711
3711
  }
3712
3712
  }
3713
3713
  ],
3714
3714
  "kind": "struct",
3715
- "path": "Router::_check_block_number_abi"
3715
+ "path": "Router::_check_timestamp_abi"
3716
3716
  }
3717
3717
  ]
3718
3718
  }
@@ -3780,7 +3780,7 @@
3780
3780
  },
3781
3781
  "65": {
3782
3782
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/context/call_interfaces.nr",
3783
- "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, traits::Deserialize,\n};\n\nuse crate::context::{gas::GasOpts, private_context::PrivateContext, public_context::PublicContext};\n\nuse crate::hash::hash_args;\nuse crate::oracle::execution_cache;\n\npub trait CallInterface<let N: u32> {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str<N>;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\npub struct PrivateCallInterface<let N: u32, T> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl<let N: u32, T> PrivateCallInterface<N, T> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call<let M: u32>(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize<M>,\n {\n execution_cache::store(self.args);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n let returns: T = returns_hash.get_preimage();\n returns\n }\n\n pub fn view<let M: u32>(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize<M>,\n {\n execution_cache::store(self.args);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns_hash.get_preimage()\n }\n}\n\nimpl<let N: u32> CallInterface<N> for PrivateVoidCallInterface<N> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\npub struct PrivateVoidCallInterface<let N: u32> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl<let N: u32> PrivateVoidCallInterface<N> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: (), is_static }\n }\n\n pub fn call(self, context: &mut PrivateContext) {\n execution_cache::store(self.args);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n )\n .assert_empty();\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl<let N: u32, T> CallInterface<N> for PrivateStaticCallInterface<N, T> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\npub struct PrivateStaticCallInterface<let N: u32, T> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl<let N: u32, T> PrivateStaticCallInterface<N, T> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view<let M: u32>(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize<M>,\n {\n execution_cache::store(self.args);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl<let N: u32> CallInterface<N> for PrivateStaticVoidCallInterface<N> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\npub struct PrivateStaticVoidCallInterface<let N: u32> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl<let N: u32> PrivateStaticVoidCallInterface<N> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: (), is_static: true }\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl<let N: u32, T> CallInterface<N> for PublicCallInterface<N, T> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\npub struct PublicCallInterface<let N: u32, T> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl<let N: u32, T> PublicCallInterface<N, T> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call<let M: u32>(self, context: &mut PublicContext) -> T\n where\n T: Deserialize<M>,\n {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::<M>())\n }\n\n pub unconstrained fn view<let M: u32>(self, context: &mut PublicContext) -> T\n where\n T: Deserialize<M>,\n {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::<M>())\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl<let N: u32> CallInterface<N> for PublicVoidCallInterface<N> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\npub struct PublicVoidCallInterface<let N: u32> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl<let N: u32> PublicVoidCallInterface<N> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: (),\n is_static,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl<let N: u32, T> CallInterface<N> for PublicStaticCallInterface<N, T> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\npub struct PublicStaticCallInterface<let N: u32, T> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl<let N: u32, T> PublicStaticCallInterface<N, T> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view<let M: u32>(self, context: &mut PublicContext) -> T\n where\n T: Deserialize<M>,\n {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::<M>())\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl<let N: u32> CallInterface<N> for PublicStaticVoidCallInterface<N> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\npub struct PublicStaticVoidCallInterface<let N: u32> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl<let N: u32> PublicStaticVoidCallInterface<N> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: (),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n true,\n )\n }\n}\n"
3783
+ "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, traits::Deserialize,\n};\n\nuse crate::context::{gas::GasOpts, private_context::PrivateContext, public_context::PublicContext};\n\nuse crate::hash::hash_args;\nuse crate::oracle::execution_cache;\n\npub trait CallInterface<let N: u32> {\n fn get_args(self) -> [Field];\n fn get_selector(self) -> FunctionSelector;\n fn get_name(self) -> str<N>;\n fn get_contract_address(self) -> AztecAddress;\n fn get_is_static(self) -> bool;\n}\n\n// PrivateCallInterface\n\npub struct PrivateCallInterface<let N: u32, T> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl<let N: u32, T> PrivateCallInterface<N, T> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn call<let M: u32>(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize<M>,\n {\n execution_cache::store(self.args);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n );\n let returns: T = returns_hash.get_preimage();\n returns\n }\n\n pub fn view<let M: u32>(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize<M>,\n {\n execution_cache::store(self.args);\n let returns_hash = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns_hash.get_preimage()\n }\n}\n\nimpl<let N: u32, T> CallInterface<N> for PrivateCallInterface<N, T> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateVoidCallInterface\n\npub struct PrivateVoidCallInterface<let N: u32> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl<let N: u32> PrivateVoidCallInterface<N> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n is_static: bool,\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: (), is_static }\n }\n\n pub fn call(self, context: &mut PrivateContext) {\n execution_cache::store(self.args);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n false,\n )\n .assert_empty();\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl<let N: u32> CallInterface<N> for PrivateVoidCallInterface<N> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticCallInterface\n\npub struct PrivateStaticCallInterface<let N: u32, T> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args_hash: Field,\n args: [Field],\n return_type: T,\n is_static: bool,\n}\n\nimpl<let N: u32, T> PrivateStaticCallInterface<N, T> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self {\n target_contract,\n selector,\n name,\n args_hash,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n }\n }\n\n pub fn view<let M: u32>(self, context: &mut PrivateContext) -> T\n where\n T: Deserialize<M>,\n {\n execution_cache::store(self.args);\n let returns = context.call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n );\n returns.get_preimage()\n }\n}\n\nimpl<let N: u32, T> CallInterface<N> for PrivateStaticCallInterface<N, T> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PrivateStaticVoidCallInterface\n\npub struct PrivateStaticVoidCallInterface<let N: u32> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args_hash: Field,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n}\n\nimpl<let N: u32> PrivateStaticVoidCallInterface<N> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n ) -> Self {\n let args_hash = hash_args(args);\n Self { target_contract, selector, name, args_hash, args, return_type: (), is_static: true }\n }\n\n pub fn view(self, context: &mut PrivateContext) {\n execution_cache::store(self.args);\n context\n .call_private_function_with_args_hash(\n self.target_contract,\n self.selector,\n self.args_hash,\n true,\n )\n .assert_empty();\n }\n}\n\nimpl<let N: u32> CallInterface<N> for PrivateStaticVoidCallInterface<N> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicCallInterface\n\npub struct PublicCallInterface<let N: u32, T> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n gas_opts: GasOpts,\n return_type: T,\n is_static: bool,\n}\n\nimpl<let N: u32, T> PublicCallInterface<N, T> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n gas_opts: GasOpts::default(),\n return_type: std::mem::zeroed(),\n is_static,\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call<let M: u32>(self, context: &mut PublicContext) -> T\n where\n T: Deserialize<M>,\n {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::<M>())\n }\n\n pub unconstrained fn view<let M: u32>(self, context: &mut PublicContext) -> T\n where\n T: Deserialize<M>,\n {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::<M>())\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl<let N: u32, T> CallInterface<N> for PublicCallInterface<N, T> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicVoidCallInterface\n\npub struct PublicVoidCallInterface<let N: u32> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl<let N: u32> PublicVoidCallInterface<N> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n is_static: bool,\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: (),\n is_static,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn call(self, context: &mut PublicContext) {\n let returns = context.call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n false,\n )\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl<let N: u32> CallInterface<N> for PublicVoidCallInterface<N> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticCallInterface\n\npub struct PublicStaticCallInterface<let N: u32, T> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n return_type: T,\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl<let N: u32, T> PublicStaticCallInterface<N, T> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: std::mem::zeroed(),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view<let M: u32>(self, context: &mut PublicContext) -> T\n where\n T: Deserialize<M>,\n {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n Deserialize::deserialize(returns.as_array::<M>())\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl<let N: u32, T> CallInterface<N> for PublicStaticCallInterface<N, T> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n\n// PublicStaticVoidCallInterface\n\npub struct PublicStaticVoidCallInterface<let N: u32> {\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n return_type: (), // Unit type () indicates this interface is for functions that return nothing (void)\n is_static: bool,\n gas_opts: GasOpts,\n}\n\nimpl<let N: u32> PublicStaticVoidCallInterface<N> {\n pub fn new(\n target_contract: AztecAddress,\n selector: FunctionSelector,\n name: str<N>,\n args: [Field],\n ) -> Self {\n Self {\n target_contract,\n selector,\n name,\n args,\n return_type: (),\n is_static: true,\n gas_opts: GasOpts::default(),\n }\n }\n\n pub fn with_gas(self: &mut Self, gas_opts: GasOpts) -> &mut Self {\n self.gas_opts = gas_opts;\n self\n }\n\n pub unconstrained fn view(self, context: &mut PublicContext) {\n let returns = context.static_call_public_function(\n self.target_contract,\n self.selector,\n self.args,\n self.gas_opts,\n );\n assert(returns.len() == 0);\n }\n\n pub fn enqueue_view(self, context: &mut PrivateContext) {\n let args_hash = hash_args(self.args);\n execution_cache::store(self.args);\n context.call_public_function_with_args_hash(\n self.target_contract,\n self.selector,\n args_hash,\n /*static=*/\n true,\n )\n }\n}\n\nimpl<let N: u32> CallInterface<N> for PublicStaticVoidCallInterface<N> {\n fn get_args(self) -> [Field] {\n self.args\n }\n\n fn get_selector(self) -> FunctionSelector {\n self.selector\n }\n\n fn get_name(self) -> str<N> {\n self.name\n }\n\n fn get_contract_address(self) -> AztecAddress {\n self.target_contract\n }\n\n fn get_is_static(self) -> bool {\n self.is_static\n }\n}\n"
3784
3784
  },
3785
3785
  "72": {
3786
3786
  "path": "/home/aztec-dev/aztec-packages/noir-projects/aztec-nr/aztec/src/context/private_context.nr",