@aztec/txe 0.0.1-commit.b655e406 → 0.0.1-commit.bf2612ae
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 +10 -7
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +6 -6
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +7 -8
- 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 +125 -79
- package/dest/rpc_translator.d.ts +30 -15
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +110 -47
- 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 +9 -6
- package/src/oracle/txe_oracle_public_context.ts +9 -14
- package/src/oracle/txe_oracle_top_level_context.ts +175 -105
- package/src/rpc_translator.ts +136 -58
- 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,16 @@ 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 contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.
|
|
267
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore));
|
|
231
268
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
269
|
+
const config = PublicSimulatorConfig.from({
|
|
270
|
+
skipFeeEnforcement: true,
|
|
271
|
+
collectDebugLogs: true,
|
|
272
|
+
collectHints: false,
|
|
273
|
+
collectStatistics: false,
|
|
274
|
+
collectCallMetadata: true
|
|
275
|
+
});
|
|
276
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config), new TestDateProvider());
|
|
236
277
|
const tx = await Tx.create({
|
|
237
278
|
data: publicInputs,
|
|
238
279
|
chonkProof: ChonkProof.empty(),
|
|
@@ -253,7 +294,7 @@ export class TXEOracleTopLevelContext {
|
|
|
253
294
|
} else if (!processedTx.revertCode.isOK()) {
|
|
254
295
|
if (processedTx.revertReason) {
|
|
255
296
|
try {
|
|
256
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
297
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
257
298
|
// eslint-disable-next-line no-empty
|
|
258
299
|
} catch {}
|
|
259
300
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -275,22 +316,21 @@ export class TXEOracleTopLevelContext {
|
|
|
275
316
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
276
317
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
277
318
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
278
|
-
const
|
|
319
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
279
320
|
txEffect
|
|
280
321
|
]);
|
|
281
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
282
322
|
await this.stateMachine.handleL2Block(l2Block);
|
|
283
323
|
await forkedWorldTrees.close();
|
|
284
324
|
return executionResult.returnValues ?? [];
|
|
285
325
|
}
|
|
286
326
|
async txePublicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
287
|
-
this.logger.verbose(`Executing public function ${await this.
|
|
327
|
+
this.logger.verbose(`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
288
328
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
289
329
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
290
330
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
291
331
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
292
332
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
293
|
-
const anchorBlockHeader = await this.
|
|
333
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
294
334
|
const calldataHash = await computeCalldataHash(calldata);
|
|
295
335
|
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
296
336
|
const globals = makeGlobalVariables();
|
|
@@ -300,21 +340,23 @@ export class TXEOracleTopLevelContext {
|
|
|
300
340
|
globals.version = this.version;
|
|
301
341
|
globals.gasFees = GasFees.empty();
|
|
302
342
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
303
|
-
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.
|
|
343
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore));
|
|
304
344
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
345
|
+
const config = PublicSimulatorConfig.from({
|
|
346
|
+
skipFeeEnforcement: true,
|
|
347
|
+
collectDebugLogs: true,
|
|
348
|
+
collectHints: false,
|
|
349
|
+
collectStatistics: false,
|
|
350
|
+
collectCallMetadata: true
|
|
308
351
|
});
|
|
352
|
+
const simulator = new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config);
|
|
309
353
|
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider());
|
|
310
354
|
// We're simulating a scenario in which private execution immediately enqueues a public call and halts. The private
|
|
311
355
|
// kernel init would in this case inject a nullifier with the transaction request hash as a non-revertible
|
|
312
356
|
// side-effect, which the AVM then expects to exist in order to use it as the nonce generator when siloing notes as
|
|
313
357
|
// unique.
|
|
314
358
|
const nonRevertibleAccumulatedData = PrivateToPublicAccumulatedData.empty();
|
|
315
|
-
|
|
316
|
-
nonRevertibleAccumulatedData.nullifiers[0] = getSingleTxBlockRequestHash(blockNumber);
|
|
317
|
-
}
|
|
359
|
+
nonRevertibleAccumulatedData.nullifiers[0] = getSingleTxBlockRequestHash(blockNumber);
|
|
318
360
|
// The enqueued public call itself we make be revertible so that the public execution is itself revertible, as tests
|
|
319
361
|
// may require producing reverts.
|
|
320
362
|
const revertibleAccumulatedData = PrivateToPublicAccumulatedData.empty();
|
|
@@ -344,7 +386,7 @@ export class TXEOracleTopLevelContext {
|
|
|
344
386
|
} else if (!processedTx.revertCode.isOK()) {
|
|
345
387
|
if (processedTx.revertReason) {
|
|
346
388
|
try {
|
|
347
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
389
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
348
390
|
// eslint-disable-next-line no-empty
|
|
349
391
|
} catch {}
|
|
350
392
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -367,25 +409,27 @@ export class TXEOracleTopLevelContext {
|
|
|
367
409
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
368
410
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
369
411
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
370
|
-
const
|
|
412
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
371
413
|
txEffect
|
|
372
414
|
]);
|
|
373
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
374
415
|
await this.stateMachine.handleL2Block(l2Block);
|
|
375
416
|
await forkedWorldTrees.close();
|
|
376
417
|
return returnValues ?? [];
|
|
377
418
|
}
|
|
378
419
|
async txeSimulateUtilityFunction(targetContractAddress, functionSelector, args) {
|
|
379
|
-
const artifact = await this.
|
|
420
|
+
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
380
421
|
if (!artifact) {
|
|
381
422
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
382
423
|
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
424
|
+
// Sync notes before executing utility function to discover notes from previous transactions
|
|
425
|
+
await syncState(targetContractAddress, this.contractStore, functionSelector, async (call)=>{
|
|
426
|
+
await this.executeUtilityCall(call);
|
|
427
|
+
});
|
|
428
|
+
const call = new FunctionCall(artifact.name, targetContractAddress, functionSelector, FunctionType.UTILITY, false, false, args, []);
|
|
429
|
+
return this.executeUtilityCall(call);
|
|
430
|
+
}
|
|
431
|
+
async executeUtilityCall(call) {
|
|
432
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
389
433
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
390
434
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
391
435
|
}
|
|
@@ -394,8 +438,9 @@ export class TXEOracleTopLevelContext {
|
|
|
394
438
|
selector: call.selector
|
|
395
439
|
});
|
|
396
440
|
try {
|
|
397
|
-
const
|
|
398
|
-
const
|
|
441
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
442
|
+
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);
|
|
443
|
+
const acirExecutionResult = await new WASMSimulator().executeUserCircuit(toACVMWitness(0, call.args), entryPointArtifact, new Oracle(oracle).toACIRCallback()).catch((err)=>{
|
|
399
444
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
400
445
|
throw new ExecutionError(err.message, {
|
|
401
446
|
contractAddress: call.to,
|
|
@@ -418,6 +463,7 @@ export class TXEOracleTopLevelContext {
|
|
|
418
463
|
];
|
|
419
464
|
}
|
|
420
465
|
async getLastBlockNumber() {
|
|
421
|
-
|
|
466
|
+
const header = await this.stateMachine.node.getBlockHeader('latest');
|
|
467
|
+
return header ? header.globalVariables.blockNumber : BlockNumber.ZERO;
|
|
422
468
|
}
|
|
423
469
|
}
|
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<{
|
|
@@ -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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"}
|