@aztec/txe 0.0.1-commit.b655e406 → 0.0.1-commit.c2595eba
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 +1 -1
- 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 +11 -8
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +7 -7
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +10 -12
- package/dest/oracle/txe_oracle_top_level_context.d.ts +22 -12
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +128 -80
- package/dest/rpc_translator.d.ts +31 -16
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +113 -51
- package/dest/state_machine/archiver.d.ts +21 -51
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +61 -94
- package/dest/state_machine/dummy_p2p_client.d.ts +9 -6
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +16 -8
- package/dest/state_machine/global_variable_builder.d.ts +6 -4
- 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 +5 -5
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +31 -19
- package/dest/state_machine/mock_epoch_cache.d.ts +12 -10
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +17 -13
- package/dest/state_machine/synchronizer.d.ts +3 -2
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +5 -4
- package/dest/txe_session.d.ts +21 -13
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +97 -48
- package/dest/util/encoding.d.ts +615 -16
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/encoding.js +1 -1
- package/dest/util/expected_failure_error.d.ts +1 -1
- package/dest/util/expected_failure_error.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 +7 -6
- package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.js +11 -11
- package/dest/utils/block_creation.d.ts +21 -6
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +36 -4
- package/dest/utils/tx_effect_creation.d.ts +3 -3
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +4 -7
- package/package.json +18 -17
- package/src/constants.ts +3 -0
- package/src/index.ts +15 -12
- package/src/oracle/interfaces.ts +10 -7
- package/src/oracle/txe_oracle_public_context.ts +12 -19
- package/src/oracle/txe_oracle_top_level_context.ts +194 -106
- package/src/rpc_translator.ts +139 -62
- package/src/state_machine/archiver.ts +61 -117
- package/src/state_machine/dummy_p2p_client.ts +22 -10
- package/src/state_machine/global_variable_builder.ts +22 -4
- package/src/state_machine/index.ts +40 -17
- package/src/state_machine/mock_epoch_cache.ts +20 -20
- package/src/state_machine/synchronizer.ts +6 -5
- package/src/txe_session.ts +195 -82
- package/src/util/encoding.ts +1 -1
- 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 +13 -12
- package/src/utils/block_creation.ts +47 -14
- package/src/utils/tx_effect_creation.ts +5 -12
- 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
|
@@ -1,34 +1,42 @@
|
|
|
1
1
|
import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS, DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT, DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Schnorr } from '@aztec/foundation/crypto/schnorr';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
5
|
import { LogLevels, applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
5
6
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
6
|
-
import { ORACLE_VERSION, enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
7
|
+
import { ORACLE_VERSION, enrichPublicSimulationError, syncState } from '@aztec/pxe/server';
|
|
7
8
|
import { ExecutionNoteCache, ExecutionTaggingIndexCache, HashedValuesCache, Oracle, PrivateExecutionOracle, UtilityExecutionOracle, executePrivateFunction, generateSimulatedProvingResult } from '@aztec/pxe/simulator';
|
|
8
9
|
import { ExecutionError, WASMSimulator, createSimulationError, extractCallStack, resolveAssertionMessageFromError, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
|
|
9
|
-
import { GuardedMerkleTreeOperations, PublicContractsDB, PublicProcessor
|
|
10
|
-
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
10
|
+
import { CppPublicTxSimulator, GuardedMerkleTreeOperations, PublicContractsDB, PublicProcessor } from '@aztec/simulator/server';
|
|
11
|
+
import { FunctionCall, FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
11
12
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
13
|
+
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
12
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
13
|
-
import { Body, L2Block } from '@aztec/stdlib/block';
|
|
14
15
|
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
15
16
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
16
|
-
import { computeCalldataHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
17
|
+
import { computeCalldataHash, computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
17
18
|
import { PartialPrivateTailPublicInputsForPublic, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
18
19
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
19
|
-
import {
|
|
20
|
+
import { makeGlobalVariables } from '@aztec/stdlib/testing';
|
|
20
21
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
21
22
|
import { CallContext, HashedValues, PrivateExecutionResult, Tx, TxConstantData, TxContext, TxEffect, TxHash, collectNested } from '@aztec/stdlib/tx';
|
|
22
23
|
import { ForkCheckpoint } from '@aztec/world-state';
|
|
24
|
+
import { DEFAULT_ADDRESS } from '../constants.js';
|
|
23
25
|
import { TXEPublicContractDataSource } from '../util/txe_public_contract_data_source.js';
|
|
24
|
-
import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees,
|
|
26
|
+
import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees, makeTXEBlock } from '../utils/block_creation.js';
|
|
25
27
|
export class TXEOracleTopLevelContext {
|
|
26
28
|
stateMachine;
|
|
27
|
-
|
|
29
|
+
contractStore;
|
|
30
|
+
noteStore;
|
|
28
31
|
keyStore;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
addressStore;
|
|
33
|
+
accountStore;
|
|
34
|
+
senderTaggingStore;
|
|
35
|
+
recipientTaggingStore;
|
|
36
|
+
senderAddressBookStore;
|
|
37
|
+
capsuleStore;
|
|
38
|
+
privateEventStore;
|
|
39
|
+
jobId;
|
|
32
40
|
nextBlockTimestamp;
|
|
33
41
|
version;
|
|
34
42
|
chainId;
|
|
@@ -36,13 +44,19 @@ export class TXEOracleTopLevelContext {
|
|
|
36
44
|
isMisc;
|
|
37
45
|
isTxe;
|
|
38
46
|
logger;
|
|
39
|
-
constructor(stateMachine,
|
|
47
|
+
constructor(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, jobId, nextBlockTimestamp, version, chainId, authwits){
|
|
40
48
|
this.stateMachine = stateMachine;
|
|
41
|
-
this.
|
|
49
|
+
this.contractStore = contractStore;
|
|
50
|
+
this.noteStore = noteStore;
|
|
42
51
|
this.keyStore = keyStore;
|
|
43
|
-
this.
|
|
44
|
-
this.
|
|
45
|
-
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;
|
|
46
60
|
this.nextBlockTimestamp = nextBlockTimestamp;
|
|
47
61
|
this.version = version;
|
|
48
62
|
this.chainId = chainId;
|
|
@@ -72,8 +86,11 @@ export class TXEOracleTopLevelContext {
|
|
|
72
86
|
module: `${this.logger.module}:debug_log`
|
|
73
87
|
});
|
|
74
88
|
}
|
|
89
|
+
txeGetDefaultAddress() {
|
|
90
|
+
return DEFAULT_ADDRESS;
|
|
91
|
+
}
|
|
75
92
|
async txeGetNextBlockNumber() {
|
|
76
|
-
return await this.getLastBlockNumber() + 1;
|
|
93
|
+
return BlockNumber(await this.getLastBlockNumber() + 1);
|
|
77
94
|
}
|
|
78
95
|
txeGetNextBlockTimestamp() {
|
|
79
96
|
return Promise.resolve(this.nextBlockTimestamp);
|
|
@@ -82,7 +99,8 @@ export class TXEOracleTopLevelContext {
|
|
|
82
99
|
return (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
|
|
83
100
|
}
|
|
84
101
|
async txeGetLastTxEffects() {
|
|
85
|
-
const
|
|
102
|
+
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
103
|
+
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
86
104
|
if (block.body.txEffects.length != 1) {
|
|
87
105
|
// Note that calls like env.mine() will result in blocks with no transactions, hitting this
|
|
88
106
|
throw new Error(`Expected a single transaction in the last block, found ${block.body.txEffects.length}`);
|
|
@@ -94,6 +112,16 @@ export class TXEOracleTopLevelContext {
|
|
|
94
112
|
nullifiers: txEffects.nullifiers
|
|
95
113
|
};
|
|
96
114
|
}
|
|
115
|
+
async txeGetPrivateEvents(selector, contractAddress, scope) {
|
|
116
|
+
return (await this.privateEventStore.getPrivateEvents(selector, {
|
|
117
|
+
contractAddress,
|
|
118
|
+
scopes: [
|
|
119
|
+
scope
|
|
120
|
+
],
|
|
121
|
+
fromBlock: 0,
|
|
122
|
+
toBlock: await this.getLastBlockNumber() + 1
|
|
123
|
+
})).map((e)=>e.packedEvent);
|
|
124
|
+
}
|
|
97
125
|
async txeAdvanceBlocksBy(blocks) {
|
|
98
126
|
this.logger.debug(`time traveling ${blocks} blocks`);
|
|
99
127
|
for(let i = 0; i < blocks; i++){
|
|
@@ -114,32 +142,32 @@ export class TXEOracleTopLevelContext {
|
|
|
114
142
|
if (!secret.equals(Fr.ZERO)) {
|
|
115
143
|
await this.txeAddAccount(artifact, instance, secret);
|
|
116
144
|
} else {
|
|
117
|
-
await this.
|
|
118
|
-
await this.
|
|
145
|
+
await this.contractStore.addContractInstance(instance);
|
|
146
|
+
await this.contractStore.addContractArtifact(instance.currentContractClassId, artifact);
|
|
119
147
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
120
148
|
}
|
|
121
149
|
}
|
|
122
150
|
async txeAddAccount(artifact, instance, secret) {
|
|
123
151
|
const partialAddress = await computePartialAddress(instance);
|
|
124
152
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
125
|
-
await this.
|
|
126
|
-
await this.
|
|
153
|
+
await this.contractStore.addContractInstance(instance);
|
|
154
|
+
await this.contractStore.addContractArtifact(instance.currentContractClassId, artifact);
|
|
127
155
|
const completeAddress = await this.keyStore.addAccount(secret, partialAddress);
|
|
128
|
-
await this.
|
|
129
|
-
await this.
|
|
156
|
+
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
157
|
+
await this.addressStore.addCompleteAddress(completeAddress);
|
|
130
158
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
131
159
|
return completeAddress;
|
|
132
160
|
}
|
|
133
161
|
async txeCreateAccount(secret) {
|
|
134
|
-
// This is a
|
|
162
|
+
// This is a foot gun !
|
|
135
163
|
const completeAddress = await this.keyStore.addAccount(secret, secret);
|
|
136
|
-
await this.
|
|
137
|
-
await this.
|
|
164
|
+
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
165
|
+
await this.addressStore.addCompleteAddress(completeAddress);
|
|
138
166
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
139
167
|
return completeAddress;
|
|
140
168
|
}
|
|
141
169
|
async txeAddAuthWitness(address, messageHash) {
|
|
142
|
-
const account = await this.
|
|
170
|
+
const account = await this.accountStore.getAccount(address);
|
|
143
171
|
const privateKey = await this.keyStore.getMasterSecretKey(account.publicKeys.masterIncomingViewingPublicKey);
|
|
144
172
|
const schnorr = new Schnorr();
|
|
145
173
|
const signature = await schnorr.constructSignature(messageHash.toBuffer(), privateKey);
|
|
@@ -158,39 +186,50 @@ export class TXEOracleTopLevelContext {
|
|
|
158
186
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
159
187
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
160
188
|
await insertTxEffectIntoWorldTrees(txEffect, forkedWorldTrees);
|
|
161
|
-
const
|
|
189
|
+
const globals = makeGlobalVariables(undefined, {
|
|
162
190
|
blockNumber,
|
|
163
191
|
timestamp: this.nextBlockTimestamp,
|
|
164
192
|
version: this.version,
|
|
165
193
|
chainId: this.chainId
|
|
166
|
-
})
|
|
194
|
+
});
|
|
195
|
+
const block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
167
196
|
txEffect
|
|
168
|
-
])
|
|
197
|
+
]);
|
|
169
198
|
await forkedWorldTrees.close();
|
|
170
199
|
this.logger.info(`Created block ${blockNumber} with timestamp ${block.header.globalVariables.timestamp}`);
|
|
171
200
|
await this.stateMachine.handleL2Block(block);
|
|
172
201
|
}
|
|
173
202
|
async txePrivateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false) {
|
|
174
|
-
this.logger.verbose(`Executing external function ${await this.
|
|
175
|
-
const artifact = await this.
|
|
203
|
+
this.logger.verbose(`Executing external function ${await this.contractStore.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
204
|
+
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
176
205
|
if (!artifact) {
|
|
177
206
|
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';
|
|
178
207
|
throw new Error(message);
|
|
179
208
|
}
|
|
209
|
+
// Sync notes before executing private function to discover notes from previous transactions
|
|
210
|
+
const utilityExecutor = async (call)=>{
|
|
211
|
+
await this.executeUtilityCall(call);
|
|
212
|
+
};
|
|
213
|
+
await syncState(targetContractAddress, this.contractStore, functionSelector, utilityExecutor);
|
|
180
214
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
181
215
|
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
182
216
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
183
217
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
184
218
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
185
219
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
186
|
-
const blockHeader = await this.
|
|
187
|
-
const
|
|
188
|
-
const noteCache = new ExecutionNoteCache(
|
|
220
|
+
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
221
|
+
const protocolNullifier = await computeProtocolNullifier(getSingleTxBlockRequestHash(blockNumber));
|
|
222
|
+
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
223
|
+
// In production, the account contract sets the min revertible counter before calling the app function.
|
|
224
|
+
// Since TXE bypasses the account contract, we simulate this by setting minRevertibleSideEffectCounter to 1,
|
|
225
|
+
// marking all side effects as revertible.
|
|
226
|
+
const minRevertibleSideEffectCounter = 1;
|
|
227
|
+
await noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
|
|
189
228
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
190
229
|
const simulator = new WASMSimulator();
|
|
191
|
-
const privateExecutionOracle = new PrivateExecutionOracle(argsHash, txContext, callContext, /** Header of a block whose state is used during private execution (not the block the transaction is included in). */ blockHeader, /** List of transient auth witnesses to be used during this simulation */ Array.from(this.authwits.values()), /** List of transient auth witnesses to be used during this simulation */ [], HashedValuesCache.create([
|
|
230
|
+
const privateExecutionOracle = new PrivateExecutionOracle(argsHash, txContext, callContext, /** Header of a block whose state is used during private execution (not the block the transaction is included in). */ blockHeader, utilityExecutor, /** List of transient auth witnesses to be used during this simulation */ Array.from(this.authwits.values()), /** List of transient auth witnesses to be used during this simulation */ [], HashedValuesCache.create([
|
|
192
231
|
new HashedValues(args, argsHash)
|
|
193
|
-
]), noteCache, taggingIndexCache, this.
|
|
232
|
+
]), noteCache, taggingIndexCache, this.contractStore, this.noteStore, this.keyStore, this.addressStore, this.stateMachine.node, this.stateMachine.anchorBlockStore, this.senderTaggingStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.jobId, 0, minRevertibleSideEffectCounter, undefined, undefined, /**
|
|
194
233
|
* In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
195
234
|
* contract would perform, including setting senderForTags.
|
|
196
235
|
*/ from, simulator);
|
|
@@ -208,18 +247,16 @@ export class TXEOracleTopLevelContext {
|
|
|
208
247
|
const calldata = await privateExecutionOracle.privateLoadFromExecutionCache(r.calldataHash);
|
|
209
248
|
return new HashedValues(calldata, r.calldataHash);
|
|
210
249
|
}));
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
result = new PrivateExecutionResult(executionResult, Fr.ZERO, publicFunctionsCalldata);
|
|
250
|
+
noteCache.finish();
|
|
251
|
+
const nonceGenerator = noteCache.getNonceGenerator();
|
|
252
|
+
result = new PrivateExecutionResult(executionResult, nonceGenerator, publicFunctionsCalldata);
|
|
215
253
|
} catch (err) {
|
|
216
254
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
217
255
|
}
|
|
218
|
-
// According to the protocol rules,
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
const
|
|
222
|
-
const { publicInputs } = await generateSimulatedProvingResult(result, nonceGenerator, this.contractDataProvider);
|
|
256
|
+
// According to the protocol rules, there must be at least one nullifier in the tx. The first nullifier is used as
|
|
257
|
+
// the nonce generator for the note hashes.
|
|
258
|
+
// We pass the non-zero minRevertibleSideEffectCounter to make sure the side effects are split correctly.
|
|
259
|
+
const { publicInputs } = await generateSimulatedProvingResult(result, this.contractStore, minRevertibleSideEffectCounter);
|
|
223
260
|
const globals = makeGlobalVariables();
|
|
224
261
|
globals.blockNumber = blockNumber;
|
|
225
262
|
globals.timestamp = this.nextBlockTimestamp;
|
|
@@ -227,12 +264,17 @@ export class TXEOracleTopLevelContext {
|
|
|
227
264
|
globals.version = this.version;
|
|
228
265
|
globals.gasFees = GasFees.empty();
|
|
229
266
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
230
|
-
const
|
|
267
|
+
const bindings = this.logger.getBindings();
|
|
268
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore), bindings);
|
|
231
269
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
270
|
+
const config = PublicSimulatorConfig.from({
|
|
271
|
+
skipFeeEnforcement: true,
|
|
272
|
+
collectDebugLogs: true,
|
|
273
|
+
collectHints: false,
|
|
274
|
+
collectStatistics: false,
|
|
275
|
+
collectCallMetadata: true
|
|
276
|
+
});
|
|
277
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config, bindings), new TestDateProvider(), undefined, createLogger('simulator:public-processor', bindings));
|
|
236
278
|
const tx = await Tx.create({
|
|
237
279
|
data: publicInputs,
|
|
238
280
|
chonkProof: ChonkProof.empty(),
|
|
@@ -253,7 +295,7 @@ export class TXEOracleTopLevelContext {
|
|
|
253
295
|
} else if (!processedTx.revertCode.isOK()) {
|
|
254
296
|
if (processedTx.revertReason) {
|
|
255
297
|
try {
|
|
256
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
298
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
257
299
|
// eslint-disable-next-line no-empty
|
|
258
300
|
} catch {}
|
|
259
301
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -275,22 +317,21 @@ export class TXEOracleTopLevelContext {
|
|
|
275
317
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
276
318
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
277
319
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
278
|
-
const
|
|
320
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
279
321
|
txEffect
|
|
280
322
|
]);
|
|
281
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
282
323
|
await this.stateMachine.handleL2Block(l2Block);
|
|
283
324
|
await forkedWorldTrees.close();
|
|
284
325
|
return executionResult.returnValues ?? [];
|
|
285
326
|
}
|
|
286
327
|
async txePublicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
287
|
-
this.logger.verbose(`Executing public function ${await this.
|
|
328
|
+
this.logger.verbose(`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
288
329
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
289
330
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
290
331
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
291
332
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
292
333
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
293
|
-
const anchorBlockHeader = await this.
|
|
334
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
294
335
|
const calldataHash = await computeCalldataHash(calldata);
|
|
295
336
|
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
296
337
|
const globals = makeGlobalVariables();
|
|
@@ -300,21 +341,24 @@ export class TXEOracleTopLevelContext {
|
|
|
300
341
|
globals.version = this.version;
|
|
301
342
|
globals.gasFees = GasFees.empty();
|
|
302
343
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
303
|
-
const
|
|
344
|
+
const bindings2 = this.logger.getBindings();
|
|
345
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore), bindings2);
|
|
304
346
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
347
|
+
const config = PublicSimulatorConfig.from({
|
|
348
|
+
skipFeeEnforcement: true,
|
|
349
|
+
collectDebugLogs: true,
|
|
350
|
+
collectHints: false,
|
|
351
|
+
collectStatistics: false,
|
|
352
|
+
collectCallMetadata: true
|
|
308
353
|
});
|
|
309
|
-
const
|
|
354
|
+
const simulator = new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config, bindings2);
|
|
355
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider(), undefined, createLogger('simulator:public-processor', bindings2));
|
|
310
356
|
// We're simulating a scenario in which private execution immediately enqueues a public call and halts. The private
|
|
311
357
|
// kernel init would in this case inject a nullifier with the transaction request hash as a non-revertible
|
|
312
358
|
// side-effect, which the AVM then expects to exist in order to use it as the nonce generator when siloing notes as
|
|
313
359
|
// unique.
|
|
314
360
|
const nonRevertibleAccumulatedData = PrivateToPublicAccumulatedData.empty();
|
|
315
|
-
|
|
316
|
-
nonRevertibleAccumulatedData.nullifiers[0] = getSingleTxBlockRequestHash(blockNumber);
|
|
317
|
-
}
|
|
361
|
+
nonRevertibleAccumulatedData.nullifiers[0] = getSingleTxBlockRequestHash(blockNumber);
|
|
318
362
|
// The enqueued public call itself we make be revertible so that the public execution is itself revertible, as tests
|
|
319
363
|
// may require producing reverts.
|
|
320
364
|
const revertibleAccumulatedData = PrivateToPublicAccumulatedData.empty();
|
|
@@ -344,7 +388,7 @@ export class TXEOracleTopLevelContext {
|
|
|
344
388
|
} else if (!processedTx.revertCode.isOK()) {
|
|
345
389
|
if (processedTx.revertReason) {
|
|
346
390
|
try {
|
|
347
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
391
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
348
392
|
// eslint-disable-next-line no-empty
|
|
349
393
|
} catch {}
|
|
350
394
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -367,25 +411,27 @@ export class TXEOracleTopLevelContext {
|
|
|
367
411
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
368
412
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
369
413
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
370
|
-
const
|
|
414
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
371
415
|
txEffect
|
|
372
416
|
]);
|
|
373
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
374
417
|
await this.stateMachine.handleL2Block(l2Block);
|
|
375
418
|
await forkedWorldTrees.close();
|
|
376
419
|
return returnValues ?? [];
|
|
377
420
|
}
|
|
378
421
|
async txeSimulateUtilityFunction(targetContractAddress, functionSelector, args) {
|
|
379
|
-
const artifact = await this.
|
|
422
|
+
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
380
423
|
if (!artifact) {
|
|
381
424
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
382
425
|
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
426
|
+
// Sync notes before executing utility function to discover notes from previous transactions
|
|
427
|
+
await syncState(targetContractAddress, this.contractStore, functionSelector, async (call)=>{
|
|
428
|
+
await this.executeUtilityCall(call);
|
|
429
|
+
});
|
|
430
|
+
const call = new FunctionCall(artifact.name, targetContractAddress, functionSelector, FunctionType.UTILITY, false, false, args, []);
|
|
431
|
+
return this.executeUtilityCall(call);
|
|
432
|
+
}
|
|
433
|
+
async executeUtilityCall(call) {
|
|
434
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
389
435
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
390
436
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
391
437
|
}
|
|
@@ -394,8 +440,9 @@ export class TXEOracleTopLevelContext {
|
|
|
394
440
|
selector: call.selector
|
|
395
441
|
});
|
|
396
442
|
try {
|
|
397
|
-
const
|
|
398
|
-
const
|
|
443
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
444
|
+
const oracle = new UtilityExecutionOracle(call.to, [], [], anchorBlockHeader, this.contractStore, this.noteStore, this.keyStore, this.addressStore, this.stateMachine.node, this.stateMachine.anchorBlockStore, this.recipientTaggingStore, this.senderAddressBookStore, this.capsuleStore, this.privateEventStore, this.jobId);
|
|
445
|
+
const acirExecutionResult = await new WASMSimulator().executeUserCircuit(toACVMWitness(0, call.args), entryPointArtifact, new Oracle(oracle).toACIRCallback()).catch((err)=>{
|
|
399
446
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
400
447
|
throw new ExecutionError(err.message, {
|
|
401
448
|
contractAddress: call.to,
|
|
@@ -418,6 +465,7 @@ export class TXEOracleTopLevelContext {
|
|
|
418
465
|
];
|
|
419
466
|
}
|
|
420
467
|
async getLastBlockNumber() {
|
|
421
|
-
|
|
468
|
+
const header = await this.stateMachine.node.getBlockHeader('latest');
|
|
469
|
+
return header ? header.globalVariables.blockNumber : BlockNumber.ZERO;
|
|
422
470
|
}
|
|
423
471
|
}
|
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,7 +76,10 @@ export declare class RPCTranslator {
|
|
|
73
76
|
txeGetLastTxEffects(): Promise<{
|
|
74
77
|
values: (string | ForeignCallArray)[];
|
|
75
78
|
}>;
|
|
76
|
-
|
|
79
|
+
txeGetPrivateEvents(foreignSelector: ForeignCallSingle, foreignContractAddress: ForeignCallSingle, foreignScope: ForeignCallSingle): Promise<{
|
|
80
|
+
values: (string | ForeignCallArray)[];
|
|
81
|
+
}>;
|
|
82
|
+
privateStoreInExecutionCache(foreignValues: ForeignCallArray, foreignHash: ForeignCallSingle): {
|
|
77
83
|
values: (string | ForeignCallArray)[];
|
|
78
84
|
};
|
|
79
85
|
privateLoadFromExecutionCache(foreignHash: ForeignCallSingle): Promise<{
|
|
@@ -82,16 +88,16 @@ export declare class RPCTranslator {
|
|
|
82
88
|
utilityDebugLog(foreignLevel: ForeignCallSingle, foreignMessage: ForeignCallArray, _foreignLength: ForeignCallSingle, foreignFields: ForeignCallArray): {
|
|
83
89
|
values: (string | ForeignCallArray)[];
|
|
84
90
|
};
|
|
85
|
-
utilityStorageRead(
|
|
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(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
|
-
privateNotifyCreatedNote(foreignStorageSlot: ForeignCallSingle, foreignNoteTypeId: ForeignCallSingle, foreignNote: ForeignCallArray, foreignNoteHash: ForeignCallSingle, foreignCounter: ForeignCallSingle): {
|
|
100
|
+
privateNotifyCreatedNote(foreignOwner: ForeignCallSingle, foreignStorageSlot: ForeignCallSingle, foreignRandomness: ForeignCallSingle, foreignNoteTypeId: ForeignCallSingle, foreignNote: ForeignCallArray, foreignNoteHash: ForeignCallSingle, foreignCounter: ForeignCallSingle): {
|
|
95
101
|
values: (string | ForeignCallArray)[];
|
|
96
102
|
};
|
|
97
103
|
privateNotifyNullifiedNote(foreignInnerNullifier: ForeignCallSingle, foreignNoteHash: ForeignCallSingle, foreignCounter: ForeignCallSingle): Promise<{
|
|
@@ -100,6 +106,9 @@ 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
|
}>;
|
|
@@ -113,7 +122,7 @@ export declare class RPCTranslator {
|
|
|
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<{
|
|
@@ -122,22 +131,28 @@ export declare class RPCTranslator {
|
|
|
122
131
|
privateNotifyEnqueuedPublicFunctionCall(_foreignTargetContractAddress: ForeignCallSingle, _foreignCalldataHash: ForeignCallSingle, _foreignSideEffectCounter: ForeignCallSingle, _foreignIsStaticCall: ForeignCallSingle): void;
|
|
123
132
|
privateNotifySetPublicTeardownFunctionCall(_foreignTargetContractAddress: ForeignCallSingle, _foreignCalldataHash: ForeignCallSingle, _foreignSideEffectCounter: ForeignCallSingle, _foreignIsStaticCall: ForeignCallSingle): void;
|
|
124
133
|
privateNotifySetMinRevertibleSideEffectCounter(_foreignMinRevertibleSideEffectCounter: ForeignCallSingle): void;
|
|
125
|
-
|
|
134
|
+
privateIsSideEffectCounterRevertible(foreignSideEffectCounter: ForeignCallSingle): Promise<{
|
|
126
135
|
values: (string | ForeignCallArray)[];
|
|
127
136
|
}>;
|
|
137
|
+
utilityGetUtilityContext(): {
|
|
138
|
+
values: (string | ForeignCallArray)[];
|
|
139
|
+
};
|
|
128
140
|
utilityGetBlockHeader(foreignBlockNumber: ForeignCallSingle): Promise<{
|
|
129
141
|
values: (string | ForeignCallArray)[];
|
|
130
142
|
}>;
|
|
131
|
-
|
|
143
|
+
utilityGetNoteHashMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignLeafValue: ForeignCallSingle): Promise<{
|
|
144
|
+
values: (string | ForeignCallArray)[];
|
|
145
|
+
}>;
|
|
146
|
+
utilityGetArchiveMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignLeafValue: ForeignCallSingle): Promise<{
|
|
132
147
|
values: (string | ForeignCallArray)[];
|
|
133
148
|
}>;
|
|
134
|
-
utilityGetLowNullifierMembershipWitness(
|
|
149
|
+
utilityGetLowNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
|
|
135
150
|
values: (string | ForeignCallArray)[];
|
|
136
151
|
}>;
|
|
137
152
|
utilityFetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
138
153
|
values: (string | ForeignCallArray)[];
|
|
139
154
|
}>;
|
|
140
|
-
|
|
155
|
+
utilityValidateAndStoreEnqueuedNotesAndEvents(foreignContractAddress: ForeignCallSingle, foreignNoteValidationRequestsArrayBaseSlot: ForeignCallSingle, foreignEventValidationRequestsArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
141
156
|
values: (string | ForeignCallArray)[];
|
|
142
157
|
}>;
|
|
143
158
|
utilityBulkRetrieveLogs(foreignContractAddress: ForeignCallSingle, foreignLogRetrievalRequestsArrayBaseSlot: ForeignCallSingle, foreignLogRetrievalResponsesArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
@@ -165,7 +180,7 @@ export declare class RPCTranslator {
|
|
|
165
180
|
avmOpcodeEmitUnencryptedLog(_foreignMessage: ForeignCallArray): {
|
|
166
181
|
values: (string | ForeignCallArray)[];
|
|
167
182
|
};
|
|
168
|
-
avmOpcodeStorageRead(foreignSlot: ForeignCallSingle): Promise<{
|
|
183
|
+
avmOpcodeStorageRead(foreignSlot: ForeignCallSingle, foreignContractAddress: ForeignCallSingle): Promise<{
|
|
169
184
|
values: (string | ForeignCallArray)[];
|
|
170
185
|
}>;
|
|
171
186
|
avmOpcodeStorageWrite(foreignSlot: ForeignCallSingle, foreignValue: ForeignCallSingle): Promise<{
|
|
@@ -189,7 +204,7 @@ export declare class RPCTranslator {
|
|
|
189
204
|
avmOpcodeEmitNoteHash(foreignNoteHash: ForeignCallSingle): Promise<{
|
|
190
205
|
values: (string | ForeignCallArray)[];
|
|
191
206
|
}>;
|
|
192
|
-
avmOpcodeNullifierExists(
|
|
207
|
+
avmOpcodeNullifierExists(foreignSiloedNullifier: ForeignCallSingle): Promise<{
|
|
193
208
|
values: (string | ForeignCallArray)[];
|
|
194
209
|
}>;
|
|
195
210
|
avmOpcodeAddress(): Promise<{
|
|
@@ -215,13 +230,13 @@ export declare class RPCTranslator {
|
|
|
215
230
|
avmOpcodeCall(_foreignL2Gas: ForeignCallSingle, _foreignDaGas: ForeignCallSingle, _foreignAddress: ForeignCallSingle, _foreignLength: ForeignCallSingle, _foreignArgs: ForeignCallArray): void;
|
|
216
231
|
avmOpcodeStaticCall(_foreignL2Gas: ForeignCallSingle, _foreignDaGas: ForeignCallSingle, _foreignAddress: ForeignCallSingle, _foreignLength: ForeignCallSingle, _foreignArgs: ForeignCallArray): void;
|
|
217
232
|
avmOpcodeSuccessCopy(): void;
|
|
218
|
-
txePrivateCallNewFlow(foreignFrom: ForeignCallSingle, foreignTargetContractAddress: ForeignCallSingle, foreignFunctionSelector: ForeignCallSingle,
|
|
233
|
+
txePrivateCallNewFlow(foreignFrom: ForeignCallSingle, foreignTargetContractAddress: ForeignCallSingle, foreignFunctionSelector: ForeignCallSingle, foreignArgs: ForeignCallArray, foreignArgsHash: ForeignCallSingle, foreignIsStaticCall: ForeignCallSingle): Promise<{
|
|
219
234
|
values: (string | ForeignCallArray)[];
|
|
220
235
|
}>;
|
|
221
|
-
txeSimulateUtilityFunction(foreignTargetContractAddress: ForeignCallSingle, foreignFunctionSelector: ForeignCallSingle,
|
|
236
|
+
txeSimulateUtilityFunction(foreignTargetContractAddress: ForeignCallSingle, foreignFunctionSelector: ForeignCallSingle, foreignArgs: ForeignCallArray): Promise<{
|
|
222
237
|
values: (string | ForeignCallArray)[];
|
|
223
238
|
}>;
|
|
224
|
-
txePublicCallNewFlow(foreignFrom: ForeignCallSingle, foreignAddress: ForeignCallSingle,
|
|
239
|
+
txePublicCallNewFlow(foreignFrom: ForeignCallSingle, foreignAddress: ForeignCallSingle, foreignCalldata: ForeignCallArray, foreignIsStaticCall: ForeignCallSingle): Promise<{
|
|
225
240
|
values: (string | ForeignCallArray)[];
|
|
226
241
|
}>;
|
|
227
242
|
privateGetSenderForTags(): Promise<{
|
|
@@ -234,4 +249,4 @@ export declare class RPCTranslator {
|
|
|
234
249
|
values: (string | ForeignCallArray)[];
|
|
235
250
|
}>;
|
|
236
251
|
}
|
|
237
|
-
//# sourceMappingURL=
|
|
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;
|
|
1
|
+
{"version":3,"file":"rpc_translator.d.ts","sourceRoot":"","sources":["../src/rpc_translator.ts"],"names":[],"mappings":"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"}
|