Remove the OptimisticAuction precompile surface - #278
Merged
Merged
Conversation
Follow-up in pod-sdk to podnetwork/pod#1688, which removed the enshrined OptimisticAuction contract at 0x50d0...0004 from the node. rust-sdk: drops the public `pod_sdk::auctions` module (`AuctionClient`, `Bid`) and with it the `pod-contracts` dependency. That was a path dependency into `examples/solidity/bindings` whose only consumer anywhere in the repo was `auctions/client.rs`, so `pod-examples-solidity` also leaves Cargo.lock — exactly as pod#1688 predicted once this landed. The module was also `tracing`'s only user in rust-sdk (three `#[tracing::instrument]` attributes on `AuctionClient`), so that dependency goes too — `cargo shear` fails otherwise. examples/: removed in full, along with the eight `examples/*` workspace members, the five `examples/*` rustfmt ignores, and the README's Repository Structure entry. Three CI jobs in test.yml ran `forge` with a working-directory inside `examples/` (contracts, voting, notary) and are removed; test, ts-sdk, protocol and solidity-sdk remain. doc/: deletes the precompile reference, the bidding guide, the protocol concept page and both case studies (CowSwap solver auctions, RollupBoost priority auctions), then strips the references left behind in both SUMMARY files, the precompiles table, protocol/README, markets-overview, censorship-resistance and json-rpc-errors — including the `Optimistic auction validation failed` row that pod#1688 stops emitting. Batch auction, CLOB and orderbook content is untouched throughout. timestamping.md: separate correction found while checking the above. The page described past perfection as a quorum of signed heartbeats every ~20ms, but pod has no signed Heartbeat message — PPT advances on `VotesMetadata.ts` carried by the regular signed `VoteBatch`, crossing when n - f entries of `PPTState.last_vote_ts` reach the target. The surviving internal `ExecutionAction::Heartbeat` only pokes a validator to emit a time-vote (a `VoteBatch` with no votes). The ~20ms cadence is also stale: `Heartbeater` now arms one timer per pending target. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
poszu
force-pushed
the
refactor/remove-optimistic-auction
branch
from
August 21, 2026 06:54
c1a41ec to
bfc62eb
Compare
poszu
requested review from
majesticwizardcat and
shresthagrawal
and
a lite review from Copilot
August 21, 2026 07:06
Contributor
There was a problem hiding this comment.
Pull request overview
Removes the obsolete OptimisticAuction SDK surface, examples, CI configuration, and documentation, while updating timestamping terminology.
Changes:
- Removes
pod_sdk::auctionsand related dependencies. - Deletes legacy examples and workspace/CI references.
- Removes OptimisticAuction documentation and updates timestamping docs.
Reviewed changes
Copilot reviewed 104 out of 111 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Reviewed change |
|---|---|
rust-sdk/src/lib.rs |
Removes the public auctions module export. |
rust-sdk/src/auctions/mod.rs |
Deletes the auctions module. |
rust-sdk/src/auctions/client.rs |
Deletes the auction client implementation. |
rust-sdk/Cargo.toml |
Removes auction-related dependencies. |
README.md |
Removes the examples repository entry. |
examples/voting/contract/test/Voting.t.sol |
Deletes the voting example test. |
examples/voting/contract/src/Voting.sol |
Deletes the voting contract. |
examples/voting/contract/script/Voting.s.sol |
Deletes the voting deployment script. |
examples/voting/contract/README.md |
Deletes voting example documentation. |
examples/voting/contract/Makefile |
Deletes voting example build configuration. |
examples/voting/contract/foundry.toml |
Deletes voting Foundry configuration. |
examples/voting/contract/.gitignore |
Deletes voting ignore rules. |
examples/voting/client/src/main.rs |
Deletes the voting client. |
examples/voting/client/Cargo.toml |
Deletes voting client configuration. |
examples/voting/bindings/src/lib.rs |
Deletes voting bindings. |
examples/voting/bindings/Cargo.toml |
Deletes voting bindings configuration. |
examples/tokens/src/main.rs |
Deletes the token example client. |
examples/tokens/foundry.toml |
Deletes token example configuration. |
examples/tokens/contracts/Tokens.sol |
Deletes the token contract. |
examples/tokens/Cargo.toml |
Deletes token example configuration. |
examples/solidity/src/Voting.sol |
Deletes the Solidity voting example. |
examples/solidity/src/RankedFeed.sol |
Deletes the ranked feed example. |
examples/solidity/src/Pi2.sol |
Deletes the Pi2 example. |
examples/solidity/src/IAuction.sol |
Deletes the auction interface. |
examples/solidity/script/Deploy.s.sol |
Deletes the Solidity deployment script. |
examples/solidity/README.md |
Deletes Solidity example documentation. |
examples/solidity/Makefile |
Deletes Solidity example build configuration. |
examples/solidity/foundry.toml |
Deletes Solidity Foundry configuration. |
examples/solidity/bindings/src/time.rs |
Deletes generated time bindings. |
examples/solidity/bindings/src/lib.rs |
Deletes generated Solidity bindings. |
examples/solidity/bindings/src/i_auction.rs |
Deletes generated auction bindings. |
examples/solidity/bindings/src/fast_types.rs |
Deletes generated binding types. |
examples/solidity/bindings/Cargo.toml |
Deletes Solidity bindings configuration. |
examples/solidity/.gitignore |
Deletes Solidity ignore rules. |
examples/send_tx_with_attestations/send_tx_with_attestations.js |
Deletes the attestation transaction example. |
examples/send_tx_with_attestations/README.md |
Deletes attestation example documentation. |
examples/send_tx_with_attestations/package.json |
Deletes JavaScript example metadata. |
examples/send_tx_with_attestations/package-lock.json |
Deletes JavaScript dependency locking. |
examples/send_tx_with_attestations/.env.example |
Deletes attestation environment configuration. |
examples/rust/src/watch_events.rs |
Deletes the Rust event watcher example. |
examples/rust/src/watch_account_receipts.rs |
Deletes the Rust receipt watcher example. |
examples/rust/src/usage.rs |
Deletes the Rust usage example. |
examples/rust/Cargo.toml |
Deletes Rust examples configuration. |
examples/optimism-tx-auction/src/main.rs |
Deletes the Optimism auction example. |
examples/optimism-tx-auction/README.md |
Deletes Optimism auction documentation. |
examples/optimism-tx-auction/prefund.sh |
Deletes auction prefunding script. |
examples/optimism-tx-auction/keys.json |
Deletes auction example keys. |
examples/optimism-tx-auction/Cargo.toml |
Deletes Optimism auction configuration. |
examples/notary/src/main.rs |
Deletes the notary client. |
examples/notary/Notary.sol |
Deletes the notary contract. |
examples/notary/Makefile |
Deletes notary build configuration. |
examples/notary/foundry.toml |
Deletes notary Foundry configuration. |
examples/notary/Cargo.toml |
Deletes notary configuration. |
examples/notary/bindings/src/time.rs |
Deletes notary time bindings. |
examples/notary/bindings/src/lib.rs |
Deletes notary bindings. |
examples/notary/bindings/Cargo.toml |
Deletes notary bindings configuration. |
examples/nfts/src/main.rs |
Deletes the NFT example client. |
examples/nfts/NFTs.sol |
Deletes the NFT contract. |
examples/nfts/Cargo.toml |
Deletes NFT example configuration. |
examples/hashchallenge/src/HashChallenge.sol |
Deletes the hash challenge contract. |
examples/hashchallenge/README.md |
Deletes hash challenge documentation. |
examples/hashchallenge/foundry.toml |
Deletes hash challenge configuration. |
examples/bsky/README.md |
Deletes Bluesky example documentation. |
examples/bsky/plc/src/plc.rs |
Deletes PLC implementation code. |
examples/bsky/plc/src/main.rs |
Deletes the Bluesky example entry point. |
examples/bsky/plc/src/lib.rs |
Deletes Bluesky library code. |
examples/bsky/plc/src/config.rs |
Deletes Bluesky configuration code. |
examples/bsky/plc/src/bindings.rs |
Deletes Bluesky bindings. |
examples/bsky/plc/Cargo.toml |
Deletes Bluesky PLC configuration. |
examples/bsky/Dockerfile |
Deletes Bluesky container configuration. |
examples/bsky/contract/test/PLCRegistry.t.sol |
Deletes PLC registry tests. |
examples/bsky/contract/src/PLCRegistry.sol |
Deletes the PLC registry contract. |
examples/bsky/contract/foundry.toml |
Deletes PLC registry configuration. |
examples/bsky/contract/.gitignore |
Deletes PLC registry ignore rules. |
examples/bsky/.env.pds |
Deletes Bluesky environment configuration. |
examples/bridge-flow/src/main.rs |
Deletes the bridge flow example. |
examples/bridge-flow/Cargo.toml |
Deletes bridge flow configuration. |
examples/bridge-flow/.gitignore |
Deletes bridge flow ignore rules. |
examples/bridge-flow/.env.example |
Deletes bridge flow environment configuration. |
examples/auction/README.md |
Deletes auction CLI documentation. |
examples/auction/main.rs |
Deletes the auction CLI. |
examples/auction/Cargo.toml |
Deletes auction CLI configuration. |
examples/.gitignore |
Removes obsolete examples ignore rules. |
doc/protocol/SUMMARY.md |
Removes obsolete auction navigation. |
doc/protocol/README.md |
Removes OptimisticAuction references. |
doc/protocol/optimistic-auctions.md |
Deletes the protocol concept page. |
doc/protocol/network-architecture/timestamping.md |
Updates timestamping terminology; a minor wording qualification remains. |
doc/protocol/network-architecture/censorship-resistance.md |
Removes the auction-specific reference. |
doc/protocol/markets-overview.md |
Removes external-auction market content. |
doc/api-reference/SUMMARY.md |
Removes auction guides and case studies. |
doc/api-reference/json-rpc-errors.md |
Removes auction validation error documentation. |
doc/api-reference/guides/optimistic-auction.md |
Deletes the auction guide. |
doc/api-reference/case-studies/rollupboost-priority-auctions.md |
Deletes the RollupBoost case study. |
doc/api-reference/case-studies/cowswap-solver-auctions.md |
Deletes the CowSwap case study. |
doc/api-reference/applications-precompiles/wip-optimistic-auctions.md |
Deletes the precompile reference. |
doc/api-reference/applications-precompiles/README.md |
Removes the auction precompile entry. |
Cargo.toml |
Removes deleted example workspace members. |
.rustfmt.toml |
Removes formatting ignores for deleted examples. |
.github/workflows/test.yml |
Removes CI jobs for deleted examples. |
Files not reviewed (1)
- examples/send_tx_with_attestations/package-lock.json: Generated file
Suppressed comments (1)
doc/protocol/network-architecture/timestamping.md:14
- This updated line still points readers to
pod_subscribe, but that RPC is not present in the repository's API reference; the current endpoint ispod_waitPastPerfectTime(seedoc/api-reference/json-rpc/openapi.yaml:2325andrust-sdk/src/provider/mod.rs:204). Following this page would therefore result in an unknown method. Please update the method name here.
Applications can subscribe to a **time of interest** - for example, an auction deadline - using `pod_subscribe`. The time of interest is reached when a quorum (n - f) of validators have signed vote batches with timestamps beyond it. At that point, the full node returns a **past perfect set** associated with that timestamp.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| 1. **Transaction timestamps** - each validator signs a local microsecond timestamp when attesting to a transaction. | ||
| 2. **Heartbeat timestamps** - each validator signs a heartbeat message every \~20ms. Heartbeats are sequenced in the validator's temporal log alongside transactions. | ||
| 2. **Vote batch timestamps** - each validator signs every vote batch it broadcasts, and each batch carries a microsecond timestamp and a sequence number. A validator with nothing to attest to still emits a batch with no votes in it, so time keeps advancing on an idle network. Vote batches are sequenced in the validator's temporal log alongside transactions. |
majesticwizardcat
approved these changes
Aug 21, 2026
This was referenced Aug 25, 2026
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.
Follow-up in pod-sdk to podnetwork/pod#1688, which removed the enshrined OptimisticAuction contract at
0x50d0000000000000000000000000000000000004from the node. That PR's own "Required follow-up in pod-sdk" section describes this change.rust-sdk
Drops the public
pod_sdk::auctionsmodule (AuctionClient,Bid) — a breaking change to the crate's public API.That takes the
pod-contractsdependency with it. It was a path dependency intoexamples/solidity/bindings, and its only consumer anywhere in the repo was theIAuctionInstanceimport inauctions/client.rs. Sopod-examples-solidityalso leavesCargo.lock, exactly as pod#1688 predicted would happen once this landed. This is also what makes deletingexamples/possible without breaking the rust-sdk build.examples/
Removed in full, along with the eight
examples/*workspace members, the fiveexamples/*rustfmt ignores, and the README's Repository Structure entry.Note this is wider than pod#1688 anticipated — it asked only for the two auction example crates. Consequently three CI jobs in
test.ymlhad aworking-directoryinsideexamples/and would fail on a missing path, socontracts(examples-solidity),votingandnotaryare removed.test,ts-sdk,protocolandsolidity-sdkremain.doc/
Deleted outright:
api-reference/applications-precompiles/wip-optimistic-auctions.md— the precompile referenceapi-reference/guides/optimistic-auction.md— the bidding guide, whose Rust tab used the deleted moduleprotocol/optimistic-auctions.md— the protocol concept pageapi-reference/case-studies/cowswap-solver-auctions.mdandrollupboost-priority-auctions.md— both end-to-end precompile narratives, which emptiedcase-studies/Then the references left behind: both
SUMMARY.mdfiles (including the now-empty Case Studies section), the precompiles address table,protocol/README.md,markets-overview.md,censorship-resistance.md, andjson-rpc-errors.md— the last including theOptimistic auction validation failed: {reason}row that pod#1688 stops the node emitting.pod#1688 expected the concept page and case studies to survive with their links repaired; they are deleted instead. Restoring them is cheap if reviewers prefer that.
markets-overview.mdneeded the one non-mechanical edit: its "External Markets" section was entirely about the precompile, so removing it also required dropping the now-false lead-in "Pod supports two kinds of markets: native markets and external markets."Batch auction, CLOB and orderbook content is untouched. Every surviving
auctionmention was checked:auction_intervaland friends, "frequent batch auctions", the Budish–Cramton–Shim citation, and the two batch-auction blog links inprotocol/SUMMARY.md.timestamping.md
A separate correction found while checking the above, worth its own attention.
The page described past perfection as a quorum of signed heartbeats emitted every ~20ms. pod has no signed
Heartbeatmessage:NetworkMessage::AddVotes(VoteBatch)is the only vote-carrying wire message, and PPT advances on theVotesMetadata { sequence, ts }aVoteBatchcarries, crossing when n − f entries ofPPTState.last_vote_tsreach the target. What survives under the name is internal only —ExecutionAction::Heartbeatpokes a validator to "emit a time-vote at its actual clock ts", producing aVoteBatchwith no votes.The ~20ms cadence is stale too:
Heartbeaterarms one timer per pending PPT target, stays quiescent when nothing is pending, and only falls back to a 250 ms re-emission after a target's timer fires. The figure is dropped rather than replaced, since the fallback is an implementation detail.The per-transaction timestamp bullet is left as-is —
AttestationMetadata.timestampconfirms it is still accurate, so "two sources" still holds.Out of scope here, but for the record: pod's own
docs/spec/pod-core/entities/full-node.mdstill specifiesSigned<Heartbeat>, a heartbeats map keyed by pk, and anon_receive_hbhandler. That spec is stale against the implementation in its own repo and needs a separate issue.🤖 Generated with Claude Code