@aztec/txe 0.0.1-commit.d3ec352c → 0.0.1-commit.d431d1c
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 +5 -3
- 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 +4 -6
- 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 +99 -62
- package/dest/rpc_translator.d.ts +15 -9
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +68 -28
- package/dest/state_machine/archiver.d.ts +21 -57
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +62 -107
- package/dest/state_machine/dummy_p2p_client.d.ts +8 -7
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +16 -11
- 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 +6 -6
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +23 -20
- package/dest/state_machine/mock_epoch_cache.d.ts +4 -5
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +8 -6
- package/dest/state_machine/synchronizer.d.ts +1 -1
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +2 -2
- package/dest/txe_session.d.ts +18 -10
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +90 -45
- package/dest/util/encoding.d.ts +618 -19
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/encoding.js +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 +5 -5
- 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 +19 -5
- 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 +2 -3
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +4 -7
- package/package.json +16 -16
- package/src/constants.ts +3 -0
- package/src/index.ts +15 -12
- package/src/oracle/interfaces.ts +4 -2
- package/src/oracle/txe_oracle_public_context.ts +5 -10
- package/src/oracle/txe_oracle_top_level_context.ts +148 -88
- package/src/rpc_translator.ts +86 -36
- package/src/state_machine/archiver.ts +60 -130
- package/src/state_machine/dummy_p2p_client.ts +21 -14
- package/src/state_machine/global_variable_builder.ts +19 -2
- package/src/state_machine/index.ts +28 -19
- package/src/state_machine/mock_epoch_cache.ts +8 -10
- package/src/state_machine/synchronizer.ts +1 -2
- package/src/txe_session.ts +179 -76
- 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 +10 -10
- package/src/utils/block_creation.ts +46 -15
- package/src/utils/tx_effect_creation.ts +4 -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,36 +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
2
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
-
import { Schnorr } from '@aztec/foundation/crypto';
|
|
4
|
-
import { Fr } from '@aztec/foundation/
|
|
3
|
+
import { Schnorr } from '@aztec/foundation/crypto/schnorr';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import { LogLevels, applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
7
7
|
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;
|
|
@@ -74,6 +86,9 @@ export class TXEOracleTopLevelContext {
|
|
|
74
86
|
module: `${this.logger.module}:debug_log`
|
|
75
87
|
});
|
|
76
88
|
}
|
|
89
|
+
txeGetDefaultAddress() {
|
|
90
|
+
return DEFAULT_ADDRESS;
|
|
91
|
+
}
|
|
77
92
|
async txeGetNextBlockNumber() {
|
|
78
93
|
return BlockNumber(await this.getLastBlockNumber() + 1);
|
|
79
94
|
}
|
|
@@ -84,7 +99,8 @@ export class TXEOracleTopLevelContext {
|
|
|
84
99
|
return (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
|
|
85
100
|
}
|
|
86
101
|
async txeGetLastTxEffects() {
|
|
87
|
-
const
|
|
102
|
+
const latestBlockNumber = await this.stateMachine.archiver.getBlockNumber();
|
|
103
|
+
const block = await this.stateMachine.archiver.getBlock(latestBlockNumber);
|
|
88
104
|
if (block.body.txEffects.length != 1) {
|
|
89
105
|
// Note that calls like env.mine() will result in blocks with no transactions, hitting this
|
|
90
106
|
throw new Error(`Expected a single transaction in the last block, found ${block.body.txEffects.length}`);
|
|
@@ -96,6 +112,16 @@ export class TXEOracleTopLevelContext {
|
|
|
96
112
|
nullifiers: txEffects.nullifiers
|
|
97
113
|
};
|
|
98
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
|
+
}
|
|
99
125
|
async txeAdvanceBlocksBy(blocks) {
|
|
100
126
|
this.logger.debug(`time traveling ${blocks} blocks`);
|
|
101
127
|
for(let i = 0; i < blocks; i++){
|
|
@@ -116,32 +142,32 @@ export class TXEOracleTopLevelContext {
|
|
|
116
142
|
if (!secret.equals(Fr.ZERO)) {
|
|
117
143
|
await this.txeAddAccount(artifact, instance, secret);
|
|
118
144
|
} else {
|
|
119
|
-
await this.
|
|
120
|
-
await this.
|
|
145
|
+
await this.contractStore.addContractInstance(instance);
|
|
146
|
+
await this.contractStore.addContractArtifact(instance.currentContractClassId, artifact);
|
|
121
147
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
122
148
|
}
|
|
123
149
|
}
|
|
124
150
|
async txeAddAccount(artifact, instance, secret) {
|
|
125
151
|
const partialAddress = await computePartialAddress(instance);
|
|
126
152
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
127
|
-
await this.
|
|
128
|
-
await this.
|
|
153
|
+
await this.contractStore.addContractInstance(instance);
|
|
154
|
+
await this.contractStore.addContractArtifact(instance.currentContractClassId, artifact);
|
|
129
155
|
const completeAddress = await this.keyStore.addAccount(secret, partialAddress);
|
|
130
|
-
await this.
|
|
131
|
-
await this.
|
|
156
|
+
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
157
|
+
await this.addressStore.addCompleteAddress(completeAddress);
|
|
132
158
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
133
159
|
return completeAddress;
|
|
134
160
|
}
|
|
135
161
|
async txeCreateAccount(secret) {
|
|
136
|
-
// This is a
|
|
162
|
+
// This is a foot gun !
|
|
137
163
|
const completeAddress = await this.keyStore.addAccount(secret, secret);
|
|
138
|
-
await this.
|
|
139
|
-
await this.
|
|
164
|
+
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
165
|
+
await this.addressStore.addCompleteAddress(completeAddress);
|
|
140
166
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
141
167
|
return completeAddress;
|
|
142
168
|
}
|
|
143
169
|
async txeAddAuthWitness(address, messageHash) {
|
|
144
|
-
const account = await this.
|
|
170
|
+
const account = await this.accountStore.getAccount(address);
|
|
145
171
|
const privateKey = await this.keyStore.getMasterSecretKey(account.publicKeys.masterIncomingViewingPublicKey);
|
|
146
172
|
const schnorr = new Schnorr();
|
|
147
173
|
const signature = await schnorr.constructSignature(messageHash.toBuffer(), privateKey);
|
|
@@ -160,39 +186,50 @@ export class TXEOracleTopLevelContext {
|
|
|
160
186
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
161
187
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
162
188
|
await insertTxEffectIntoWorldTrees(txEffect, forkedWorldTrees);
|
|
163
|
-
const
|
|
189
|
+
const globals = makeGlobalVariables(undefined, {
|
|
164
190
|
blockNumber,
|
|
165
191
|
timestamp: this.nextBlockTimestamp,
|
|
166
192
|
version: this.version,
|
|
167
193
|
chainId: this.chainId
|
|
168
|
-
})
|
|
194
|
+
});
|
|
195
|
+
const block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
169
196
|
txEffect
|
|
170
|
-
])
|
|
197
|
+
]);
|
|
171
198
|
await forkedWorldTrees.close();
|
|
172
199
|
this.logger.info(`Created block ${blockNumber} with timestamp ${block.header.globalVariables.timestamp}`);
|
|
173
200
|
await this.stateMachine.handleL2Block(block);
|
|
174
201
|
}
|
|
175
202
|
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.
|
|
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);
|
|
178
205
|
if (!artifact) {
|
|
179
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';
|
|
180
207
|
throw new Error(message);
|
|
181
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 this.contractStore.syncPrivateState(targetContractAddress, functionSelector, utilityExecutor);
|
|
182
214
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
183
215
|
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
184
216
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
185
217
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
186
218
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
187
219
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
188
|
-
const blockHeader = await this.
|
|
220
|
+
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
189
221
|
const protocolNullifier = await computeProtocolNullifier(getSingleTxBlockRequestHash(blockNumber));
|
|
190
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);
|
|
191
228
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
192
229
|
const simulator = new WASMSimulator();
|
|
193
|
-
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([
|
|
194
231
|
new HashedValues(args, argsHash)
|
|
195
|
-
]), 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, /**
|
|
196
233
|
* In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
197
234
|
* contract would perform, including setting senderForTags.
|
|
198
235
|
*/ from, simulator);
|
|
@@ -210,18 +247,16 @@ export class TXEOracleTopLevelContext {
|
|
|
210
247
|
const calldata = await privateExecutionOracle.privateLoadFromExecutionCache(r.calldataHash);
|
|
211
248
|
return new HashedValues(calldata, r.calldataHash);
|
|
212
249
|
}));
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
result = new PrivateExecutionResult(executionResult, Fr.ZERO, publicFunctionsCalldata);
|
|
250
|
+
noteCache.finish();
|
|
251
|
+
const nonceGenerator = noteCache.getNonceGenerator();
|
|
252
|
+
result = new PrivateExecutionResult(executionResult, nonceGenerator, publicFunctionsCalldata);
|
|
217
253
|
} catch (err) {
|
|
218
254
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
219
255
|
}
|
|
220
|
-
// According to the protocol rules,
|
|
221
|
-
//
|
|
222
|
-
//
|
|
223
|
-
const
|
|
224
|
-
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);
|
|
225
260
|
const globals = makeGlobalVariables();
|
|
226
261
|
globals.blockNumber = blockNumber;
|
|
227
262
|
globals.timestamp = this.nextBlockTimestamp;
|
|
@@ -229,7 +264,7 @@ export class TXEOracleTopLevelContext {
|
|
|
229
264
|
globals.version = this.version;
|
|
230
265
|
globals.gasFees = GasFees.empty();
|
|
231
266
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
232
|
-
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.
|
|
267
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore));
|
|
233
268
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
234
269
|
const config = PublicSimulatorConfig.from({
|
|
235
270
|
skipFeeEnforcement: true,
|
|
@@ -259,7 +294,7 @@ export class TXEOracleTopLevelContext {
|
|
|
259
294
|
} else if (!processedTx.revertCode.isOK()) {
|
|
260
295
|
if (processedTx.revertReason) {
|
|
261
296
|
try {
|
|
262
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
297
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
263
298
|
// eslint-disable-next-line no-empty
|
|
264
299
|
} catch {}
|
|
265
300
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -281,22 +316,21 @@ export class TXEOracleTopLevelContext {
|
|
|
281
316
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
282
317
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
283
318
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
284
|
-
const
|
|
319
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
285
320
|
txEffect
|
|
286
321
|
]);
|
|
287
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
288
322
|
await this.stateMachine.handleL2Block(l2Block);
|
|
289
323
|
await forkedWorldTrees.close();
|
|
290
324
|
return executionResult.returnValues ?? [];
|
|
291
325
|
}
|
|
292
326
|
async txePublicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
293
|
-
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}`);
|
|
294
328
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
295
329
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
296
330
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
297
331
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
298
332
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
299
|
-
const anchorBlockHeader = await this.
|
|
333
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
300
334
|
const calldataHash = await computeCalldataHash(calldata);
|
|
301
335
|
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
302
336
|
const globals = makeGlobalVariables();
|
|
@@ -306,7 +340,7 @@ export class TXEOracleTopLevelContext {
|
|
|
306
340
|
globals.version = this.version;
|
|
307
341
|
globals.gasFees = GasFees.empty();
|
|
308
342
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
309
|
-
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.
|
|
343
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore));
|
|
310
344
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
311
345
|
const config = PublicSimulatorConfig.from({
|
|
312
346
|
skipFeeEnforcement: true,
|
|
@@ -352,7 +386,7 @@ export class TXEOracleTopLevelContext {
|
|
|
352
386
|
} else if (!processedTx.revertCode.isOK()) {
|
|
353
387
|
if (processedTx.revertReason) {
|
|
354
388
|
try {
|
|
355
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
389
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
356
390
|
// eslint-disable-next-line no-empty
|
|
357
391
|
} catch {}
|
|
358
392
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -375,25 +409,27 @@ export class TXEOracleTopLevelContext {
|
|
|
375
409
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
376
410
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
377
411
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
378
|
-
const
|
|
412
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
379
413
|
txEffect
|
|
380
414
|
]);
|
|
381
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
382
415
|
await this.stateMachine.handleL2Block(l2Block);
|
|
383
416
|
await forkedWorldTrees.close();
|
|
384
417
|
return returnValues ?? [];
|
|
385
418
|
}
|
|
386
419
|
async txeSimulateUtilityFunction(targetContractAddress, functionSelector, args) {
|
|
387
|
-
const artifact = await this.
|
|
420
|
+
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
388
421
|
if (!artifact) {
|
|
389
422
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
390
423
|
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
424
|
+
// Sync notes before executing utility function to discover notes from previous transactions
|
|
425
|
+
await this.contractStore.syncPrivateState(targetContractAddress, 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);
|
|
397
433
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
398
434
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
399
435
|
}
|
|
@@ -402,8 +438,9 @@ export class TXEOracleTopLevelContext {
|
|
|
402
438
|
selector: call.selector
|
|
403
439
|
});
|
|
404
440
|
try {
|
|
405
|
-
const
|
|
406
|
-
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)=>{
|
|
407
444
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
408
445
|
throw new ExecutionError(err.message, {
|
|
409
446
|
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,6 +76,9 @@ 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
|
};
|
|
@@ -82,13 +88,13 @@ 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(
|
|
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): {
|
|
@@ -113,7 +119,7 @@ export declare class RPCTranslator {
|
|
|
113
119
|
values: (string | ForeignCallArray)[];
|
|
114
120
|
}>;
|
|
115
121
|
privateCallPrivateFunction(_foreignTargetContractAddress: ForeignCallSingle, _foreignFunctionSelector: ForeignCallSingle, _foreignArgsHash: ForeignCallSingle, _foreignSideEffectCounter: ForeignCallSingle, _foreignIsStaticCall: ForeignCallSingle): void;
|
|
116
|
-
utilityGetNullifierMembershipWitness(
|
|
122
|
+
utilityGetNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
|
|
117
123
|
values: (string | ForeignCallArray)[];
|
|
118
124
|
}>;
|
|
119
125
|
utilityGetAuthWitness(foreignMessageHash: ForeignCallSingle): Promise<{
|
|
@@ -125,16 +131,16 @@ export declare class RPCTranslator {
|
|
|
125
131
|
privateIsSideEffectCounterRevertible(foreignSideEffectCounter: ForeignCallSingle): Promise<{
|
|
126
132
|
values: (string | ForeignCallArray)[];
|
|
127
133
|
}>;
|
|
128
|
-
utilityGetUtilityContext():
|
|
134
|
+
utilityGetUtilityContext(): {
|
|
129
135
|
values: (string | ForeignCallArray)[];
|
|
130
|
-
}
|
|
136
|
+
};
|
|
131
137
|
utilityGetBlockHeader(foreignBlockNumber: ForeignCallSingle): Promise<{
|
|
132
138
|
values: (string | ForeignCallArray)[];
|
|
133
139
|
}>;
|
|
134
|
-
utilityGetMembershipWitness(
|
|
140
|
+
utilityGetMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignTreeId: ForeignCallSingle, foreignLeafValue: ForeignCallSingle): Promise<{
|
|
135
141
|
values: (string | ForeignCallArray)[];
|
|
136
142
|
}>;
|
|
137
|
-
utilityGetLowNullifierMembershipWitness(
|
|
143
|
+
utilityGetLowNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
|
|
138
144
|
values: (string | ForeignCallArray)[];
|
|
139
145
|
}>;
|
|
140
146
|
utilityFetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
@@ -237,4 +243,4 @@ export declare class RPCTranslator {
|
|
|
237
243
|
values: (string | ForeignCallArray)[];
|
|
238
244
|
}>;
|
|
239
245
|
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjX3RyYW5zbGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ycGNfdHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTdFLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyx1QkFBdUIsRUFFN0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBaUQsTUFBTSxtQkFBbUIsQ0FBQztBQUt6RyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssaUJBQWlCLEVBWXZCLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIscUJBQWEsc0JBQXVCLFNBQVEsS0FBSztJQUMvQyxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBRTdCO0NBQ0Y7QUFFRCxxQkFBYSxhQUFhO0lBV3RCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLE9BQU8sQ0FBQyxhQUFhO0lBWHZCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDVSxZQUFZLEVBQUUsc0JBQXNCLEVBQ3BDLGFBQWEsRUFDakIsV0FBVyxHQUNYLHVCQUF1QixHQUN2Qix1QkFBdUIsR0FDdkIsbUJBQW1CLEdBQ25CLG1CQUFtQixFQUNyQjtJQUtKLE9BQU8sQ0FBQyxhQUFhO0lBUXJCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFReEIsT0FBTyxDQUFDLGdCQUFnQjtJQVF4QixPQUFPLENBQUMsWUFBWTtJQVFwQixPQUFPLENBQUMsWUFBWTtJQVVkLHdCQUF3Qjs7T0FJN0I7SUFFSyx1QkFBdUIsQ0FDM0IsNEJBQTRCLEVBQUUsaUJBQWlCLEVB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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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"}
|