@aztec/sequencer-client 0.0.1-commit.96dac018d → 0.0.1-commit.993d52e
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/config.d.ts +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +12 -7
- package/dest/publisher/config.d.ts +1 -5
- package/dest/publisher/config.d.ts.map +1 -1
- package/dest/publisher/config.js +1 -6
- package/dest/publisher/index.d.ts +1 -2
- package/dest/publisher/index.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.d.ts +2 -8
- package/dest/publisher/sequencer-publisher.d.ts.map +1 -1
- package/dest/publisher/sequencer-publisher.js +8 -217
- package/dest/sequencer/checkpoint_proposal_job.d.ts +1 -1
- package/dest/sequencer/checkpoint_proposal_job.d.ts.map +1 -1
- package/dest/sequencer/checkpoint_proposal_job.js +13 -5
- package/dest/sequencer/sequencer.d.ts +3 -1
- package/dest/sequencer/sequencer.d.ts.map +1 -1
- package/package.json +28 -28
- package/src/config.ts +12 -6
- package/src/publisher/config.ts +0 -9
- package/src/publisher/index.ts +0 -3
- package/src/publisher/sequencer-publisher.ts +8 -178
- package/src/sequencer/checkpoint_proposal_job.ts +30 -4
- package/dest/publisher/l1_tx_failed_store/factory.d.ts +0 -11
- package/dest/publisher/l1_tx_failed_store/factory.d.ts.map +0 -1
- package/dest/publisher/l1_tx_failed_store/factory.js +0 -22
- package/dest/publisher/l1_tx_failed_store/failed_tx_store.d.ts +0 -59
- package/dest/publisher/l1_tx_failed_store/failed_tx_store.d.ts.map +0 -1
- package/dest/publisher/l1_tx_failed_store/failed_tx_store.js +0 -1
- package/dest/publisher/l1_tx_failed_store/file_store_failed_tx_store.d.ts +0 -15
- package/dest/publisher/l1_tx_failed_store/file_store_failed_tx_store.d.ts.map +0 -1
- package/dest/publisher/l1_tx_failed_store/file_store_failed_tx_store.js +0 -34
- package/dest/publisher/l1_tx_failed_store/index.d.ts +0 -4
- package/dest/publisher/l1_tx_failed_store/index.d.ts.map +0 -1
- package/dest/publisher/l1_tx_failed_store/index.js +0 -2
- package/src/publisher/l1_tx_failed_store/factory.ts +0 -32
- package/src/publisher/l1_tx_failed_store/failed_tx_store.ts +0 -55
- package/src/publisher/l1_tx_failed_store/file_store_failed_tx_store.ts +0 -46
- package/src/publisher/l1_tx_failed_store/index.ts +0 -3
|
@@ -440,7 +440,7 @@ import { NUM_CHECKPOINT_END_MARKER_FIELDS, getNumBlockEndBlobFields } from '@azt
|
|
|
440
440
|
import { BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB } from '@aztec/constants';
|
|
441
441
|
import { BlockNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
442
442
|
import { randomInt } from '@aztec/foundation/crypto/random';
|
|
443
|
-
import {
|
|
443
|
+
import { flipSignature, generateRecoverableSignature, generateUnrecoverableSignature } from '@aztec/foundation/crypto/secp256k1-signer';
|
|
444
444
|
import { filter } from '@aztec/foundation/iterator';
|
|
445
445
|
import { createLogger } from '@aztec/foundation/log';
|
|
446
446
|
import { sleep, sleepUntil } from '@aztec/foundation/sleep';
|
|
@@ -1082,7 +1082,7 @@ _dec = trackSpan('CheckpointProposalJob.execute'), _dec1 = trackSpan('Checkpoint
|
|
|
1082
1082
|
// Rollup contract requires that the signatures are provided in the order of the committee
|
|
1083
1083
|
const sorted = orderAttestations(trimmed, committee);
|
|
1084
1084
|
// Manipulate the attestations if we've been configured to do so
|
|
1085
|
-
if (this.config.injectFakeAttestation || this.config.shuffleAttestationOrdering) {
|
|
1085
|
+
if (this.config.injectFakeAttestation || this.config.injectHighSValueAttestation || this.config.injectUnrecoverableSignatureAttestation || this.config.shuffleAttestationOrdering) {
|
|
1086
1086
|
return this.manipulateAttestations(proposal.slotNumber, epoch, seed, committee, sorted);
|
|
1087
1087
|
}
|
|
1088
1088
|
return new CommitteeAttestationsAndSigners(sorted);
|
|
@@ -1099,7 +1099,7 @@ _dec = trackSpan('CheckpointProposalJob.execute'), _dec1 = trackSpan('Checkpoint
|
|
|
1099
1099
|
// Compute the proposer index in the committee, since we dont want to tweak it.
|
|
1100
1100
|
// Otherwise, the L1 rollup contract will reject the block outright.
|
|
1101
1101
|
const proposerIndex = Number(this.epochCache.computeProposerIndex(slotNumber, epoch, seed, BigInt(committee.length)));
|
|
1102
|
-
if (this.config.injectFakeAttestation) {
|
|
1102
|
+
if (this.config.injectFakeAttestation || this.config.injectHighSValueAttestation || this.config.injectUnrecoverableSignatureAttestation) {
|
|
1103
1103
|
// Find non-empty attestations that are not from the proposer
|
|
1104
1104
|
const nonProposerIndices = [];
|
|
1105
1105
|
for(let i = 0; i < attestations.length; i++){
|
|
@@ -1109,8 +1109,16 @@ _dec = trackSpan('CheckpointProposalJob.execute'), _dec1 = trackSpan('Checkpoint
|
|
|
1109
1109
|
}
|
|
1110
1110
|
if (nonProposerIndices.length > 0) {
|
|
1111
1111
|
const targetIndex = nonProposerIndices[randomInt(nonProposerIndices.length)];
|
|
1112
|
-
this.
|
|
1113
|
-
|
|
1112
|
+
if (this.config.injectHighSValueAttestation) {
|
|
1113
|
+
this.log.warn(`Injecting high-s value attestation in checkpoint for slot ${slotNumber} at index ${targetIndex}`);
|
|
1114
|
+
unfreeze(attestations[targetIndex]).signature = flipSignature(attestations[targetIndex].signature);
|
|
1115
|
+
} else if (this.config.injectUnrecoverableSignatureAttestation) {
|
|
1116
|
+
this.log.warn(`Injecting unrecoverable signature attestation in checkpoint for slot ${slotNumber} at index ${targetIndex}`);
|
|
1117
|
+
unfreeze(attestations[targetIndex]).signature = generateUnrecoverableSignature();
|
|
1118
|
+
} else {
|
|
1119
|
+
this.log.warn(`Injecting fake attestation in checkpoint for slot ${slotNumber} at index ${targetIndex}`);
|
|
1120
|
+
unfreeze(attestations[targetIndex]).signature = generateRecoverableSignature();
|
|
1121
|
+
}
|
|
1114
1122
|
}
|
|
1115
1123
|
return new CommitteeAttestationsAndSigners(attestations);
|
|
1116
1124
|
}
|
|
@@ -175,6 +175,8 @@ export declare class Sequencer extends Sequencer_base {
|
|
|
175
175
|
skipInvalidateBlockAsProposer: boolean;
|
|
176
176
|
broadcastInvalidBlockProposal: boolean;
|
|
177
177
|
injectFakeAttestation: boolean;
|
|
178
|
+
injectHighSValueAttestation: boolean;
|
|
179
|
+
injectUnrecoverableSignatureAttestation: boolean;
|
|
178
180
|
fishermanMode: boolean;
|
|
179
181
|
shuffleAttestationOrdering: boolean;
|
|
180
182
|
blockDurationMs?: number | undefined;
|
|
@@ -194,4 +196,4 @@ type SequencerSyncCheckResult = {
|
|
|
194
196
|
l1Timestamp: bigint;
|
|
195
197
|
pendingChainValidationStatus: ValidateCheckpointResult;
|
|
196
198
|
};
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL3NlcXVlbmNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQW9CLEtBQUssY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0csT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNMLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssZUFBZSxFQUVwQixLQUFLLHNCQUFzQixFQUM1QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHbkUsT0FBTyxFQUFjLEtBQUssZUFBZSxFQUFFLEtBQUssTUFBTSxFQUFpQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2hILE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM3RixPQUFPLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBR3JFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQzs7QUFFMUI7Ozs7Ozs7R0FPRztBQUNILHFCQUFhLFNBQVUsU0FBUSxjQUE4RDtJQTJCekYsU0FBUyxDQUFDLGdCQUFnQixFQUFFLHlCQUF5QjtJQUNyRCxTQUFTLENBQUMsZUFBZSxFQUFFLGVBQWU7SUFDMUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxxQkFBcUI7SUFDL0MsU0FBUyxDQUFDLFNBQVMsRUFBRSxHQUFHO0lBQ3hCLFNBQVMsQ0FBQyxVQUFVLEVBQUUsc0JBQXNCO0lBQzVDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsc0JBQXNCLEdBQUcsU0FBUztJQUMzRCxTQUFTLENBQUMsYUFBYSxFQUFFLGFBQWEsR0FBRyxXQUFXO0lBQ3BELFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxtQkFBbUI7SUFDbEQsU0FBUyxDQUFDLGtCQUFrQixFQUFFLDBCQUEwQjtJQUN4RCxTQUFTLENBQUMsV0FBVyxFQUFFLHdCQUF3QjtJQUMvQyxTQUFTLENBQUMsWUFBWSxFQUFFLFlBQVk7SUFDcEMsU0FBUyxDQUFDLFVBQVUsRUFBRSxVQUFVO0lBQ2hDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsY0FBYztJQUV4QyxTQUFTLENBQUMsU0FBUyxFQUFFLGVBQWU7SUFDcEMsU0FBUyxDQUFDLEdBQUc7SUF6Q2YsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFpQjtJQUN4QyxPQUFPLENBQUMsS0FBSyxDQUEwQjtJQUN2QyxPQUFPLENBQUMsT0FBTyxDQUFtQjtJQUVsQyx1R0FBdUc7SUFDdkcsT0FBTyxDQUFDLHVCQUF1QixDQUF5QjtJQUV4RCw4RUFBOEU7SUFDOUUsT0FBTyxDQUFDLDZCQUE2QixDQUF5QjtJQUU5RCxxR0FBcUc7SUFDckcsT0FBTyxDQUFDLGdDQUFnQyxDQUF5QjtJQUVqRSwwQ0FBMEM7SUFDMUMsT0FBTyxDQUFDLHNCQUFzQixDQUF5QjtJQUV2RCxnRkFBZ0Y7SUFDaEYsT0FBTyxDQUFDLDhCQUE4QixDQUEwQjtJQUVoRSwrR0FBK0c7SUFDL0csU0FBUyxDQUFDLFNBQVMsRUFBRyxrQkFBa0IsQ0FBQztJQUV6QywrQkFBK0I7SUFDL0IsU0FBUyxDQUFDLE1BQU0sRUFBRSx1QkFBdUIsQ0FBMEI7SUFFbkUsWUFDWSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFDM0MsZUFBZSxFQUFFLGVBQWUsRUFDaEMsY0FBYyxFQUFFLHFCQUFxQixFQUNyQyxTQUFTLEVBQUUsR0FBRyxFQUNkLFVBQVUsRUFBRSxzQkFBc0IsRUFDbEMsYUFBYSxFQUFFLHNCQUFzQixHQUFHLFNBQVMsRUFDakQsYUFBYSxFQUFFLGFBQWEsR0FBRyxXQUFXLEVBQzFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUN4QyxrQkFBa0IsRUFBRSwwQkFBMEIsRUFDOUMsV0FBVyxFQUFFLHdCQUF3QixFQUNyQyxZQUFZLEVBQUUsWUFBWSxFQUMxQixVQUFVLEVBQUUsVUFBVSxFQUN0QixjQUFjLEVBQUUsY0FBYyxFQUN4QyxNQUFNLEVBQUUsZUFBZSxFQUNiLFNBQVMsR0FBRSxlQUFzQyxFQUNqRCxHQUFHLHlDQUE0QixFQVcxQztJQUVELCtFQUErRTtJQUN4RSxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsUUFnQm5EO0lBRUQsc0VBQXNFO0lBQy9ELElBQUksU0FFVjtJQUVELG9EQUFvRDtJQUM3QyxLQUFLLFNBU1g7SUFFRCwyRUFBMkU7SUFDOUQsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPakM7SUFFRCwyQ0FBMkM7SUFDM0MsVUFBZ0IsUUFBUSxrQkFvQnZCO0lBRUQsa0RBQWtEO0lBQzNDLE1BQU07O01BRVo7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsVUFDZ0IsSUFBSSxvQ0E0Qm5CO1lBUWEseUJBQXlCO0lBMkp2QyxTQUFTLENBQUMsMkJBQTJCLENBQ25DLEtBQUssRUFBRSxXQUFXLEVBQ2xCLElBQUksRUFBRSxVQUFVLEVBQ2hCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxtQkFBbUIsRUFBRSxXQUFXLEVBQ2hDLFFBQVEsRUFBRSxVQUFVLEdBQUcsU0FBUyxFQUNoQyxTQUFTLEVBQUUsa0JBQWtCLEVBQzdCLGVBQWUsRUFBRSxVQUFVLEVBQzNCLG9CQUFvQixFQUFFLDJCQUEyQixHQUFHLFNBQVMsR0FDNUQscUJBQXFCLENBOEJ2QjtJQUVEOztPQUVHO0lBQ0ksUUFBUSxJQUFJLGNBQWMsQ0FFaEM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxRQUFRLENBQ2hCLGFBQWEsRUFBRSxjQUFjLEVBQzdCLFVBQVUsRUFBRSxVQUFVLEdBQUcsU0FBUyxFQUNsQyxJQUFJLEdBQUU7UUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUE7S0FBTyxHQUM3QixJQUFJLENBNkJOO0lBRUQ7OztPQUdHO0lBQ0gsVUFBZ0IsU0FBUyxDQUFDLElBQUksRUFBRTtRQUFFLEVBQUUsRUFBRSxNQUFNLENBQUM7UUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUMsd0JBQXdCLEdBQUcsU0FBUyxDQUFDLENBc0UvRztJQUVEOzs7T0FHRztJQUNILFVBQWdCLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FtQzVGO0lBRUQ7OztPQUdHO0lBQ0gsVUFDZ0Isb0JBQW9CLENBQUMsSUFBSSxFQUFFO1FBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQztRQUFDLEVBQUUsRUFBRSxNQUFNLENBQUE7S0FBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FvRTFGO0lBRUQ7OztPQUdHO0lBQ0gsVUFDZ0IsMEJBQTBCLENBQUMsSUFBSSxFQUFFO1FBQy9DLElBQUksRUFBRSxVQUFVLENBQUM7UUFDakIsUUFBUSxFQUFFLFVBQVUsR0FBRyxTQUFTLENBQUM7S0FDbEMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBc0NoQjtJQUVEOzs7OztPQUtHO0lBQ0gsVUFBZ0IsOEJBQThCLENBQzVDLFFBQVEsRUFBRSx3QkFBd0IsRUFDbEMsV0FBVyxFQUFFLFVBQVUsR0FDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQW9GZjtJQUVELE9BQU8sQ0FBQyxxQkFBcUI7SUE2QjdCLE9BQU8sQ0FBQywwQkFBMEI7SUFJbEMsT0FBTyxDQUFDLGtCQUFrQjtJQUsxQixJQUFXLGlCQUFpQixXQUUzQjtJQUVELElBQVcsYUFBYSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBRTdDO0lBRU0sZ0JBQWdCLElBQUksc0JBQXNCLEdBQUcsU0FBUyxDQUU1RDtJQUVELElBQVcsTUFBTSxJQUFJLE1BQU0sQ0FFMUI7SUFFTSxxQkFBcUIsaUJBRTNCO0lBRUQscUZBQXFGO0lBQzlFLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxtQkFBbUIsR0FBRyxJQUFJLENBRXJFO0lBRU0sU0FBUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BRWY7SUFFRCxPQUFPLEtBQUssZ0JBQWdCLEdBRTNCO0NBQ0Y7QUFFRCxLQUFLLHdCQUF3QixHQUFHO0lBQzlCLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztJQUN0QixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztJQUNuQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDWixXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLDRCQUE0QixFQUFFLHdCQUF3QixDQUFDO0NBQ3hELENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sequencer.d.ts","sourceRoot":"","sources":["../../src/sequencer/sequencer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/sequencer-client",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.993d52e",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -26,38 +26,38 @@
|
|
|
26
26
|
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --config jest.integration.config.json"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@aztec/aztec.js": "0.0.1-commit.
|
|
30
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
31
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
32
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
33
|
-
"@aztec/constants": "0.0.1-commit.
|
|
34
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
35
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
36
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
37
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
38
|
-
"@aztec/merkle-tree": "0.0.1-commit.
|
|
39
|
-
"@aztec/node-keystore": "0.0.1-commit.
|
|
40
|
-
"@aztec/noir-acvm_js": "0.0.1-commit.
|
|
41
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
42
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
43
|
-
"@aztec/noir-types": "0.0.1-commit.
|
|
44
|
-
"@aztec/p2p": "0.0.1-commit.
|
|
45
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
46
|
-
"@aztec/prover-client": "0.0.1-commit.
|
|
47
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
48
|
-
"@aztec/slasher": "0.0.1-commit.
|
|
49
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
50
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
51
|
-
"@aztec/validator-client": "0.0.1-commit.
|
|
52
|
-
"@aztec/validator-ha-signer": "0.0.1-commit.
|
|
53
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
29
|
+
"@aztec/aztec.js": "0.0.1-commit.993d52e",
|
|
30
|
+
"@aztec/bb-prover": "0.0.1-commit.993d52e",
|
|
31
|
+
"@aztec/blob-client": "0.0.1-commit.993d52e",
|
|
32
|
+
"@aztec/blob-lib": "0.0.1-commit.993d52e",
|
|
33
|
+
"@aztec/constants": "0.0.1-commit.993d52e",
|
|
34
|
+
"@aztec/epoch-cache": "0.0.1-commit.993d52e",
|
|
35
|
+
"@aztec/ethereum": "0.0.1-commit.993d52e",
|
|
36
|
+
"@aztec/foundation": "0.0.1-commit.993d52e",
|
|
37
|
+
"@aztec/l1-artifacts": "0.0.1-commit.993d52e",
|
|
38
|
+
"@aztec/merkle-tree": "0.0.1-commit.993d52e",
|
|
39
|
+
"@aztec/node-keystore": "0.0.1-commit.993d52e",
|
|
40
|
+
"@aztec/noir-acvm_js": "0.0.1-commit.993d52e",
|
|
41
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.993d52e",
|
|
42
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.993d52e",
|
|
43
|
+
"@aztec/noir-types": "0.0.1-commit.993d52e",
|
|
44
|
+
"@aztec/p2p": "0.0.1-commit.993d52e",
|
|
45
|
+
"@aztec/protocol-contracts": "0.0.1-commit.993d52e",
|
|
46
|
+
"@aztec/prover-client": "0.0.1-commit.993d52e",
|
|
47
|
+
"@aztec/simulator": "0.0.1-commit.993d52e",
|
|
48
|
+
"@aztec/slasher": "0.0.1-commit.993d52e",
|
|
49
|
+
"@aztec/stdlib": "0.0.1-commit.993d52e",
|
|
50
|
+
"@aztec/telemetry-client": "0.0.1-commit.993d52e",
|
|
51
|
+
"@aztec/validator-client": "0.0.1-commit.993d52e",
|
|
52
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.993d52e",
|
|
53
|
+
"@aztec/world-state": "0.0.1-commit.993d52e",
|
|
54
54
|
"lodash.chunk": "^4.2.0",
|
|
55
55
|
"tslib": "^2.4.0",
|
|
56
56
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
60
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
59
|
+
"@aztec/archiver": "0.0.1-commit.993d52e",
|
|
60
|
+
"@aztec/kv-store": "0.0.1-commit.993d52e",
|
|
61
61
|
"@electric-sql/pglite": "^0.3.14",
|
|
62
62
|
"@jest/globals": "^30.0.0",
|
|
63
63
|
"@types/jest": "^30.0.0",
|
package/src/config.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { type P2PConfig, p2pConfigMappings } from '@aztec/p2p/config';
|
|
|
13
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
14
|
import {
|
|
15
15
|
type ChainConfig,
|
|
16
|
+
DEFAULT_MAX_TXS_PER_BLOCK,
|
|
16
17
|
type SequencerConfig,
|
|
17
18
|
chainConfigMappings,
|
|
18
19
|
sharedSequencerConfigMappings,
|
|
@@ -37,7 +38,7 @@ export type { SequencerConfig };
|
|
|
37
38
|
*/
|
|
38
39
|
export const DefaultSequencerConfig: ResolvedSequencerConfig = {
|
|
39
40
|
sequencerPollingIntervalMS: 500,
|
|
40
|
-
maxTxsPerBlock:
|
|
41
|
+
maxTxsPerBlock: DEFAULT_MAX_TXS_PER_BLOCK,
|
|
41
42
|
minTxsPerBlock: 1,
|
|
42
43
|
buildCheckpointIfEmpty: false,
|
|
43
44
|
publishTxsWithProposals: false,
|
|
@@ -52,6 +53,8 @@ export const DefaultSequencerConfig: ResolvedSequencerConfig = {
|
|
|
52
53
|
skipInvalidateBlockAsProposer: false,
|
|
53
54
|
broadcastInvalidBlockProposal: false,
|
|
54
55
|
injectFakeAttestation: false,
|
|
56
|
+
injectHighSValueAttestation: false,
|
|
57
|
+
injectUnrecoverableSignatureAttestation: false,
|
|
55
58
|
fishermanMode: false,
|
|
56
59
|
shuffleAttestationOrdering: false,
|
|
57
60
|
skipPushProposedBlocksToArchiver: false,
|
|
@@ -77,11 +80,6 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
77
80
|
description: 'The number of ms to wait between polling for checking to build on the next slot.',
|
|
78
81
|
...numberConfigHelper(DefaultSequencerConfig.sequencerPollingIntervalMS),
|
|
79
82
|
},
|
|
80
|
-
maxTxsPerBlock: {
|
|
81
|
-
env: 'SEQ_MAX_TX_PER_BLOCK',
|
|
82
|
-
description: 'The maximum number of txs to include in a block.',
|
|
83
|
-
...numberConfigHelper(DefaultSequencerConfig.maxTxsPerBlock),
|
|
84
|
-
},
|
|
85
83
|
minTxsPerBlock: {
|
|
86
84
|
env: 'SEQ_MIN_TX_PER_BLOCK',
|
|
87
85
|
description: 'The minimum number of txs to include in a block.',
|
|
@@ -186,6 +184,14 @@ export const sequencerConfigMappings: ConfigMappingsType<SequencerConfig> = {
|
|
|
186
184
|
description: 'Inject a fake attestation (for testing only)',
|
|
187
185
|
...booleanConfigHelper(DefaultSequencerConfig.injectFakeAttestation),
|
|
188
186
|
},
|
|
187
|
+
injectHighSValueAttestation: {
|
|
188
|
+
description: 'Inject a malleable attestation with a high-s value (for testing only)',
|
|
189
|
+
...booleanConfigHelper(DefaultSequencerConfig.injectHighSValueAttestation),
|
|
190
|
+
},
|
|
191
|
+
injectUnrecoverableSignatureAttestation: {
|
|
192
|
+
description: 'Inject an attestation with an unrecoverable signature (for testing only)',
|
|
193
|
+
...booleanConfigHelper(DefaultSequencerConfig.injectUnrecoverableSignatureAttestation),
|
|
194
|
+
},
|
|
189
195
|
fishermanMode: {
|
|
190
196
|
env: 'FISHERMAN_MODE',
|
|
191
197
|
description:
|
package/src/publisher/config.ts
CHANGED
|
@@ -48,8 +48,6 @@ export type PublisherConfig = L1TxUtilsConfig &
|
|
|
48
48
|
fishermanMode?: boolean;
|
|
49
49
|
/** Address of the forwarder contract to wrap all L1 transactions through (for testing purposes only) */
|
|
50
50
|
publisherForwarderAddress?: EthAddress;
|
|
51
|
-
/** Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path */
|
|
52
|
-
l1TxFailedStore?: string;
|
|
53
51
|
};
|
|
54
52
|
|
|
55
53
|
export type ProverPublisherConfig = L1TxUtilsConfig &
|
|
@@ -64,8 +62,6 @@ export type SequencerPublisherConfig = L1TxUtilsConfig &
|
|
|
64
62
|
fishermanMode?: boolean;
|
|
65
63
|
sequencerPublisherAllowInvalidStates?: boolean;
|
|
66
64
|
sequencerPublisherForwarderAddress?: EthAddress;
|
|
67
|
-
/** Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path */
|
|
68
|
-
l1TxFailedStore?: string;
|
|
69
65
|
};
|
|
70
66
|
|
|
71
67
|
export function getPublisherConfigFromProverConfig(config: ProverPublisherConfig): PublisherConfig {
|
|
@@ -81,7 +77,6 @@ export function getPublisherConfigFromSequencerConfig(config: SequencerPublisher
|
|
|
81
77
|
...config,
|
|
82
78
|
publisherAllowInvalidStates: config.sequencerPublisherAllowInvalidStates,
|
|
83
79
|
publisherForwarderAddress: config.sequencerPublisherForwarderAddress,
|
|
84
|
-
l1TxFailedStore: config.l1TxFailedStore,
|
|
85
80
|
};
|
|
86
81
|
}
|
|
87
82
|
|
|
@@ -138,10 +133,6 @@ export const sequencerPublisherConfigMappings: ConfigMappingsType<SequencerPubli
|
|
|
138
133
|
description: 'Address of the forwarder contract to wrap all L1 transactions through (for testing purposes only)',
|
|
139
134
|
parseEnv: (val: string) => (val ? EthAddress.fromString(val) : undefined),
|
|
140
135
|
},
|
|
141
|
-
l1TxFailedStore: {
|
|
142
|
-
env: 'L1_TX_FAILED_STORE',
|
|
143
|
-
description: 'Store for failed L1 transaction inputs (test networks only). Format: gs://bucket/path',
|
|
144
|
-
},
|
|
145
136
|
};
|
|
146
137
|
|
|
147
138
|
export const proverPublisherConfigMappings: ConfigMappingsType<ProverPublisherConfig & L1TxUtilsConfig> = {
|
package/src/publisher/index.ts
CHANGED
|
@@ -3,6 +3,3 @@ export { SequencerPublisherFactory } from './sequencer-publisher-factory.js';
|
|
|
3
3
|
|
|
4
4
|
// Used for tests
|
|
5
5
|
export { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
6
|
-
|
|
7
|
-
// Failed L1 tx store (optional, for test networks)
|
|
8
|
-
export { type FailedL1Tx, type FailedL1TxUri, type L1TxFailedStore } from './l1_tx_failed_store/index.js';
|
|
@@ -45,19 +45,9 @@ import type { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
|
45
45
|
import type { L1PublishCheckpointStats } from '@aztec/stdlib/stats';
|
|
46
46
|
import { type TelemetryClient, type Tracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
47
47
|
|
|
48
|
-
import {
|
|
49
|
-
type Hex,
|
|
50
|
-
type StateOverride,
|
|
51
|
-
type TransactionReceipt,
|
|
52
|
-
type TypedDataDefinition,
|
|
53
|
-
encodeFunctionData,
|
|
54
|
-
keccak256,
|
|
55
|
-
multicall3Abi,
|
|
56
|
-
toHex,
|
|
57
|
-
} from 'viem';
|
|
48
|
+
import { type StateOverride, type TransactionReceipt, type TypedDataDefinition, encodeFunctionData, toHex } from 'viem';
|
|
58
49
|
|
|
59
50
|
import type { SequencerPublisherConfig } from './config.js';
|
|
60
|
-
import { type FailedL1Tx, type L1TxFailedStore, createL1TxFailedStore } from './l1_tx_failed_store/index.js';
|
|
61
51
|
import { SequencerPublisherMetrics } from './sequencer-publisher-metrics.js';
|
|
62
52
|
|
|
63
53
|
/** Arguments to the process method of the rollup contract */
|
|
@@ -119,7 +109,6 @@ export class SequencerPublisher {
|
|
|
119
109
|
private interrupted = false;
|
|
120
110
|
private metrics: SequencerPublisherMetrics;
|
|
121
111
|
public epochCache: EpochCache;
|
|
122
|
-
private failedTxStore?: Promise<L1TxFailedStore | undefined>;
|
|
123
112
|
|
|
124
113
|
protected governanceLog = createLogger('sequencer:publisher:governance');
|
|
125
114
|
protected slashingLog = createLogger('sequencer:publisher:slashing');
|
|
@@ -160,7 +149,7 @@ export class SequencerPublisher {
|
|
|
160
149
|
protected requests: RequestWithExpiry[] = [];
|
|
161
150
|
|
|
162
151
|
constructor(
|
|
163
|
-
private config: Pick<SequencerPublisherConfig, 'fishermanMode'
|
|
152
|
+
private config: Pick<SequencerPublisherConfig, 'fishermanMode'> &
|
|
164
153
|
Pick<L1ContractsConfig, 'ethereumSlotDuration'> & { l1ChainId: number },
|
|
165
154
|
deps: {
|
|
166
155
|
telemetry?: TelemetryClient;
|
|
@@ -216,31 +205,6 @@ export class SequencerPublisher {
|
|
|
216
205
|
this.rollupContract,
|
|
217
206
|
createLogger('sequencer:publisher:price-oracle'),
|
|
218
207
|
);
|
|
219
|
-
|
|
220
|
-
// Initialize failed L1 tx store (optional, for test networks)
|
|
221
|
-
this.failedTxStore = createL1TxFailedStore(config.l1TxFailedStore, this.log);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Backs up a failed L1 transaction to the configured store for debugging.
|
|
226
|
-
* Does nothing if no store is configured.
|
|
227
|
-
*/
|
|
228
|
-
private backupFailedTx(failedTx: Omit<FailedL1Tx, 'timestamp'>): void {
|
|
229
|
-
if (!this.failedTxStore) {
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
const tx: FailedL1Tx = {
|
|
234
|
-
...failedTx,
|
|
235
|
-
timestamp: Date.now(),
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
// Fire and forget - don't block on backup
|
|
239
|
-
void this.failedTxStore
|
|
240
|
-
.then(store => store?.saveFailedTx(tx))
|
|
241
|
-
.catch(err => {
|
|
242
|
-
this.log.warn(`Failed to backup failed L1 tx to store`, err);
|
|
243
|
-
});
|
|
244
208
|
}
|
|
245
209
|
|
|
246
210
|
public getRollupContract(): RollupContract {
|
|
@@ -422,21 +386,6 @@ export class SequencerPublisher {
|
|
|
422
386
|
validRequests.sort((a, b) => compareActions(a.action, b.action));
|
|
423
387
|
|
|
424
388
|
try {
|
|
425
|
-
// Capture context for failed tx backup before sending
|
|
426
|
-
const l1BlockNumber = await this.l1TxUtils.getBlockNumber();
|
|
427
|
-
const multicallData = encodeFunctionData({
|
|
428
|
-
abi: multicall3Abi,
|
|
429
|
-
functionName: 'aggregate3',
|
|
430
|
-
args: [
|
|
431
|
-
validRequests.map(r => ({
|
|
432
|
-
target: r.request.to!,
|
|
433
|
-
callData: r.request.data!,
|
|
434
|
-
allowFailure: true,
|
|
435
|
-
})),
|
|
436
|
-
],
|
|
437
|
-
});
|
|
438
|
-
const blobDataHex = blobConfig?.blobs?.map(b => toHex(b)) as Hex[] | undefined;
|
|
439
|
-
|
|
440
389
|
this.log.debug('Forwarding transactions', {
|
|
441
390
|
validRequests: validRequests.map(request => request.action),
|
|
442
391
|
txConfig,
|
|
@@ -449,12 +398,7 @@ export class SequencerPublisher {
|
|
|
449
398
|
this.rollupContract.address,
|
|
450
399
|
this.log,
|
|
451
400
|
);
|
|
452
|
-
const
|
|
453
|
-
const { successfulActions = [], failedActions = [] } = this.callbackBundledTransactions(
|
|
454
|
-
validRequests,
|
|
455
|
-
result,
|
|
456
|
-
txContext,
|
|
457
|
-
);
|
|
401
|
+
const { successfulActions = [], failedActions = [] } = this.callbackBundledTransactions(validRequests, result);
|
|
458
402
|
return { result, expiredActions, sentActions: validActions, successfulActions, failedActions };
|
|
459
403
|
} catch (err) {
|
|
460
404
|
const viemError = formatViemError(err);
|
|
@@ -474,25 +418,11 @@ export class SequencerPublisher {
|
|
|
474
418
|
|
|
475
419
|
private callbackBundledTransactions(
|
|
476
420
|
requests: RequestWithExpiry[],
|
|
477
|
-
result
|
|
478
|
-
txContext: { multicallData: Hex; blobData?: Hex[]; l1BlockNumber: bigint },
|
|
421
|
+
result?: { receipt: TransactionReceipt } | FormattedViemError,
|
|
479
422
|
) {
|
|
480
423
|
const actionsListStr = requests.map(r => r.action).join(', ');
|
|
481
424
|
if (result instanceof FormattedViemError) {
|
|
482
425
|
this.log.error(`Failed to publish bundled transactions (${actionsListStr})`, result);
|
|
483
|
-
this.backupFailedTx({
|
|
484
|
-
id: keccak256(txContext.multicallData),
|
|
485
|
-
failureType: 'send-error',
|
|
486
|
-
request: { to: MULTI_CALL_3_ADDRESS, data: txContext.multicallData },
|
|
487
|
-
blobData: txContext.blobData,
|
|
488
|
-
l1BlockNumber: txContext.l1BlockNumber.toString(),
|
|
489
|
-
error: { message: result.message, name: result.name },
|
|
490
|
-
context: {
|
|
491
|
-
actions: requests.map(r => r.action),
|
|
492
|
-
requests: requests.map(r => ({ action: r.action, to: r.request.to! as Hex, data: r.request.data! })),
|
|
493
|
-
sender: this.getSenderAddress().toString(),
|
|
494
|
-
},
|
|
495
|
-
});
|
|
496
426
|
return { failedActions: requests.map(r => r.action) };
|
|
497
427
|
} else {
|
|
498
428
|
this.log.verbose(`Published bundled transactions (${actionsListStr})`, { result, requests });
|
|
@@ -505,30 +435,6 @@ export class SequencerPublisher {
|
|
|
505
435
|
failedActions.push(request.action);
|
|
506
436
|
}
|
|
507
437
|
}
|
|
508
|
-
// Single backup for the whole reverted tx
|
|
509
|
-
if (failedActions.length > 0 && result?.receipt?.status === 'reverted') {
|
|
510
|
-
this.backupFailedTx({
|
|
511
|
-
id: result.receipt.transactionHash,
|
|
512
|
-
failureType: 'revert',
|
|
513
|
-
request: { to: MULTI_CALL_3_ADDRESS, data: txContext.multicallData },
|
|
514
|
-
blobData: txContext.blobData,
|
|
515
|
-
l1BlockNumber: result.receipt.blockNumber.toString(),
|
|
516
|
-
receipt: {
|
|
517
|
-
transactionHash: result.receipt.transactionHash,
|
|
518
|
-
blockNumber: result.receipt.blockNumber.toString(),
|
|
519
|
-
gasUsed: (result.receipt.gasUsed ?? 0n).toString(),
|
|
520
|
-
status: 'reverted',
|
|
521
|
-
},
|
|
522
|
-
error: { message: result.errorMsg ?? 'Transaction reverted' },
|
|
523
|
-
context: {
|
|
524
|
-
actions: failedActions,
|
|
525
|
-
requests: requests
|
|
526
|
-
.filter(r => failedActions.includes(r.action))
|
|
527
|
-
.map(r => ({ action: r.action, to: r.request.to! as Hex, data: r.request.data! })),
|
|
528
|
-
sender: this.getSenderAddress().toString(),
|
|
529
|
-
},
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
438
|
return { successfulActions, failedActions };
|
|
533
439
|
}
|
|
534
440
|
}
|
|
@@ -640,8 +546,6 @@ export class SequencerPublisher {
|
|
|
640
546
|
const request = this.buildInvalidateCheckpointRequest(validationResult);
|
|
641
547
|
this.log.debug(`Simulating invalidate checkpoint ${checkpointNumber}`, { ...logData, request });
|
|
642
548
|
|
|
643
|
-
const l1BlockNumber = await this.l1TxUtils.getBlockNumber();
|
|
644
|
-
|
|
645
549
|
try {
|
|
646
550
|
const { gasUsed } = await this.l1TxUtils.simulate(
|
|
647
551
|
request,
|
|
@@ -693,18 +597,6 @@ export class SequencerPublisher {
|
|
|
693
597
|
|
|
694
598
|
// Otherwise, throw. We cannot build the next checkpoint if we cannot invalidate the previous one.
|
|
695
599
|
this.log.error(`Simulation for invalidate checkpoint ${checkpointNumber} failed`, viemError, logData);
|
|
696
|
-
this.backupFailedTx({
|
|
697
|
-
id: keccak256(request.data!),
|
|
698
|
-
failureType: 'simulation',
|
|
699
|
-
request: { to: request.to!, data: request.data!, value: request.value?.toString() },
|
|
700
|
-
l1BlockNumber: l1BlockNumber.toString(),
|
|
701
|
-
error: { message: viemError.message, name: viemError.name },
|
|
702
|
-
context: {
|
|
703
|
-
actions: [`invalidate-${reason}`],
|
|
704
|
-
checkpointNumber,
|
|
705
|
-
sender: this.getSenderAddress().toString(),
|
|
706
|
-
},
|
|
707
|
-
});
|
|
708
600
|
throw new Error(`Failed to simulate invalidate checkpoint ${checkpointNumber}`, { cause: viemError });
|
|
709
601
|
}
|
|
710
602
|
}
|
|
@@ -852,26 +744,11 @@ export class SequencerPublisher {
|
|
|
852
744
|
lastValidL2Slot: slotNumber,
|
|
853
745
|
});
|
|
854
746
|
|
|
855
|
-
const l1BlockNumber = await this.l1TxUtils.getBlockNumber();
|
|
856
|
-
|
|
857
747
|
try {
|
|
858
748
|
await this.l1TxUtils.simulate(request, { time: timestamp }, [], mergeAbis([request.abi ?? [], ErrorsAbi]));
|
|
859
749
|
this.log.debug(`Simulation for ${action} at slot ${slotNumber} succeeded`, { request });
|
|
860
750
|
} catch (err) {
|
|
861
|
-
|
|
862
|
-
this.log.error(`Failed simulation for ${action} at slot ${slotNumber} (enqueuing the action anyway)`, viemError);
|
|
863
|
-
this.backupFailedTx({
|
|
864
|
-
id: keccak256(request.data!),
|
|
865
|
-
failureType: 'simulation',
|
|
866
|
-
request: { to: request.to!, data: request.data!, value: request.value?.toString() },
|
|
867
|
-
l1BlockNumber: l1BlockNumber.toString(),
|
|
868
|
-
error: { message: viemError.message, name: viemError.name },
|
|
869
|
-
context: {
|
|
870
|
-
actions: [action],
|
|
871
|
-
slot: slotNumber,
|
|
872
|
-
sender: this.getSenderAddress().toString(),
|
|
873
|
-
},
|
|
874
|
-
});
|
|
751
|
+
this.log.error(`Failed simulation for ${action} at slot ${slotNumber} (enqueuing the action anyway)`, err);
|
|
875
752
|
// Yes, we enqueue the request anyway, in case there was a bug with the simulation itself
|
|
876
753
|
}
|
|
877
754
|
|
|
@@ -1167,8 +1044,6 @@ export class SequencerPublisher {
|
|
|
1167
1044
|
|
|
1168
1045
|
this.log.debug(`Simulating ${action} for slot ${slotNumber}`, logData);
|
|
1169
1046
|
|
|
1170
|
-
const l1BlockNumber = await this.l1TxUtils.getBlockNumber();
|
|
1171
|
-
|
|
1172
1047
|
let gasUsed: bigint;
|
|
1173
1048
|
const simulateAbi = mergeAbis([request.abi ?? [], ErrorsAbi]);
|
|
1174
1049
|
try {
|
|
@@ -1178,19 +1053,6 @@ export class SequencerPublisher {
|
|
|
1178
1053
|
const viemError = formatViemError(err, simulateAbi);
|
|
1179
1054
|
this.log.error(`Simulation for ${action} at ${slotNumber} failed`, viemError, logData);
|
|
1180
1055
|
|
|
1181
|
-
this.backupFailedTx({
|
|
1182
|
-
id: keccak256(request.data!),
|
|
1183
|
-
failureType: 'simulation',
|
|
1184
|
-
request: { to: request.to!, data: request.data!, value: request.value?.toString() },
|
|
1185
|
-
l1BlockNumber: l1BlockNumber.toString(),
|
|
1186
|
-
error: { message: viemError.message, name: viemError.name },
|
|
1187
|
-
context: {
|
|
1188
|
-
actions: [action],
|
|
1189
|
-
slot: slotNumber,
|
|
1190
|
-
sender: this.getSenderAddress().toString(),
|
|
1191
|
-
},
|
|
1192
|
-
});
|
|
1193
|
-
|
|
1194
1056
|
return false;
|
|
1195
1057
|
}
|
|
1196
1058
|
|
|
@@ -1274,27 +1136,9 @@ export class SequencerPublisher {
|
|
|
1274
1136
|
kzg,
|
|
1275
1137
|
},
|
|
1276
1138
|
)
|
|
1277
|
-
.catch(
|
|
1278
|
-
const
|
|
1279
|
-
this.log.error(`Failed to validate blobs`,
|
|
1280
|
-
const validateBlobsData = encodeFunctionData({
|
|
1281
|
-
abi: RollupAbi,
|
|
1282
|
-
functionName: 'validateBlobs',
|
|
1283
|
-
args: [blobInput],
|
|
1284
|
-
});
|
|
1285
|
-
const l1BlockNumber = await this.l1TxUtils.getBlockNumber();
|
|
1286
|
-
this.backupFailedTx({
|
|
1287
|
-
id: keccak256(validateBlobsData),
|
|
1288
|
-
failureType: 'simulation',
|
|
1289
|
-
request: { to: this.rollupContract.address as Hex, data: validateBlobsData },
|
|
1290
|
-
blobData: encodedData.blobs.map(b => toHex(b.data)) as Hex[],
|
|
1291
|
-
l1BlockNumber: l1BlockNumber.toString(),
|
|
1292
|
-
error: { message: viemError.message, name: viemError.name },
|
|
1293
|
-
context: {
|
|
1294
|
-
actions: ['validate-blobs'],
|
|
1295
|
-
sender: this.getSenderAddress().toString(),
|
|
1296
|
-
},
|
|
1297
|
-
});
|
|
1139
|
+
.catch(err => {
|
|
1140
|
+
const { message, metaMessages } = formatViemError(err);
|
|
1141
|
+
this.log.error(`Failed to validate blobs`, message, { metaMessages });
|
|
1298
1142
|
throw new Error('Failed to validate blobs');
|
|
1299
1143
|
});
|
|
1300
1144
|
}
|
|
@@ -1373,8 +1217,6 @@ export class SequencerPublisher {
|
|
|
1373
1217
|
});
|
|
1374
1218
|
}
|
|
1375
1219
|
|
|
1376
|
-
const l1BlockNumber = await this.l1TxUtils.getBlockNumber();
|
|
1377
|
-
|
|
1378
1220
|
const simulationResult = await this.l1TxUtils
|
|
1379
1221
|
.simulate(
|
|
1380
1222
|
{
|
|
@@ -1408,18 +1250,6 @@ export class SequencerPublisher {
|
|
|
1408
1250
|
};
|
|
1409
1251
|
}
|
|
1410
1252
|
this.log.error(`Failed to simulate propose tx`, viemError);
|
|
1411
|
-
this.backupFailedTx({
|
|
1412
|
-
id: keccak256(rollupData),
|
|
1413
|
-
failureType: 'simulation',
|
|
1414
|
-
request: { to: this.rollupContract.address, data: rollupData },
|
|
1415
|
-
l1BlockNumber: l1BlockNumber.toString(),
|
|
1416
|
-
error: { message: viemError.message, name: viemError.name },
|
|
1417
|
-
context: {
|
|
1418
|
-
actions: ['propose'],
|
|
1419
|
-
slot: Number(args[0].header.slotNumber),
|
|
1420
|
-
sender: this.getSenderAddress().toString(),
|
|
1421
|
-
},
|
|
1422
|
-
});
|
|
1423
1253
|
throw err;
|
|
1424
1254
|
});
|
|
1425
1255
|
|
|
@@ -9,6 +9,11 @@ import {
|
|
|
9
9
|
SlotNumber,
|
|
10
10
|
} from '@aztec/foundation/branded-types';
|
|
11
11
|
import { randomInt } from '@aztec/foundation/crypto/random';
|
|
12
|
+
import {
|
|
13
|
+
flipSignature,
|
|
14
|
+
generateRecoverableSignature,
|
|
15
|
+
generateUnrecoverableSignature,
|
|
16
|
+
} from '@aztec/foundation/crypto/secp256k1-signer';
|
|
12
17
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
13
18
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
14
19
|
import { Signature } from '@aztec/foundation/eth-signature';
|
|
@@ -759,7 +764,12 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
759
764
|
const sorted = orderAttestations(trimmed, committee);
|
|
760
765
|
|
|
761
766
|
// Manipulate the attestations if we've been configured to do so
|
|
762
|
-
if (
|
|
767
|
+
if (
|
|
768
|
+
this.config.injectFakeAttestation ||
|
|
769
|
+
this.config.injectHighSValueAttestation ||
|
|
770
|
+
this.config.injectUnrecoverableSignatureAttestation ||
|
|
771
|
+
this.config.shuffleAttestationOrdering
|
|
772
|
+
) {
|
|
763
773
|
return this.manipulateAttestations(proposal.slotNumber, epoch, seed, committee, sorted);
|
|
764
774
|
}
|
|
765
775
|
|
|
@@ -788,7 +798,11 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
788
798
|
this.epochCache.computeProposerIndex(slotNumber, epoch, seed, BigInt(committee.length)),
|
|
789
799
|
);
|
|
790
800
|
|
|
791
|
-
if (
|
|
801
|
+
if (
|
|
802
|
+
this.config.injectFakeAttestation ||
|
|
803
|
+
this.config.injectHighSValueAttestation ||
|
|
804
|
+
this.config.injectUnrecoverableSignatureAttestation
|
|
805
|
+
) {
|
|
792
806
|
// Find non-empty attestations that are not from the proposer
|
|
793
807
|
const nonProposerIndices: number[] = [];
|
|
794
808
|
for (let i = 0; i < attestations.length; i++) {
|
|
@@ -798,8 +812,20 @@ export class CheckpointProposalJob implements Traceable {
|
|
|
798
812
|
}
|
|
799
813
|
if (nonProposerIndices.length > 0) {
|
|
800
814
|
const targetIndex = nonProposerIndices[randomInt(nonProposerIndices.length)];
|
|
801
|
-
this.
|
|
802
|
-
|
|
815
|
+
if (this.config.injectHighSValueAttestation) {
|
|
816
|
+
this.log.warn(
|
|
817
|
+
`Injecting high-s value attestation in checkpoint for slot ${slotNumber} at index ${targetIndex}`,
|
|
818
|
+
);
|
|
819
|
+
unfreeze(attestations[targetIndex]).signature = flipSignature(attestations[targetIndex].signature);
|
|
820
|
+
} else if (this.config.injectUnrecoverableSignatureAttestation) {
|
|
821
|
+
this.log.warn(
|
|
822
|
+
`Injecting unrecoverable signature attestation in checkpoint for slot ${slotNumber} at index ${targetIndex}`,
|
|
823
|
+
);
|
|
824
|
+
unfreeze(attestations[targetIndex]).signature = generateUnrecoverableSignature();
|
|
825
|
+
} else {
|
|
826
|
+
this.log.warn(`Injecting fake attestation in checkpoint for slot ${slotNumber} at index ${targetIndex}`);
|
|
827
|
+
unfreeze(attestations[targetIndex]).signature = generateRecoverableSignature();
|
|
828
|
+
}
|
|
803
829
|
}
|
|
804
830
|
return new CommitteeAttestationsAndSigners(attestations);
|
|
805
831
|
}
|