@aztec/txe 0.46.5 → 0.46.7
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/bin/index.d.ts +3 -0
- package/dest/bin/index.d.ts.map +1 -0
- package/dest/bin/index.js +20 -0
- package/dest/index.d.ts +9 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +37 -0
- package/dest/oracle/txe_oracle.d.ts +108 -0
- package/dest/oracle/txe_oracle.d.ts.map +1 -0
- package/dest/oracle/txe_oracle.js +528 -0
- package/dest/txe_service/txe_service.d.ts +196 -0
- package/dest/txe_service/txe_service.d.ts.map +1 -0
- package/dest/txe_service/txe_service.js +440 -0
- package/dest/util/encoding.d.ts +14 -0
- package/dest/util/encoding.d.ts.map +1 -0
- package/dest/util/encoding.js +17 -0
- package/dest/util/expected_failure_error.d.ts +4 -0
- package/dest/util/expected_failure_error.d.ts.map +1 -0
- package/dest/util/expected_failure_error.js +6 -0
- package/dest/util/txe_database.d.ts +10 -0
- package/dest/util/txe_database.d.ts.map +1 -0
- package/dest/util/txe_database.js +23 -0
- package/dest/util/txe_public_contract_data_source.d.ts +16 -0
- package/dest/util/txe_public_contract_data_source.d.ts.map +1 -0
- package/dest/util/txe_public_contract_data_source.js +48 -0
- package/dest/util/txe_public_state_db.d.ts +14 -0
- package/dest/util/txe_public_state_db.d.ts.map +1 -0
- package/dest/util/txe_public_state_db.js +37 -0
- package/package.json +13 -13
- package/src/bin/index.ts +10 -67
- package/src/index.ts +55 -0
- package/src/oracle/txe_oracle.ts +2 -1
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { L2Block, MerkleTreeId, PublicDataWrite } from '@aztec/circuit-types';
|
|
2
|
+
import { Fr, FunctionSelector, Header, KeyValidationRequest, PUBLIC_DATA_SUBTREE_HEIGHT, Point, PublicDataTreeLeaf, getContractInstanceFromDeployParams, } from '@aztec/circuits.js';
|
|
3
|
+
import { computePublicDataTreeLeafSlot } from '@aztec/circuits.js/hash';
|
|
4
|
+
import { NoteSelector } from '@aztec/foundation/abi';
|
|
5
|
+
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
6
|
+
import { KeyStore } from '@aztec/key-store';
|
|
7
|
+
import { openTmpStore } from '@aztec/kv-store/utils';
|
|
8
|
+
import { ExecutionNoteCache, PackedValuesCache } from '@aztec/simulator';
|
|
9
|
+
import { MerkleTrees } from '@aztec/world-state';
|
|
10
|
+
import { TXE } from '../oracle/txe_oracle.js';
|
|
11
|
+
import { fromArray, fromSingle, toArray, toForeignCallResult, toSingle, } from '../util/encoding.js';
|
|
12
|
+
import { ExpectedFailureError } from '../util/expected_failure_error.js';
|
|
13
|
+
import { TXEDatabase } from '../util/txe_database.js';
|
|
14
|
+
export class TXEService {
|
|
15
|
+
constructor(logger, typedOracle) {
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.typedOracle = typedOracle;
|
|
18
|
+
}
|
|
19
|
+
static async init(logger) {
|
|
20
|
+
const store = openTmpStore(true);
|
|
21
|
+
const trees = await MerkleTrees.new(store, logger);
|
|
22
|
+
const packedValuesCache = new PackedValuesCache();
|
|
23
|
+
const noteCache = new ExecutionNoteCache();
|
|
24
|
+
const keyStore = new KeyStore(store);
|
|
25
|
+
const txeDatabase = new TXEDatabase(store);
|
|
26
|
+
logger.info(`TXE service initialized`);
|
|
27
|
+
const txe = new TXE(logger, trees, packedValuesCache, noteCache, keyStore, txeDatabase);
|
|
28
|
+
const service = new TXEService(logger, txe);
|
|
29
|
+
await service.advanceBlocksBy(toSingle(new Fr(1n)));
|
|
30
|
+
return service;
|
|
31
|
+
}
|
|
32
|
+
// Cheatcodes
|
|
33
|
+
async getPrivateContextInputs(blockNumber) {
|
|
34
|
+
const inputs = await this.typedOracle.getPrivateContextInputs(fromSingle(blockNumber).toNumber());
|
|
35
|
+
return toForeignCallResult(inputs.toFields().map(toSingle));
|
|
36
|
+
}
|
|
37
|
+
getPublicContextInputs() {
|
|
38
|
+
const inputs = this.typedOracle.getPublicContextInputs();
|
|
39
|
+
return toForeignCallResult(inputs.toFields().map(toSingle));
|
|
40
|
+
}
|
|
41
|
+
async advanceBlocksBy(blocks) {
|
|
42
|
+
const nBlocks = fromSingle(blocks).toNumber();
|
|
43
|
+
this.logger.debug(`time traveling ${nBlocks} blocks`);
|
|
44
|
+
const trees = this.typedOracle.getTrees();
|
|
45
|
+
const header = Header.empty();
|
|
46
|
+
const l2Block = L2Block.empty();
|
|
47
|
+
header.state = await trees.getStateReference(true);
|
|
48
|
+
const blockNumber = await this.typedOracle.getBlockNumber();
|
|
49
|
+
header.globalVariables.blockNumber = new Fr(blockNumber);
|
|
50
|
+
l2Block.archive.root = Fr.fromBuffer((await trees.getTreeInfo(MerkleTreeId.ARCHIVE, true)).root);
|
|
51
|
+
l2Block.header = header;
|
|
52
|
+
for (let i = 0; i < nBlocks; i++) {
|
|
53
|
+
const blockNumber = await this.typedOracle.getBlockNumber();
|
|
54
|
+
header.globalVariables.blockNumber = new Fr(blockNumber);
|
|
55
|
+
await trees.handleL2BlockAndMessages(l2Block, []);
|
|
56
|
+
this.typedOracle.setBlockNumber(blockNumber + 1);
|
|
57
|
+
}
|
|
58
|
+
return toForeignCallResult([]);
|
|
59
|
+
}
|
|
60
|
+
setContractAddress(address) {
|
|
61
|
+
const typedAddress = AztecAddress.fromField(fromSingle(address));
|
|
62
|
+
this.typedOracle.setContractAddress(typedAddress);
|
|
63
|
+
return toForeignCallResult([]);
|
|
64
|
+
}
|
|
65
|
+
deriveKeys(secret) {
|
|
66
|
+
const keys = this.typedOracle.deriveKeys(fromSingle(secret));
|
|
67
|
+
return toForeignCallResult(keys.publicKeys.toFields().map(toSingle));
|
|
68
|
+
}
|
|
69
|
+
async deploy(path, initializer, _length, args, publicKeysHash) {
|
|
70
|
+
const pathStr = fromArray(path)
|
|
71
|
+
.map(char => String.fromCharCode(char.toNumber()))
|
|
72
|
+
.join('');
|
|
73
|
+
const initializerStr = fromArray(initializer)
|
|
74
|
+
.map(char => String.fromCharCode(char.toNumber()))
|
|
75
|
+
.join('');
|
|
76
|
+
const decodedArgs = fromArray(args);
|
|
77
|
+
const publicKeysHashFr = fromSingle(publicKeysHash);
|
|
78
|
+
this.logger.debug(`Deploy ${pathStr} with initializer ${initializerStr}(${decodedArgs}) and public keys hash ${publicKeysHashFr}`);
|
|
79
|
+
const contractModule = await import(pathStr);
|
|
80
|
+
// Hacky way of getting the class, the name of the Artifact is always longer
|
|
81
|
+
const contractClass = contractModule[Object.keys(contractModule).sort((a, b) => a.length - b.length)[0]];
|
|
82
|
+
const instance = getContractInstanceFromDeployParams(contractClass.artifact, {
|
|
83
|
+
constructorArgs: decodedArgs,
|
|
84
|
+
skipArgsDecoding: true,
|
|
85
|
+
salt: Fr.ONE,
|
|
86
|
+
publicKeysHash: publicKeysHashFr,
|
|
87
|
+
constructorArtifact: initializerStr ? initializerStr : undefined,
|
|
88
|
+
deployer: AztecAddress.ZERO,
|
|
89
|
+
});
|
|
90
|
+
this.logger.debug(`Deployed ${contractClass.artifact.name} at ${instance.address}`);
|
|
91
|
+
await this.typedOracle.addContractInstance(instance);
|
|
92
|
+
await this.typedOracle.addContractArtifact(contractClass.artifact);
|
|
93
|
+
return toForeignCallResult([
|
|
94
|
+
toArray([
|
|
95
|
+
instance.salt,
|
|
96
|
+
instance.deployer,
|
|
97
|
+
instance.contractClassId,
|
|
98
|
+
instance.initializationHash,
|
|
99
|
+
instance.publicKeysHash,
|
|
100
|
+
]),
|
|
101
|
+
]);
|
|
102
|
+
}
|
|
103
|
+
async directStorageWrite(contractAddress, startStorageSlot, values) {
|
|
104
|
+
const trees = this.typedOracle.getTrees();
|
|
105
|
+
const startStorageSlotFr = fromSingle(startStorageSlot);
|
|
106
|
+
const valuesFr = fromArray(values);
|
|
107
|
+
const contractAddressFr = fromSingle(contractAddress);
|
|
108
|
+
const db = trees.asLatest();
|
|
109
|
+
const publicDataWrites = valuesFr.map((value, i) => {
|
|
110
|
+
const storageSlot = startStorageSlotFr.add(new Fr(i));
|
|
111
|
+
this.logger.debug(`Oracle storage write: slot=${storageSlot.toString()} value=${value}`);
|
|
112
|
+
return new PublicDataWrite(computePublicDataTreeLeafSlot(contractAddressFr, storageSlot), value);
|
|
113
|
+
});
|
|
114
|
+
await db.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, publicDataWrites.map(write => new PublicDataTreeLeaf(write.leafIndex, write.newValue).toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
|
|
115
|
+
return toForeignCallResult([toArray(publicDataWrites.map(write => write.newValue))]);
|
|
116
|
+
}
|
|
117
|
+
async createAccount() {
|
|
118
|
+
const keyStore = this.typedOracle.getKeyStore();
|
|
119
|
+
const completeAddress = await keyStore.createAccount();
|
|
120
|
+
const accountStore = this.typedOracle.getTXEDatabase();
|
|
121
|
+
await accountStore.setAccount(completeAddress.address, completeAddress);
|
|
122
|
+
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
123
|
+
return toForeignCallResult([
|
|
124
|
+
toSingle(completeAddress.address),
|
|
125
|
+
...completeAddress.publicKeys.toFields().map(toSingle),
|
|
126
|
+
]);
|
|
127
|
+
}
|
|
128
|
+
async addAccount(secret, partialAddress) {
|
|
129
|
+
const keyStore = this.typedOracle.getKeyStore();
|
|
130
|
+
const completeAddress = await keyStore.addAccount(fromSingle(secret), fromSingle(partialAddress));
|
|
131
|
+
const accountStore = this.typedOracle.getTXEDatabase();
|
|
132
|
+
await accountStore.setAccount(completeAddress.address, completeAddress);
|
|
133
|
+
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
134
|
+
return toForeignCallResult([
|
|
135
|
+
toSingle(completeAddress.address),
|
|
136
|
+
...completeAddress.publicKeys.toFields().map(toSingle),
|
|
137
|
+
]);
|
|
138
|
+
}
|
|
139
|
+
setMsgSender(msgSender) {
|
|
140
|
+
this.typedOracle.setMsgSender(fromSingle(msgSender));
|
|
141
|
+
return toForeignCallResult([]);
|
|
142
|
+
}
|
|
143
|
+
getMsgSender() {
|
|
144
|
+
const msgSender = this.typedOracle.getMsgSender();
|
|
145
|
+
return toForeignCallResult([toSingle(msgSender)]);
|
|
146
|
+
}
|
|
147
|
+
getSideEffectsCounter() {
|
|
148
|
+
const counter = this.typedOracle.getSideEffectsCounter();
|
|
149
|
+
return toForeignCallResult([toSingle(new Fr(counter))]);
|
|
150
|
+
}
|
|
151
|
+
async addAuthWitness(address, messageHash) {
|
|
152
|
+
await this.typedOracle.addAuthWitness(fromSingle(address), fromSingle(messageHash));
|
|
153
|
+
return toForeignCallResult([]);
|
|
154
|
+
}
|
|
155
|
+
async assertPublicCallFails(address, functionSelector, _length, args) {
|
|
156
|
+
const parsedAddress = fromSingle(address);
|
|
157
|
+
const parsedSelector = FunctionSelector.fromField(fromSingle(functionSelector));
|
|
158
|
+
const result = await this.typedOracle.avmOpcodeCall(parsedAddress, parsedSelector, fromArray(args), false, false);
|
|
159
|
+
if (!result.reverted) {
|
|
160
|
+
throw new ExpectedFailureError('Public call did not revert');
|
|
161
|
+
}
|
|
162
|
+
return toForeignCallResult([]);
|
|
163
|
+
}
|
|
164
|
+
async assertPrivateCallFails(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
165
|
+
try {
|
|
166
|
+
await this.typedOracle.callPrivateFunction(fromSingle(targetContractAddress), FunctionSelector.fromField(fromSingle(functionSelector)), fromSingle(argsHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool(), fromSingle(isDelegateCall).toBool());
|
|
167
|
+
throw new ExpectedFailureError('Private call did not fail');
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
if (e instanceof ExpectedFailureError) {
|
|
171
|
+
throw e;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return toForeignCallResult([]);
|
|
175
|
+
}
|
|
176
|
+
setFunctionSelector(functionSelector) {
|
|
177
|
+
this.typedOracle.setFunctionSelector(FunctionSelector.fromField(fromSingle(functionSelector)));
|
|
178
|
+
return toForeignCallResult([]);
|
|
179
|
+
}
|
|
180
|
+
getFunctionSelector() {
|
|
181
|
+
const functionSelector = this.typedOracle.getFunctionSelector();
|
|
182
|
+
return toForeignCallResult([toSingle(functionSelector.toField())]);
|
|
183
|
+
}
|
|
184
|
+
// PXE oracles
|
|
185
|
+
getRandomField() {
|
|
186
|
+
return toForeignCallResult([toSingle(this.typedOracle.getRandomField())]);
|
|
187
|
+
}
|
|
188
|
+
async getContractAddress() {
|
|
189
|
+
const contractAddress = await this.typedOracle.getContractAddress();
|
|
190
|
+
return toForeignCallResult([toSingle(contractAddress.toField())]);
|
|
191
|
+
}
|
|
192
|
+
async getBlockNumber() {
|
|
193
|
+
const blockNumber = await this.typedOracle.getBlockNumber();
|
|
194
|
+
return toForeignCallResult([toSingle(new Fr(blockNumber))]);
|
|
195
|
+
}
|
|
196
|
+
async avmOpcodeAddress() {
|
|
197
|
+
const contractAddress = await this.typedOracle.getContractAddress();
|
|
198
|
+
return toForeignCallResult([toSingle(contractAddress.toField())]);
|
|
199
|
+
}
|
|
200
|
+
async avmOpcodeBlockNumber() {
|
|
201
|
+
const blockNumber = await this.typedOracle.getBlockNumber();
|
|
202
|
+
return toForeignCallResult([toSingle(new Fr(blockNumber))]);
|
|
203
|
+
}
|
|
204
|
+
avmOpcodeFunctionSelector() {
|
|
205
|
+
const functionSelector = this.typedOracle.getFunctionSelector();
|
|
206
|
+
return toForeignCallResult([toSingle(functionSelector.toField())]);
|
|
207
|
+
}
|
|
208
|
+
async packArgumentsArray(args) {
|
|
209
|
+
const packed = await this.typedOracle.packArgumentsArray(fromArray(args));
|
|
210
|
+
return toForeignCallResult([toSingle(packed)]);
|
|
211
|
+
}
|
|
212
|
+
async packArguments(_length, values) {
|
|
213
|
+
const packed = await this.typedOracle.packArgumentsArray(fromArray(values));
|
|
214
|
+
return toForeignCallResult([toSingle(packed)]);
|
|
215
|
+
}
|
|
216
|
+
// Since the argument is a slice, noir automatically adds a length field to oracle call.
|
|
217
|
+
async packReturns(_length, values) {
|
|
218
|
+
const packed = await this.typedOracle.packReturns(fromArray(values));
|
|
219
|
+
return toForeignCallResult([toSingle(packed)]);
|
|
220
|
+
}
|
|
221
|
+
async unpackReturns(returnsHash) {
|
|
222
|
+
const unpacked = await this.typedOracle.unpackReturns(fromSingle(returnsHash));
|
|
223
|
+
return toForeignCallResult([toArray(unpacked)]);
|
|
224
|
+
}
|
|
225
|
+
// Since the argument is a slice, noir automatically adds a length field to oracle call.
|
|
226
|
+
debugLog(message, _length, fields) {
|
|
227
|
+
const messageStr = fromArray(message)
|
|
228
|
+
.map(field => String.fromCharCode(field.toNumber()))
|
|
229
|
+
.join('');
|
|
230
|
+
const fieldsFr = fromArray(fields);
|
|
231
|
+
this.typedOracle.debugLog(messageStr, fieldsFr);
|
|
232
|
+
return toForeignCallResult([]);
|
|
233
|
+
}
|
|
234
|
+
async storageRead(contractAddress, startStorageSlot, blockNumber, numberOfElements) {
|
|
235
|
+
const values = await this.typedOracle.storageRead(fromSingle(contractAddress), fromSingle(startStorageSlot), fromSingle(blockNumber).toNumber(), fromSingle(numberOfElements).toNumber());
|
|
236
|
+
return toForeignCallResult([toArray(values)]);
|
|
237
|
+
}
|
|
238
|
+
async storageWrite(startStorageSlot, values) {
|
|
239
|
+
const newValues = await this.typedOracle.storageWrite(fromSingle(startStorageSlot), fromArray(values));
|
|
240
|
+
return toForeignCallResult([toArray(newValues)]);
|
|
241
|
+
}
|
|
242
|
+
async getPublicDataTreeWitness(blockNumber, leafSlot) {
|
|
243
|
+
const parsedBlockNumber = fromSingle(blockNumber).toNumber();
|
|
244
|
+
const parsedLeafSlot = fromSingle(leafSlot);
|
|
245
|
+
const witness = await this.typedOracle.getPublicDataTreeWitness(parsedBlockNumber, parsedLeafSlot);
|
|
246
|
+
if (!witness) {
|
|
247
|
+
throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block ${parsedBlockNumber}.`);
|
|
248
|
+
}
|
|
249
|
+
return toForeignCallResult([toArray(witness.toFields())]);
|
|
250
|
+
}
|
|
251
|
+
async getSiblingPath(blockNumber, treeId, leafIndex) {
|
|
252
|
+
const result = await this.typedOracle.getSiblingPath(fromSingle(blockNumber).toNumber(), fromSingle(treeId).toNumber(), fromSingle(leafIndex));
|
|
253
|
+
return toForeignCallResult([toArray(result)]);
|
|
254
|
+
}
|
|
255
|
+
async getNotes(storageSlot, numSelects, selectByIndexes, selectByOffsets, selectByLengths, selectValues, selectComparators, sortByIndexes, sortByOffsets, sortByLengths, sortOrder, limit, offset, status, returnSize) {
|
|
256
|
+
const noteDatas = await this.typedOracle.getNotes(fromSingle(storageSlot), fromSingle(numSelects).toNumber(), fromArray(selectByIndexes).map(fr => fr.toNumber()), fromArray(selectByOffsets).map(fr => fr.toNumber()), fromArray(selectByLengths).map(fr => fr.toNumber()), fromArray(selectValues), fromArray(selectComparators).map(fr => fr.toNumber()), fromArray(sortByIndexes).map(fr => fr.toNumber()), fromArray(sortByOffsets).map(fr => fr.toNumber()), fromArray(sortByLengths).map(fr => fr.toNumber()), fromArray(sortOrder).map(fr => fr.toNumber()), fromSingle(limit).toNumber(), fromSingle(offset).toNumber(), fromSingle(status).toNumber());
|
|
257
|
+
const noteLength = noteDatas?.[0]?.note.items.length ?? 0;
|
|
258
|
+
if (!noteDatas.every(({ note }) => noteLength === note.items.length)) {
|
|
259
|
+
throw new Error('Notes should all be the same length.');
|
|
260
|
+
}
|
|
261
|
+
const contractAddress = noteDatas[0]?.contractAddress ?? Fr.ZERO;
|
|
262
|
+
// Values indicates whether the note is settled or transient.
|
|
263
|
+
const noteTypes = {
|
|
264
|
+
isSettled: new Fr(0),
|
|
265
|
+
isTransient: new Fr(1),
|
|
266
|
+
};
|
|
267
|
+
const flattenData = noteDatas.flatMap(({ nonce, note, index }) => [
|
|
268
|
+
nonce,
|
|
269
|
+
index === undefined ? noteTypes.isTransient : noteTypes.isSettled,
|
|
270
|
+
...note.items,
|
|
271
|
+
]);
|
|
272
|
+
const returnFieldSize = fromSingle(returnSize).toNumber();
|
|
273
|
+
const returnData = [noteDatas.length, contractAddress, ...flattenData].map(v => new Fr(v));
|
|
274
|
+
if (returnData.length > returnFieldSize) {
|
|
275
|
+
throw new Error(`Return data size too big. Maximum ${returnFieldSize} fields. Got ${flattenData.length}.`);
|
|
276
|
+
}
|
|
277
|
+
const paddedZeros = Array(returnFieldSize - returnData.length).fill(new Fr(0));
|
|
278
|
+
return toForeignCallResult([toArray([...returnData, ...paddedZeros])]);
|
|
279
|
+
}
|
|
280
|
+
notifyCreatedNote(storageSlot, noteTypeId, note, innerNoteHash, counter) {
|
|
281
|
+
this.typedOracle.notifyCreatedNote(fromSingle(storageSlot), NoteSelector.fromField(fromSingle(noteTypeId)), fromArray(note), fromSingle(innerNoteHash), fromSingle(counter).toNumber());
|
|
282
|
+
return toForeignCallResult([toSingle(new Fr(0))]);
|
|
283
|
+
}
|
|
284
|
+
async notifyNullifiedNote(innerNullifier, innerNoteHash, counter) {
|
|
285
|
+
await this.typedOracle.notifyNullifiedNote(fromSingle(innerNullifier), fromSingle(innerNoteHash), fromSingle(counter).toNumber());
|
|
286
|
+
return toForeignCallResult([toSingle(new Fr(0))]);
|
|
287
|
+
}
|
|
288
|
+
async checkNullifierExists(innerNullifier) {
|
|
289
|
+
const exists = await this.typedOracle.checkNullifierExists(fromSingle(innerNullifier));
|
|
290
|
+
return toForeignCallResult([toSingle(new Fr(exists))]);
|
|
291
|
+
}
|
|
292
|
+
async getContractInstance(address) {
|
|
293
|
+
const instance = await this.typedOracle.getContractInstance(fromSingle(address));
|
|
294
|
+
return toForeignCallResult([
|
|
295
|
+
toArray([
|
|
296
|
+
instance.salt,
|
|
297
|
+
instance.deployer,
|
|
298
|
+
instance.contractClassId,
|
|
299
|
+
instance.initializationHash,
|
|
300
|
+
instance.publicKeysHash,
|
|
301
|
+
]),
|
|
302
|
+
]);
|
|
303
|
+
}
|
|
304
|
+
async avmOpcodeGetContractInstance(address) {
|
|
305
|
+
const instance = await this.typedOracle.getContractInstance(fromSingle(address));
|
|
306
|
+
return toForeignCallResult([
|
|
307
|
+
toArray([
|
|
308
|
+
// AVM requires an extra boolean indicating the instance was found
|
|
309
|
+
new Fr(1),
|
|
310
|
+
instance.salt,
|
|
311
|
+
instance.deployer,
|
|
312
|
+
instance.contractClassId,
|
|
313
|
+
instance.initializationHash,
|
|
314
|
+
instance.publicKeysHash,
|
|
315
|
+
]),
|
|
316
|
+
]);
|
|
317
|
+
}
|
|
318
|
+
avmOpcodeSender() {
|
|
319
|
+
const sender = this.typedOracle.getMsgSender();
|
|
320
|
+
return toForeignCallResult([toSingle(sender)]);
|
|
321
|
+
}
|
|
322
|
+
async avmOpcodeEmitNullifier(nullifier) {
|
|
323
|
+
await this.typedOracle.avmOpcodeEmitNullifier(fromSingle(nullifier));
|
|
324
|
+
return toForeignCallResult([]);
|
|
325
|
+
}
|
|
326
|
+
async avmOpcodeEmitNoteHash(innerNoteHash) {
|
|
327
|
+
await this.typedOracle.avmOpcodeEmitNoteHash(fromSingle(innerNoteHash));
|
|
328
|
+
return toForeignCallResult([]);
|
|
329
|
+
}
|
|
330
|
+
async avmOpcodeNullifierExists(innerNullifier, targetAddress) {
|
|
331
|
+
const exists = await this.typedOracle.avmOpcodeNullifierExists(fromSingle(innerNullifier), AztecAddress.fromField(fromSingle(targetAddress)));
|
|
332
|
+
return toForeignCallResult([toSingle(new Fr(exists))]);
|
|
333
|
+
}
|
|
334
|
+
async avmOpcodeCall(_gas, address, _length, args, functionSelector) {
|
|
335
|
+
const result = await this.typedOracle.avmOpcodeCall(fromSingle(address), FunctionSelector.fromField(fromSingle(functionSelector)), fromArray(args),
|
|
336
|
+
/* isStaticCall */ false,
|
|
337
|
+
/* isDelegateCall */ false);
|
|
338
|
+
return toForeignCallResult([toArray(result.returnValues), toSingle(new Fr(1))]);
|
|
339
|
+
}
|
|
340
|
+
async avmOpcodeStaticCall(_gas, address, _length, args, functionSelector) {
|
|
341
|
+
const result = await this.typedOracle.avmOpcodeCall(fromSingle(address), FunctionSelector.fromField(fromSingle(functionSelector)), fromArray(args),
|
|
342
|
+
/* isStaticCall */ true,
|
|
343
|
+
/* isDelegateCall */ false);
|
|
344
|
+
return toForeignCallResult([toArray(result.returnValues), toSingle(new Fr(1))]);
|
|
345
|
+
}
|
|
346
|
+
async avmOpcodeStorageRead(slot, length) {
|
|
347
|
+
const values = await this.typedOracle.avmOpcodeStorageRead(fromSingle(slot), fromSingle(length));
|
|
348
|
+
return toForeignCallResult([toArray(values)]);
|
|
349
|
+
}
|
|
350
|
+
async avmOpcodeStorageWrite(startStorageSlot, values) {
|
|
351
|
+
await this.typedOracle.storageWrite(fromSingle(startStorageSlot), fromArray(values));
|
|
352
|
+
return toForeignCallResult([]);
|
|
353
|
+
}
|
|
354
|
+
async getPublicKeysAndPartialAddress(address) {
|
|
355
|
+
const parsedAddress = AztecAddress.fromField(fromSingle(address));
|
|
356
|
+
const { publicKeys, partialAddress } = await this.typedOracle.getCompleteAddress(parsedAddress);
|
|
357
|
+
return toForeignCallResult([toArray([...publicKeys.toFields(), partialAddress])]);
|
|
358
|
+
}
|
|
359
|
+
async getKeyValidationRequest(pkMHash) {
|
|
360
|
+
const keyValidationRequest = await this.typedOracle.getKeyValidationRequest(fromSingle(pkMHash));
|
|
361
|
+
return toForeignCallResult([toArray(keyValidationRequest.toFields())]);
|
|
362
|
+
}
|
|
363
|
+
computeEncryptedNoteLog(contractAddress, storageSlot, noteTypeId, ovskApp, ovpkMX, ovpkMY, ovpkMIsInfinite, ivpkMX, ivpkMY, ivpkMIsInfinite, preimage) {
|
|
364
|
+
const ovpkM = new Point(fromSingle(ovpkMX), fromSingle(ovpkMY), !fromSingle(ovpkMIsInfinite).isZero());
|
|
365
|
+
const ovKeys = new KeyValidationRequest(ovpkM, Fr.fromString(fromSingle(ovskApp).toString()));
|
|
366
|
+
const ivpkM = new Point(fromSingle(ivpkMX), fromSingle(ivpkMY), !fromSingle(ivpkMIsInfinite).isZero());
|
|
367
|
+
const encLog = this.typedOracle.computeEncryptedNoteLog(AztecAddress.fromString(fromSingle(contractAddress).toString()), Fr.fromString(fromSingle(storageSlot).toString()), NoteSelector.fromField(Fr.fromString(fromSingle(noteTypeId).toString())), ovKeys, ivpkM, fromArray(preimage));
|
|
368
|
+
const bytes = [];
|
|
369
|
+
encLog.forEach(v => {
|
|
370
|
+
bytes.push(new Fr(v));
|
|
371
|
+
});
|
|
372
|
+
return toForeignCallResult([toArray(bytes)]);
|
|
373
|
+
}
|
|
374
|
+
emitEncryptedLog(_contractAddress, _randomness, _encryptedLog, _counter) {
|
|
375
|
+
return toForeignCallResult([]);
|
|
376
|
+
}
|
|
377
|
+
emitEncryptedNoteLog(_noteHashCounter, _encryptedNote, _counter) {
|
|
378
|
+
return toForeignCallResult([]);
|
|
379
|
+
}
|
|
380
|
+
emitEncryptedEventLog(_contractAddress, _randomness, _encryptedEvent, _counter) {
|
|
381
|
+
return toForeignCallResult([]);
|
|
382
|
+
}
|
|
383
|
+
async callPrivateFunction(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
384
|
+
const result = await this.typedOracle.callPrivateFunction(fromSingle(targetContractAddress), FunctionSelector.fromField(fromSingle(functionSelector)), fromSingle(argsHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool(), fromSingle(isDelegateCall).toBool());
|
|
385
|
+
return toForeignCallResult([toArray(result.toFields())]);
|
|
386
|
+
}
|
|
387
|
+
async getNullifierMembershipWitness(blockNumber, nullifier) {
|
|
388
|
+
const parsedBlockNumber = fromSingle(blockNumber).toNumber();
|
|
389
|
+
const witness = await this.typedOracle.getNullifierMembershipWitness(parsedBlockNumber, fromSingle(nullifier));
|
|
390
|
+
if (!witness) {
|
|
391
|
+
throw new Error(`Nullifier membership witness not found at block ${parsedBlockNumber}.`);
|
|
392
|
+
}
|
|
393
|
+
return toForeignCallResult([toArray(witness.toFields())]);
|
|
394
|
+
}
|
|
395
|
+
async getAuthWitness(messageHash) {
|
|
396
|
+
const parsedMessageHash = fromSingle(messageHash);
|
|
397
|
+
const authWitness = await this.typedOracle.getAuthWitness(parsedMessageHash);
|
|
398
|
+
if (!authWitness) {
|
|
399
|
+
throw new Error(`Auth witness not found for message hash ${parsedMessageHash}.`);
|
|
400
|
+
}
|
|
401
|
+
return toForeignCallResult([toArray(authWitness)]);
|
|
402
|
+
}
|
|
403
|
+
async enqueuePublicFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
404
|
+
const publicCallRequest = await this.typedOracle.enqueuePublicFunctionCall(fromSingle(targetContractAddress), FunctionSelector.fromField(fromSingle(functionSelector)), fromSingle(argsHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool(), fromSingle(isDelegateCall).toBool());
|
|
405
|
+
const fields = [
|
|
406
|
+
publicCallRequest.contractAddress.toField(),
|
|
407
|
+
publicCallRequest.functionSelector.toField(),
|
|
408
|
+
...publicCallRequest.callContext.toFields(),
|
|
409
|
+
fromSingle(sideEffectCounter),
|
|
410
|
+
publicCallRequest.getArgsHash(),
|
|
411
|
+
];
|
|
412
|
+
return toForeignCallResult([toArray(fields)]);
|
|
413
|
+
}
|
|
414
|
+
async setPublicTeardownFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
415
|
+
const publicTeardownCallRequest = await this.typedOracle.setPublicTeardownFunctionCall(fromSingle(targetContractAddress), FunctionSelector.fromField(fromSingle(functionSelector)), fromSingle(argsHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool(), fromSingle(isDelegateCall).toBool());
|
|
416
|
+
const fields = [
|
|
417
|
+
publicTeardownCallRequest.contractAddress.toField(),
|
|
418
|
+
publicTeardownCallRequest.functionSelector.toField(),
|
|
419
|
+
...publicTeardownCallRequest.callContext.toFields(),
|
|
420
|
+
fromSingle(sideEffectCounter),
|
|
421
|
+
publicTeardownCallRequest.getArgsHash(),
|
|
422
|
+
];
|
|
423
|
+
return toForeignCallResult([toArray(fields)]);
|
|
424
|
+
}
|
|
425
|
+
async getChainId() {
|
|
426
|
+
return toForeignCallResult([toSingle(await this.typedOracle.getChainId())]);
|
|
427
|
+
}
|
|
428
|
+
async getVersion() {
|
|
429
|
+
return toForeignCallResult([toSingle(await this.typedOracle.getVersion())]);
|
|
430
|
+
}
|
|
431
|
+
async addNullifiers(contractAddress, _length, nullifiers) {
|
|
432
|
+
await this.typedOracle.addNullifiers(fromSingle(contractAddress), fromArray(nullifiers));
|
|
433
|
+
return toForeignCallResult([]);
|
|
434
|
+
}
|
|
435
|
+
async addNoteHashes(contractAddress, _length, noteHashes) {
|
|
436
|
+
await this.typedOracle.addNoteHashes(fromSingle(contractAddress), fromArray(noteHashes));
|
|
437
|
+
return toForeignCallResult([]);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX3NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhlX3NlcnZpY2UvdHhlX3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUUsT0FBTyxFQUNMLEVBQUUsRUFDRixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLG9CQUFvQixFQUNwQiwwQkFBMEIsRUFDMUIsS0FBSyxFQUNMLGtCQUFrQixFQUNsQixtQ0FBbUMsR0FDcEMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFvQixNQUFNLGtCQUFrQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUMsT0FBTyxFQUdMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsTUFBTSxPQUFPLFVBQVU7SUFDckIsWUFBb0IsTUFBYyxFQUFVLFdBQXdC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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
export type ForeignCallSingle = string;
|
|
3
|
+
export type ForeignCallArray = string[];
|
|
4
|
+
export type ForeignCallResult = {
|
|
5
|
+
values: (ForeignCallSingle | ForeignCallArray)[];
|
|
6
|
+
};
|
|
7
|
+
export declare function fromSingle(obj: ForeignCallSingle): Fr;
|
|
8
|
+
export declare function fromArray(obj: ForeignCallArray): Fr[];
|
|
9
|
+
export declare function toSingle(obj: Fr): string;
|
|
10
|
+
export declare function toArray(objs: Fr[]): `0x${string}`[];
|
|
11
|
+
export declare function toForeignCallResult(obj: (ForeignCallSingle | ForeignCallArray)[]): {
|
|
12
|
+
values: (string | ForeignCallArray)[];
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=encoding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/util/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,MAAM,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;CAClD,CAAC;AAEF,wBAAgB,UAAU,CAAC,GAAG,EAAE,iBAAiB,MAEhD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,QAE9C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,EAAE,UAE/B;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,mBAEjC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE;;EAEhF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
export function fromSingle(obj) {
|
|
3
|
+
return Fr.fromBuffer(Buffer.from(obj, 'hex'));
|
|
4
|
+
}
|
|
5
|
+
export function fromArray(obj) {
|
|
6
|
+
return obj.map(str => Fr.fromBuffer(Buffer.from(str, 'hex')));
|
|
7
|
+
}
|
|
8
|
+
export function toSingle(obj) {
|
|
9
|
+
return obj.toString().slice(2);
|
|
10
|
+
}
|
|
11
|
+
export function toArray(objs) {
|
|
12
|
+
return objs.map(obj => obj.toString());
|
|
13
|
+
}
|
|
14
|
+
export function toForeignCallResult(obj) {
|
|
15
|
+
return { values: obj };
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFVOUMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFzQjtJQUMvQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFxQjtJQUM3QyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFPO0lBQzlCLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FBQyxJQUFVO0lBQ2hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBNkM7SUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUN6QixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expected_failure_error.d.ts","sourceRoot":"","sources":["../../src/util/expected_failure_error.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAG5B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export class ExpectedFailureError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZWN0ZWRfZmFpbHVyZV9lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2V4cGVjdGVkX2ZhaWx1cmVfZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLG9CQUFxQixTQUFRLEtBQUs7SUFDN0MsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type AztecAddress, CompleteAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { type AztecKVStore } from '@aztec/kv-store';
|
|
3
|
+
import { KVPxeDatabase } from '@aztec/pxe';
|
|
4
|
+
export declare class TXEDatabase extends KVPxeDatabase {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(db: AztecKVStore);
|
|
7
|
+
getAccount(key: AztecAddress): CompleteAddress;
|
|
8
|
+
setAccount(key: AztecAddress, value: CompleteAddress): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=txe_database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txe_database.d.ts","sourceRoot":"","sources":["../../src/util/txe_database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,qBAAa,WAAY,SAAQ,aAAa;;gBAGhC,EAAE,EAAE,YAAY;IAK5B,UAAU,CAAC,GAAG,EAAE,YAAY;IAQtB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe;CAG3D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var _TXEDatabase_accounts;
|
|
2
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
+
import { CompleteAddress } from '@aztec/circuits.js';
|
|
4
|
+
import { KVPxeDatabase } from '@aztec/pxe';
|
|
5
|
+
export class TXEDatabase extends KVPxeDatabase {
|
|
6
|
+
constructor(db) {
|
|
7
|
+
super(db);
|
|
8
|
+
_TXEDatabase_accounts.set(this, void 0);
|
|
9
|
+
__classPrivateFieldSet(this, _TXEDatabase_accounts, db.openMap('accounts'), "f");
|
|
10
|
+
}
|
|
11
|
+
getAccount(key) {
|
|
12
|
+
const completeAddress = __classPrivateFieldGet(this, _TXEDatabase_accounts, "f").get(key.toString());
|
|
13
|
+
if (!completeAddress) {
|
|
14
|
+
throw new Error(`Account not found: ${key.toString()}`);
|
|
15
|
+
}
|
|
16
|
+
return CompleteAddress.fromBuffer(completeAddress);
|
|
17
|
+
}
|
|
18
|
+
async setAccount(key, value) {
|
|
19
|
+
await __classPrivateFieldGet(this, _TXEDatabase_accounts, "f").set(key.toString(), value.toBuffer());
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
_TXEDatabase_accounts = new WeakMap();
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX2RhdGFiYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvdHhlX2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFxQixlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxXQUFZLFNBQVEsYUFBYTtJQUc1QyxZQUFZLEVBQWdCO1FBQzFCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUhaLHdDQUFvQztRQUlsQyx1QkFBQSxJQUFJLHlCQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQUEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQWlCO1FBQzFCLE1BQU0sZUFBZSxHQUFHLHVCQUFBLElBQUksNkJBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFpQixFQUFFLEtBQXNCO1FBQ3hELE1BQU0sdUJBQUEsSUFBSSw2QkFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type AztecAddress, Fr, type FunctionSelector } from '@aztec/circuits.js';
|
|
2
|
+
import { type ContractArtifact } from '@aztec/foundation/abi';
|
|
3
|
+
import { type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress, type PublicFunction } from '@aztec/types/contracts';
|
|
4
|
+
import { type TXE } from '../oracle/txe_oracle.js';
|
|
5
|
+
export declare class TXEPublicContractDataSource implements ContractDataSource {
|
|
6
|
+
private txeOracle;
|
|
7
|
+
constructor(txeOracle: TXE);
|
|
8
|
+
getPublicFunction(address: AztecAddress, selector: FunctionSelector): Promise<PublicFunction | undefined>;
|
|
9
|
+
getBlockNumber(): Promise<number>;
|
|
10
|
+
getContractClass(id: Fr): Promise<ContractClassPublic | undefined>;
|
|
11
|
+
getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
12
|
+
getContractClassIds(): Promise<Fr[]>;
|
|
13
|
+
getContractArtifact(address: AztecAddress): Promise<ContractArtifact | undefined>;
|
|
14
|
+
addContractArtifact(address: AztecAddress, contract: ContractArtifact): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=txe_public_contract_data_source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txe_public_contract_data_source.d.ts","sourceRoot":"","sources":["../../src/util/txe_public_contract_data_source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,EAAE,EAAE,KAAK,gBAAgB,EAAkB,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAChC,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,qBAAa,2BAA4B,YAAW,kBAAkB;IACxD,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,GAAG;IAE5B,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAQ/G,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAkBlE,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAK1F,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAI9B,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKvF,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtF"}
|