Conversation
…calars (#22383) GasFees.mul() converted bigint fee values to Number for non-integer scalar multiplication, silently losing precision for values above 2^53. Since gas fees are UInt128 and can exceed 2^53 under realistic conditions (e.g. when the fee asset depreciates relative to ETH), this produced incorrect fee calculations in wallet code that calls .mul(1.5). Replaced the Number conversion with scaled bigint arithmetic that preserves full precision for all UInt128 values while maintaining the ceiling behavior needed for fee padding. Co-authored-by: danielntmd <danielntmd@nethermind.io> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ecreating (#22375) ## Summary `snapshotSync` accepted a URL string and created a new `ReadOnlyFileStore` internally, discarding the instance already created by the caller. This resulted in redundant object instantiation during snapshot downloads. ## Changes - Changed `snapshotSync` to accept a `fileStore: ReadOnlyFileStore` instead of `snapshotsUrl: string`, removing the redundant `createReadOnlyFileStore` call inside the function. - Updated `trySnapshotSync` to pass the pre-created `fileStore` from each snapshot candidate. - Updated `downloadEpochProvingJob` to pass its already-created `fileStore` through to `snapshotSync`. Co-authored-by: danielntmd <danielntmd@nethermind.io> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When `p2pAllowOnlyValidators` is enabled, unauthenticated peers were excluded from gossipsub, but could still freely query block data and transactions through req/resp protocols (BLOCK, BLOCK_TXS, TX) with no authentication check. This adds an authentication gate in `ReqResp.streamHandler()` that rejects unauthenticated peers on all protocols except those needed for the handshake flow (PING, STATUS, AUTH, GOODBYE) Ref: A-698
## Summary - `AztecDatastore.batch()` stored batch operations in a shared class-level `#batchOps` array, meaning concurrent batches would corrupt each other's operations. Replaced with a local `ops` array per batch call, matching the reference `BaseDatastore` implementation from `datastore-core`. - Added a test that verifies concurrent batches don't interfere with each other. Fixes [A-761](https://linear.app/aztec-labs/issue/A-761/audit-92-aztecdatastorebatch-shares-batchops-across-concurrent-batches) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pipelined mbps spartan scenario
This PR adds a claude skill that uses the published cli-wallet package to interact with a live network. It can deploy contracts, send txs and query state.
## Overview Allow validators to attest to old proposals slightly into the next slot, this allows validators from the slot before to send their checkpoint proposals later in their own slot. ## Key points - Allows timetable to extend past the current slot - Decouples attestation gathering from the hot path for sequencers - it can move async - Refactor of the timetable model into stdlib so it can be consumed elsewhere
Collaborator
Author
|
🤖 Auto-merge enabled after 4 hours of inactivity. This PR will be merged automatically once all checks pass. |
#22412) ## Summary - Replace bit-shift (`<<`) with multiplication in `AttestationPool.getBlockPositionKey` to prevent 32-bit signed integer overflow on large slot numbers. JavaScript's `<<` converts operands to signed 32-bit ints, which overflows after slot ~2^21. Using multiplication keeps values in float64 range (safe up to 2^53). Fixes [A-760](https://linear.app/aztec-labs/issue/A-760/audit-91-attestationpoolgetblockpositionkey-bit-shift-overflow-after)
…event infinite loop (#22355) ## Summary - Timed-out proving jobs in `ProvingBroker.reEnqueueExpiredJobs()` were being re-enqueued without incrementing the retry count or checking `maxRetries`, creating an infinite retry loop for jobs that consistently time out. - Now the timeout path increments the retry counter and rejects jobs that exceed `maxRetries`, matching the behavior of the error retry path in `#reportProvingJobError`. Fixes [A-715](https://linear.app/aztec-labs/issue/A-715/audit-35-timed-out-proving-jobs-re-enqueue-without-incrementing-retry)
Removes the duplicate `p2pClient.start()`. The P2P client is already fully started (and synced) by the unconditional `await p2pClient.start()` earlier in `createAztecNode`. The second call just hits the guard clause (`if state !== IDLE return syncPromise`) and is a no-op. This is just for cleanup Fixes [A-736](https://linear.app/aztec-labs/issue/A-736/audit-60-p2p-client-start-called-twice-in-serverts-duplicate-listeners)
## Summary - Add `scripts/kubectl` to `spartan/.gitignore` to prevent the downloaded kubectl binary from being accidentally committed - The binary is downloaded by `spartan/scripts/deploy_network.sh` at runtime ClaudeBox log: https://claudebox.work/s/98e0d3700d589d71?run=3
Collaborator
Author
Flakey Tests🤖 says: This CI run detected 1 tests that failed, but were tolerated due to a .test_patterns.yml entry. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
BEGIN_COMMIT_OVERRIDE
fix(stdlib): use bigint arithmetic in GasFees.mul() for non-integer scalars (#22383)
fix(node-lib): reuse existing fileStore in snapshot sync instead of recreating (#22375)
fix: gate req/resp data protocols for unauthenticated peers (#22406)
fix(p2p): use per-batch ops array in AztecDatastore.batch() (#22357)
chore(pipeline): spartan config (#21285)
chore: add claude skill to send txs (#22439)
feat(pipeline): minimize deadzone w cross slot attesting (#21435)
fix(p2p): avoid 32-bit overflow in attestation pool block position key (#22412)
fix(prover-client): increment retry count on timeout re-enqueue to prevent infinite loop (#22355)
fix: remove redundant p2pClient.start() call (#22438)
chore: add kubectl binary to spartan .gitignore (#22454)
END_COMMIT_OVERRIDE