@aztec/txe 0.0.1-commit.9593d84 → 0.0.1-commit.96bb3f7
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 +4 -0
- package/dest/constants.d.ts.map +1 -0
- package/dest/constants.js +3 -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 +9 -6
- package/dest/oracle/interfaces.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.d.ts +5 -5
- 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 +21 -12
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +93 -62
- package/dest/rpc_translator.d.ts +11 -5
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +57 -15
- package/dest/state_machine/archiver.d.ts +29 -11
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +128 -17
- 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 +6 -5
- 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 +14 -20
- package/dest/state_machine/mock_epoch_cache.d.ts +2 -1
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +3 -0
- package/dest/state_machine/synchronizer.d.ts +5 -4
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +5 -4
- package/dest/txe_session.d.ts +19 -13
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +76 -45
- package/dest/util/encoding.d.ts +610 -11
- 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 +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 +19 -4
- package/dest/utils/block_creation.d.ts.map +1 -1
- package/dest/utils/block_creation.js +24 -4
- package/dest/utils/tx_effect_creation.d.ts +4 -3
- package/dest/utils/tx_effect_creation.d.ts.map +1 -1
- package/dest/utils/tx_effect_creation.js +1 -1
- package/package.json +17 -17
- package/src/constants.ts +4 -0
- package/src/index.ts +15 -12
- package/src/oracle/interfaces.ts +8 -5
- package/src/oracle/txe_oracle_public_context.ts +6 -11
- package/src/oracle/txe_oracle_top_level_context.ts +139 -88
- package/src/rpc_translator.ts +82 -12
- package/src/state_machine/archiver.ts +168 -26
- package/src/state_machine/dummy_p2p_client.ts +21 -14
- package/src/state_machine/global_variable_builder.ts +21 -4
- package/src/state_machine/index.ts +19 -18
- package/src/state_machine/mock_epoch_cache.ts +4 -0
- package/src/state_machine/synchronizer.ts +8 -7
- package/src/txe_session.ts +166 -75
- 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 +36 -5
- package/src/utils/tx_effect_creation.ts +3 -2
- 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,35 +1,41 @@
|
|
|
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
7
|
import { ORACLE_VERSION, enrichPublicSimulationError } 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';
|
|
12
13
|
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
13
14
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
|
-
import { Body, L2Block } from '@aztec/stdlib/block';
|
|
15
15
|
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
16
16
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
17
17
|
import { computeCalldataHash, computeProtocolNullifier, siloNullifier } from '@aztec/stdlib/hash';
|
|
18
18
|
import { PartialPrivateTailPublicInputsForPublic, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
19
19
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
20
|
-
import {
|
|
20
|
+
import { makeGlobalVariables } from '@aztec/stdlib/testing';
|
|
21
21
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
22
22
|
import { CallContext, HashedValues, PrivateExecutionResult, Tx, TxConstantData, TxContext, TxEffect, TxHash, collectNested } from '@aztec/stdlib/tx';
|
|
23
23
|
import { ForkCheckpoint } from '@aztec/world-state';
|
|
24
|
+
import { DEFAULT_ADDRESS, TXE_JOB_ID } from '../constants.js';
|
|
24
25
|
import { TXEPublicContractDataSource } from '../util/txe_public_contract_data_source.js';
|
|
25
|
-
import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees,
|
|
26
|
+
import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees, makeTXEBlock } from '../utils/block_creation.js';
|
|
26
27
|
export class TXEOracleTopLevelContext {
|
|
27
28
|
stateMachine;
|
|
28
|
-
|
|
29
|
+
contractStore;
|
|
30
|
+
noteStore;
|
|
29
31
|
keyStore;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
addressStore;
|
|
33
|
+
accountStore;
|
|
34
|
+
senderTaggingStore;
|
|
35
|
+
recipientTaggingStore;
|
|
36
|
+
senderAddressBookStore;
|
|
37
|
+
capsuleStore;
|
|
38
|
+
privateEventStore;
|
|
33
39
|
nextBlockTimestamp;
|
|
34
40
|
version;
|
|
35
41
|
chainId;
|
|
@@ -37,13 +43,18 @@ export class TXEOracleTopLevelContext {
|
|
|
37
43
|
isMisc;
|
|
38
44
|
isTxe;
|
|
39
45
|
logger;
|
|
40
|
-
constructor(stateMachine,
|
|
46
|
+
constructor(stateMachine, contractStore, noteStore, keyStore, addressStore, accountStore, senderTaggingStore, recipientTaggingStore, senderAddressBookStore, capsuleStore, privateEventStore, nextBlockTimestamp, version, chainId, authwits){
|
|
41
47
|
this.stateMachine = stateMachine;
|
|
42
|
-
this.
|
|
48
|
+
this.contractStore = contractStore;
|
|
49
|
+
this.noteStore = noteStore;
|
|
43
50
|
this.keyStore = keyStore;
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
51
|
+
this.addressStore = addressStore;
|
|
52
|
+
this.accountStore = accountStore;
|
|
53
|
+
this.senderTaggingStore = senderTaggingStore;
|
|
54
|
+
this.recipientTaggingStore = recipientTaggingStore;
|
|
55
|
+
this.senderAddressBookStore = senderAddressBookStore;
|
|
56
|
+
this.capsuleStore = capsuleStore;
|
|
57
|
+
this.privateEventStore = privateEventStore;
|
|
47
58
|
this.nextBlockTimestamp = nextBlockTimestamp;
|
|
48
59
|
this.version = version;
|
|
49
60
|
this.chainId = chainId;
|
|
@@ -73,8 +84,11 @@ export class TXEOracleTopLevelContext {
|
|
|
73
84
|
module: `${this.logger.module}:debug_log`
|
|
74
85
|
});
|
|
75
86
|
}
|
|
87
|
+
txeGetDefaultAddress() {
|
|
88
|
+
return DEFAULT_ADDRESS;
|
|
89
|
+
}
|
|
76
90
|
async txeGetNextBlockNumber() {
|
|
77
|
-
return await this.getLastBlockNumber() + 1;
|
|
91
|
+
return BlockNumber(await this.getLastBlockNumber() + 1);
|
|
78
92
|
}
|
|
79
93
|
txeGetNextBlockTimestamp() {
|
|
80
94
|
return Promise.resolve(this.nextBlockTimestamp);
|
|
@@ -83,7 +97,7 @@ export class TXEOracleTopLevelContext {
|
|
|
83
97
|
return (await this.stateMachine.node.getBlockHeader('latest')).globalVariables.timestamp;
|
|
84
98
|
}
|
|
85
99
|
async txeGetLastTxEffects() {
|
|
86
|
-
const block = await this.stateMachine.archiver.
|
|
100
|
+
const block = await this.stateMachine.archiver.getL2Block('latest');
|
|
87
101
|
if (block.body.txEffects.length != 1) {
|
|
88
102
|
// Note that calls like env.mine() will result in blocks with no transactions, hitting this
|
|
89
103
|
throw new Error(`Expected a single transaction in the last block, found ${block.body.txEffects.length}`);
|
|
@@ -95,6 +109,16 @@ export class TXEOracleTopLevelContext {
|
|
|
95
109
|
nullifiers: txEffects.nullifiers
|
|
96
110
|
};
|
|
97
111
|
}
|
|
112
|
+
async txeGetPrivateEvents(selector, contractAddress, scope) {
|
|
113
|
+
return (await this.privateEventStore.getPrivateEvents(selector, {
|
|
114
|
+
contractAddress,
|
|
115
|
+
scopes: [
|
|
116
|
+
scope
|
|
117
|
+
],
|
|
118
|
+
fromBlock: 0,
|
|
119
|
+
toBlock: await this.getLastBlockNumber() + 1
|
|
120
|
+
})).map((e)=>e.packedEvent);
|
|
121
|
+
}
|
|
98
122
|
async txeAdvanceBlocksBy(blocks) {
|
|
99
123
|
this.logger.debug(`time traveling ${blocks} blocks`);
|
|
100
124
|
for(let i = 0; i < blocks; i++){
|
|
@@ -115,32 +139,32 @@ export class TXEOracleTopLevelContext {
|
|
|
115
139
|
if (!secret.equals(Fr.ZERO)) {
|
|
116
140
|
await this.txeAddAccount(artifact, instance, secret);
|
|
117
141
|
} else {
|
|
118
|
-
await this.
|
|
119
|
-
await this.
|
|
142
|
+
await this.contractStore.addContractInstance(instance);
|
|
143
|
+
await this.contractStore.addContractArtifact(instance.currentContractClassId, artifact);
|
|
120
144
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
121
145
|
}
|
|
122
146
|
}
|
|
123
147
|
async txeAddAccount(artifact, instance, secret) {
|
|
124
148
|
const partialAddress = await computePartialAddress(instance);
|
|
125
149
|
this.logger.debug(`Deployed ${artifact.name} at ${instance.address}`);
|
|
126
|
-
await this.
|
|
127
|
-
await this.
|
|
150
|
+
await this.contractStore.addContractInstance(instance);
|
|
151
|
+
await this.contractStore.addContractArtifact(instance.currentContractClassId, artifact);
|
|
128
152
|
const completeAddress = await this.keyStore.addAccount(secret, partialAddress);
|
|
129
|
-
await this.
|
|
130
|
-
await this.
|
|
153
|
+
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
154
|
+
await this.addressStore.addCompleteAddress(completeAddress);
|
|
131
155
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
132
156
|
return completeAddress;
|
|
133
157
|
}
|
|
134
158
|
async txeCreateAccount(secret) {
|
|
135
|
-
// This is a
|
|
159
|
+
// This is a foot gun !
|
|
136
160
|
const completeAddress = await this.keyStore.addAccount(secret, secret);
|
|
137
|
-
await this.
|
|
138
|
-
await this.
|
|
161
|
+
await this.accountStore.setAccount(completeAddress.address, completeAddress);
|
|
162
|
+
await this.addressStore.addCompleteAddress(completeAddress);
|
|
139
163
|
this.logger.debug(`Created account ${completeAddress.address}`);
|
|
140
164
|
return completeAddress;
|
|
141
165
|
}
|
|
142
166
|
async txeAddAuthWitness(address, messageHash) {
|
|
143
|
-
const account = await this.
|
|
167
|
+
const account = await this.accountStore.getAccount(address);
|
|
144
168
|
const privateKey = await this.keyStore.getMasterSecretKey(account.publicKeys.masterIncomingViewingPublicKey);
|
|
145
169
|
const schnorr = new Schnorr();
|
|
146
170
|
const signature = await schnorr.constructSignature(messageHash.toBuffer(), privateKey);
|
|
@@ -159,39 +183,45 @@ export class TXEOracleTopLevelContext {
|
|
|
159
183
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
160
184
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
161
185
|
await insertTxEffectIntoWorldTrees(txEffect, forkedWorldTrees);
|
|
162
|
-
const
|
|
186
|
+
const globals = makeGlobalVariables(undefined, {
|
|
163
187
|
blockNumber,
|
|
164
188
|
timestamp: this.nextBlockTimestamp,
|
|
165
189
|
version: this.version,
|
|
166
190
|
chainId: this.chainId
|
|
167
|
-
})
|
|
191
|
+
});
|
|
192
|
+
const block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
168
193
|
txEffect
|
|
169
|
-
])
|
|
194
|
+
]);
|
|
170
195
|
await forkedWorldTrees.close();
|
|
171
196
|
this.logger.info(`Created block ${blockNumber} with timestamp ${block.header.globalVariables.timestamp}`);
|
|
172
197
|
await this.stateMachine.handleL2Block(block);
|
|
173
198
|
}
|
|
174
199
|
async txePrivateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false) {
|
|
175
|
-
this.logger.verbose(`Executing external function ${await this.
|
|
176
|
-
const artifact = await this.
|
|
200
|
+
this.logger.verbose(`Executing external function ${await this.contractStore.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
201
|
+
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
177
202
|
if (!artifact) {
|
|
178
203
|
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';
|
|
179
204
|
throw new Error(message);
|
|
180
205
|
}
|
|
206
|
+
// Sync notes before executing private function to discover notes from previous transactions
|
|
207
|
+
const utilityExecutor = async (call)=>{
|
|
208
|
+
await this.executeUtilityCall(call);
|
|
209
|
+
};
|
|
210
|
+
await this.contractStore.syncPrivateState(targetContractAddress, functionSelector, utilityExecutor);
|
|
181
211
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
182
212
|
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
183
213
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
184
214
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
185
215
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
186
216
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
187
|
-
const blockHeader = await this.
|
|
217
|
+
const blockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
188
218
|
const protocolNullifier = await computeProtocolNullifier(getSingleTxBlockRequestHash(blockNumber));
|
|
189
219
|
const noteCache = new ExecutionNoteCache(protocolNullifier);
|
|
190
220
|
const taggingIndexCache = new ExecutionTaggingIndexCache();
|
|
191
221
|
const simulator = new WASMSimulator();
|
|
192
|
-
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([
|
|
222
|
+
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([
|
|
193
223
|
new HashedValues(args, argsHash)
|
|
194
|
-
]), noteCache, taggingIndexCache, this.
|
|
224
|
+
]), 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, TXE_JOB_ID, 0, 1, undefined, undefined, /**
|
|
195
225
|
* In TXE, the typical transaction entrypoint is skipped, so we need to simulate the actions that such a
|
|
196
226
|
* contract would perform, including setting senderForTags.
|
|
197
227
|
*/ from, simulator);
|
|
@@ -220,7 +250,7 @@ export class TXEOracleTopLevelContext {
|
|
|
220
250
|
// can either be the first nullifier in the tx or the hash of the initial tx request
|
|
221
251
|
// if there are none.
|
|
222
252
|
const nonceGenerator = result.firstNullifier.equals(Fr.ZERO) ? protocolNullifier : result.firstNullifier;
|
|
223
|
-
const { publicInputs } = await generateSimulatedProvingResult(result, nonceGenerator, this.
|
|
253
|
+
const { publicInputs } = await generateSimulatedProvingResult(result, nonceGenerator, this.contractStore);
|
|
224
254
|
const globals = makeGlobalVariables();
|
|
225
255
|
globals.blockNumber = blockNumber;
|
|
226
256
|
globals.timestamp = this.nextBlockTimestamp;
|
|
@@ -228,7 +258,7 @@ export class TXEOracleTopLevelContext {
|
|
|
228
258
|
globals.version = this.version;
|
|
229
259
|
globals.gasFees = GasFees.empty();
|
|
230
260
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
231
|
-
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.
|
|
261
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore));
|
|
232
262
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
233
263
|
const config = PublicSimulatorConfig.from({
|
|
234
264
|
skipFeeEnforcement: true,
|
|
@@ -237,7 +267,7 @@ export class TXEOracleTopLevelContext {
|
|
|
237
267
|
collectStatistics: false,
|
|
238
268
|
collectCallMetadata: true
|
|
239
269
|
});
|
|
240
|
-
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, new
|
|
270
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config), new TestDateProvider());
|
|
241
271
|
const tx = await Tx.create({
|
|
242
272
|
data: publicInputs,
|
|
243
273
|
chonkProof: ChonkProof.empty(),
|
|
@@ -258,7 +288,7 @@ export class TXEOracleTopLevelContext {
|
|
|
258
288
|
} else if (!processedTx.revertCode.isOK()) {
|
|
259
289
|
if (processedTx.revertReason) {
|
|
260
290
|
try {
|
|
261
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
291
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
262
292
|
// eslint-disable-next-line no-empty
|
|
263
293
|
} catch {}
|
|
264
294
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -280,22 +310,21 @@ export class TXEOracleTopLevelContext {
|
|
|
280
310
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
281
311
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
282
312
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
283
|
-
const
|
|
313
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
284
314
|
txEffect
|
|
285
315
|
]);
|
|
286
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
287
316
|
await this.stateMachine.handleL2Block(l2Block);
|
|
288
317
|
await forkedWorldTrees.close();
|
|
289
318
|
return executionResult.returnValues ?? [];
|
|
290
319
|
}
|
|
291
320
|
async txePublicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
292
|
-
this.logger.verbose(`Executing public function ${await this.
|
|
321
|
+
this.logger.verbose(`Executing public function ${await this.contractStore.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
293
322
|
const blockNumber = await this.txeGetNextBlockNumber();
|
|
294
323
|
const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
|
|
295
324
|
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT);
|
|
296
325
|
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
297
326
|
const txContext = new TxContext(this.chainId, this.version, gasSettings);
|
|
298
|
-
const anchorBlockHeader = await this.
|
|
327
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
299
328
|
const calldataHash = await computeCalldataHash(calldata);
|
|
300
329
|
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
301
330
|
const globals = makeGlobalVariables();
|
|
@@ -305,7 +334,7 @@ export class TXEOracleTopLevelContext {
|
|
|
305
334
|
globals.version = this.version;
|
|
306
335
|
globals.gasFees = GasFees.empty();
|
|
307
336
|
const forkedWorldTrees = await this.stateMachine.synchronizer.nativeWorldStateService.fork();
|
|
308
|
-
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.
|
|
337
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(blockNumber, this.contractStore));
|
|
309
338
|
const guardedMerkleTrees = new GuardedMerkleTreeOperations(forkedWorldTrees);
|
|
310
339
|
const config = PublicSimulatorConfig.from({
|
|
311
340
|
skipFeeEnforcement: true,
|
|
@@ -314,16 +343,14 @@ export class TXEOracleTopLevelContext {
|
|
|
314
343
|
collectStatistics: false,
|
|
315
344
|
collectCallMetadata: true
|
|
316
345
|
});
|
|
317
|
-
const simulator = new
|
|
346
|
+
const simulator = new CppPublicTxSimulator(guardedMerkleTrees, contractsDB, globals, config);
|
|
318
347
|
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider());
|
|
319
348
|
// We're simulating a scenario in which private execution immediately enqueues a public call and halts. The private
|
|
320
349
|
// kernel init would in this case inject a nullifier with the transaction request hash as a non-revertible
|
|
321
350
|
// side-effect, which the AVM then expects to exist in order to use it as the nonce generator when siloing notes as
|
|
322
351
|
// unique.
|
|
323
352
|
const nonRevertibleAccumulatedData = PrivateToPublicAccumulatedData.empty();
|
|
324
|
-
|
|
325
|
-
nonRevertibleAccumulatedData.nullifiers[0] = getSingleTxBlockRequestHash(blockNumber);
|
|
326
|
-
}
|
|
353
|
+
nonRevertibleAccumulatedData.nullifiers[0] = getSingleTxBlockRequestHash(blockNumber);
|
|
327
354
|
// The enqueued public call itself we make be revertible so that the public execution is itself revertible, as tests
|
|
328
355
|
// may require producing reverts.
|
|
329
356
|
const revertibleAccumulatedData = PrivateToPublicAccumulatedData.empty();
|
|
@@ -353,7 +380,7 @@ export class TXEOracleTopLevelContext {
|
|
|
353
380
|
} else if (!processedTx.revertCode.isOK()) {
|
|
354
381
|
if (processedTx.revertReason) {
|
|
355
382
|
try {
|
|
356
|
-
await enrichPublicSimulationError(processedTx.revertReason, this.
|
|
383
|
+
await enrichPublicSimulationError(processedTx.revertReason, this.contractStore, this.logger);
|
|
357
384
|
// eslint-disable-next-line no-empty
|
|
358
385
|
} catch {}
|
|
359
386
|
throw new Error(`Contract execution has reverted: ${processedTx.revertReason.getMessage()}`);
|
|
@@ -376,25 +403,27 @@ export class TXEOracleTopLevelContext {
|
|
|
376
403
|
txEffect.txHash = new TxHash(new Fr(blockNumber));
|
|
377
404
|
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
378
405
|
await forkedWorldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
379
|
-
const
|
|
406
|
+
const l2Block = await makeTXEBlock(forkedWorldTrees, globals, [
|
|
380
407
|
txEffect
|
|
381
408
|
]);
|
|
382
|
-
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(), await makeTXEBlockHeader(forkedWorldTrees, globals), body);
|
|
383
409
|
await this.stateMachine.handleL2Block(l2Block);
|
|
384
410
|
await forkedWorldTrees.close();
|
|
385
411
|
return returnValues ?? [];
|
|
386
412
|
}
|
|
387
413
|
async txeSimulateUtilityFunction(targetContractAddress, functionSelector, args) {
|
|
388
|
-
const artifact = await this.
|
|
414
|
+
const artifact = await this.contractStore.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
389
415
|
if (!artifact) {
|
|
390
416
|
throw new Error(`Cannot call ${functionSelector} as there is no artifact found at ${targetContractAddress}.`);
|
|
391
417
|
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
418
|
+
// Sync notes before executing utility function to discover notes from previous transactions
|
|
419
|
+
await this.contractStore.syncPrivateState(targetContractAddress, functionSelector, async (call)=>{
|
|
420
|
+
await this.executeUtilityCall(call);
|
|
421
|
+
});
|
|
422
|
+
const call = new FunctionCall(artifact.name, targetContractAddress, functionSelector, FunctionType.UTILITY, false, false, args, []);
|
|
423
|
+
return this.executeUtilityCall(call);
|
|
424
|
+
}
|
|
425
|
+
async executeUtilityCall(call) {
|
|
426
|
+
const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
|
|
398
427
|
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
399
428
|
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
400
429
|
}
|
|
@@ -403,8 +432,9 @@ export class TXEOracleTopLevelContext {
|
|
|
403
432
|
selector: call.selector
|
|
404
433
|
});
|
|
405
434
|
try {
|
|
406
|
-
const
|
|
407
|
-
const
|
|
435
|
+
const anchorBlockHeader = await this.stateMachine.anchorBlockStore.getBlockHeader();
|
|
436
|
+
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, TXE_JOB_ID);
|
|
437
|
+
const acirExecutionResult = await new WASMSimulator().executeUserCircuit(toACVMWitness(0, call.args), entryPointArtifact, new Oracle(oracle).toACIRCallback()).catch((err)=>{
|
|
408
438
|
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
409
439
|
throw new ExecutionError(err.message, {
|
|
410
440
|
contractAddress: call.to,
|
|
@@ -427,6 +457,7 @@ export class TXEOracleTopLevelContext {
|
|
|
427
457
|
];
|
|
428
458
|
}
|
|
429
459
|
async getLastBlockNumber() {
|
|
430
|
-
|
|
460
|
+
const header = await this.stateMachine.node.getBlockHeader('latest');
|
|
461
|
+
return header ? header.globalVariables.blockNumber : BlockNumber.ZERO;
|
|
431
462
|
}
|
|
432
463
|
}
|
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
|
};
|
|
@@ -88,10 +94,10 @@ export declare class RPCTranslator {
|
|
|
88
94
|
utilityGetPublicDataWitness(foreignBlockNumber: 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, foreignPackedRetrievedNoteLength: ForeignCallSingle): Promise<{
|
|
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, foreignPackedRetrievedNoteLength: ForeignCallSingle): Promise<{
|
|
92
98
|
values: (string | ForeignCallArray)[];
|
|
93
99
|
}>;
|
|
94
|
-
privateNotifyCreatedNote(foreignStorageSlot: ForeignCallSingle, foreignRandomness: 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<{
|
|
@@ -125,9 +131,9 @@ 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
|
}>;
|
|
@@ -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,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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"}
|