@aztec/foundation 0.23.0 → 0.26.1
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/dest/abi/abi.d.ts +1 -1
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/event_selector.d.ts +45 -0
- package/dest/abi/event_selector.d.ts.map +1 -0
- package/dest/abi/event_selector.js +60 -0
- package/dest/abi/function_selector.d.ts +69 -0
- package/dest/abi/function_selector.d.ts.map +1 -0
- package/dest/abi/function_selector.js +86 -0
- package/dest/abi/index.d.ts +2 -1
- package/dest/abi/index.d.ts.map +1 -1
- package/dest/abi/index.js +3 -2
- package/dest/abi/selector.d.ts +4 -106
- package/dest/abi/selector.d.ts.map +1 -1
- package/dest/abi/selector.js +8 -143
- package/dest/abi/utils.js +3 -3
- package/dest/array/array.d.ts +8 -0
- package/dest/array/array.d.ts.map +1 -1
- package/dest/array/array.js +26 -1
- package/dest/aztec-address/index.d.ts +8 -1
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +16 -2
- package/dest/crypto/index.d.ts +1 -0
- package/dest/crypto/index.d.ts.map +1 -1
- package/dest/crypto/index.js +2 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +7 -6
- package/dest/crypto/poseidon/index.d.ts +8 -0
- package/dest/crypto/poseidon/index.d.ts.map +1 -0
- package/dest/crypto/poseidon/index.js +12 -0
- package/dest/eth-address/index.d.ts +3 -0
- package/dest/eth-address/index.d.ts.map +1 -1
- package/dest/eth-address/index.js +5 -2
- package/dest/fields/fields.d.ts +19 -0
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +11 -4
- package/dest/json-rpc/client/json_rpc_client.js +2 -2
- package/dest/serialize/buffer_reader.d.ts +15 -0
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +18 -1
- package/dest/serialize/serialize.d.ts +3 -5
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/serialize.js +17 -8
- package/package.json +2 -2
- package/src/abi/abi.ts +337 -0
- package/src/abi/buffer.ts +36 -0
- package/src/abi/decoder.ts +176 -0
- package/src/abi/encoder.ts +143 -0
- package/src/abi/event_selector.ts +73 -0
- package/src/abi/function_selector.ts +122 -0
- package/src/abi/index.ts +7 -0
- package/src/abi/selector.ts +63 -0
- package/src/abi/utils.ts +50 -0
- package/src/array/array.ts +119 -0
- package/src/array/index.ts +1 -0
- package/src/async-map/index.ts +18 -0
- package/src/aztec-address/index.ts +56 -0
- package/src/bigint-buffer/index.ts +87 -0
- package/src/collection/array.ts +64 -0
- package/src/collection/index.ts +1 -0
- package/src/committable/committable.ts +46 -0
- package/src/committable/index.ts +1 -0
- package/src/crypto/index.ts +17 -0
- package/src/crypto/keccak/index.ts +33 -0
- package/src/crypto/pedersen/index.ts +1 -0
- package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
- package/src/crypto/pedersen/pedersen.noble.ts +573 -0
- package/src/crypto/pedersen/pedersen.wasm.ts +46 -0
- package/src/crypto/poseidon/index.ts +17 -0
- package/src/crypto/random/index.ts +42 -0
- package/src/crypto/sha256/index.ts +3 -0
- package/src/errors/index.ts +6 -0
- package/src/eth-address/index.ts +239 -0
- package/src/fields/coordinate.ts +104 -0
- package/src/fields/fields.ts +338 -0
- package/src/fields/index.ts +3 -0
- package/src/fields/point.ts +145 -0
- package/src/fifo/bounded_serial_queue.ts +100 -0
- package/src/fifo/index.ts +4 -0
- package/src/fifo/memory_fifo.ts +118 -0
- package/src/fifo/semaphore.ts +33 -0
- package/src/fifo/serial_queue.ts +81 -0
- package/src/index.ts +29 -0
- package/src/json-rpc/README.md +55 -0
- package/src/json-rpc/class_converter.ts +213 -0
- package/src/json-rpc/client/index.ts +1 -0
- package/src/json-rpc/client/json_rpc_client.ts +147 -0
- package/src/json-rpc/convert.ts +163 -0
- package/src/json-rpc/fixtures/class_a.ts +15 -0
- package/src/json-rpc/fixtures/class_b.ts +15 -0
- package/src/json-rpc/fixtures/test_state.ts +59 -0
- package/src/json-rpc/index.ts +8 -0
- package/src/json-rpc/js_utils.ts +20 -0
- package/src/json-rpc/server/index.ts +2 -0
- package/src/json-rpc/server/json_proxy.ts +60 -0
- package/src/json-rpc/server/json_rpc_server.ts +269 -0
- package/src/log/console.ts +39 -0
- package/src/log/debug.ts +83 -0
- package/src/log/index.ts +5 -0
- package/src/log/log_fn.ts +5 -0
- package/src/log/log_history.ts +44 -0
- package/src/log/logger.ts +137 -0
- package/src/mutex/index.ts +83 -0
- package/src/mutex/mutex_database.ts +12 -0
- package/src/noir/index.ts +1 -0
- package/src/noir/noir_package_config.ts +54 -0
- package/src/retry/index.ts +99 -0
- package/src/running-promise/index.ts +60 -0
- package/src/serialize/buffer_reader.ts +309 -0
- package/src/serialize/field_reader.ts +143 -0
- package/src/serialize/free_funcs.ts +147 -0
- package/src/serialize/index.ts +5 -0
- package/src/serialize/serialize.ts +310 -0
- package/src/serialize/types.ts +40 -0
- package/src/sleep/index.ts +71 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/test_data.ts +36 -0
- package/src/timer/elapsed.ts +23 -0
- package/src/timer/index.ts +3 -0
- package/src/timer/timeout.ts +64 -0
- package/src/timer/timer.ts +48 -0
- package/src/transport/browser/index.ts +4 -0
- package/src/transport/browser/message_port_socket.ts +48 -0
- package/src/transport/browser/shared_worker_connector.ts +21 -0
- package/src/transport/browser/shared_worker_listener.ts +53 -0
- package/src/transport/browser/worker_connector.ts +30 -0
- package/src/transport/browser/worker_listener.ts +54 -0
- package/src/transport/dispatch/create_dispatch_fn.ts +35 -0
- package/src/transport/dispatch/create_dispatch_proxy.ts +141 -0
- package/src/transport/dispatch/messages.ts +58 -0
- package/src/transport/index.ts +11 -0
- package/src/transport/interface/connector.ts +9 -0
- package/src/transport/interface/listener.ts +16 -0
- package/src/transport/interface/socket.ts +15 -0
- package/src/transport/interface/transferable.ts +125 -0
- package/src/transport/node/index.ts +2 -0
- package/src/transport/node/node_connector.ts +30 -0
- package/src/transport/node/node_connector_socket.ts +52 -0
- package/src/transport/node/node_listener.ts +34 -0
- package/src/transport/node/node_listener_socket.ts +48 -0
- package/src/transport/transport_client.ts +131 -0
- package/src/transport/transport_server.ts +108 -0
- package/src/trees/index.ts +54 -0
- package/src/types/index.ts +8 -0
- package/src/url/index.ts +73 -0
- package/src/wasm/README.md +6 -0
- package/src/wasm/empty_wasi_sdk.ts +166 -0
- package/src/wasm/fixtures/gcd.wasm +0 -0
- package/src/wasm/fixtures/gcd.wat +27 -0
- package/src/wasm/index.ts +1 -0
- package/src/wasm/wasm_module.ts +260 -0
- package/src/worker/browser/index.ts +2 -0
- package/src/worker/browser/start_web_module.ts +23 -0
- package/src/worker/browser/web_data_store.ts +38 -0
- package/src/worker/browser/web_worker.ts +24 -0
- package/src/worker/data_store.ts +19 -0
- package/src/worker/index.ts +2 -0
- package/src/worker/node/index.ts +2 -0
- package/src/worker/node/node_data_store.ts +27 -0
- package/src/worker/node/node_worker.ts +22 -0
- package/src/worker/node/start_node_module.ts +29 -0
- package/src/worker/wasm_worker.ts +7 -0
- package/src/worker/worker_pool.ts +73 -0
|
@@ -133,6 +133,23 @@ export class BufferReader {
|
|
|
133
133
|
}
|
|
134
134
|
return result;
|
|
135
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Reads a vector of fixed size from the buffer and deserializes its elements using the provided itemDeserializer object.
|
|
138
|
+
* The 'itemDeserializer' object should have a 'fromBuffer' method that takes a BufferReader instance and returns the deserialized element.
|
|
139
|
+
* The method first reads the size of the vector (a number) from the buffer, then iterates through its elements,
|
|
140
|
+
* deserializing each one using the 'fromBuffer' method of 'itemDeserializer'.
|
|
141
|
+
*
|
|
142
|
+
* @param itemDeserializer - Object with 'fromBuffer' method to deserialize vector elements.
|
|
143
|
+
* @returns An array of deserialized elements of type T.
|
|
144
|
+
*/
|
|
145
|
+
readVectorUint8Prefix(itemDeserializer) {
|
|
146
|
+
const size = this.readUInt8();
|
|
147
|
+
const result = new Array(size);
|
|
148
|
+
for (let i = 0; i < size; i++) {
|
|
149
|
+
result[i] = itemDeserializer.fromBuffer(this);
|
|
150
|
+
}
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
136
153
|
/**
|
|
137
154
|
* Read an array of a fixed size with elements of type T from the buffer.
|
|
138
155
|
* The 'itemDeserializer' object should have a 'fromBuffer' method that takes a BufferReader instance as input,
|
|
@@ -237,4 +254,4 @@ export class BufferReader {
|
|
|
237
254
|
return this.buffer.length;
|
|
238
255
|
}
|
|
239
256
|
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3JlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemUvYnVmZmVyX3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBRXZCLFlBQW9CLE1BQWMsRUFBRSxNQUFNLEdBQUcsQ0FBQztRQUExQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFrRDtRQUN2RSxJQUFJLGNBQWMsWUFBWSxZQUFZLEVBQUUsQ0FBQztZQUMzQyxPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7WUFDekMsQ0FBQyxDQUFDLGNBQWM7WUFDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU3RixPQUFPLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFVBQVU7UUFDZixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQW1CLEtBQVE7UUFDM0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMs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
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { Fr } from '../fields/fields.js';
|
|
3
3
|
/**
|
|
4
4
|
* For serializing an array of fixed length buffers.
|
|
5
|
-
*
|
|
6
|
-
* @param
|
|
5
|
+
* @param arr - Array of bufferable.
|
|
6
|
+
* @param prefixLength - The length of the prefix (denominated in bytes).
|
|
7
7
|
* @returns The serialized buffers.
|
|
8
8
|
*/
|
|
9
|
-
export declare function
|
|
9
|
+
export declare function serializeArrayOfBufferableToVector(objs: Bufferable[], prefixLength?: number): Buffer;
|
|
10
10
|
/**
|
|
11
11
|
* Helper function for deserializeArrayFromVector.
|
|
12
12
|
*/
|
|
@@ -26,8 +26,6 @@ type DeserializeFn<T> = (buf: Buffer, offset: number) => {
|
|
|
26
26
|
* @param vector - The vector to deserialize.
|
|
27
27
|
* @param offset - The position in the vector to start deserializing from.
|
|
28
28
|
* @returns Deserialized array and how many bytes we advanced by.
|
|
29
|
-
*
|
|
30
|
-
* TODO: move to foundation pkg.
|
|
31
29
|
*/
|
|
32
30
|
export declare function deserializeArrayFromVector<T>(deserialize: DeserializeFn<T>, vector: Buffer, offset?: number): {
|
|
33
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/serialize/serialize.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAGzC;;;;;GAKG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/serialize/serialize.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAGzC;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,YAAY,SAAI,GAAG,MAAM,CAa/F;AAED;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI,CACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,KACX;IACH;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IACR;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,MAAM,SAAI,GACT;IACD;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAC;IACV;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;CACb,CAWA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,SAAI,GAAG,MAAM,CAInE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGvD;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN;IACE;;OAEG;IACH,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB,GACD,UAAU,EAAE,CAAC;AAEjB,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAClB,EAAE,GACF,OAAO,GACP,MAAM,GACN,MAAM,GACN;IACE,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GACD;IACE,uCAAuC;IACvC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;CACtB,GACD,UAAU,EAAE,CAAC;AAEjB;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAoBtE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAgB7D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA0BlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,UAEpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,KAAK,SAAK;;;EAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,UAEvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI;;;EAGvD"}
|
|
@@ -3,13 +3,24 @@ import { Fr } from '../fields/fields.js';
|
|
|
3
3
|
import { numToUInt32BE } from './free_funcs.js';
|
|
4
4
|
/**
|
|
5
5
|
* For serializing an array of fixed length buffers.
|
|
6
|
-
*
|
|
7
|
-
* @param
|
|
6
|
+
* @param arr - Array of bufferable.
|
|
7
|
+
* @param prefixLength - The length of the prefix (denominated in bytes).
|
|
8
8
|
* @returns The serialized buffers.
|
|
9
9
|
*/
|
|
10
|
-
export function
|
|
11
|
-
const
|
|
12
|
-
lengthBuf
|
|
10
|
+
export function serializeArrayOfBufferableToVector(objs, prefixLength = 4) {
|
|
11
|
+
const arr = serializeToBufferArray(objs);
|
|
12
|
+
let lengthBuf;
|
|
13
|
+
if (prefixLength === 1) {
|
|
14
|
+
lengthBuf = Buffer.alloc(1);
|
|
15
|
+
lengthBuf.writeUInt8(arr.length, 0);
|
|
16
|
+
}
|
|
17
|
+
else if (prefixLength === 4) {
|
|
18
|
+
lengthBuf = Buffer.alloc(4);
|
|
19
|
+
lengthBuf.writeUInt32BE(arr.length, 0);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
throw new Error(`Unsupported prefix length. Got ${prefixLength}, expected 1 or 4`);
|
|
23
|
+
}
|
|
13
24
|
return Buffer.concat([lengthBuf, ...arr]);
|
|
14
25
|
}
|
|
15
26
|
/**
|
|
@@ -18,8 +29,6 @@ export function serializeBufferArrayToVector(arr) {
|
|
|
18
29
|
* @param vector - The vector to deserialize.
|
|
19
30
|
* @param offset - The position in the vector to start deserializing from.
|
|
20
31
|
* @returns Deserialized array and how many bytes we advanced by.
|
|
21
|
-
*
|
|
22
|
-
* TODO: move to foundation pkg.
|
|
23
32
|
*/
|
|
24
33
|
export function deserializeArrayFromVector(deserialize, vector, offset = 0) {
|
|
25
34
|
let pos = offset;
|
|
@@ -225,4 +234,4 @@ export function deserializeInt32(buf, offset = 0) {
|
|
|
225
234
|
const adv = 4;
|
|
226
235
|
return { elem: buf.readInt32BE(offset), adv };
|
|
227
236
|
}
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9zZXJpYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLElBQWtCLEVBQUUsWUFBWSxHQUFHLENBQUM7SUFDckYsTUFBTSxHQUFHLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsSUFBSSxTQUFpQixDQUFDO0lBQ3RCLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO1NBQU0sSUFBSSxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsWUFBWSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFtQkQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFV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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/foundation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"packageManager": "yarn@3.4.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dest/index.js",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"rootDir": "./src"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@aztec/bb.js": "0.
|
|
64
|
+
"@aztec/bb.js": "0.26.1",
|
|
65
65
|
"@koa/cors": "^4.0.0",
|
|
66
66
|
"@noble/curves": "^1.2.0",
|
|
67
67
|
"bn.js": "^5.2.1",
|
package/src/abi/abi.ts
ADDED
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { inflate } from 'pako';
|
|
2
|
+
|
|
3
|
+
import { type FunctionSelector } from './function_selector.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A named type.
|
|
7
|
+
*/
|
|
8
|
+
export interface ABIVariable {
|
|
9
|
+
/**
|
|
10
|
+
* The name of the variable.
|
|
11
|
+
*/
|
|
12
|
+
name: string;
|
|
13
|
+
/**
|
|
14
|
+
* The type of the variable.
|
|
15
|
+
*/
|
|
16
|
+
type: ABIType;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Indicates whether a parameter is public or secret/private.
|
|
21
|
+
*/
|
|
22
|
+
export enum ABIParameterVisibility {
|
|
23
|
+
PUBLIC = 'public',
|
|
24
|
+
SECRET = 'secret',
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* A function parameter.
|
|
29
|
+
*/
|
|
30
|
+
export interface ABIParameter extends ABIVariable {
|
|
31
|
+
/**
|
|
32
|
+
* Indicates whether a parameter is public or secret/private.
|
|
33
|
+
*/
|
|
34
|
+
visibility: ABIParameterVisibility;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* A basic type.
|
|
39
|
+
*/
|
|
40
|
+
export interface BasicType<T extends string> {
|
|
41
|
+
/**
|
|
42
|
+
* The kind of the type.
|
|
43
|
+
*/
|
|
44
|
+
kind: T;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* A variable type.
|
|
49
|
+
*/
|
|
50
|
+
export type ABIType = BasicType<'field'> | BasicType<'boolean'> | IntegerType | ArrayType | StringType | StructType;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* An integer type.
|
|
54
|
+
*/
|
|
55
|
+
export interface IntegerType extends BasicType<'integer'> {
|
|
56
|
+
/**
|
|
57
|
+
* The sign of the integer.
|
|
58
|
+
*/
|
|
59
|
+
sign: string;
|
|
60
|
+
/**
|
|
61
|
+
* The width of the integer in bits.
|
|
62
|
+
*/
|
|
63
|
+
width: number;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* An array type.
|
|
68
|
+
*/
|
|
69
|
+
export interface ArrayType extends BasicType<'array'> {
|
|
70
|
+
/**
|
|
71
|
+
* The length of the array.
|
|
72
|
+
*/
|
|
73
|
+
length: number;
|
|
74
|
+
/**
|
|
75
|
+
* The type of the array elements.
|
|
76
|
+
*/
|
|
77
|
+
type: ABIType;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* A string type.
|
|
82
|
+
*/
|
|
83
|
+
export interface StringType extends BasicType<'string'> {
|
|
84
|
+
/**
|
|
85
|
+
* The length of the string.
|
|
86
|
+
*/
|
|
87
|
+
length: number;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* A struct type.
|
|
92
|
+
*/
|
|
93
|
+
export interface StructType extends BasicType<'struct'> {
|
|
94
|
+
/**
|
|
95
|
+
* The fields of the struct.
|
|
96
|
+
*/
|
|
97
|
+
fields: ABIVariable[];
|
|
98
|
+
/**
|
|
99
|
+
* Fully qualified name of the struct.
|
|
100
|
+
*/
|
|
101
|
+
path: string;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* A contract event.
|
|
106
|
+
*/
|
|
107
|
+
export interface EventAbi {
|
|
108
|
+
/**
|
|
109
|
+
* The event name.
|
|
110
|
+
*/
|
|
111
|
+
name: string;
|
|
112
|
+
/**
|
|
113
|
+
* Fully qualified name of the event.
|
|
114
|
+
*/
|
|
115
|
+
path: string;
|
|
116
|
+
/**
|
|
117
|
+
* The fields of the event.
|
|
118
|
+
*/
|
|
119
|
+
fields: ABIVariable[];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Aztec.nr function types.
|
|
124
|
+
*/
|
|
125
|
+
export enum FunctionType {
|
|
126
|
+
SECRET = 'secret',
|
|
127
|
+
OPEN = 'open',
|
|
128
|
+
UNCONSTRAINED = 'unconstrained',
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* The abi entry of a function.
|
|
133
|
+
*/
|
|
134
|
+
export interface FunctionAbi {
|
|
135
|
+
/**
|
|
136
|
+
* The name of the function.
|
|
137
|
+
*/
|
|
138
|
+
name: string;
|
|
139
|
+
/**
|
|
140
|
+
* Whether the function is secret.
|
|
141
|
+
*/
|
|
142
|
+
functionType: FunctionType;
|
|
143
|
+
/**
|
|
144
|
+
* Whether the function is internal.
|
|
145
|
+
*/
|
|
146
|
+
isInternal: boolean;
|
|
147
|
+
/**
|
|
148
|
+
* Function parameters.
|
|
149
|
+
*/
|
|
150
|
+
parameters: ABIParameter[];
|
|
151
|
+
/**
|
|
152
|
+
* The types of the return values.
|
|
153
|
+
*/
|
|
154
|
+
returnTypes: ABIType[];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* The artifact entry of a function.
|
|
159
|
+
*/
|
|
160
|
+
export interface FunctionArtifact extends FunctionAbi {
|
|
161
|
+
/**
|
|
162
|
+
* The ACIR bytecode of the function.
|
|
163
|
+
*/
|
|
164
|
+
bytecode: string;
|
|
165
|
+
/**
|
|
166
|
+
* The verification key of the function.
|
|
167
|
+
*/
|
|
168
|
+
verificationKey?: string;
|
|
169
|
+
/**
|
|
170
|
+
* Maps opcodes to source code pointers
|
|
171
|
+
*/
|
|
172
|
+
debugSymbols: string;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* A file ID. It's assigned during compilation.
|
|
177
|
+
*/
|
|
178
|
+
export type FileId = number;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* A pointer to a specific section of the source code.
|
|
182
|
+
*/
|
|
183
|
+
export interface SourceCodeLocation {
|
|
184
|
+
/**
|
|
185
|
+
* The section of the source code.
|
|
186
|
+
*/
|
|
187
|
+
span: {
|
|
188
|
+
/**
|
|
189
|
+
* The byte where the section starts.
|
|
190
|
+
*/
|
|
191
|
+
start: number;
|
|
192
|
+
/**
|
|
193
|
+
* The byte where the section ends.
|
|
194
|
+
*/
|
|
195
|
+
end: number;
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* The source code file pointed to.
|
|
199
|
+
*/
|
|
200
|
+
file: FileId;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* The location of an opcode in the bytecode.
|
|
205
|
+
* It's a string of the form `{acirIndex}` or `{acirIndex}:{brilligIndex}`.
|
|
206
|
+
*/
|
|
207
|
+
export type OpcodeLocation = string;
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* The debug information for a given function.
|
|
211
|
+
*/
|
|
212
|
+
export interface DebugInfo {
|
|
213
|
+
/**
|
|
214
|
+
* A map of the opcode location to the source code location.
|
|
215
|
+
*/
|
|
216
|
+
locations: Record<OpcodeLocation, SourceCodeLocation[]>;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Maps a file ID to its metadata for debugging purposes.
|
|
221
|
+
*/
|
|
222
|
+
export type DebugFileMap = Record<
|
|
223
|
+
FileId,
|
|
224
|
+
{
|
|
225
|
+
/**
|
|
226
|
+
* The source code of the file.
|
|
227
|
+
*/
|
|
228
|
+
source: string;
|
|
229
|
+
/**
|
|
230
|
+
* The path of the file.
|
|
231
|
+
*/
|
|
232
|
+
path: string;
|
|
233
|
+
}
|
|
234
|
+
>;
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Defines artifact of a contract.
|
|
238
|
+
*/
|
|
239
|
+
export interface ContractArtifact {
|
|
240
|
+
/**
|
|
241
|
+
* The name of the contract.
|
|
242
|
+
*/
|
|
243
|
+
name: string;
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* The version of compiler used to create this artifact
|
|
247
|
+
*/
|
|
248
|
+
aztecNrVersion?: string;
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* The functions of the contract.
|
|
252
|
+
*/
|
|
253
|
+
functions: FunctionArtifact[];
|
|
254
|
+
/**
|
|
255
|
+
* The events of the contract.
|
|
256
|
+
*/
|
|
257
|
+
events: EventAbi[];
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* The map of file ID to the source code and path of the file.
|
|
261
|
+
*/
|
|
262
|
+
fileMap: DebugFileMap;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Debug metadata for a function.
|
|
267
|
+
*/
|
|
268
|
+
export interface FunctionDebugMetadata {
|
|
269
|
+
/**
|
|
270
|
+
* Maps opcodes to source code pointers
|
|
271
|
+
*/
|
|
272
|
+
debugSymbols: DebugInfo;
|
|
273
|
+
/**
|
|
274
|
+
* Maps the file IDs to the file contents to resolve pointers
|
|
275
|
+
*/
|
|
276
|
+
files: DebugFileMap;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/** A function artifact with optional debug metadata */
|
|
280
|
+
export interface FunctionArtifactWithDebugMetadata extends FunctionArtifact {
|
|
281
|
+
/** Debug metadata for the function. */
|
|
282
|
+
debug?: FunctionDebugMetadata;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Gets a function artifact given its name or selector.
|
|
287
|
+
*/
|
|
288
|
+
export function getFunctionArtifact(
|
|
289
|
+
artifact: ContractArtifact,
|
|
290
|
+
functionNameOrSelector: string | FunctionSelector,
|
|
291
|
+
): FunctionArtifact {
|
|
292
|
+
const functionArtifact = artifact.functions.find(f =>
|
|
293
|
+
typeof functionNameOrSelector === 'string'
|
|
294
|
+
? f.name === functionNameOrSelector
|
|
295
|
+
: functionNameOrSelector.equals(f.name, f.parameters),
|
|
296
|
+
);
|
|
297
|
+
if (!functionArtifact) {
|
|
298
|
+
throw new Error(`Unknown function ${functionNameOrSelector}`);
|
|
299
|
+
}
|
|
300
|
+
return functionArtifact;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/** @deprecated Use getFunctionArtifact instead */
|
|
304
|
+
export function getFunctionArtifactWithSelector(artifact: ContractArtifact, selector: FunctionSelector) {
|
|
305
|
+
return getFunctionArtifact(artifact, selector);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Gets a function artifact including debug metadata given its name or selector.
|
|
310
|
+
*/
|
|
311
|
+
export function getFunctionArtifactWithDebugMetadata(
|
|
312
|
+
artifact: ContractArtifact,
|
|
313
|
+
functionNameOrSelector: string | FunctionSelector,
|
|
314
|
+
): FunctionArtifactWithDebugMetadata {
|
|
315
|
+
const functionArtifact = getFunctionArtifact(artifact, functionNameOrSelector);
|
|
316
|
+
const debugMetadata = getFunctionDebugMetadata(artifact, functionArtifact);
|
|
317
|
+
return { ...functionArtifact, debug: debugMetadata };
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Gets the debug metadata of a given function from the contract artifact
|
|
322
|
+
* @param artifact - The contract build artifact
|
|
323
|
+
* @param functionName - The name of the function
|
|
324
|
+
* @returns The debug metadata of the function
|
|
325
|
+
*/
|
|
326
|
+
export function getFunctionDebugMetadata(
|
|
327
|
+
contractArtifact: ContractArtifact,
|
|
328
|
+
functionArtifact: FunctionArtifact,
|
|
329
|
+
): FunctionDebugMetadata | undefined {
|
|
330
|
+
if (functionArtifact.debugSymbols && contractArtifact.fileMap) {
|
|
331
|
+
const debugSymbols = JSON.parse(
|
|
332
|
+
inflate(Buffer.from(functionArtifact.debugSymbols, 'base64'), { to: 'string', raw: true }),
|
|
333
|
+
);
|
|
334
|
+
return { debugSymbols, files: contractArtifact.fileMap };
|
|
335
|
+
}
|
|
336
|
+
return undefined;
|
|
337
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import chunk from 'lodash.chunk';
|
|
2
|
+
|
|
3
|
+
import { Fr } from '../fields/fields.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Formats a buffer as an array of fields. Splits the input into 31-byte chunks, and stores each
|
|
7
|
+
* of them into a field, omitting the field's first byte, then adds zero-fields at the end until the max length.
|
|
8
|
+
* @param input - Input to format.
|
|
9
|
+
* @param targetLength - Length of the target array in number of fields.
|
|
10
|
+
* @returns A field with the total length in bytes, followed by an array of fields such that their concatenation is equal to the input buffer, followed by enough zeroes to reach targetLength.
|
|
11
|
+
*/
|
|
12
|
+
export function bufferAsFields(input: Buffer, targetLength: number): Fr[] {
|
|
13
|
+
const encoded = [
|
|
14
|
+
new Fr(input.length),
|
|
15
|
+
...chunk(input, Fr.SIZE_IN_BYTES - 1).map(c => {
|
|
16
|
+
const fieldBytes = Buffer.alloc(Fr.SIZE_IN_BYTES);
|
|
17
|
+
Buffer.from(c).copy(fieldBytes, 1);
|
|
18
|
+
return Fr.fromBuffer(fieldBytes);
|
|
19
|
+
}),
|
|
20
|
+
];
|
|
21
|
+
if (encoded.length > targetLength) {
|
|
22
|
+
throw new Error(`Input buffer exceeds maximum size: got ${encoded.length} but max is ${targetLength}`);
|
|
23
|
+
}
|
|
24
|
+
// Fun fact: we cannot use padArrayEnd here since typescript cannot deal with a Tuple this big
|
|
25
|
+
return [...encoded, ...Array(targetLength - encoded.length).fill(Fr.ZERO)];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Recovers a buffer from an array of fields.
|
|
30
|
+
* @param fields - An output from bufferAsFields.
|
|
31
|
+
* @returns The recovered buffer.
|
|
32
|
+
*/
|
|
33
|
+
export function bufferFromFields(fields: Fr[]): Buffer {
|
|
34
|
+
const [length, ...payload] = fields;
|
|
35
|
+
return Buffer.concat(payload.map(f => f.toBuffer().subarray(1))).subarray(0, length.toNumber());
|
|
36
|
+
}
|