Skip to content

Remove the OptimisticAuction precompile surface - #278

Merged
poszu merged 1 commit into
mainfrom
refactor/remove-optimistic-auction
Aug 25, 2026
Merged

poszu merged 1 commit into
mainfrom
refactor/remove-optimistic-auction

Conversation

@poszu

@poszu poszu commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Follow-up in pod-sdk to podnetwork/pod#1688, which removed the enshrined OptimisticAuction contract at 0x50d0000000000000000000000000000000000004 from the node. That PR's own "Required follow-up in pod-sdk" section describes this change.

rust-sdk

Drops the public pod_sdk::auctions module (AuctionClient, Bid) — a breaking change to the crate's public API.

That takes the pod-contracts dependency with it. It was a path dependency into examples/solidity/bindings, and its only consumer anywhere in the repo was the IAuctionInstance import in auctions/client.rs. So pod-examples-solidity also leaves Cargo.lock, exactly as pod#1688 predicted would happen once this landed. This is also what makes deleting examples/ possible without breaking the rust-sdk build.

examples/

Removed in full, along with the eight examples/* workspace members, the five examples/* 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.yml had a working-directory inside examples/ and would fail on a missing path, so contracts (examples-solidity), voting and notary are removed. test, ts-sdk, protocol and solidity-sdk remain.

doc/

Deleted outright:

  • api-reference/applications-precompiles/wip-optimistic-auctions.md — the precompile reference
  • api-reference/guides/optimistic-auction.md — the bidding guide, whose Rust tab used the deleted module
  • protocol/optimistic-auctions.md — the protocol concept page
  • api-reference/case-studies/cowswap-solver-auctions.md and rollupboost-priority-auctions.md — both end-to-end precompile narratives, which emptied case-studies/

Then the references left behind: both SUMMARY.md files (including the now-empty Case Studies section), the precompiles address table, protocol/README.md, markets-overview.md, censorship-resistance.md, and json-rpc-errors.md — the last including the Optimistic 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.md needed 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 auction mention was checked: auction_interval and friends, "frequent batch auctions", the Budish–Cramton–Shim citation, and the two batch-auction blog links in protocol/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 Heartbeat message: NetworkMessage::AddVotes(VoteBatch) is the only vote-carrying wire message, and PPT advances on the VotesMetadata { sequence, ts } a VoteBatch carries, crossing when n − f entries of PPTState.last_vote_ts reach the target. What survives under the name is internal only — ExecutionAction::Heartbeat pokes a validator to "emit a time-vote at its actual clock ts", producing a VoteBatch with no votes.

The ~20ms cadence is stale too: Heartbeater arms 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.timestamp confirms 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.md still specifies Signed<Heartbeat>, a heartbeats map keyed by pk, and an on_receive_hb handler. That spec is stale against the implementation in its own repo and needs a separate issue.

🤖 Generated with Claude Code

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
poszu force-pushed the refactor/remove-optimistic-auction branch from c1a41ec to bfc62eb Compare August 21, 2026 06:54
@poszu
poszu requested review from majesticwizardcat and shresthagrawal and a lite review from Copilot August 21, 2026 07:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Removes the obsolete OptimisticAuction SDK surface, examples, CI configuration, and documentation, while updating timestamping terminology.

Changes:

  • Removes pod_sdk::auctions and 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 is pod_waitPastPerfectTime (see doc/api-reference/json-rpc/openapi.yaml:2325 and rust-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.
@poszu
poszu merged commit 66a62f5 into main Aug 25, 2026
14 checks passed
@poszu
poszu deleted the refactor/remove-optimistic-auction branch August 25, 2026 11:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants