@aztec/p2p 0.0.1-commit.4d79d1f2d → 0.0.1-commit.4eabbdb
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/client/factory.d.ts +3 -2
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +9 -5
- package/dest/client/interface.d.ts +11 -9
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +6 -7
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +49 -14
- package/dest/client/test/tx_proposal_collector/proposal_tx_collector_worker.js +5 -5
- package/dest/config.d.ts +12 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +5 -0
- package/dest/errors/tx-pool.error.d.ts +8 -0
- package/dest/errors/tx-pool.error.d.ts.map +1 -0
- package/dest/errors/tx-pool.error.js +9 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +4 -2
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool.js +5 -0
- package/dest/mem_pools/attestation_pool/mocks.d.ts +2 -2
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +2 -2
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.js +3 -3
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts +30 -13
- package/dest/mem_pools/tx_pool_v2/deleted_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/deleted_pool.js +91 -20
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/eviction_manager.js +18 -9
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.js +4 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.js +10 -4
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts +2 -2
- package/dest/mem_pools/tx_pool_v2/eviction/index.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/index.js +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts +48 -5
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/interfaces.js +8 -0
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.js +7 -5
- package/dest/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.js +5 -3
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.js +8 -4
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts +4 -4
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.js +14 -4
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.js +2 -2
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts +15 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.d.ts.map +1 -0
- package/dest/mem_pools/tx_pool_v2/instrumentation.js +43 -0
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts +14 -2
- package/dest/mem_pools/tx_pool_v2/interfaces.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/interfaces.js +3 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts +9 -5
- package/dest/mem_pools/tx_pool_v2/tx_metadata.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_metadata.js +30 -5
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts +12 -3
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_indices.js +27 -4
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts +8 -3
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2.js +11 -6
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts +12 -4
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool_v2/tx_pool_v2_impl.js +164 -37
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts +2 -2
- package/dest/msg_validators/tx_validator/timestamp_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/timestamp_validator.js +6 -6
- package/dest/services/dummy_service.d.ts +3 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +3 -0
- package/dest/services/encoding.d.ts +1 -1
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +2 -1
- package/dest/services/gossipsub/topic_score_params.d.ts +18 -6
- package/dest/services/gossipsub/topic_score_params.d.ts.map +1 -1
- package/dest/services/gossipsub/topic_score_params.js +32 -10
- package/dest/services/libp2p/libp2p_service.d.ts +2 -1
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +7 -3
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts +4 -3
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +5 -9
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts +2 -6
- package/dest/services/reqresp/batch-tx-requester/interface.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts +10 -13
- package/dest/services/reqresp/batch-tx-requester/missing_txs.d.ts.map +1 -1
- package/dest/services/reqresp/batch-tx-requester/missing_txs.js +25 -46
- package/dest/services/service.d.ts +4 -2
- package/dest/services/service.d.ts.map +1 -1
- package/dest/services/tx_collection/config.d.ts +13 -1
- package/dest/services/tx_collection/config.d.ts.map +1 -1
- package/dest/services/tx_collection/config.js +30 -0
- package/dest/services/tx_collection/fast_tx_collection.d.ts +1 -1
- package/dest/services/tx_collection/fast_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/fast_tx_collection.js +39 -33
- package/dest/services/tx_collection/file_store_tx_collection.d.ts +38 -29
- package/dest/services/tx_collection/file_store_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_collection.js +126 -77
- package/dest/services/tx_collection/file_store_tx_source.d.ts +16 -6
- package/dest/services/tx_collection/file_store_tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/file_store_tx_source.js +49 -16
- package/dest/services/tx_collection/instrumentation.d.ts +1 -1
- package/dest/services/tx_collection/instrumentation.d.ts.map +1 -1
- package/dest/services/tx_collection/instrumentation.js +2 -1
- package/dest/services/tx_collection/missing_txs_tracker.d.ts +32 -0
- package/dest/services/tx_collection/missing_txs_tracker.d.ts.map +1 -0
- package/dest/services/tx_collection/missing_txs_tracker.js +27 -0
- package/dest/services/tx_collection/proposal_tx_collector.d.ts +7 -6
- package/dest/services/tx_collection/proposal_tx_collector.d.ts.map +1 -1
- package/dest/services/tx_collection/proposal_tx_collector.js +5 -4
- package/dest/services/tx_collection/slow_tx_collection.d.ts +5 -3
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/slow_tx_collection.js +17 -12
- package/dest/services/tx_collection/tx_collection.d.ts +9 -6
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.js +26 -10
- package/dest/services/tx_collection/tx_collection_sink.d.ts +6 -5
- package/dest/services/tx_collection/tx_collection_sink.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection_sink.js +13 -22
- package/dest/services/tx_collection/tx_source.d.ts +8 -3
- package/dest/services/tx_collection/tx_source.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_source.js +19 -2
- package/dest/services/tx_file_store/tx_file_store.d.ts +3 -2
- package/dest/services/tx_file_store/tx_file_store.d.ts.map +1 -1
- package/dest/services/tx_file_store/tx_file_store.js +9 -6
- package/dest/test-helpers/mock-pubsub.d.ts +3 -2
- package/dest/test-helpers/mock-pubsub.d.ts.map +1 -1
- package/dest/test-helpers/mock-pubsub.js +6 -0
- package/dest/test-helpers/testbench-utils.d.ts +7 -2
- package/dest/test-helpers/testbench-utils.d.ts.map +1 -1
- package/dest/test-helpers/testbench-utils.js +7 -1
- package/dest/testbench/p2p_client_testbench_worker.d.ts +2 -2
- package/dest/testbench/p2p_client_testbench_worker.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +8 -8
- package/dest/util.d.ts +2 -2
- package/dest/util.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/client/factory.ts +18 -3
- package/src/client/interface.ts +20 -9
- package/src/client/p2p_client.ts +57 -17
- package/src/client/test/tx_proposal_collector/proposal_tx_collector_worker.ts +18 -8
- package/src/config.ts +9 -1
- package/src/errors/tx-pool.error.ts +12 -0
- package/src/mem_pools/attestation_pool/attestation_pool.ts +8 -0
- package/src/mem_pools/attestation_pool/mocks.ts +2 -1
- package/src/mem_pools/tx_pool/README.md +1 -1
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_mining_rule.ts +3 -3
- package/src/mem_pools/tx_pool_v2/README.md +43 -27
- package/src/mem_pools/tx_pool_v2/deleted_pool.ts +109 -22
- package/src/mem_pools/tx_pool_v2/eviction/eviction_manager.ts +21 -8
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_eviction_rule.ts +4 -1
- package/src/mem_pools/tx_pool_v2/eviction/fee_payer_balance_pre_add_rule.ts +15 -4
- package/src/mem_pools/tx_pool_v2/eviction/index.ts +4 -0
- package/src/mem_pools/tx_pool_v2/eviction/interfaces.ts +49 -4
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_mining_rule.ts +5 -5
- package/src/mem_pools/tx_pool_v2/eviction/invalid_txs_after_reorg_rule.ts +3 -3
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_eviction_rule.ts +8 -7
- package/src/mem_pools/tx_pool_v2/eviction/low_priority_pre_add_rule.ts +24 -6
- package/src/mem_pools/tx_pool_v2/eviction/nullifier_conflict_rule.ts +3 -3
- package/src/mem_pools/tx_pool_v2/instrumentation.ts +69 -0
- package/src/mem_pools/tx_pool_v2/interfaces.ts +14 -2
- package/src/mem_pools/tx_pool_v2/tx_metadata.ts +44 -9
- package/src/mem_pools/tx_pool_v2/tx_pool_indices.ts +32 -5
- package/src/mem_pools/tx_pool_v2/tx_pool_v2.ts +17 -6
- package/src/mem_pools/tx_pool_v2/tx_pool_v2_impl.ts +186 -29
- package/src/msg_validators/tx_validator/timestamp_validator.ts +7 -7
- package/src/services/dummy_service.ts +5 -1
- package/src/services/encoding.ts +2 -1
- package/src/services/gossipsub/README.md +29 -14
- package/src/services/gossipsub/topic_score_params.ts +49 -13
- package/src/services/libp2p/libp2p_service.ts +7 -2
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +6 -6
- package/src/services/reqresp/batch-tx-requester/interface.ts +1 -5
- package/src/services/reqresp/batch-tx-requester/missing_txs.ts +23 -71
- package/src/services/service.ts +10 -1
- package/src/services/tx_collection/config.ts +42 -0
- package/src/services/tx_collection/fast_tx_collection.ts +51 -30
- package/src/services/tx_collection/file_store_tx_collection.ts +143 -93
- package/src/services/tx_collection/file_store_tx_source.ts +64 -17
- package/src/services/tx_collection/instrumentation.ts +7 -1
- package/src/services/tx_collection/missing_txs_tracker.ts +52 -0
- package/src/services/tx_collection/proposal_tx_collector.ts +8 -7
- package/src/services/tx_collection/slow_tx_collection.ts +17 -13
- package/src/services/tx_collection/tx_collection.ts +45 -14
- package/src/services/tx_collection/tx_collection_sink.ts +15 -29
- package/src/services/tx_collection/tx_source.ts +22 -3
- package/src/services/tx_file_store/tx_file_store.ts +6 -4
- package/src/test-helpers/mock-pubsub.ts +10 -0
- package/src/test-helpers/testbench-utils.ts +10 -2
- package/src/testbench/p2p_client_testbench_worker.ts +20 -13
- package/src/util.ts +7 -1
|
@@ -6,7 +6,8 @@ import { DatabasePublicStateSource } from '@aztec/stdlib/trees';
|
|
|
6
6
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
7
7
|
import { TxArchive } from './archive/index.js';
|
|
8
8
|
import { DeletedPool } from './deleted_pool.js';
|
|
9
|
-
import { EvictionManager, FeePayerBalanceEvictionRule, FeePayerBalancePreAddRule, InvalidTxsAfterMiningRule, InvalidTxsAfterReorgRule, LowPriorityEvictionRule, LowPriorityPreAddRule, NullifierConflictRule } from './eviction/index.js';
|
|
9
|
+
import { EvictionManager, FeePayerBalanceEvictionRule, FeePayerBalancePreAddRule, InvalidTxsAfterMiningRule, InvalidTxsAfterReorgRule, LowPriorityEvictionRule, LowPriorityPreAddRule, NullifierConflictRule, TxPoolRejectionCode } from './eviction/index.js';
|
|
10
|
+
import { TxPoolV2Instrumentation } from './instrumentation.js';
|
|
10
11
|
import { DEFAULT_TX_POOL_V2_CONFIG } from './interfaces.js';
|
|
11
12
|
import { buildTxMetaData, checkNullifierConflict } from './tx_metadata.js';
|
|
12
13
|
import { TxPoolIndices } from './tx_pool_indices.js';
|
|
@@ -29,9 +30,12 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
29
30
|
#archive;
|
|
30
31
|
#deletedPool;
|
|
31
32
|
#evictionManager;
|
|
33
|
+
#dateProvider;
|
|
34
|
+
#instrumentation;
|
|
35
|
+
#evictedTxHashes = new Set();
|
|
32
36
|
#log;
|
|
33
37
|
#callbacks;
|
|
34
|
-
constructor(store, archiveStore, deps, callbacks, config = {}, log){
|
|
38
|
+
constructor(store, archiveStore, deps, callbacks, telemetry, config = {}, dateProvider, log){
|
|
35
39
|
this.#store = store;
|
|
36
40
|
this.#txsDB = store.openMap('txs');
|
|
37
41
|
this.#l2BlockSource = deps.l2BlockSource;
|
|
@@ -43,6 +47,8 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
43
47
|
};
|
|
44
48
|
this.#archive = new TxArchive(archiveStore, this.#config.archivedTxLimit, log);
|
|
45
49
|
this.#deletedPool = new DeletedPool(store, this.#txsDB, log);
|
|
50
|
+
this.#dateProvider = dateProvider;
|
|
51
|
+
this.#instrumentation = new TxPoolV2Instrumentation(telemetry, ()=>this.#indices.getTotalMetadataBytes());
|
|
46
52
|
this.#log = log;
|
|
47
53
|
this.#callbacks = callbacks;
|
|
48
54
|
// Setup eviction manager with rules
|
|
@@ -112,14 +118,20 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
112
118
|
await this.#txsDB.delete(txHashStr);
|
|
113
119
|
}
|
|
114
120
|
});
|
|
115
|
-
this.#log.info(`Deleted ${toDelete.length} invalid/rejected transactions on startup
|
|
121
|
+
this.#log.info(`Deleted ${toDelete.length} invalid/rejected transactions on startup`, {
|
|
122
|
+
txHashes: toDelete
|
|
123
|
+
});
|
|
116
124
|
}
|
|
117
125
|
async addPendingTxs(txs, opts) {
|
|
118
126
|
const accepted = [];
|
|
119
127
|
const ignored = [];
|
|
120
128
|
const rejected = [];
|
|
129
|
+
const errors = new Map();
|
|
121
130
|
const acceptedPending = new Set();
|
|
122
131
|
const poolAccess = this.#createPreAddPoolAccess();
|
|
132
|
+
const preAddContext = opts.feeComparisonOnly !== undefined ? {
|
|
133
|
+
feeComparisonOnly: opts.feeComparisonOnly
|
|
134
|
+
} : undefined;
|
|
123
135
|
await this.#store.transactionAsync(async ()=>{
|
|
124
136
|
for (const tx of txs){
|
|
125
137
|
const txHash = tx.getTxHash();
|
|
@@ -146,7 +158,7 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
146
158
|
accepted.push(txHash);
|
|
147
159
|
} else {
|
|
148
160
|
// Regular pending tx - validate and run pre-add rules
|
|
149
|
-
const result = await this.#tryAddRegularPendingTx(tx, opts, poolAccess, acceptedPending, ignored);
|
|
161
|
+
const result = await this.#tryAddRegularPendingTx(tx, opts, poolAccess, acceptedPending, ignored, errors, preAddContext);
|
|
150
162
|
if (result.status === 'accepted') {
|
|
151
163
|
acceptedPending.add(txHashStr);
|
|
152
164
|
} else if (result.status === 'rejected') {
|
|
@@ -161,6 +173,13 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
161
173
|
for (const txHashStr of acceptedPending){
|
|
162
174
|
accepted.push(TxHash.fromString(txHashStr));
|
|
163
175
|
}
|
|
176
|
+
// Record metrics
|
|
177
|
+
if (ignored.length > 0) {
|
|
178
|
+
this.#instrumentation.recordIgnored(ignored.length);
|
|
179
|
+
}
|
|
180
|
+
if (rejected.length > 0) {
|
|
181
|
+
this.#instrumentation.recordRejected(rejected.length);
|
|
182
|
+
}
|
|
164
183
|
// Run post-add eviction rules for pending txs
|
|
165
184
|
if (acceptedPending.size > 0) {
|
|
166
185
|
const feePayers = Array.from(acceptedPending).map((txHash)=>this.#indices.getMetadata(txHash).feePayer);
|
|
@@ -172,10 +191,13 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
172
191
|
return {
|
|
173
192
|
accepted,
|
|
174
193
|
ignored,
|
|
175
|
-
rejected
|
|
194
|
+
rejected,
|
|
195
|
+
...errors.size > 0 ? {
|
|
196
|
+
errors
|
|
197
|
+
} : {}
|
|
176
198
|
};
|
|
177
199
|
}
|
|
178
|
-
/** Validates and adds a regular pending tx. Returns status. */ async #tryAddRegularPendingTx(tx, opts, poolAccess, acceptedPending, ignored) {
|
|
200
|
+
/** Validates and adds a regular pending tx. Returns status. */ async #tryAddRegularPendingTx(tx, opts, poolAccess, acceptedPending, ignored, errors, preAddContext) {
|
|
179
201
|
const txHash = tx.getTxHash();
|
|
180
202
|
const txHashStr = txHash.toString();
|
|
181
203
|
// Build metadata and validate using metadata
|
|
@@ -186,21 +208,42 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
186
208
|
};
|
|
187
209
|
}
|
|
188
210
|
// Run pre-add rules
|
|
189
|
-
const preAddResult = await this.#evictionManager.runPreAddRules(meta, poolAccess);
|
|
211
|
+
const preAddResult = await this.#evictionManager.runPreAddRules(meta, poolAccess, preAddContext);
|
|
190
212
|
if (preAddResult.shouldIgnore) {
|
|
191
|
-
this.#log.debug(`Ignoring tx ${txHashStr}: ${preAddResult.reason}`);
|
|
213
|
+
this.#log.debug(`Ignoring tx ${txHashStr}: ${preAddResult.reason?.message ?? 'unknown reason'}`);
|
|
214
|
+
if (preAddResult.reason && preAddResult.reason.code !== TxPoolRejectionCode.INTERNAL_ERROR) {
|
|
215
|
+
errors.set(txHashStr, preAddResult.reason);
|
|
216
|
+
}
|
|
192
217
|
return {
|
|
193
218
|
status: 'ignored'
|
|
194
219
|
};
|
|
195
220
|
}
|
|
196
|
-
// Evict conflicts
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
221
|
+
// Evict conflicts, grouped by rule name for metrics
|
|
222
|
+
if (preAddResult.evictions && preAddResult.evictions.length > 0) {
|
|
223
|
+
const byReason = new Map();
|
|
224
|
+
for (const { txHash: evictHash, reason } of preAddResult.evictions){
|
|
225
|
+
const group = byReason.get(reason);
|
|
226
|
+
if (group) {
|
|
227
|
+
group.push(evictHash);
|
|
228
|
+
} else {
|
|
229
|
+
byReason.set(reason, [
|
|
230
|
+
evictHash
|
|
231
|
+
]);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
for (const [reason, hashes] of byReason){
|
|
235
|
+
await this.#evictTxs(hashes, reason);
|
|
236
|
+
}
|
|
237
|
+
for (const evictHashStr of preAddResult.txHashesToEvict){
|
|
238
|
+
this.#log.debug(`Evicted tx ${evictHashStr} due to higher-fee tx ${txHashStr}`, {
|
|
239
|
+
evictedTxHash: evictHashStr,
|
|
240
|
+
replacementTxHash: txHashStr
|
|
241
|
+
});
|
|
242
|
+
if (acceptedPending.has(evictHashStr)) {
|
|
243
|
+
// Evicted tx was from this batch - mark as ignored in result
|
|
244
|
+
acceptedPending.delete(evictHashStr);
|
|
245
|
+
ignored.push(TxHash.fromString(evictHashStr));
|
|
246
|
+
}
|
|
204
247
|
}
|
|
205
248
|
}
|
|
206
249
|
// Add the transaction
|
|
@@ -257,20 +300,51 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
257
300
|
}
|
|
258
301
|
});
|
|
259
302
|
}
|
|
260
|
-
protectTxs(txHashes, block) {
|
|
303
|
+
async protectTxs(txHashes, block) {
|
|
261
304
|
const slotNumber = block.globalVariables.slotNumber;
|
|
262
305
|
const missing = [];
|
|
306
|
+
let softDeletedHits = 0;
|
|
307
|
+
let missingPreviouslyEvicted = 0;
|
|
263
308
|
for (const txHash of txHashes){
|
|
264
309
|
const txHashStr = txHash.toString();
|
|
265
310
|
if (this.#indices.has(txHashStr)) {
|
|
266
311
|
// Update protection for existing tx
|
|
267
312
|
this.#indices.updateProtection(txHashStr, slotNumber);
|
|
313
|
+
} else if (this.#deletedPool.isSoftDeleted(txHashStr)) {
|
|
314
|
+
// Resurrect soft-deleted tx as protected
|
|
315
|
+
const buffer = await this.#txsDB.getAsync(txHashStr);
|
|
316
|
+
if (buffer) {
|
|
317
|
+
const tx = Tx.fromBuffer(buffer);
|
|
318
|
+
await this.#addTx(tx, {
|
|
319
|
+
protected: slotNumber
|
|
320
|
+
});
|
|
321
|
+
softDeletedHits++;
|
|
322
|
+
} else {
|
|
323
|
+
// Data missing despite soft-delete flag — treat as truly missing
|
|
324
|
+
this.#indices.setProtection(txHashStr, slotNumber);
|
|
325
|
+
missing.push(txHash);
|
|
326
|
+
}
|
|
268
327
|
} else {
|
|
269
|
-
//
|
|
328
|
+
// Truly missing — pre-record protection for tx we don't have yet
|
|
270
329
|
this.#indices.setProtection(txHashStr, slotNumber);
|
|
271
330
|
missing.push(txHash);
|
|
331
|
+
if (this.#evictedTxHashes.has(txHashStr)) {
|
|
332
|
+
missingPreviouslyEvicted++;
|
|
333
|
+
}
|
|
272
334
|
}
|
|
273
335
|
}
|
|
336
|
+
// Record metrics
|
|
337
|
+
if (softDeletedHits > 0) {
|
|
338
|
+
this.#instrumentation.recordSoftDeletedHits(softDeletedHits);
|
|
339
|
+
}
|
|
340
|
+
if (missing.length > 0) {
|
|
341
|
+
this.#log.debug(`protectTxs missing tx hashes: ${missing.map((h)=>h.toString()).join(', ')}`);
|
|
342
|
+
this.#instrumentation.recordMissingOnProtect(missing.length);
|
|
343
|
+
}
|
|
344
|
+
if (missingPreviouslyEvicted > 0) {
|
|
345
|
+
this.#instrumentation.recordMissingPreviouslyEvicted(missingPreviouslyEvicted);
|
|
346
|
+
}
|
|
347
|
+
this.#log.info(`Protected ${txHashes.length} txs, missing: ${missing.length}, soft-deleted hits: ${softDeletedHits}`);
|
|
274
348
|
return missing;
|
|
275
349
|
}
|
|
276
350
|
async addMinedTxs(txs, block, opts) {
|
|
@@ -319,6 +393,8 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
319
393
|
this.#log.info(`Marked ${found.length} txs as mined in block ${blockId.number}`);
|
|
320
394
|
}
|
|
321
395
|
async prepareForSlot(slotNumber) {
|
|
396
|
+
// Step 0: Clean up slot-deleted txs from previous slots
|
|
397
|
+
await this.#deletedPool.cleanupSlotDeleted(slotNumber);
|
|
322
398
|
// Step 1: Find expired protected txs
|
|
323
399
|
const expiredProtected = this.#indices.findExpiredProtectedTxs(slotNumber);
|
|
324
400
|
// Step 2: Clear protection for all expired entries (including those without metadata)
|
|
@@ -326,6 +402,7 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
326
402
|
// Step 3: Filter to only txs that have metadata and are not mined
|
|
327
403
|
const txsToRestore = this.#indices.filterRestorable(expiredProtected);
|
|
328
404
|
if (txsToRestore.length === 0) {
|
|
405
|
+
this.#log.debug(`Preparing for slot ${slotNumber}, no txs to unprotect`);
|
|
329
406
|
return;
|
|
330
407
|
}
|
|
331
408
|
this.#log.info(`Preparing for slot ${slotNumber}: unprotecting ${txsToRestore.length} txs`);
|
|
@@ -333,11 +410,9 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
333
410
|
const { valid, invalid } = await this.#revalidateMetadata(txsToRestore, 'during prepareForSlot');
|
|
334
411
|
// Step 5: Resolve nullifier conflicts and add winners to pending indices
|
|
335
412
|
const { added, toEvict } = this.#applyNullifierConflictResolution(valid);
|
|
336
|
-
// Step 6: Delete invalid and
|
|
337
|
-
await this.#deleteTxsBatch(
|
|
338
|
-
|
|
339
|
-
...toEvict
|
|
340
|
-
]);
|
|
413
|
+
// Step 6: Delete invalid txs and evict conflict losers
|
|
414
|
+
await this.#deleteTxsBatch(invalid);
|
|
415
|
+
await this.#evictTxs(toEvict, 'NullifierConflict');
|
|
341
416
|
// Step 7: Run eviction rules (enforce pool size limit)
|
|
342
417
|
if (added.length > 0) {
|
|
343
418
|
const feePayers = added.map((meta)=>meta.feePayer);
|
|
@@ -347,7 +422,7 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
347
422
|
]);
|
|
348
423
|
}
|
|
349
424
|
}
|
|
350
|
-
async handlePrunedBlocks(latestBlock) {
|
|
425
|
+
async handlePrunedBlocks(latestBlock, options) {
|
|
351
426
|
// Step 1: Find transactions mined after the prune point
|
|
352
427
|
const txsToUnmine = this.#indices.findTxsMinedAfter(latestBlock.number);
|
|
353
428
|
if (txsToUnmine.length === 0) {
|
|
@@ -366,17 +441,27 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
366
441
|
for (const meta of txsToUnmine){
|
|
367
442
|
this.#indices.markAsUnmined(meta);
|
|
368
443
|
}
|
|
444
|
+
// If deleteAllTxs is set (epoch prune), delete all un-mined txs and return early
|
|
445
|
+
if (options?.deleteAllTxs) {
|
|
446
|
+
const allTxHashes = txsToUnmine.map((m)=>m.txHash);
|
|
447
|
+
await this.#deleteTxsBatch(allTxHashes);
|
|
448
|
+
this.#log.info(`Handled prune to block ${latestBlock.number} with deleteAllTxs: deleted ${allTxHashes.length} txs`);
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
369
451
|
// Step 4: Filter out protected txs (they'll be handled by prepareForSlot)
|
|
370
452
|
const unprotectedTxs = this.#indices.filterUnprotected(txsToUnmine);
|
|
371
|
-
// Step
|
|
453
|
+
// Step 5: Validate for pending pool
|
|
372
454
|
const { valid, invalid } = await this.#revalidateMetadata(unprotectedTxs, 'during handlePrunedBlocks');
|
|
373
455
|
// Step 6: Resolve nullifier conflicts and add winners to pending indices
|
|
374
456
|
const { toEvict } = this.#applyNullifierConflictResolution(valid);
|
|
375
|
-
// Step 7: Delete invalid and
|
|
376
|
-
await this.#deleteTxsBatch(
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
457
|
+
// Step 7: Delete invalid txs and evict conflict losers
|
|
458
|
+
await this.#deleteTxsBatch(invalid);
|
|
459
|
+
await this.#evictTxs(toEvict, 'NullifierConflict');
|
|
460
|
+
this.#log.info(`Handled prune to block ${latestBlock.number}: ${valid.length} txs restored to pending, ${invalid.length} invalid, ${toEvict.length} evicted due to nullifier conflicts`, {
|
|
461
|
+
txHashesRestored: valid.map((m)=>m.txHash),
|
|
462
|
+
txHashesInvalid: invalid,
|
|
463
|
+
txHashesEvicted: toEvict
|
|
464
|
+
});
|
|
380
465
|
// Step 8: Run eviction rules for ALL pending txs (not just restored ones)
|
|
381
466
|
// This handles cases like existing pending txs with invalid fee payer balances
|
|
382
467
|
await this.#evictionManager.evictAfterChainPrune(latestBlock.number);
|
|
@@ -384,7 +469,9 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
384
469
|
async handleFailedExecution(txHashes) {
|
|
385
470
|
// Delete failed txs
|
|
386
471
|
await this.#deleteTxsBatch(txHashes.map((h)=>h.toString()));
|
|
387
|
-
this.#log.info(`Deleted ${txHashes.length} failed txs
|
|
472
|
+
this.#log.info(`Deleted ${txHashes.length} failed txs`, {
|
|
473
|
+
txHashes: txHashes.map((h)=>h.toString())
|
|
474
|
+
});
|
|
388
475
|
}
|
|
389
476
|
async handleFinalizedBlock(block) {
|
|
390
477
|
const blockNumber = block.globalVariables.blockNumber;
|
|
@@ -409,7 +496,9 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
409
496
|
await this.#archive.archiveTxs(txsToArchive);
|
|
410
497
|
}
|
|
411
498
|
if (minedTxsToFinalize.length > 0) {
|
|
412
|
-
this.#log.info(`Finalized ${minedTxsToFinalize.length} mined txs from blocks up to ${blockNumber}
|
|
499
|
+
this.#log.info(`Finalized ${minedTxsToFinalize.length} mined txs from blocks up to ${blockNumber}`, {
|
|
500
|
+
txHashes: minedTxsToFinalize
|
|
501
|
+
});
|
|
413
502
|
}
|
|
414
503
|
}
|
|
415
504
|
// === Query Methods ===
|
|
@@ -448,6 +537,12 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
448
537
|
...this.#indices.iteratePendingByPriority('desc')
|
|
449
538
|
].map((hash)=>TxHash.fromString(hash));
|
|
450
539
|
}
|
|
540
|
+
getEligiblePendingTxHashes() {
|
|
541
|
+
const maxReceivedAt = this.#dateProvider.now() - this.#config.minTxPoolAgeMs;
|
|
542
|
+
return [
|
|
543
|
+
...this.#indices.iterateEligiblePendingByPriority('desc', maxReceivedAt)
|
|
544
|
+
].map((hash)=>TxHash.fromString(hash));
|
|
545
|
+
}
|
|
451
546
|
getPendingTxCount() {
|
|
452
547
|
return this.#indices.getPendingTxCount();
|
|
453
548
|
}
|
|
@@ -487,6 +582,9 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
487
582
|
this.#config.archivedTxLimit = config.archivedTxLimit;
|
|
488
583
|
this.#archive.updateLimit(config.archivedTxLimit);
|
|
489
584
|
}
|
|
585
|
+
if (config.minTxPoolAgeMs !== undefined) {
|
|
586
|
+
this.#config.minTxPoolAgeMs = config.minTxPoolAgeMs;
|
|
587
|
+
}
|
|
490
588
|
// Update eviction rules with new config
|
|
491
589
|
this.#evictionManager.updateConfig(config);
|
|
492
590
|
}
|
|
@@ -501,7 +599,10 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
501
599
|
}
|
|
502
600
|
// === Metrics ===
|
|
503
601
|
countTxs() {
|
|
504
|
-
return
|
|
602
|
+
return {
|
|
603
|
+
...this.#indices.countTxs(),
|
|
604
|
+
softDeleted: this.#deletedPool.getSoftDeletedCount()
|
|
605
|
+
};
|
|
505
606
|
}
|
|
506
607
|
// ============================================================================
|
|
507
608
|
// PRIVATE HELPERS - Transaction Management
|
|
@@ -512,7 +613,9 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
512
613
|
*/ async #addTx(tx, state, opts = {}) {
|
|
513
614
|
const txHashStr = tx.getTxHash().toString();
|
|
514
615
|
const meta = await buildTxMetaData(tx);
|
|
616
|
+
meta.receivedAt = this.#dateProvider.now();
|
|
515
617
|
await this.#txsDB.set(txHashStr, tx.toBuffer());
|
|
618
|
+
await this.#deletedPool.clearSoftDeleted(txHashStr);
|
|
516
619
|
this.#callbacks.onTxsAdded([
|
|
517
620
|
tx
|
|
518
621
|
], opts);
|
|
@@ -525,9 +628,11 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
525
628
|
this.#indices.addMined(meta);
|
|
526
629
|
}
|
|
527
630
|
const stateStr = typeof state === 'string' ? state : Object.keys(state)[0];
|
|
528
|
-
this.#log.
|
|
631
|
+
this.#log.debug(`Added tx ${txHashStr} as ${stateStr}`, {
|
|
529
632
|
eventName: 'tx-added-to-pool',
|
|
530
|
-
|
|
633
|
+
txHash: txHashStr,
|
|
634
|
+
state: stateStr,
|
|
635
|
+
source: opts.source
|
|
531
636
|
});
|
|
532
637
|
return meta;
|
|
533
638
|
}
|
|
@@ -550,6 +655,28 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
550
655
|
await this.#deleteTx(txHashStr);
|
|
551
656
|
}
|
|
552
657
|
}
|
|
658
|
+
/** Evicts transactions: records eviction metric with reason, caches hashes, then deletes. */ async #evictTxs(txHashes, reason) {
|
|
659
|
+
if (txHashes.length === 0) {
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
this.#instrumentation.recordEvictions(txHashes.length, reason);
|
|
663
|
+
for (const txHashStr of txHashes){
|
|
664
|
+
this.#log.debug(`Evicting tx ${txHashStr}`, {
|
|
665
|
+
txHash: txHashStr,
|
|
666
|
+
reason
|
|
667
|
+
});
|
|
668
|
+
this.#addToEvictedCache(txHashStr);
|
|
669
|
+
}
|
|
670
|
+
await this.#deleteTxsBatch(txHashes);
|
|
671
|
+
}
|
|
672
|
+
/** Adds a tx hash to the bounded evicted cache, evicting the oldest entry if at capacity. */ #addToEvictedCache(txHashStr) {
|
|
673
|
+
if (this.#evictedTxHashes.size >= this.#config.evictedTxCacheSize) {
|
|
674
|
+
// FIFO eviction: remove the first (oldest) entry
|
|
675
|
+
const oldest = this.#evictedTxHashes.values().next().value;
|
|
676
|
+
this.#evictedTxHashes.delete(oldest);
|
|
677
|
+
}
|
|
678
|
+
this.#evictedTxHashes.add(txHashStr);
|
|
679
|
+
}
|
|
553
680
|
// ============================================================================
|
|
554
681
|
// PRIVATE HELPERS - Validation & Conflict Resolution
|
|
555
682
|
// ============================================================================
|
|
@@ -688,7 +815,7 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
688
815
|
if (preAddResult.shouldIgnore) {
|
|
689
816
|
// Transaction rejected - mark for deletion from DB
|
|
690
817
|
rejected.push(meta.txHash);
|
|
691
|
-
this.#log.debug(`Rejected tx ${meta.txHash} during rebuild: ${preAddResult.reason}`);
|
|
818
|
+
this.#log.debug(`Rejected tx ${meta.txHash} during rebuild: ${preAddResult.reason?.message ?? 'unknown reason'}`);
|
|
692
819
|
continue;
|
|
693
820
|
}
|
|
694
821
|
// Evict any conflicting txs identified by pre-add rules
|
|
@@ -724,7 +851,7 @@ import { TxPoolIndices } from './tx_pool_indices.js';
|
|
|
724
851
|
getFeePayerPendingTxs: (feePayer)=>this.#indices.getFeePayerPendingTxs(feePayer),
|
|
725
852
|
getPendingTxCount: ()=>this.#indices.getPendingTxCount(),
|
|
726
853
|
getLowestPriorityPending: (limit)=>this.#indices.getLowestPriorityPending(limit),
|
|
727
|
-
deleteTxs: (txHashes)=>this.#
|
|
854
|
+
deleteTxs: (txHashes, reason)=>this.#evictTxs(txHashes, reason ?? 'unknown')
|
|
728
855
|
};
|
|
729
856
|
}
|
|
730
857
|
#createPreAddPoolAccess() {
|
|
@@ -8,7 +8,7 @@ export interface HasTimestampData {
|
|
|
8
8
|
toString(): string;
|
|
9
9
|
};
|
|
10
10
|
data: {
|
|
11
|
-
|
|
11
|
+
expirationTimestamp: bigint;
|
|
12
12
|
constants: {
|
|
13
13
|
anchorBlockHeader: {
|
|
14
14
|
globalVariables: {
|
|
@@ -27,4 +27,4 @@ export declare class TimestampTxValidator<T extends HasTimestampData> implements
|
|
|
27
27
|
}, bindings?: LoggerBindings);
|
|
28
28
|
validateTx(tx: T): Promise<TxValidationResult>;
|
|
29
29
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXN0YW1wX3ZhbGlkYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL3R4X3ZhbGlkYXRvci90aW1lc3RhbXBfdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEVBQXlDLEtBQUssa0JBQWtCLEVBQUUsS0FBSyxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwSCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxxREFBcUQ7QUFDckQsTUFBTSxXQUFXLGdCQUFnQjtJQUMvQixNQUFNLEVBQUU7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUMvQixJQUFJLEVBQUU7UUFDSixtQkFBbUIsRUFBRSxNQUFNLENBQUM7UUFDNUIsU0FBUyxFQUFFO1lBQ1QsaUJBQWlCLEVBQUU7Z0JBQ2pCLGVBQWUsRUFBRTtvQkFDZixXQUFXLEVBQUUsV0FBVyxDQUFDO2lCQUMxQixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRCxxQkFBYSxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLENBQUUsWUFBVyxXQUFXLENBQUMsQ0FBQyxDQUFDOztJQUluRixPQUFPLENBQUMsTUFBTTtJQURoQixZQUNVLE1BQU0sRUFBRTtRQUdkLFNBQVMsRUFBRSxNQUFNLENBQUM7UUFFbEIsV0FBVyxFQUFFLFdBQVcsQ0FBQztLQUMxQixFQUNELFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFRCxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FtQjdDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timestamp_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/timestamp_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAyC,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,
|
|
1
|
+
{"version":3,"file":"timestamp_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/timestamp_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAyC,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE;YACT,iBAAiB,EAAE;gBACjB,eAAe,EAAE;oBACf,WAAW,EAAE,WAAW,CAAC;iBAC1B,CAAC;aACH,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,qBAAa,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAInF,OAAO,CAAC,MAAM;IADhB,YACU,MAAM,EAAE;QAGd,SAAS,EAAE,MAAM,CAAC;QAElB,WAAW,EAAE,WAAW,CAAC;KAC1B,EACD,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB7C;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import {
|
|
2
|
+
import { TX_ERROR_INVALID_EXPIRATION_TIMESTAMP } from '@aztec/stdlib/tx';
|
|
3
3
|
export class TimestampTxValidator {
|
|
4
4
|
values;
|
|
5
5
|
#log;
|
|
@@ -8,19 +8,19 @@ export class TimestampTxValidator {
|
|
|
8
8
|
this.#log = createLogger('p2p:tx_validator:timestamp', bindings);
|
|
9
9
|
}
|
|
10
10
|
validateTx(tx) {
|
|
11
|
-
const
|
|
12
|
-
// If building block 1, we skip the expiration check. For details on why see the `
|
|
11
|
+
const expirationTimestamp = tx.data.expirationTimestamp;
|
|
12
|
+
// If building block 1, we skip the expiration check. For details on why see the `validate_expiration_timestamp`
|
|
13
13
|
// function in `noir-projects/noir-protocol-circuits/crates/rollup-lib/src/base/components/validation_requests.nr`.
|
|
14
14
|
const buildingBlock1 = this.values.blockNumber === 1;
|
|
15
|
-
if (!buildingBlock1 &&
|
|
15
|
+
if (!buildingBlock1 && expirationTimestamp < this.values.timestamp) {
|
|
16
16
|
if (tx.data.constants.anchorBlockHeader.globalVariables.blockNumber === 0) {
|
|
17
17
|
this.#log.warn(`A tx built against a genesis block failed to be included in block 1 which is the only block in which txs built against a genesis block are allowed to be included.`);
|
|
18
18
|
}
|
|
19
|
-
this.#log.verbose(`Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${
|
|
19
|
+
this.#log.verbose(`Rejecting tx ${tx.txHash} for low expiration timestamp. Tx expiration timestamp: ${expirationTimestamp}, timestamp: ${this.values.timestamp}.`);
|
|
20
20
|
return Promise.resolve({
|
|
21
21
|
result: 'invalid',
|
|
22
22
|
reason: [
|
|
23
|
-
|
|
23
|
+
TX_ERROR_INVALID_EXPIRATION_TIMESTAMP
|
|
24
24
|
]
|
|
25
25
|
});
|
|
26
26
|
} else {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
2
|
import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
3
|
-
import type { Gossipable, PeerErrorSeverity } from '@aztec/stdlib/p2p';
|
|
3
|
+
import type { Gossipable, PeerErrorSeverity, TopicType } from '@aztec/stdlib/p2p';
|
|
4
4
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
5
5
|
import type { PeerId } from '@libp2p/interface';
|
|
6
6
|
import type { ENR } from '@nethermindeth/enr';
|
|
@@ -20,6 +20,7 @@ export declare class DummyP2PService implements P2PService {
|
|
|
20
20
|
updateConfig(_config: Partial<P2PReqRespConfig>): void;
|
|
21
21
|
/** Returns an empty array for peers. */
|
|
22
22
|
getPeers(): PeerInfo[];
|
|
23
|
+
getGossipMeshPeerCount(_topicType: TopicType): number;
|
|
23
24
|
/**
|
|
24
25
|
* Starts the dummy implementation.
|
|
25
26
|
* @returns A resolved promise.
|
|
@@ -145,4 +146,4 @@ export declare class DummyReqResp implements ReqRespInterface {
|
|
|
145
146
|
getConnectionSampler(): Pick<ConnectionSampler, 'getPeerListSortedByConnectionCountAsc'>;
|
|
146
147
|
addSubProtocol(_subProtocol: ReqRespSubProtocol, _handler: ReqRespSubProtocolHandler, _validator?: ReqRespSubProtocolValidators[ReqRespSubProtocol]): Promise<void>;
|
|
147
148
|
}
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXlfc2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2R1bW15X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFOUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxZQUFZLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUNWLGdCQUFnQixFQUNoQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzVCLGNBQWMsRUFDZixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBFLE9BQU8sRUFDTCxLQUFLLHdCQUF3QixFQUM3QixLQUFLLDZCQUE2QixFQUNsQyxLQUFLLCtCQUErQixFQUNwQyxLQUFLLDRCQUE0QixFQUNqQyxLQUFLLFVBQVUsRUFDZixLQUFLLG9CQUFvQixFQUN6QixrQkFBa0IsRUFDbkIsTUFBTSxjQUFjLENBQUM7QUFFdEI7O0dBRUc7QUFDSCxxQkFBYSxlQUFnQixZQUFXLFVBQVU7SUFDaEQsWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUc7SUFFekQsd0NBQXdDO0lBQ3hDLFFBQVEsSUFBSSxRQUFRLEVBQUUsQ0FFckI7SUFFRCxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsU0FBUyxHQUFHLE1BQU0sQ0FFcEQ7SUFFRDs7O09BR0c7SUFDSSxLQUFLLGtCQUVYO0lBRUQ7OztPQUdHO0lBQ0ksSUFBSSxrQkFFVjtJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxDQUFDLFNBQVMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLGlCQUUxQztJQUVEOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLFFBQUk7SUFFakM7O09BRUc7SUFDSSw2QkFBNkIsQ0FBQyxTQUFTLEVBQUUsd0JBQXdCLFFBQUk7SUFFNUU7O09BRUc7SUFDSSxrQ0FBa0MsQ0FBQyxTQUFTLEVBQUUsNkJBQTZCLFFBQUk7SUFFdEY7O09BRUc7SUFDSSxpQ0FBaUMsQ0FBQyxTQUFTLEVBQUUsNEJBQTRCLEdBQUcsSUFBSSxDQUFHO0lBRTFGOztPQUVHO0lBQ0ksb0NBQW9DLENBQUMsU0FBUyxFQUFFLCtCQUErQixHQUFHLElBQUksQ0FBRztJQUVoRzs7Ozs7T0FLRztJQUNJLFdBQVcsQ0FBQyxRQUFRLFNBQVMsa0JBQWtCLEVBQ3BELFNBQVMsRUFBRSxRQUFRLEVBQ25CLFFBQVEsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQzFELE9BQU8sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBRXpFO0lBRUQ7Ozs7O09BS0c7SUFDSSxnQkFBZ0IsQ0FBQyxRQUFRLFNBQVMsa0JBQWtCLEVBQ3pELFNBQVMsRUFBRSxRQUFRLEVBQ25CLFNBQVMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FDN0QsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBRS9EO0lBRU0saUJBQWlCLENBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsWUFBWSxFQUFFLGtCQUFrQixFQUNoQyxRQUFRLEVBQUUsTUFBTSxFQUNoQixZQUFZLENBQUMsRUFBRSxNQUFNLEdBQ3BCLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFMUI7SUFFRDs7O09BR0c7SUFDSSxNQUFNLElBQUksU0FBUyxDQUV6QjtJQUVELFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVsQztJQUVELG9CQUFvQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRS9EO0lBRUQscUJBQXFCLENBQ25CLFlBQVksRUFBRSxrQkFBa0IsRUFDaEMsUUFBUSxFQUFFLHlCQUF5QixFQUNuQyxVQUFVLENBQUMsRUFBRSw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxHQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBRWY7SUFFRCx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUU1RjtJQUdELDhCQUE4QixDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUc7SUFFL0Q7O09BRUc7SUFDSCwwQkFBMEIsSUFBSSw2QkFBNkIsQ0FnQjFEO0NBQ0Y7QUFFRDs7R0FFRztBQUNILHFCQUFhLHlCQUEwQixTQUFRLFlBQWEsWUFBVyxvQkFBb0I7SUFDekYsT0FBTyxDQUFDLFlBQVksQ0FBOEI7SUFDM0MsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQU07SUFFckM7OztPQUdHO0lBQ0ksS0FBSyxrQkFHWDtJQUNEOzs7T0FHRztJQUNJLElBQUksa0JBR1Y7SUFDRDs7O09BR0c7SUFDSSxZQUFZLFlBRWxCO0lBRU0sbUJBQW1CLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUUxQztJQUVNLGVBQWUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FFekM7SUFFTSxTQUFTLElBQUksa0JBQWtCLENBRXJDO0lBRU0sTUFBTSxJQUFJLFNBQVMsQ0FFekI7Q0FDRjtBQUVELHFCQUFhLGdCQUFpQixZQUFXLG9CQUFvQjtJQUVsRCxNQUFNLEVBQUUsTUFBTTtJQUNyQixPQUFPLENBQUMsYUFBYSxDQUFDO0lBRnhCLFlBQ1MsTUFBTSxFQUFFLE1BQU0sRUFDYixhQUFhLENBQUM7O2lCQUE4QixFQUNsRDtJQUVHLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEdBQUcsUUFBUSxFQUFFLENBWXJEO0lBRU0sZUFBZSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFdEM7SUFDTSxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxNQUFNLENBRTNDO0lBRU0sc0JBQXNCLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBRXREO0lBRU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFM0I7SUFDTSxTQUFTLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVoQztJQUNNLGNBQWMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBRztJQUN4QyxjQUFjLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUc7SUFDeEMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGFBQWEsR0FBRyxJQUFJLENBQUc7SUFDakUsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixHQUFHLElBQUksQ0FBRztJQUNuRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBRztJQUMxQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUVuRztJQUdELDhCQUE4QixDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUc7Q0FDaEU7QUFFRCxxQkFBYSxZQUFhLFlBQVcsZ0JBQWdCO0lBQ25ELFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFHO0lBQ3pELEtBQUssQ0FDSCxvQkFBb0IsRUFBRSwwQkFBMEIsRUFDaEQsc0JBQXNCLEVBQUUsNEJBQTRCLEdBQ25ELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFZjtJQUNELElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXBCO0lBQ0QsV0FBVyxDQUFDLFdBQVcsU0FBUyxrQkFBa0IsRUFDaEQsWUFBWSxFQUFFLFdBQVcsRUFDekIsUUFBUSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FDN0QsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FFNUU7SUFDRCxnQkFBZ0IsQ0FBQyxXQUFXLFNBQVMsa0JBQWtCLEVBQ3JELFlBQVksRUFBRSxXQUFXLEVBQ3pCLFNBQVMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFDakUsV0FBVyxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQy9CLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFDbkIsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUNsQixpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sR0FDekIsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBRWxFO0lBQ00saUJBQWlCLENBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsWUFBWSxFQUFFLGtCQUFrQixFQUNoQyxRQUFRLEVBQUUsTUFBTSxFQUNoQixZQUFZLENBQUMsRUFBRSxNQUFNLEdBQ3BCLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFMUI7SUFFRDs7T0FFRztJQUNILG9CQUFvQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSx1Q0FBdUMsQ0FBQyxDQUl2RjtJQUVELGNBQWMsQ0FDWixZQUFZLEVBQUUsa0JBQWtCLEVBQ2hDLFFBQVEsRUFBRSx5QkFBeUIsRUFDbkMsVUFBVSxDQUFDLEVBQUUsNEJBQTRCLENBQUMsa0JBQWtCLENBQUMsR0FDNUQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVmO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@ import { PeerDiscoveryState } from './service.js';
|
|
|
9
9
|
/** Returns an empty array for peers. */ getPeers() {
|
|
10
10
|
return [];
|
|
11
11
|
}
|
|
12
|
+
getGossipMeshPeerCount(_topicType) {
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
12
15
|
/**
|
|
13
16
|
* Starts the dummy implementation.
|
|
14
17
|
* @returns A resolved promise.
|
|
@@ -47,4 +47,4 @@ export declare function readSnappyPreamble(data: Uint8Array): {
|
|
|
47
47
|
decompressedSize: number;
|
|
48
48
|
bytesRead: number;
|
|
49
49
|
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQWtCLFNBQVMsRUFBc0IsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRixPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWFqRDs7O0dBR0c7QUFDSCx3QkFBZ0IsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FLdkQ7QUFFRCx3QkFBZ0IsWUFBWSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsTUFBTSxDQUl0RDtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyx1QkFLMUM7QUFjRDs7R0FFRztBQUNILHFCQUFhLGVBQWdCLFlBQVcsYUFBYTtJQUVqRCxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxNQUFNO0lBSGhCLFlBQ1UsVUFBVSxHQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFxQixFQUN6RCxnQkFBZ0IsR0FBRSxNQUFrQixFQUNwQyxNQUFNLHlDQUF1QyxFQUNuRDtJQUdKLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRy9EO0lBRU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQVkvRjtJQUdELGlCQUFpQixDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsR0FBRyxVQUFVLENBRWpFO0lBRU0scUJBQXFCLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBS2pEO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHO0lBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBbUNwRyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,uBAK1C;
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,SAAS,EAAsB,MAAM,mBAAmB,CAAC;AAElF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,uBAK1C;AAcD;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAEjD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IAHhB,YACU,UAAU,GAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAqB,EACzD,gBAAgB,GAAE,MAAkB,EACpC,MAAM,yCAAuC,EACnD;IAGJ,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAG/D;IAEM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAY/F;IAGD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,CAEjE;IAEM,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;CACF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAmCpG"}
|
|
@@ -47,7 +47,8 @@ const DefaultMaxSizesKb = {
|
|
|
47
47
|
// Proposals may carry some tx objects, so we allow a larger size capped at 10mb
|
|
48
48
|
// Note this may not be enough for carrying all tx objects in a block
|
|
49
49
|
[TopicType.block_proposal]: 1024 * 10,
|
|
50
|
-
//
|
|
50
|
+
// Checkpoint proposals carry almost the same data as a block proposal (see the lastBlockProposal)
|
|
51
|
+
// Only diff is an additional header, which is pretty small compared to the 10mb limit
|
|
51
52
|
[TopicType.checkpoint_proposal]: 1024 * 10
|
|
52
53
|
};
|
|
53
54
|
/**
|