@aztec/simulator 0.27.1 → 0.27.2
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/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +32 -27
- package/dest/public/db.d.ts +7 -0
- package/dest/public/db.d.ts.map +1 -1
- package/dest/public/public_execution_context.d.ts +2 -0
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +13 -1
- package/package.json +5 -5
- package/src/acvm/oracle/typed_oracle.ts +32 -26
- package/src/public/db.ts +8 -0
- package/src/public/public_execution_context.ts +14 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typed_oracle.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/typed_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,MAAM,EACN,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gBAAgB;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,wCAAwC;IACxC,eAAe,EAAE,YAAY,CAAC;IAC9B,oCAAoC;IACpC,WAAW,EAAE,EAAE,CAAC;IAChB,6BAA6B;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,uCAAuC;IACvC,aAAa,EAAE,EAAE,CAAC;IAClB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,EAAE,CAAC;IACrB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,uBAAuB,CAAC,CAAC,SAAS,MAAM;IAEjD,8DAA8D;IACvD,KAAK,EAAE,MAAM;IACpB,kDAAkD;IAC3C,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;;IAHlC,8DAA8D;IACvD,KAAK,EAAE,MAAM;IACpB,kDAAkD;IAC3C,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAGpC,QAAQ,IAAI,EAAE,EAAE;CAGjB;
|
|
1
|
+
{"version":3,"file":"typed_oracle.d.ts","sourceRoot":"","sources":["../../../src/acvm/oracle/typed_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,11 @@ export class MessageLoadOracleInputs {
|
|
|
12
12
|
return [new Fr(this.index), ...this.siblingPath.toFields()];
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
+
class OracleMethodNotAvailableError extends Error {
|
|
16
|
+
constructor(methodName) {
|
|
17
|
+
super(`Oracle method ${methodName} is not available.`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
15
20
|
/**
|
|
16
21
|
* Oracle with typed parameters and typed return values.
|
|
17
22
|
* Methods that require read and/or write will have to be implemented based on the context (public, private, or view)
|
|
@@ -22,82 +27,82 @@ export class TypedOracle {
|
|
|
22
27
|
return Fr.random();
|
|
23
28
|
}
|
|
24
29
|
packArguments(_args) {
|
|
25
|
-
throw new
|
|
30
|
+
throw new OracleMethodNotAvailableError('packArguments');
|
|
26
31
|
}
|
|
27
32
|
getNullifierKeyPair(_accountAddress) {
|
|
28
|
-
throw new
|
|
33
|
+
throw new OracleMethodNotAvailableError('getNullifierKeyPair');
|
|
29
34
|
}
|
|
30
35
|
getPublicKeyAndPartialAddress(_address) {
|
|
31
|
-
throw new
|
|
36
|
+
throw new OracleMethodNotAvailableError('getPublicKeyAndPartialAddress');
|
|
32
37
|
}
|
|
33
38
|
getContractInstance(_address) {
|
|
34
|
-
throw new
|
|
39
|
+
throw new OracleMethodNotAvailableError('getContractInstance');
|
|
35
40
|
}
|
|
36
41
|
getMembershipWitness(_blockNumber, _treeId, _leafValue) {
|
|
37
|
-
throw new
|
|
42
|
+
throw new OracleMethodNotAvailableError('getMembershipWitness');
|
|
38
43
|
}
|
|
39
44
|
getSiblingPath(_blockNumber, _treeId, _leafIndex) {
|
|
40
|
-
throw new
|
|
45
|
+
throw new OracleMethodNotAvailableError('getSiblingPath');
|
|
41
46
|
}
|
|
42
47
|
getNullifierMembershipWitness(_blockNumber, _nullifier) {
|
|
43
|
-
throw new
|
|
48
|
+
throw new OracleMethodNotAvailableError('getNullifierMembershipWitness');
|
|
44
49
|
}
|
|
45
50
|
getPublicDataTreeWitness(_blockNumber, _leafSlot) {
|
|
46
|
-
throw new
|
|
51
|
+
throw new OracleMethodNotAvailableError('getPublicDataTreeWitness');
|
|
47
52
|
}
|
|
48
53
|
getLowNullifierMembershipWitness(_blockNumber, _nullifier) {
|
|
49
|
-
throw new
|
|
54
|
+
throw new OracleMethodNotAvailableError('getLowNullifierMembershipWitness');
|
|
50
55
|
}
|
|
51
56
|
getHeader(_blockNumber) {
|
|
52
|
-
throw new
|
|
57
|
+
throw new OracleMethodNotAvailableError('getHeader');
|
|
53
58
|
}
|
|
54
59
|
getCompleteAddress(_address) {
|
|
55
|
-
throw new
|
|
60
|
+
throw new OracleMethodNotAvailableError('getCompleteAddress');
|
|
56
61
|
}
|
|
57
62
|
getAuthWitness(_messageHash) {
|
|
58
|
-
throw new
|
|
63
|
+
throw new OracleMethodNotAvailableError('getAuthWitness');
|
|
59
64
|
}
|
|
60
65
|
popCapsule() {
|
|
61
|
-
throw new
|
|
66
|
+
throw new OracleMethodNotAvailableError('popCapsule');
|
|
62
67
|
}
|
|
63
68
|
getNotes(_storageSlot, _numSelects, _selectBy, _selectValues, _selectComparators, _sortBy, _sortOrder, _limit, _offset, _status) {
|
|
64
|
-
throw new
|
|
69
|
+
throw new OracleMethodNotAvailableError('getNotes');
|
|
65
70
|
}
|
|
66
71
|
notifyCreatedNote(_storageSlot, _noteTypeId, _note, _innerNoteHash) {
|
|
67
|
-
throw new
|
|
72
|
+
throw new OracleMethodNotAvailableError('notifyCreatedNote');
|
|
68
73
|
}
|
|
69
74
|
notifyNullifiedNote(_innerNullifier, _innerNoteHash) {
|
|
70
|
-
throw new
|
|
75
|
+
throw new OracleMethodNotAvailableError('notifyNullifiedNote');
|
|
71
76
|
}
|
|
72
77
|
checkNullifierExists(_innerNullifier) {
|
|
73
|
-
throw new
|
|
78
|
+
throw new OracleMethodNotAvailableError('checkNullifierExists');
|
|
74
79
|
}
|
|
75
80
|
getL1ToL2MembershipWitness(_entryKey) {
|
|
76
|
-
throw new
|
|
81
|
+
throw new OracleMethodNotAvailableError('getL1ToL2MembershipWitness');
|
|
77
82
|
}
|
|
78
83
|
getPortalContractAddress(_contractAddress) {
|
|
79
|
-
throw new
|
|
84
|
+
throw new OracleMethodNotAvailableError('getPortalContractAddress');
|
|
80
85
|
}
|
|
81
86
|
storageRead(_startStorageSlot, _numberOfElements) {
|
|
82
|
-
throw new
|
|
87
|
+
throw new OracleMethodNotAvailableError('storageRead');
|
|
83
88
|
}
|
|
84
89
|
storageWrite(_startStorageSlot, _values) {
|
|
85
|
-
throw new
|
|
90
|
+
throw new OracleMethodNotAvailableError('storageWrite');
|
|
86
91
|
}
|
|
87
92
|
emitEncryptedLog(_contractAddress, _storageSlot, _noteTypeId, _publicKey, _log) {
|
|
88
|
-
throw new
|
|
93
|
+
throw new OracleMethodNotAvailableError('emitEncryptedLog');
|
|
89
94
|
}
|
|
90
95
|
emitUnencryptedLog(_log) {
|
|
91
|
-
throw new
|
|
96
|
+
throw new OracleMethodNotAvailableError('emitUnencryptedLog');
|
|
92
97
|
}
|
|
93
98
|
callPrivateFunction(_targetContractAddress, _functionSelector, _argsHash, _sideffectCounter, _isStaticCall, _isDelegateCall) {
|
|
94
|
-
throw new
|
|
99
|
+
throw new OracleMethodNotAvailableError('callPrivateFunction');
|
|
95
100
|
}
|
|
96
101
|
callPublicFunction(_targetContractAddress, _functionSelector, _argsHash, _isStaticCall, _isDelegateCall) {
|
|
97
|
-
throw new
|
|
102
|
+
throw new OracleMethodNotAvailableError('callPublicFunction');
|
|
98
103
|
}
|
|
99
104
|
enqueuePublicFunctionCall(_targetContractAddress, _functionSelector, _argsHash, _sideffectCounter, _isStaticCall, _isDelegateCall) {
|
|
100
|
-
throw new
|
|
105
|
+
throw new OracleMethodNotAvailableError('enqueuePublicFunctionCall');
|
|
101
106
|
}
|
|
102
107
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWRfb3JhY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fjdm0vb3JhY2xlL3R5cGVkX29yYWNsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBcUM5QyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDO0lBQ0UsOERBQThEO0lBQ3ZELEtBQWE7SUFDcEIsa0RBQWtEO0lBQzNDLFdBQTJCO1FBRjNCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFFYixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7SUFDakMsQ0FBQztJQUVKLFFBQVE7UUFDTixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRjtBQUVELE1BQU0sNkJBQThCLFNBQVEsS0FBSztJQUMvQyxZQUFZLFVBQWtCO1FBQzVCLEtBQUssQ0FBQyxpQkFBaUIsVUFBVSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFDL0IsY0FBYztRQUNaLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVztRQUN2QixNQUFNLElBQUksNkJBQTZCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELG1CQUFtQixDQUFDLGVBQTZCO1FBQy9DLE1BQU0sSUFBSSw2QkFBNkIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxRQUFzQjtRQUNsRCxNQUFNLElBQUksNkJBQTZCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsbUJBQW1CLENBQUMsUUFBc0I7UUFDeEMs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
|
package/dest/public/db.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { NullifierMembershipWitness } from '@aztec/circuit-types';
|
|
|
3
3
|
import { EthAddress, FunctionSelector, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
|
|
4
4
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
5
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
|
+
import { ContractInstanceWithAddress } from '@aztec/types/contracts';
|
|
6
7
|
import { MessageLoadOracleInputs } from '../acvm/index.js';
|
|
7
8
|
/**
|
|
8
9
|
* Database interface for providing access to public state.
|
|
@@ -58,6 +59,12 @@ export interface PublicContractsDB {
|
|
|
58
59
|
* @returns The portal contract address or undefined if not found.
|
|
59
60
|
*/
|
|
60
61
|
getPortalContractAddress(address: AztecAddress): Promise<EthAddress | undefined>;
|
|
62
|
+
/**
|
|
63
|
+
* Returns a publicly deployed contract instance.
|
|
64
|
+
* @param address - Address of the contract.
|
|
65
|
+
* @returns The contract instance or undefined if not found.
|
|
66
|
+
*/
|
|
67
|
+
getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
61
68
|
}
|
|
62
69
|
/** Database interface for providing access to commitment tree, l1 to l2 message tree, and nullifier tree. */
|
|
63
70
|
export interface CommitmentsDB {
|
package/dest/public/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/public/db.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/public/db.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE5F;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE/F;;;;OAIG;IACH,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEjF;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAAC;CAC9F;AAED,6GAA6G;AAC7G,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,0BAA0B,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAE5G;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEhE;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE9D;;;;OAIG;IACH,0CAA0C,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;CAC5G"}
|
|
@@ -3,6 +3,7 @@ import { FunctionSelector, GlobalVariables, Header } from '@aztec/circuits.js';
|
|
|
3
3
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
|
+
import { ContractInstance } from '@aztec/types/contracts';
|
|
6
7
|
import { TypedOracle } from '../acvm/index.js';
|
|
7
8
|
import { PackedArgsCache, SideEffectCounter } from '../common/index.js';
|
|
8
9
|
import { CommitmentsDB, PublicContractsDB, PublicStateDB } from './db.js';
|
|
@@ -100,5 +101,6 @@ export declare class PublicExecutionContext extends TypedOracle {
|
|
|
100
101
|
*/
|
|
101
102
|
callPublicFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, isStaticCall: boolean, isDelegateCall: boolean): Promise<Fr[]>;
|
|
102
103
|
getNullifierMembershipWitness(blockNumber: number, nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
104
|
+
getContractInstance(address: AztecAddress): Promise<ContractInstance>;
|
|
103
105
|
}
|
|
104
106
|
//# sourceMappingURL=public_execution_context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_execution_context.d.ts","sourceRoot":"","sources":["../../src/public/public_execution_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAA6B,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"public_execution_context.d.ts","sourceRoot":"","sources":["../../src/public/public_execution_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAA6B,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAwB,MAAM,gBAAgB,CAAC;AAI9F;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;IAMnD;;OAEG;aACa,SAAS,EAAE,eAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,GAAG;IAhBb,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,eAAe,CAA0B;;IAG/C;;OAEG;IACa,SAAS,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,EACrC,GAAG,8CAAgE;IAM7E;;;;;;;;OAQG;IACI,iBAAiB,CAAC,iBAAiB,SAAI;IAO9C;;OAEG;IACI,mBAAmB;IAI1B;;OAEG;IACI,kBAAkB;IAIzB;;OAEG;IACI,oBAAoB;;;;IAK3B;;;OAGG;IACI,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAI7C;;;;OAIG;IACU,0BAA0B,CAAC,QAAQ,EAAE,EAAE;IAIpD;;;OAGG;IACI,kBAAkB,CAAC,GAAG,EAAE,gBAAgB;IAM/C;;;;;OAKG;IACU,wBAAwB,CAAC,eAAe,EAAE,YAAY;IAInE;;;;OAIG;IACU,WAAW,CAAC,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM;IAYvE;;;;OAIG;IACU,YAAY,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAc5D;;;;;;OAMG;IACU,kBAAkB,CAC7B,qBAAqB,EAAE,YAAY,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,EAAE,EACZ,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,OAAO;IAmEZ,6BAA6B,CACxC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAOrC,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAYnF"}
|
|
@@ -181,5 +181,17 @@ export class PublicExecutionContext extends TypedOracle {
|
|
|
181
181
|
}
|
|
182
182
|
return await this.commitmentsDb.getNullifierMembershipWitnessAtLatestBlock(nullifier);
|
|
183
183
|
}
|
|
184
|
+
async getContractInstance(address) {
|
|
185
|
+
// Note to AVM implementor: The wrapper of the oracle call get_contract_instance in aztec-nr
|
|
186
|
+
// automatically checks that the returned instance is correct, by hashing it together back
|
|
187
|
+
// into the address. However, in the AVM, we also need to prove the negative, otherwise a malicious
|
|
188
|
+
// sequencer could just lie about not having the instance available in its local db. We can do this
|
|
189
|
+
// by using the prove_contract_non_deployment_at method if the contract is not found in the db.
|
|
190
|
+
const instance = await this.contractsDb.getContractInstance(address);
|
|
191
|
+
if (!instance) {
|
|
192
|
+
throw new Error(`Contract instance at ${address} not found`);
|
|
193
|
+
}
|
|
194
|
+
return instance;
|
|
195
|
+
}
|
|
184
196
|
}
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dGlvbl9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfZXhlY3V0aW9uX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBZ0QsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBNkMsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHOUQsT0FBTyxFQUEwQyxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxXQUFXO0lBS3JEO0lBQ0U7O09BRUc7SUFDYSxTQUEwQixFQUN6QixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsaUJBQW9DLEVBQ3BDLE9BQXNCLEVBQ3RCLFdBQThCLEVBQzlCLGFBQTRCLEVBQ3JDLE1BQU0saUJBQWlCLENBQUMsMENBQTBDLENBQUM7UUFFM0UsS0FBSyxFQUFFLENBQUM7UUFWUSxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIs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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
"rootDir": "./src"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@aztec/circuit-types": "0.27.
|
|
34
|
-
"@aztec/circuits.js": "0.27.
|
|
35
|
-
"@aztec/foundation": "0.27.
|
|
36
|
-
"@aztec/types": "0.27.
|
|
33
|
+
"@aztec/circuit-types": "0.27.2",
|
|
34
|
+
"@aztec/circuits.js": "0.27.2",
|
|
35
|
+
"@aztec/foundation": "0.27.2",
|
|
36
|
+
"@aztec/types": "0.27.2",
|
|
37
37
|
"@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
|
|
38
38
|
"levelup": "^5.1.1",
|
|
39
39
|
"memdown": "^6.1.1",
|
|
@@ -69,6 +69,12 @@ export class MessageLoadOracleInputs<N extends number> {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
class OracleMethodNotAvailableError extends Error {
|
|
73
|
+
constructor(methodName: string) {
|
|
74
|
+
super(`Oracle method ${methodName} is not available.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
72
78
|
/**
|
|
73
79
|
* Oracle with typed parameters and typed return values.
|
|
74
80
|
* Methods that require read and/or write will have to be implemented based on the context (public, private, or view)
|
|
@@ -80,58 +86,58 @@ export abstract class TypedOracle {
|
|
|
80
86
|
}
|
|
81
87
|
|
|
82
88
|
packArguments(_args: Fr[]): Promise<Fr> {
|
|
83
|
-
throw new
|
|
89
|
+
throw new OracleMethodNotAvailableError('packArguments');
|
|
84
90
|
}
|
|
85
91
|
|
|
86
92
|
getNullifierKeyPair(_accountAddress: AztecAddress): Promise<KeyPair> {
|
|
87
|
-
throw new
|
|
93
|
+
throw new OracleMethodNotAvailableError('getNullifierKeyPair');
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
getPublicKeyAndPartialAddress(_address: AztecAddress): Promise<Fr[] | undefined> {
|
|
91
|
-
throw new
|
|
97
|
+
throw new OracleMethodNotAvailableError('getPublicKeyAndPartialAddress');
|
|
92
98
|
}
|
|
93
99
|
|
|
94
100
|
getContractInstance(_address: AztecAddress): Promise<ContractInstance> {
|
|
95
|
-
throw new
|
|
101
|
+
throw new OracleMethodNotAvailableError('getContractInstance');
|
|
96
102
|
}
|
|
97
103
|
|
|
98
104
|
getMembershipWitness(_blockNumber: number, _treeId: MerkleTreeId, _leafValue: Fr): Promise<Fr[] | undefined> {
|
|
99
|
-
throw new
|
|
105
|
+
throw new OracleMethodNotAvailableError('getMembershipWitness');
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
getSiblingPath(_blockNumber: number, _treeId: MerkleTreeId, _leafIndex: Fr): Promise<Fr[]> {
|
|
103
|
-
throw new
|
|
109
|
+
throw new OracleMethodNotAvailableError('getSiblingPath');
|
|
104
110
|
}
|
|
105
111
|
|
|
106
112
|
getNullifierMembershipWitness(_blockNumber: number, _nullifier: Fr): Promise<NullifierMembershipWitness | undefined> {
|
|
107
|
-
throw new
|
|
113
|
+
throw new OracleMethodNotAvailableError('getNullifierMembershipWitness');
|
|
108
114
|
}
|
|
109
115
|
|
|
110
116
|
getPublicDataTreeWitness(_blockNumber: number, _leafSlot: Fr): Promise<PublicDataWitness | undefined> {
|
|
111
|
-
throw new
|
|
117
|
+
throw new OracleMethodNotAvailableError('getPublicDataTreeWitness');
|
|
112
118
|
}
|
|
113
119
|
|
|
114
120
|
getLowNullifierMembershipWitness(
|
|
115
121
|
_blockNumber: number,
|
|
116
122
|
_nullifier: Fr,
|
|
117
123
|
): Promise<NullifierMembershipWitness | undefined> {
|
|
118
|
-
throw new
|
|
124
|
+
throw new OracleMethodNotAvailableError('getLowNullifierMembershipWitness');
|
|
119
125
|
}
|
|
120
126
|
|
|
121
127
|
getHeader(_blockNumber: number): Promise<Header | undefined> {
|
|
122
|
-
throw new
|
|
128
|
+
throw new OracleMethodNotAvailableError('getHeader');
|
|
123
129
|
}
|
|
124
130
|
|
|
125
131
|
getCompleteAddress(_address: AztecAddress): Promise<CompleteAddress> {
|
|
126
|
-
throw new
|
|
132
|
+
throw new OracleMethodNotAvailableError('getCompleteAddress');
|
|
127
133
|
}
|
|
128
134
|
|
|
129
135
|
getAuthWitness(_messageHash: Fr): Promise<Fr[] | undefined> {
|
|
130
|
-
throw new
|
|
136
|
+
throw new OracleMethodNotAvailableError('getAuthWitness');
|
|
131
137
|
}
|
|
132
138
|
|
|
133
139
|
popCapsule(): Promise<Fr[]> {
|
|
134
|
-
throw new
|
|
140
|
+
throw new OracleMethodNotAvailableError('popCapsule');
|
|
135
141
|
}
|
|
136
142
|
|
|
137
143
|
getNotes(
|
|
@@ -146,35 +152,35 @@ export abstract class TypedOracle {
|
|
|
146
152
|
_offset: number,
|
|
147
153
|
_status: NoteStatus,
|
|
148
154
|
): Promise<NoteData[]> {
|
|
149
|
-
throw new
|
|
155
|
+
throw new OracleMethodNotAvailableError('getNotes');
|
|
150
156
|
}
|
|
151
157
|
|
|
152
158
|
notifyCreatedNote(_storageSlot: Fr, _noteTypeId: Fr, _note: Fr[], _innerNoteHash: Fr): void {
|
|
153
|
-
throw new
|
|
159
|
+
throw new OracleMethodNotAvailableError('notifyCreatedNote');
|
|
154
160
|
}
|
|
155
161
|
|
|
156
162
|
notifyNullifiedNote(_innerNullifier: Fr, _innerNoteHash: Fr): Promise<void> {
|
|
157
|
-
throw new
|
|
163
|
+
throw new OracleMethodNotAvailableError('notifyNullifiedNote');
|
|
158
164
|
}
|
|
159
165
|
|
|
160
166
|
checkNullifierExists(_innerNullifier: Fr): Promise<boolean> {
|
|
161
|
-
throw new
|
|
167
|
+
throw new OracleMethodNotAvailableError('checkNullifierExists');
|
|
162
168
|
}
|
|
163
169
|
|
|
164
170
|
getL1ToL2MembershipWitness(_entryKey: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>> {
|
|
165
|
-
throw new
|
|
171
|
+
throw new OracleMethodNotAvailableError('getL1ToL2MembershipWitness');
|
|
166
172
|
}
|
|
167
173
|
|
|
168
174
|
getPortalContractAddress(_contractAddress: AztecAddress): Promise<EthAddress> {
|
|
169
|
-
throw new
|
|
175
|
+
throw new OracleMethodNotAvailableError('getPortalContractAddress');
|
|
170
176
|
}
|
|
171
177
|
|
|
172
178
|
storageRead(_startStorageSlot: Fr, _numberOfElements: number): Promise<Fr[]> {
|
|
173
|
-
throw new
|
|
179
|
+
throw new OracleMethodNotAvailableError('storageRead');
|
|
174
180
|
}
|
|
175
181
|
|
|
176
182
|
storageWrite(_startStorageSlot: Fr, _values: Fr[]): Promise<Fr[]> {
|
|
177
|
-
throw new
|
|
183
|
+
throw new OracleMethodNotAvailableError('storageWrite');
|
|
178
184
|
}
|
|
179
185
|
|
|
180
186
|
emitEncryptedLog(
|
|
@@ -184,11 +190,11 @@ export abstract class TypedOracle {
|
|
|
184
190
|
_publicKey: PublicKey,
|
|
185
191
|
_log: Fr[],
|
|
186
192
|
): void {
|
|
187
|
-
throw new
|
|
193
|
+
throw new OracleMethodNotAvailableError('emitEncryptedLog');
|
|
188
194
|
}
|
|
189
195
|
|
|
190
196
|
emitUnencryptedLog(_log: UnencryptedL2Log): void {
|
|
191
|
-
throw new
|
|
197
|
+
throw new OracleMethodNotAvailableError('emitUnencryptedLog');
|
|
192
198
|
}
|
|
193
199
|
|
|
194
200
|
callPrivateFunction(
|
|
@@ -199,7 +205,7 @@ export abstract class TypedOracle {
|
|
|
199
205
|
_isStaticCall: boolean,
|
|
200
206
|
_isDelegateCall: boolean,
|
|
201
207
|
): Promise<PrivateCallStackItem> {
|
|
202
|
-
throw new
|
|
208
|
+
throw new OracleMethodNotAvailableError('callPrivateFunction');
|
|
203
209
|
}
|
|
204
210
|
|
|
205
211
|
callPublicFunction(
|
|
@@ -209,7 +215,7 @@ export abstract class TypedOracle {
|
|
|
209
215
|
_isStaticCall: boolean,
|
|
210
216
|
_isDelegateCall: boolean,
|
|
211
217
|
): Promise<Fr[]> {
|
|
212
|
-
throw new
|
|
218
|
+
throw new OracleMethodNotAvailableError('callPublicFunction');
|
|
213
219
|
}
|
|
214
220
|
|
|
215
221
|
enqueuePublicFunctionCall(
|
|
@@ -220,6 +226,6 @@ export abstract class TypedOracle {
|
|
|
220
226
|
_isStaticCall: boolean,
|
|
221
227
|
_isDelegateCall: boolean,
|
|
222
228
|
): Promise<PublicCallRequest> {
|
|
223
|
-
throw new
|
|
229
|
+
throw new OracleMethodNotAvailableError('enqueuePublicFunctionCall');
|
|
224
230
|
}
|
|
225
231
|
}
|
package/src/public/db.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { NullifierMembershipWitness } from '@aztec/circuit-types';
|
|
|
2
2
|
import { EthAddress, FunctionSelector, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
|
|
3
3
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
|
+
import { ContractInstanceWithAddress } from '@aztec/types/contracts';
|
|
5
6
|
|
|
6
7
|
import { MessageLoadOracleInputs } from '../acvm/index.js';
|
|
7
8
|
|
|
@@ -65,6 +66,13 @@ export interface PublicContractsDB {
|
|
|
65
66
|
* @returns The portal contract address or undefined if not found.
|
|
66
67
|
*/
|
|
67
68
|
getPortalContractAddress(address: AztecAddress): Promise<EthAddress | undefined>;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Returns a publicly deployed contract instance.
|
|
72
|
+
* @param address - Address of the contract.
|
|
73
|
+
* @returns The contract instance or undefined if not found.
|
|
74
|
+
*/
|
|
75
|
+
getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
68
76
|
}
|
|
69
77
|
|
|
70
78
|
/** Database interface for providing access to commitment tree, l1 to l2 message tree, and nullifier tree. */
|
|
@@ -4,6 +4,7 @@ import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
6
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
7
|
+
import { ContractInstance } from '@aztec/types/contracts';
|
|
7
8
|
|
|
8
9
|
import { TypedOracle, toACVMWitness } from '../acvm/index.js';
|
|
9
10
|
import { PackedArgsCache, SideEffectCounter } from '../common/index.js';
|
|
@@ -237,4 +238,17 @@ export class PublicExecutionContext extends TypedOracle {
|
|
|
237
238
|
}
|
|
238
239
|
return await this.commitmentsDb.getNullifierMembershipWitnessAtLatestBlock(nullifier);
|
|
239
240
|
}
|
|
241
|
+
|
|
242
|
+
public async getContractInstance(address: AztecAddress): Promise<ContractInstance> {
|
|
243
|
+
// Note to AVM implementor: The wrapper of the oracle call get_contract_instance in aztec-nr
|
|
244
|
+
// automatically checks that the returned instance is correct, by hashing it together back
|
|
245
|
+
// into the address. However, in the AVM, we also need to prove the negative, otherwise a malicious
|
|
246
|
+
// sequencer could just lie about not having the instance available in its local db. We can do this
|
|
247
|
+
// by using the prove_contract_non_deployment_at method if the contract is not found in the db.
|
|
248
|
+
const instance = await this.contractsDb.getContractInstance(address);
|
|
249
|
+
if (!instance) {
|
|
250
|
+
throw new Error(`Contract instance at ${address} not found`);
|
|
251
|
+
}
|
|
252
|
+
return instance;
|
|
253
|
+
}
|
|
240
254
|
}
|