@aztec/txe 3.0.3 → 4.0.0-devnet.1-patch.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/constants.d.ts +3 -0
- package/dest/constants.d.ts.map +1 -0
- package/dest/constants.js +2 -0
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -2
- package/dest/oracle/interfaces.d.ts +6 -4
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +4 -4
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +9 -11
- package/dest/oracle/txe_oracle_top_level_context.d.ts +20 -11
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +164 -65
- package/dest/rpc_translator.d.ts +27 -15
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +108 -53
- package/dest/state_machine/archiver.d.ts +20 -55
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +62 -103
- package/dest/state_machine/dummy_p2p_client.d.ts +14 -12
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +29 -21
- package/dest/state_machine/global_variable_builder.d.ts +4 -3
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +13 -1
- package/dest/state_machine/index.d.ts +7 -7
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +40 -23
- package/dest/state_machine/mock_epoch_cache.d.ts +9 -6
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +14 -7
- package/dest/state_machine/synchronizer.d.ts +3 -3
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/txe_session.d.ts +17 -9
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +147 -45
- package/dest/util/encoding.d.ts +617 -18
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/txe_account_store.d.ts +10 -0
- package/dest/util/txe_account_store.d.ts.map +1 -0
- package/dest/util/{txe_account_data_provider.js → txe_account_store.js} +1 -1
- package/dest/util/txe_contract_store.d.ts +12 -0
- package/dest/util/txe_contract_store.d.ts.map +1 -0
- package/dest/util/{txe_contract_data_provider.js → txe_contract_store.js} +3 -3
- package/dest/util/txe_public_contract_data_source.d.ts +4 -4
- package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.js +10 -10
- package/dest/utils/block_creation.d.ts +18 -4
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +37 -3
- package/dest/utils/tx_effect_creation.d.ts +2 -3
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +3 -6
- package/package.json +16 -16
- package/src/constants.ts +3 -0
- package/src/index.ts +15 -12
- package/src/oracle/interfaces.ts +5 -3
- package/src/oracle/txe_oracle_public_context.ts +9 -16
- package/src/oracle/txe_oracle_top_level_context.ts +196 -105
- package/src/rpc_translator.ts +123 -55
- package/src/state_machine/archiver.ts +58 -126
- package/src/state_machine/dummy_p2p_client.ts +40 -27
- package/src/state_machine/global_variable_builder.ts +19 -2
- package/src/state_machine/index.ts +60 -22
- package/src/state_machine/mock_epoch_cache.ts +15 -11
- package/src/state_machine/synchronizer.ts +2 -2
- package/src/txe_session.ts +197 -87
- package/src/util/{txe_account_data_provider.ts → txe_account_store.ts} +1 -1
- package/src/util/{txe_contract_data_provider.ts → txe_contract_store.ts} +3 -3
- package/src/util/txe_public_contract_data_source.ts +9 -9
- package/src/utils/block_creation.ts +47 -14
- package/src/utils/tx_effect_creation.ts +3 -11
- package/dest/util/txe_account_data_provider.d.ts +0 -10
- package/dest/util/txe_account_data_provider.d.ts.map +0 -1
- package/dest/util/txe_contract_data_provider.d.ts +0 -12
- package/dest/util/txe_contract_data_provider.d.ts.map +0 -1
|
@@ -8,29 +8,35 @@ import { ORACLE_VERSION, enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
|
8
8
|
import { ExecutionNoteCache, ExecutionTaggingIndexCache, HashedValuesCache, Oracle, PrivateExecutionOracle, UtilityExecutionOracle, executePrivateFunction, generateSimulatedProvingResult } from '@aztec/pxe/simulator';
|
|
9
9
|
import { ExecutionError, WASMSimulator, createSimulationError, extractCallStack, resolveAssertionMessageFromError, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
|
|
10
10
|
import { CppPublicTxSimulator, GuardedMerkleTreeOperations, PublicContractsDB, PublicProcessor } from '@aztec/simulator/server';
|
|
11
|
-
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
11
|
+
import { FunctionCall, FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
12
12
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
13
13
|
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
14
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
15
|
-
import { Body, L2Block } from '@aztec/stdlib/block';
|
|
16
15
|
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
17
16
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
18
17
|
import { computeCalldataHash, computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
19
18
|
import { PartialPrivateTailPublicInputsForPublic, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
20
19
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
21
|
-
import {
|
|
20
|
+
import { makeGlobalVariables } from '@aztec/stdlib/testing';
|
|
22
21
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
23
22
|
import { CallContext, HashedValues, PrivateExecutionResult, Tx, TxConstantData, TxContext, TxEffect, TxHash, collectNested } from '@aztec/stdlib/tx';
|
|
24
23
|
import { ForkCheckpoint } from '@aztec/world-state';
|
|
24
|
+
import { DEFAULT_ADDRESS } from '../constants.js';
|
|
25
25
|
import { TXEPublicContractDataSource } from '../util/txe_public_contract_data_source.js';
|
|
26
|
-
import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees,
|
|
26
|
+
import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees, makeTXEBlock } from '../utils/block_creation.js';
|
|
27
27
|
export class TXEOracleTopLevelContext {
|
|
28
28
|
stateMachine;
|
|
29
|
-
|
|
29
|
+
contractStore;
|
|
30
|
+
noteStore;
|
|
30
31
|
keyStore;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
addressStore;
|
|
33
|
+
accountStore;
|
|
34
|
+
senderTaggingStore;
|
|
35
|
+
recipientTaggingStore;
|
|
36
|
+
senderAddressBookStore;
|
|
37
|
+
capsuleStore;
|
|
38
|
+
privateEventStore;
|
|
39
|
+
jobId;
|
|
34
40
|
nextBlockTimestamp;
|
|
35
41
|
version;
|
|
36
42
|
chainId;
|
|
@@ -38,13 +44,19 @@ export class TXEOracleTopLevelContext {
|
|
|
38
44
|
isMisc;
|
|
39
45
|
isTxe;
|
|
40
46
|
logger;
|
|
41
|
-
constructor(stateMachine,
|
|
47
|
+
constructor(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobId, nextBlockTimestamp, version, chainId, authwits){
|
|
42
48
|
this.stateMachine = stateMachine;
|
|
43
|
-
this.
|
|
49
|
+
this.contractStore = contractStore;
|
|
50
|
+
this.noteStore = noteStore;
|
|
44
51
|
this.keyStore = keyStore;
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
52
|
+
this.addressStore = addressStore;
|
|
53
|
+
this.accountStore = accountStore;
|
|
54
|
+
this.senderTaggingStore = senderTaggingStore;
|
|
55
|
+
this.recipientTaggingStore = recipientTaggingStore;
|
|
56
|
+
this.senderAddressBookStore = senderAddressBookStore;
|
|
57
|
+
this.capsuleStore = capsuleStore;
|
|
58
|
+
this.privateEventStore = privateEventStore;
|
|
59
|
+
this.jobId = jobId;
|
|
48
60
|
this.nextBlockTimestamp = nextBlockTimestamp;
|
|
49
61
|
this.version = version;
|
|
50
62
|
this.chainId = chainId;
|
|
@@ -73,6 +85,10 @@ export class TXEOracleTopLevelContext {
|
|
|
73
85
|
this.logger[levelName](`${applyStringFormatting(message, fields)}`, {
|
|
74
86
|
module: `${this.logger.module}:debug_log`
|
|
75
87
|
});
|
|
88
|
+
return Promise.resolve();
|
|
89
|
+
}
|
|
90
|
+
txeGetDefaultAddress() {
|
|
91
|
+
return DEFAULT_ADDRESS;
|
|
76
92
|
}
|
|
77
93
|
async txeGetNextBlockNumber() {
|
|
78
94
|
return BlockNumber(await this.getLastBlockNumber() + 1);
|
|
@@ -84,7 +100,8 @@ export class TXEOracleTopLevelContext {
|
|
|
84
100
|
return (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
|
|
85
101
|
}
|
|
86
102
|
async txeGetLastTxEffects() {
|
|
87
|
-
const
|
|
103
|
+
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
104
|
+
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
88
105
|
if (block.body.txEffects.length != 1) {
|
|
89
106
|
// Note that calls like env.mine() will result in blocks with no transactions, hitting this
|
|
90
107
|
throw new Error(`Expected a single transaction in the last block, found ${block.body.txEffects.length}`);
|
|
@@ -96,6 +113,16 @@ export class TXEOracleTopLevelContext {
|
|
|
96
113
|
nullifiers: txEffects.nullifiers
|
|
97
114
|
};
|
|
98
115
|
}
|
|
116
|
+
async txeGetPrivateEvents(selector, contractAddress, scope) {
|
|
117
|
+
return (await this.privateEventStore.getPrivateEvents(selector, {
|
|
118
|
+
contractAddress,
|
|
119
|
+
scopes: [
|
|
120
|
+
scope
|
|
121
|
+
],
|
|
122
|
+
fromBlock: 0,
|
|
123
|
+
toBlock: await this.getLastBlockNumber() + 1
|
|
124
|
+
})).map((e)=>e.packedEvent);
|
|
125
|
+
}
|
|
99
126
|
async txeAdvanceBlocksBy(blocks) {
|
|
100
127
|
this.logger.debug(`time traveling ${blocks} blocks`);
|
|
101
128
|
for(let i = 0; i < blocks; i++){
|
|
@@ -116,32 +143,32 @@ export class TXEOracleTopLevelContext {
|
|
|
116
143
|
if (!secret.equals(Fr.ZERO)) {
|
|
117
144
|
await this.txeAddAccount(artifact, instance, secret);
|
|
118
145
|
} else {
|
|
119
|
-
await this.
|
|
120
|
-
await this.
|
|
146
|
+
await this.contractStore.addContractInstance(instance);
|
|
147
|
+
await this.contractStore.addContractArtifact(instance.currentContractClassId, artifact);
|
|
121
148
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
122
149
|
}
|
|
123
150
|
}
|
|
124
151
|
async txeAddAccount(artifact, instance, secret) {
|
|
125
152
|
const partialAddress = await computePartialAddress(instance);
|
|
126
153
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
127
|
-
await this.
|
|
128
|
-
await this.
|
|
154
|
+
await this.contractStore.addContractInstance(instance);
|
|
155
|
+
await this.contractStore.addContractArtifact(instance.currentContractClassId, artifact);
|
|
129
156
|
const completeAddress = await this.keyStore.addAccount(secret, partialAddress);
|
|
130
|
-
await this.
|
|
131
|
-
await this.
|
|
157
|
+
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
158
|
+
await this.addressStore.addCompleteAddress(completeAddress);
|
|
132
159
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
133
160
|
return completeAddress;
|
|
134
161
|
}
|
|
135
162
|
async txeCreateAccount(secret) {
|
|
136
|
-
// This is a
|
|
163
|
+
// This is a foot gun !
|
|
137
164
|
const completeAddress = await this.keyStore.addAccount(secret, secret);
|
|
138
|
-
await this.
|
|
139
|
-
await this.
|
|
165
|
+
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
166
|
+
await this.addressStore.addCompleteAddress(completeAddress);
|
|
140
167
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
141
168
|
return completeAddress;
|
|
142
169
|
}
|
|
143
170
|
async txeAddAuthWitness(address, messageHash) {
|
|
144
|
-
const account = await this.
|
|
171
|
+
const account = await this.accountStore.getAccount(address);
|
|
145
172
|
const privateKey = await this.keyStore.getMasterSecretKey(account.publicKeys.masterIncomingViewingPublicKey);
|
|
146
173
|
const schnorr = new Schnorr();
|
|
147
174
|
const signature = await schnorr.constructSignature(messageHash.toBuffer(), privateKey);
|
|
@@ -160,42 +187,86 @@ export class TXEOracleTopLevelContext {
|
|
|
160
187
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
161
188
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
162
189
|
await insertTxEffectIntoWorldTrees(txEffect, forkedWorldTrees);
|
|
163
|
-
const
|
|
190
|
+
const globals = makeGlobalVariables(undefined, {
|
|
164
191
|
blockNumber,
|
|
165
192
|
timestamp: this.nextBlockTimestamp,
|
|
166
193
|
version: this.version,
|
|
167
194
|
chainId: this.chainId
|
|
168
|
-
})
|
|
195
|
+
});
|
|
196
|
+
const block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
169
197
|
txEffect
|
|
170
|
-
])
|
|
198
|
+
]);
|
|
171
199
|
await forkedWorldTrees.close();
|
|
172
200
|
this.logger.info(`Created block ${blockNumber} with timestamp ${block.header.globalVariables.timestamp}`);
|
|
173
201
|
await this.stateMachine.handleL2Block(block);
|
|
174
202
|
}
|
|
175
203
|
async txePrivateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false) {
|
|
176
|
-
this.logger.verbose(`Executing external function ${await this.
|
|
177
|
-
const artifact = await this.
|
|
204
|
+
this.logger.verbose(`Executing external function ${await this.contractStore.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
205
|
+
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
178
206
|
if (!artifact) {
|
|
179
207
|
const message = functionSelector.equals(await FunctionSelector.fromSignature('verify_private_authwit(Field)')) ? 'Found no account contract artifact for a private authwit check - use `create_contract_account` instead of `create_light_account` for authwit support.' : 'Function Artifact does not exist';
|
|
180
208
|
throw new Error(message);
|
|
181
209
|
}
|
|
210
|
+
// When `from` is the zero address (used when creating a new contract account for example),
|
|
211
|
+
// we disable scope filtering by setting effectiveScopes to undefined. This allows these operations
|
|
212
|
+
// to proceed without requiring keys registered for the zero address.
|
|
213
|
+
const effectiveScopes = from.isZero() ? undefined : [
|
|
214
|
+
from
|
|
215
|
+
];
|
|
216
|
+
// Sync notes before executing private function to discover notes from previous transactions
|
|
217
|
+
const utilityExecutor = async (call)=>{
|
|
218
|
+
await this.executeUtilityCall(call, effectiveScopes);
|
|
219
|
+
};
|
|
220
|
+
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
221
|
+
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, utilityExecutor, blockHeader, this.jobId);
|
|
182
222
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
183
223
|
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
184
224
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
185
225
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
186
226
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
187
227
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
188
|
-
const blockHeader = await this.pxeOracleInterface.getAnchorBlockHeader();
|
|
189
228
|
const protocolNullifier = await computeProtocolNullifier(getSingleTxBlockRequestHash(blockNumber));
|
|
190
229
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
230
|
+
// In production, the account contract sets the min revertible counter before calling the app function.
|
|
231
|
+
// Since TXE bypasses the account contract, we simulate this by setting minRevertibleSideEffectCounter to 1,
|
|
232
|
+
// marking all side effects as revertible.
|
|
233
|
+
const minRevertibleSideEffectCounter = 1;
|
|
234
|
+
await noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
191
235
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
192
236
|
const simulator = new WASMSimulator();
|
|
193
|
-
const privateExecutionOracle = new PrivateExecutionOracle(
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
237
|
+
const privateExecutionOracle = new PrivateExecutionOracle({
|
|
238
|
+
argsHash,
|
|
239
|
+
txContext,
|
|
240
|
+
callContext,
|
|
241
|
+
anchorBlockHeader: blockHeader,
|
|
242
|
+
utilityExecutor,
|
|
243
|
+
authWitnesses: Array.from(this.authwits.values()),
|
|
244
|
+
capsules: [],
|
|
245
|
+
executionCache: HashedValuesCache.create([
|
|
246
|
+
new HashedValues(args, argsHash)
|
|
247
|
+
]),
|
|
248
|
+
noteCache,
|
|
249
|
+
taggingIndexCache,
|
|
250
|
+
contractStore: this.contractStore,
|
|
251
|
+
noteStore: this.noteStore,
|
|
252
|
+
keyStore: this.keyStore,
|
|
253
|
+
addressStore: this.addressStore,
|
|
254
|
+
aztecNode: this.stateMachine.node,
|
|
255
|
+
senderTaggingStore: this.senderTaggingStore,
|
|
256
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
257
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
258
|
+
capsuleStore: this.capsuleStore,
|
|
259
|
+
privateEventStore: this.privateEventStore,
|
|
260
|
+
contractSyncService: this.stateMachine.contractSyncService,
|
|
261
|
+
jobId: this.jobId,
|
|
262
|
+
totalPublicCalldataCount: 0,
|
|
263
|
+
sideEffectCounter: minRevertibleSideEffectCounter,
|
|
264
|
+
scopes: effectiveScopes,
|
|
265
|
+
// In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
266
|
+
// contract would perform, including setting senderForTags.
|
|
267
|
+
senderForTags: from,
|
|
268
|
+
simulator
|
|
269
|
+
});
|
|
199
270
|
// Note: This is a slight modification of simulator.run without any of the checks. Maybe we should modify simulator.run with a boolean value to skip checks.
|
|
200
271
|
let result;
|
|
201
272
|
let executionResult;
|
|
@@ -210,18 +281,16 @@ export class TXEOracleTopLevelContext {
|
|
|
210
281
|
const calldata = await privateExecutionOracle.privateLoadFromExecutionCache(r.calldataHash);
|
|
211
282
|
return new HashedValues(calldata, r.calldataHash);
|
|
212
283
|
}));
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
result = new PrivateExecutionResult(executionResult, Fr.ZERO, publicFunctionsCalldata);
|
|
284
|
+
noteCache.finish();
|
|
285
|
+
const nonceGenerator = noteCache.getNonceGenerator();
|
|
286
|
+
result = new PrivateExecutionResult(executionResult, nonceGenerator, publicFunctionsCalldata);
|
|
217
287
|
} catch (err) {
|
|
218
288
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
219
289
|
}
|
|
220
|
-
// According to the protocol rules,
|
|
221
|
-
//
|
|
222
|
-
//
|
|
223
|
-
const
|
|
224
|
-
const { publicInputs } = await generateSimulatedProvingResult(result, nonceGenerator, this.contractDataProvider);
|
|
290
|
+
// According to the protocol rules, there must be at least one nullifier in the tx. The first nullifier is used as
|
|
291
|
+
// the nonce generator for the note hashes.
|
|
292
|
+
// We pass the non-zero minRevertibleSideEffectCounter to make sure the side effects are split correctly.
|
|
293
|
+
const { publicInputs } = await generateSimulatedProvingResult(result, (addr, sel)=>this.contractStore.getDebugFunctionName(addr, sel), this.stateMachine.node, minRevertibleSideEffectCounter);
|
|
225
294
|
const globals = makeGlobalVariables();
|
|
226
295
|
globals.blockNumber = blockNumber;
|
|
227
296
|
globals.timestamp = this.nextBlockTimestamp;
|
|
@@ -229,7 +298,8 @@ export class TXEOracleTopLevelContext {
|
|
|
229
298
|
globals.version = this.version;
|
|
230
299
|
globals.gasFees = GasFees.empty();
|
|
231
300
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
232
|
-
const
|
|
301
|
+
const bindings = this.logger.getBindings();
|
|
302
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore), bindings);
|
|
233
303
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
234
304
|
const config = PublicSimulatorConfig.from({
|
|
235
305
|
skipFeeEnforcement: true,
|
|
@@ -238,7 +308,7 @@ export class TXEOracleTopLevelContext {
|
|
|
238
308
|
collectStatistics: false,
|
|
239
309
|
collectCallMetadata: true
|
|
240
310
|
});
|
|
241
|
-
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config), new TestDateProvider());
|
|
311
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config, bindings), new TestDateProvider(), undefined, createLogger('simulator:public-processor', bindings));
|
|
242
312
|
const tx = await Tx.create({
|
|
243
313
|
data: publicInputs,
|
|
244
314
|
chonkProof: ChonkProof.empty(),
|
|
@@ -259,7 +329,7 @@ export class TXEOracleTopLevelContext {
|
|
|
259
329
|
} else if (!processedTx.revertCode.isOK()) {
|
|
260
330
|
if (processedTx.revertReason) {
|
|
261
331
|
try {
|
|
262
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
332
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
263
333
|
// eslint-disable-next-line no-empty
|
|
264
334
|
} catch {}
|
|
265
335
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -281,22 +351,21 @@ export class TXEOracleTopLevelContext {
|
|
|
281
351
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
282
352
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
283
353
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
284
|
-
const
|
|
354
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
285
355
|
txEffect
|
|
286
356
|
]);
|
|
287
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
288
357
|
await this.stateMachine.handleL2Block(l2Block);
|
|
289
358
|
await forkedWorldTrees.close();
|
|
290
359
|
return executionResult.returnValues ?? [];
|
|
291
360
|
}
|
|
292
361
|
async txePublicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
293
|
-
this.logger.verbose(`Executing public function ${await this.
|
|
362
|
+
this.logger.verbose(`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
294
363
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
295
364
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
296
365
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
297
366
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
298
367
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
299
|
-
const anchorBlockHeader = await this.
|
|
368
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
300
369
|
const calldataHash = await computeCalldataHash(calldata);
|
|
301
370
|
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
302
371
|
const globals = makeGlobalVariables();
|
|
@@ -306,7 +375,8 @@ export class TXEOracleTopLevelContext {
|
|
|
306
375
|
globals.version = this.version;
|
|
307
376
|
globals.gasFees = GasFees.empty();
|
|
308
377
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
309
|
-
const
|
|
378
|
+
const bindings2 = this.logger.getBindings();
|
|
379
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore), bindings2);
|
|
310
380
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
311
381
|
const config = PublicSimulatorConfig.from({
|
|
312
382
|
skipFeeEnforcement: true,
|
|
@@ -315,8 +385,8 @@ export class TXEOracleTopLevelContext {
|
|
|
315
385
|
collectStatistics: false,
|
|
316
386
|
collectCallMetadata: true
|
|
317
387
|
});
|
|
318
|
-
const simulator = new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config);
|
|
319
|
-
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider());
|
|
388
|
+
const simulator = new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config, bindings2);
|
|
389
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider(), undefined, createLogger('simulator:public-processor', bindings2));
|
|
320
390
|
// We're simulating a scenario in which private execution immediately enqueues a public call and halts. The private
|
|
321
391
|
// kernel init would in this case inject a nullifier with the transaction request hash as a non-revertible
|
|
322
392
|
// side-effect, which the AVM then expects to exist in order to use it as the nonce generator when siloing notes as
|
|
@@ -352,7 +422,7 @@ export class TXEOracleTopLevelContext {
|
|
|
352
422
|
} else if (!processedTx.revertCode.isOK()) {
|
|
353
423
|
if (processedTx.revertReason) {
|
|
354
424
|
try {
|
|
355
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
425
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
356
426
|
// eslint-disable-next-line no-empty
|
|
357
427
|
} catch {}
|
|
358
428
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -375,25 +445,37 @@ export class TXEOracleTopLevelContext {
|
|
|
375
445
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
376
446
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
377
447
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
378
|
-
const
|
|
448
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
379
449
|
txEffect
|
|
380
450
|
]);
|
|
381
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
382
451
|
await this.stateMachine.handleL2Block(l2Block);
|
|
383
452
|
await forkedWorldTrees.close();
|
|
384
453
|
return returnValues ?? [];
|
|
385
454
|
}
|
|
386
455
|
async txeSimulateUtilityFunction(targetContractAddress, functionSelector, args) {
|
|
387
|
-
const artifact = await this.
|
|
456
|
+
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
388
457
|
if (!artifact) {
|
|
389
458
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
390
459
|
}
|
|
391
|
-
|
|
460
|
+
// Sync notes before executing utility function to discover notes from previous transactions
|
|
461
|
+
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
462
|
+
await this.stateMachine.contractSyncService.ensureContractSynced(targetContractAddress, functionSelector, async (call)=>{
|
|
463
|
+
await this.executeUtilityCall(call);
|
|
464
|
+
}, blockHeader, this.jobId);
|
|
465
|
+
const call = FunctionCall.from({
|
|
392
466
|
name: artifact.name,
|
|
467
|
+
to: targetContractAddress,
|
|
393
468
|
selector: functionSelector,
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
469
|
+
type: FunctionType.UTILITY,
|
|
470
|
+
hideMsgSender: false,
|
|
471
|
+
isStatic: false,
|
|
472
|
+
args,
|
|
473
|
+
returnTypes: []
|
|
474
|
+
});
|
|
475
|
+
return this.executeUtilityCall(call);
|
|
476
|
+
}
|
|
477
|
+
async executeUtilityCall(call, scopes) {
|
|
478
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
397
479
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
398
480
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
399
481
|
}
|
|
@@ -402,8 +484,25 @@ export class TXEOracleTopLevelContext {
|
|
|
402
484
|
selector: call.selector
|
|
403
485
|
});
|
|
404
486
|
try {
|
|
405
|
-
const
|
|
406
|
-
const
|
|
487
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
488
|
+
const oracle = new UtilityExecutionOracle({
|
|
489
|
+
contractAddress: call.to,
|
|
490
|
+
authWitnesses: [],
|
|
491
|
+
capsules: [],
|
|
492
|
+
anchorBlockHeader,
|
|
493
|
+
contractStore: this.contractStore,
|
|
494
|
+
noteStore: this.noteStore,
|
|
495
|
+
keyStore: this.keyStore,
|
|
496
|
+
addressStore: this.addressStore,
|
|
497
|
+
aztecNode: this.stateMachine.node,
|
|
498
|
+
recipientTaggingStore: this.recipientTaggingStore,
|
|
499
|
+
senderAddressBookStore: this.senderAddressBookStore,
|
|
500
|
+
capsuleStore: this.capsuleStore,
|
|
501
|
+
privateEventStore: this.privateEventStore,
|
|
502
|
+
jobId: this.jobId,
|
|
503
|
+
scopes
|
|
504
|
+
});
|
|
505
|
+
const acirExecutionResult = await new WASMSimulator().executeUserCircuit(toACVMWitness(0, call.args), entryPointArtifact, new Oracle(oracle).toACIRCallback()).catch((err)=>{
|
|
407
506
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
408
507
|
throw new ExecutionError(err.message, {
|
|
409
508
|
contractAddress: call.to,
|
package/dest/rpc_translator.d.ts
CHANGED
|
@@ -37,6 +37,9 @@ export declare class RPCTranslator {
|
|
|
37
37
|
txeSetUtilityTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle): Promise<{
|
|
38
38
|
values: (string | ForeignCallArray)[];
|
|
39
39
|
}>;
|
|
40
|
+
txeGetDefaultAddress(): {
|
|
41
|
+
values: (string | ForeignCallArray)[];
|
|
42
|
+
};
|
|
40
43
|
txeGetNextBlockNumber(): Promise<{
|
|
41
44
|
values: (string | ForeignCallArray)[];
|
|
42
45
|
}>;
|
|
@@ -73,22 +76,25 @@ export declare class RPCTranslator {
|
|
|
73
76
|
txeGetLastTxEffects(): Promise<{
|
|
74
77
|
values: (string | ForeignCallArray)[];
|
|
75
78
|
}>;
|
|
79
|
+
txeGetPrivateEvents(foreignSelector: ForeignCallSingle, foreignContractAddress: ForeignCallSingle, foreignScope: ForeignCallSingle): Promise<{
|
|
80
|
+
values: (string | ForeignCallArray)[];
|
|
81
|
+
}>;
|
|
76
82
|
privateStoreInExecutionCache(foreignValues: ForeignCallArray, foreignHash: ForeignCallSingle): {
|
|
77
83
|
values: (string | ForeignCallArray)[];
|
|
78
84
|
};
|
|
79
85
|
privateLoadFromExecutionCache(foreignHash: ForeignCallSingle): Promise<{
|
|
80
86
|
values: (string | ForeignCallArray)[];
|
|
81
87
|
}>;
|
|
82
|
-
utilityDebugLog(foreignLevel: ForeignCallSingle, foreignMessage: ForeignCallArray, _foreignLength: ForeignCallSingle, foreignFields: ForeignCallArray): {
|
|
88
|
+
utilityDebugLog(foreignLevel: ForeignCallSingle, foreignMessage: ForeignCallArray, _foreignLength: ForeignCallSingle, foreignFields: ForeignCallArray): Promise<{
|
|
83
89
|
values: (string | ForeignCallArray)[];
|
|
84
|
-
}
|
|
85
|
-
utilityStorageRead(
|
|
90
|
+
}>;
|
|
91
|
+
utilityStorageRead(foreignBlockHash: ForeignCallSingle, foreignContractAddress: ForeignCallSingle, foreignStartStorageSlot: ForeignCallSingle, foreignNumberOfElements: ForeignCallSingle): Promise<{
|
|
86
92
|
values: (string | ForeignCallArray)[];
|
|
87
93
|
}>;
|
|
88
|
-
utilityGetPublicDataWitness(
|
|
94
|
+
utilityGetPublicDataWitness(foreignBlockHash: ForeignCallSingle, foreignLeafSlot: ForeignCallSingle): Promise<{
|
|
89
95
|
values: (string | ForeignCallArray)[];
|
|
90
96
|
}>;
|
|
91
|
-
utilityGetNotes(foreignOwnerIsSome: ForeignCallSingle, foreignOwnerValue: ForeignCallSingle, foreignStorageSlot: ForeignCallSingle, foreignNumSelects: ForeignCallSingle, foreignSelectByIndexes: ForeignCallArray, foreignSelectByOffsets: ForeignCallArray, foreignSelectByLengths: ForeignCallArray, foreignSelectValues: ForeignCallArray, foreignSelectComparators: ForeignCallArray, foreignSortByIndexes: ForeignCallArray, foreignSortByOffsets: ForeignCallArray, foreignSortByLengths: ForeignCallArray, foreignSortOrder: ForeignCallArray, foreignLimit: ForeignCallSingle, foreignOffset: ForeignCallSingle, foreignStatus: ForeignCallSingle, foreignMaxNotes: ForeignCallSingle,
|
|
97
|
+
utilityGetNotes(foreignOwnerIsSome: ForeignCallSingle, foreignOwnerValue: ForeignCallSingle, foreignStorageSlot: ForeignCallSingle, foreignNumSelects: ForeignCallSingle, foreignSelectByIndexes: ForeignCallArray, foreignSelectByOffsets: ForeignCallArray, foreignSelectByLengths: ForeignCallArray, foreignSelectValues: ForeignCallArray, foreignSelectComparators: ForeignCallArray, foreignSortByIndexes: ForeignCallArray, foreignSortByOffsets: ForeignCallArray, foreignSortByLengths: ForeignCallArray, foreignSortOrder: ForeignCallArray, foreignLimit: ForeignCallSingle, foreignOffset: ForeignCallSingle, foreignStatus: ForeignCallSingle, foreignMaxNotes: ForeignCallSingle, foreignPackedHintedNoteLength: ForeignCallSingle): Promise<{
|
|
92
98
|
values: (string | ForeignCallArray)[];
|
|
93
99
|
}>;
|
|
94
100
|
privateNotifyCreatedNote(foreignOwner: ForeignCallSingle, foreignStorageSlot: ForeignCallSingle, foreignRandomness: ForeignCallSingle, foreignNoteTypeId: ForeignCallSingle, foreignNote: ForeignCallArray, foreignNoteHash: ForeignCallSingle, foreignCounter: ForeignCallSingle): {
|
|
@@ -100,20 +106,23 @@ export declare class RPCTranslator {
|
|
|
100
106
|
privateNotifyCreatedNullifier(foreignInnerNullifier: ForeignCallSingle): Promise<{
|
|
101
107
|
values: (string | ForeignCallArray)[];
|
|
102
108
|
}>;
|
|
109
|
+
privateIsNullifierPending(foreignInnerNullifier: ForeignCallSingle, foreignContractAddress: ForeignCallSingle): Promise<{
|
|
110
|
+
values: (string | ForeignCallArray)[];
|
|
111
|
+
}>;
|
|
103
112
|
utilityCheckNullifierExists(foreignInnerNullifier: ForeignCallSingle): Promise<{
|
|
104
113
|
values: (string | ForeignCallArray)[];
|
|
105
114
|
}>;
|
|
106
115
|
utilityGetContractInstance(foreignAddress: ForeignCallSingle): Promise<{
|
|
107
116
|
values: (string | ForeignCallArray)[];
|
|
108
117
|
}>;
|
|
109
|
-
|
|
118
|
+
utilityTryGetPublicKeysAndPartialAddress(foreignAddress: ForeignCallSingle): Promise<{
|
|
110
119
|
values: (string | ForeignCallArray)[];
|
|
111
120
|
}>;
|
|
112
121
|
utilityGetKeyValidationRequest(foreignPkMHash: ForeignCallSingle): Promise<{
|
|
113
122
|
values: (string | ForeignCallArray)[];
|
|
114
123
|
}>;
|
|
115
124
|
privateCallPrivateFunction(_foreignTargetContractAddress: ForeignCallSingle, _foreignFunctionSelector: ForeignCallSingle, _foreignArgsHash: ForeignCallSingle, _foreignSideEffectCounter: ForeignCallSingle, _foreignIsStaticCall: ForeignCallSingle): void;
|
|
116
|
-
utilityGetNullifierMembershipWitness(
|
|
125
|
+
utilityGetNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
|
|
117
126
|
values: (string | ForeignCallArray)[];
|
|
118
127
|
}>;
|
|
119
128
|
utilityGetAuthWitness(foreignMessageHash: ForeignCallSingle): Promise<{
|
|
@@ -125,22 +134,25 @@ export declare class RPCTranslator {
|
|
|
125
134
|
privateIsSideEffectCounterRevertible(foreignSideEffectCounter: ForeignCallSingle): Promise<{
|
|
126
135
|
values: (string | ForeignCallArray)[];
|
|
127
136
|
}>;
|
|
128
|
-
utilityGetUtilityContext():
|
|
137
|
+
utilityGetUtilityContext(): {
|
|
129
138
|
values: (string | ForeignCallArray)[];
|
|
130
|
-
}
|
|
139
|
+
};
|
|
131
140
|
utilityGetBlockHeader(foreignBlockNumber: ForeignCallSingle): Promise<{
|
|
132
141
|
values: (string | ForeignCallArray)[];
|
|
133
142
|
}>;
|
|
134
|
-
|
|
143
|
+
utilityGetNoteHashMembershipWitness(foreignAnchorBlockHash: ForeignCallSingle, foreignNoteHash: ForeignCallSingle): Promise<{
|
|
144
|
+
values: (string | ForeignCallArray)[];
|
|
145
|
+
}>;
|
|
146
|
+
utilityGetBlockHashMembershipWitness(foreignAnchorBlockHash: ForeignCallSingle, foreignBlockHash: ForeignCallSingle): Promise<{
|
|
135
147
|
values: (string | ForeignCallArray)[];
|
|
136
148
|
}>;
|
|
137
|
-
utilityGetLowNullifierMembershipWitness(
|
|
149
|
+
utilityGetLowNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
|
|
138
150
|
values: (string | ForeignCallArray)[];
|
|
139
151
|
}>;
|
|
140
152
|
utilityFetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
141
153
|
values: (string | ForeignCallArray)[];
|
|
142
154
|
}>;
|
|
143
|
-
|
|
155
|
+
utilityValidateAndStoreEnqueuedNotesAndEvents(foreignContractAddress: ForeignCallSingle, foreignNoteValidationRequestsArrayBaseSlot: ForeignCallSingle, foreignEventValidationRequestsArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
144
156
|
values: (string | ForeignCallArray)[];
|
|
145
157
|
}>;
|
|
146
158
|
utilityBulkRetrieveLogs(foreignContractAddress: ForeignCallSingle, foreignLogRetrievalRequestsArrayBaseSlot: ForeignCallSingle, foreignLogRetrievalResponsesArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
@@ -168,7 +180,7 @@ export declare class RPCTranslator {
|
|
|
168
180
|
avmOpcodeEmitUnencryptedLog(_foreignMessage: ForeignCallArray): {
|
|
169
181
|
values: (string | ForeignCallArray)[];
|
|
170
182
|
};
|
|
171
|
-
avmOpcodeStorageRead(foreignSlot: ForeignCallSingle): Promise<{
|
|
183
|
+
avmOpcodeStorageRead(foreignSlot: ForeignCallSingle, foreignContractAddress: ForeignCallSingle): Promise<{
|
|
172
184
|
values: (string | ForeignCallArray)[];
|
|
173
185
|
}>;
|
|
174
186
|
avmOpcodeStorageWrite(foreignSlot: ForeignCallSingle, foreignValue: ForeignCallSingle): Promise<{
|
|
@@ -192,7 +204,7 @@ export declare class RPCTranslator {
|
|
|
192
204
|
avmOpcodeEmitNoteHash(foreignNoteHash: ForeignCallSingle): Promise<{
|
|
193
205
|
values: (string | ForeignCallArray)[];
|
|
194
206
|
}>;
|
|
195
|
-
avmOpcodeNullifierExists(
|
|
207
|
+
avmOpcodeNullifierExists(foreignSiloedNullifier: ForeignCallSingle): Promise<{
|
|
196
208
|
values: (string | ForeignCallArray)[];
|
|
197
209
|
}>;
|
|
198
210
|
avmOpcodeAddress(): Promise<{
|
|
@@ -237,4 +249,4 @@ export declare class RPCTranslator {
|
|
|
237
249
|
values: (string | ForeignCallArray)[];
|
|
238
250
|
}>;
|
|
239
251
|
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjX3RyYW5zbGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ycGNfdHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTdFLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyx1QkFBdUIsRUFFN0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBaUQsTUFBTSxtQkFBbUIsQ0FBQztBQUl6RyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssaUJBQWlCLEVBWXZCLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIscUJBQWEsc0JBQXVCLFNBQVEsS0FBSztJQUMvQyxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBRTdCO0NBQ0Y7QUFFRCxxQkFBYSxhQUFhO0lBV3RCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLE9BQU8sQ0FBQyxhQUFhO0lBWHZCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDVSxZQUFZLEVBQUUsc0JBQXNCLEVBQ3BDLGFBQWEsRUFDakIsV0FBVyxHQUNYLHVCQUF1QixHQUN2Qix1QkFBdUIsR0FDdkIsbUJBQW1CLEdBQ25CLG1CQUFtQixFQUNyQjtJQUtKLE9BQU8sQ0FBQyxhQUFhO0lBUXJCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFReEIsT0FBTyxDQUFDLGdCQUFnQjtJQVF4QixPQUFPLENBQUMsWUFBWTtJQVFwQixPQUFPLENBQUMsWUFBWTtJQVVkLHdCQUF3Qjs7T0FJN0I7SUFFSyx1QkFBdUIsQ0FDM0IsNEJBQTRCLEVBQUUsaUJBQWlCLEVB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_translator.d.ts","sourceRoot":"","sources":["../src/rpc_translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAI7E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAE7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"rpc_translator.d.ts","sourceRoot":"","sources":["../src/rpc_translator.ts"],"names":[],"mappings":"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"}
|