Skip to content

Rollups Contracts 3.0.0-alpha.10 and Dave 3.0.0-alpha.4 bump - #798

Draft
vfusco wants to merge 41 commits into
next/2.0from
feature/contracts-bump
Draft

vfusco wants to merge 41 commits into
next/2.0from
feature/contracts-bump

Conversation

@vfusco

@vfusco vfusco commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

This PR adapts the node to new claim, deployment, and tournament interfaces. It also makes externally conducted disputes visible through JSON-RPC. It does not add active dispute responses.

The basic node workflow stays the same. EVM Reader stores inputs. Advancer executes them in the Cartesi Machine. Validator computes claims and output proofs. Claimer or PRT submits the result to the appropriate consensus contract. These services share PostgreSQL. JSON-RPC reads the stored results.

Use rollups-contracts v3.0.0-alpha.10 and Dave v3.0.0-alpha.4.
Pin the official artifact names and SHA-256 checksums.

Key extraction stamps by version and checksum so a previous extraction
cannot silently satisfy the new dependency. This commit changes artifact
selection only; devnet and generated bindings follow separately.
Use the official Dave deployment bundle and its Anvil version. The
bundle includes the USD withdrawal output builder, so the devnet image
does not deploy another copy.

Update the development addresses in Makefile, Compose, and the withdrawal
script together. Keep deployments.json generated at devnet startup; do
not add a tracked deployment manifest or an address-generation layer.
Generated source must be usable by the human and agent accounts in the
same staff group. Give binding directories and files explicit shared
access after creation, including under a restrictive caller umask.

Normalize only the generated database tree after Jet runs. Add a
subprocess test for binding permissions. Do not change permissions of
unrelated checkout files.
Generate bindings from rollups-contracts v3.0.0-alpha.10 and Dave
v3.0.0-alpha.4. Use the upstream public ERC interfaces, the renamed
IErc20Portal, and IMultiLevelTournamentFactory.

Remove DataAvailability from the generation list and generated packages.
The node targets the new contracts; no legacy compatibility path is added.
Use direct InputBox references and the new application and consensus factory arguments. Read complete return data and expose the new staging and tournament configuration through the shared Ethereum helpers.

Use the final USD withdrawal account layout and update revert decoding. Keep helper tests and the RPC test synchronization correction with the implementation they verify.

Allow callers to control deployment broadcast and receipt waiting while keeping factory construction, result parsing, and verification here. Retain existing Deploy entry points and signed hashes on send failures.

Provide an explicit legacy-fee factory with a fresh suggested price for each transaction. Keep network-based automatic selection for callers that do not opt in.
Use one checked conversion for PostgreSQL enum scans. Preserve rejection
of unsupported input types and unknown values.

Convert the existing enum Scan methods before adding the new PRT enum
types. Tests cover accepted strings and byte slices, invalid values, and
the requirement to leave the destination unchanged after failure.
Remove the obsolete application data-availability selector. Define the
final tournament, commitment, match, clock, and bond observation types,
including their block anchors and exact uint256 values.

Expose owned copies of persisted machine proofs and one shared set of
non-terminal epoch statuses. Add JSON, enum, numeric-boundary, proof
ownership, and status-set tests, plus the shared proof test builder.

BREAKING CHANGE: application and dispute model fields now describe the
new v3 contracts; the legacy data-availability field is removed.
Require explicit saved chain, observation policy, and submission mode values. Reject changes instead of silently replacing requested or stored settings. Keep submission transitions outside this release.
Adapt application storage to direct InputBox references and permit PRT claims to enter the staged state with their on-chain staging block.

Select the newest claim barrier per application with the complete machine proof. Use the shared non-terminal status set for drain queries. Report a publication that loses to foreclosure as ErrEpochForeclosed instead of storing late claim or proof data. Include repository regression tests.

Update the initial pre-release migration; this series targets new databases rather than adding an upgrade migration.

BREAKING CHANGE: stored application and epoch state target the new v3 contracts and require the updated initial schema.

Keep the output scan cursor monotonic while committing output execution updates. Initialize saved service settings with insert-only writes and validate the stored winner after concurrent startup.
Store immutable dispute event identities beside current contract views
anchored to an observation block. Add final enum/domain constraints,
typed row mappings, bond events, and the matching generated tables.

Scope match-advance reads to application, epoch, tournament, and match.
Use transaction hash and log index to identify an event returned by that
list. Keep pagination checks and remove the superseded row-update APIs.

This defines the storage and read model. The next commit publishes a
complete observation window with its cursor in one transaction.
Publish every root and child tournament batch for one application in
one transaction. Store event facts, current views, and the observation
cursor together, with parent batches before child batches.

Lock the application before child rows. Accept identical event replay
and reject conflicting immutable facts or older snapshots. Replace the
old partial-write path rather than keeping two publication mechanisms.

Tests cover replay, conflicts, constraints, rollback, and the rule that a
failed window cannot advance the cursor or leave partial projections.
Expose the final application and dispute model through JSON-RPC and
the discovery schema. Return tournament and match phases, clocks, child
results, financial events, and observation block information.

Require a specific match for advance lists. The list returns the
transaction hash and log index needed for a single-event lookup, with
the same event content in both responses. Include API contract tests.

BREAKING CHANGE: remove the legacy data-availability response field and
use the new dispute projections and event-addressed match-advance API.
Estimate gas by default and retain manual limits. Wait for a successful
receipt unless --no-wait is set. Replace --async and update its callers.
Keep hashes on broadcast and wait errors. Separate stdout results from
stderr diagnostics, and omit automatic usage after runtime errors.

Allow send by application address without database access. Read the
InputBox from the Application contract, reject zero before signing,
and require its input event. Keep decimal text and hexadecimal JSON.

Allow execute by address and --proof-file without database or node API
access. Preserve complete output bytes, the positional index, and ordered
proof hashes. Require the matching Application output-execution event
before reporting a mined result. Keep names and missing-data lookup in
the DB. Test manual gas, strict no-wait, and missing action evidence.
Use the renamed ERC-20 portal and the shared transaction policy.
Wait for a successful approval receipt and exact token Approval event
before preparing the deposit. Reject --approve with --no-wait before
network work, so the command does not submit only part of the workflow.

Verify the deposit input from the Application-selected InputBox at the
receipt block. Match the portal, application, index, and complete packed
token/depositor/amount/execution-data payload. Bound amounts to uint256.

Keep manual gas, strict no-wait, and distinct output streams. Exercise
the actual bindings with matching, missing, and malformed event evidence.
Deploy and register applications with a direct InputBox address and
the new v3 factory arguments. Expose staging and PRT deployment settings
through the existing CLI workflow.

Remove data-availability selector handling. Add argument and registration
tests for the supported contract configuration.

Use the common transaction policy. Broadcast-only deployment returns the
factory-calculated predicted_address, not confirmed metadata. Registration
and deployment verification still require a successful receipt. Write
summaries to stdout and progress to stderr; this changes the old summary
stream. Cover all five factory paths with actual CLI subprocess tests.
Show the new application and consensus fields in contract inspection.
Read tournament descriptors, standing, commitments, and match state
through the v3 contract views.

Keep formatting and inspector tests with this command adaptation so the
CLI representation can be reviewed separately from the node observer.
List advances within one application, epoch, tournament, and match.
Use the returned transaction hash and log index for a single-event read.

Apply the same identity rules to the JSON-RPC and direct repository
backends. Add command and backend tests; do not add generic advance
search across applications or matches.
Read and construct withdrawal account-drive entries with the v3 USD
layout. Keep the machine-tool layout change and its unit tests together.

The matching withdrawal application fixture is updated with the final
integration coverage.
Use the shared transaction path for foreclosure, drive-root proof, and withdrawal. Keep manual gas limits, check mined receipts by default, and expose --no-wait. Preserve signed hashes and put results on stdout.

Require the Application drive-root event with the exact submitted root. Check its full event data, including the zero-root case. Test missing, malformed, unrelated, and matching events through the actual binding.

Explain when FAILED blocks foreclosure work and require repair before operators clear it. Show the blocked state in application status output.
Add a refund command for deposits left unfinalized after foreclosure.
Submit issueRefund with the application-wide input index and complete
original input bytes. The contract checks eligibility and constructs
the refund output; the CLI does not duplicate those checks.

Use the shared signing, confirmation, broadcast, and receipt policy.
Require an Application RefundIssued event with the exact index and input
before reporting a mined result. Preserve manual gas and strict no-wait.

Test argument parsing, signed calldata, output, and receipt evidence.
Authority, Quorum, and PRT lifecycle tests follow in the integration
section of this series.
Exercise all ten transaction command forms through the actual root in
isolated processes. Check shared help, explicit help, and failed broadcast
and receipt errors. Preserve the signed hash without usage or a success
result. Place these cross-command tests after all CLI implementations.
Configure PRT transactions through CARTESI_PRT_AUTH_* settings. Keep
Claimer and CLI authentication independent. Use account 6 for the
development PRT mnemonic and account 0 for claims.

Allow operators to select the same address in both configurations.
Tests verify separate credential selection and explicit account zero.

BREAKING CHANGE: PRT submission requires its own authentication settings.
Explain the FAILED health gate when failure or foreclosure is recorded. Keep observation and health policy unchanged. Recovery requires repair before the operator clears FAILED.
Resolve and scan the InputBox assigned to each application. Remove the legacy data-availability selector gate.

Keep adapter resolution and distinct-InputBox tests with this change. Sealed-epoch completeness and restart behavior are handled separately in the next commit.

Remove the obsolete input-reader switch. Validate saved chain and observation settings at startup, and explain blocked foreclosure work without weakening health gates.

Complete each application input scan before advancing its cursor. Return operation errors to one logging boundary instead of replacing them with a generic incomplete-scan marker. Keep real failures visible during shutdown, preserve progress for healthy applications, and stop dispatching work after context cancellation.

Store no-input epoch closures and their cursors atomically. Cover cancellation, compound errors, failed reads and writes, partial progress, and readiness in unit tests.
Wait until Dave deployment is visible at the configured observation
block before scanning its sealed epochs and inputs. Do not persist a
bootstrap cursor that claims an unscanned range is complete.

Validate each sealed-epoch window against the on-chain count and epoch
identity. Retry interrupted scans from the completed cursor, preserve
already-computed epoch data, and checkpoint only complete input blocks.

Report conflicting input identities instead of retrying the same failed
insert forever. Include deployment, replay, checkpoint, identity, and
logging regression tests with the final scanner implementation.
Treat ErrEpochForeclosed as a publication superseded by the foreclosure
drain. Do not turn this expected race into a processing failure.

Keep the focused publication regression test and nearby Advancer lint
cleanup with the caller that uses the repository guard.
Handle a claim publication that loses to foreclosure without restoring non-terminal claim state or reporting local corruption.

Include the focused publication test, remove obsolete data-availability fixture fields, and keep the nearby Validator cleanup in this component.

Treat failure to prove the freshly built commitment tree as an internal FAILED condition. Keep invalid stored dimensions, repetitions, and final hashes classified as CORRUPTED.
Check the Merkle test setup error and simplify the empty expected hash
slice. Keep these small pre-existing test cleanups out of service and
repository commits.
Submit the machine root and the complete three-leaf validity proof to IConsensus. Build the ABI proof from owned persisted proof data and reject incomplete state before submission.

Introduce the final shared revert recognizer and direct ABI status decoding. Keep known proof failures distinct from race, staging, and application-call failures. The following commit supplies Authority owner evidence for otherwise-unclassified submission errors.

Include submission, proof, revert, and in-flight regression tests.

Validate saved chain, observation policy, and submission mode before constructing the signer. Use insert-only startup configuration and honor the explicit legacy-fee override.

# Conflicts:
#	internal/claimer/reverts.go
#	internal/claimer/reverts_test.go
#	internal/claimer/service.go
#	internal/claimer/service_test.go
For an otherwise-unclassified Authority submission revert, read the
owner at the configured block and at latest. Preserve the original
submission error with the owner evidence.

If owner views differ, wait for confirmation. If both views agree and
exclude the configured signer, report a recoverable configuration
failure. Known contract and proof errors keep their more specific
diagnosis. Add real RPC-path ownership-transfer and mismatch tests.
Read the final DaveConsensus and tournament API through typed adapters.
Use shared model enums from the start, preserve exact uint256 values, and
reject invalid contract return values. Reads that form a current
observation must use one explicit block.

Expose descriptors, standing, match phases, clocks, structural event
counts, staging conditions, child results, and bond disposition. Keep
ABI decoding tests on the real RPC-to-binding-to-adapter path so argument
order and field wiring are covered.

The next PRT commits introduce final helpers before the service cycle
connects them. Shared service fields and test adapters are declared once;
no temporary protocol implementation or legacy adapter is added.
Build complete root and child tournament observations without writing
the database or sending transactions. Read event history and current
contract views at the same block, then construct the repository batches.

Validate descriptors, standing, structural event counts, and financial
events. Preserve deletion evidence for matches whose contract storage
was removed. Stop repeated reads of a clone only after a complete
committed observation proves its views are immutable. Continue checking
its children; a finished parent does not make its descendants immutable.

Replace the old gathering and partial-save helpers with this final path.
Tests cover projections, deleted matches, event completeness, retirement,
and warning behavior. Publication and local claim decisions are separate
responsibilities in the next commits.
Observe tournaments for every enabled PRT application, independently of
local claim readiness or local machine health. Bound root discovery by
the completed sealed-epoch scan and the configured observation block.
After foreclosure, continue observing the already-discovered tournaments.

Gather all root and child batches before calling the atomic repository
publisher. Advance the in-memory cursor only after that call succeeds.
A failed window must not expose partial dispute data or a new cursor.

Report repeated observation failures through readiness as configured
heads advance. Do not turn observation failure into local claim
corruption. Include checkpoint, passive-observation, and health tests.
This operation does not reconcile claims or submit transactions.
Compare local claims with chain state only after the relevant dispute
window has been published. Validate the pinned consensus snapshot and
record the on-chain staging block for matching local epochs.

Compare the local commitment with the published root-tournament winner.
For acceptance, verify the observed transaction and its EpochSealed log
against the local machine root and outputs root. An acceptance newer
than the published window must wait. Publish the full dispute evidence
before a losing local claim marks the app DIVERGED.

Keep the final root-bond queue calls in their claim-reconciliation
callers; the recovery implementation follows separately. Boundary, lag,
and result-projection tests cover the confirmed-state rules. This code
does not choose or broadcast a new tournament action.
Provide the final root join, tournament-result stage, and acceptance
operations. Encode the full machine proof and classify contract reverts
without treating latest-only evidence as confirmed application state.

Use an in-memory exclusion slot for pending join, stage, and accept
transactions. Even a mined receipt makes the current tick yield, so the
next action uses a fresh chain view. Receipts alone do not set claim
status. Include proof, pending-transaction, and revert tests.

Remove the obsolete settle path. Keep the final bond-queue call in the
acceptance operation. Action selection is connected in the service-cycle
commit; active dispute moves and persistent transaction delivery remain
outside this contract bump.
Track node-owned root-bond recovery candidates in memory. Before a
recovery broadcast, read the on-chain bond disposition, eligible epoch,
and payment owner. Retire completed, impossible, or foreign candidates.

Reconcile an existing recovery transaction before starting another and
respect other pending PRT mutations. Include ownership, disposition,
receipt, and foreclosure recovery-operation tests.

This is bounded payment maintenance, not a persistent delivery queue.
The next commit supplies the final selection rule that gives join,
stage, and accept priority over a new recovery broadcast.
Connect the final PRT helpers through one service cycle. For each enabled application, observe first, then reconcile healthy local claims against published chain state. Read publishable results at the minimum of the configured block and the published tournament cursor. Use latest separately to select live actions, not to confirm database staging or terminal application status.

Keep progressTournamentResult whole: pending transactions, published result reads, latest-state checks, and action priority are one decision path. A required join, stage, or accept takes priority over a new bond recovery. If the local claim is not ready for an open join window, do not fill that gap with a new recovery transaction.

During foreclosure, continue observation and eligible queued recovery, but send no new join, stage, or accept. Wait for both ingestion cursors and local processing, reconcile accepted claims, then terminalize the remaining claims. Include service-cycle, block-policy, foreclosure, recovery-selection, shutdown, and cancellation tests.

This completes the PRT wiring without an intermediate service-loop design. The node still observes disputes but does not submit dispute moves. Persistent transaction delivery remains a separate change.

Validate saved chain, observation policy, and submission mode before constructing the signer. Honor the explicit legacy-fee override and retain observe-first application selection.
Adapt end-to-end workflows to v3 deployment, direct InputBox access,
machine proofs, and staging. Update the withdrawal application fixture
for the USD account layout.

Cover Authority, Quorum, and PRT lifecycles, staging and sentry timing,
foreclosure and replay, same-block inputs, restarts, and snapshot policy.
Keep the shared Anvil and input-relay fixtures here.

Verify address-only send and file-based execute without database access.
Reject a mined no-op at a code-free address with manual gas, then prove
valid execution and node indexing. Keep decimal text and hex JSON.

Passive dispute observation and deposit refunds have separate following
integration commits so reviewers can inspect those scenarios separately.
Drive dispute lifecycles with external test participants while the
node observes passively. Verify the tournament drill-down API, child and
match state, immutable event identities, and financial events.

Cover both a matching external winner and a losing local commitment.
Include sparse commitment fixtures, observer configuration and cleanup
checks, and the PRT shard registration. These transaction-driving
helpers are test fixtures, not active dispute support in the node.
Exercise the refund CLI against foreclosed Authority, Quorum, and PRT
applications. Verify the unfinalized deposit lifecycle and the resulting
refund transaction through the deployed contracts.

Include the refund suite in the withdrawal shard. This completes the
command introduced earlier without mixing CLI implementation into the
end-to-end test commit.
@vfusco vfusco added this to the 2.0.0 milestone Sep 22, 2026
@vfusco vfusco self-assigned this Sep 22, 2026
@vfusco
vfusco requested review from mpolitzer and renatomaia and a balanced review from Copilot September 22, 2026 20:49

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

A critical PRT transaction-liveness defect and two moderate correctness/configuration issues remain unresolved.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 1 High severity

Open (1)
What changed in this PR

Updates the node for Rollups Contracts 3.0.0-alpha.10 and Dave 3.0.0-alpha.4, including InputBox-based applications, passive PRT dispute observation, and JSON-RPC exposure.

Changes:

  • Replaces legacy data-availability metadata with application InputBox addresses.
  • Adds PRT tournament observation, state proofs, bond events, and recovery handling.
  • Updates deployment, CLI, persistence, compose, and integration infrastructure.

Blocking findings:

  • Critical (2 votes): internal/prt/pending.go permanently retains dropped or replaced transactions, blocking future PRT actions until restart.
  • Moderate (1 vote): compose.individual-services.yaml lacks a PRT service and required authentication settings.
  • Moderate (1 vote): cmd/cartesi-rollups-cli/root/contract/commitment.go undercounts inclusive clock blocks by one.
File Description
test/​validator/​validator_test.go Removes legacy data-availability fixtures.
test/​integration/​testdata/​InputRelay.sol Adds an input relay test contract.
test/​integration/​testdata/​input_relay_bytecode.hex Adds relay deployment bytecode.
test/​integration/​testdata/​input_relay_abi.json Adds the relay ABI.
test/​integration/​snapshot_policy_test.go Uses relayed inputs and updated PRT finalization.
test/​integration/​reject_exception_prt_test.go Updates PRT epoch finalization.
test/​integration/​reader_node_helpers_test.go Adds reader-node lifecycle helpers.
test/​integration/​node_subprocess_test.go Adds subprocess lifecycle handling.
test/​integration/​multinode_helpers_test.go Reuses subprocess lifecycle handling.
test/​integration/​multi_app_test.go Verifies per-application InputBox behavior.
test/​integration/​lifecycle_test.go Tests relayed inputs and voucher routing.
test/​integration/​foreclose_test.go Sends foreclosure inputs through relays.
test/​integration/​foreclose_replay_test.go Updates replay and reader-mode setup.
test/​integration/​foreclose_prt_test.go Adapts the PRT foreclosure lifecycle.
test/​integration/​echo_prt_test.go Updates PRT deployment and finalization.
test/​dapps/​erc20-withdrawal/​install.sh Encodes uint96 account balances.
test/​compose/​compose.test.yaml Updates test addresses and PRT signer.
test/​compose/​compose.integration.yaml Updates integration addresses and signer.
scripts/​withdrawal-lifecycle Updates portal and token defaults.
scripts/​load-test.sh Uses non-blocking transaction submission.
pkg/​ethutil/​withdrawal_account_test.go Tests uint96 withdrawal accounts.
pkg/​ethutil/​rpcerror.go Formats application revert data safely.
pkg/​ethutil/​rpcerror_test.go Refactors revert test fixtures.
pkg/​ethutil/​return_data_test.go Tests application return-data formatting.
pkg/​ethutil/​quorum.go Adds configurable deployment transactions.
pkg/​ethutil/​legacy_fees.go Adds legacy fee handling.
pkg/​ethutil/​ethutil.go Replaces data-availability lookup with InputBox lookup.
pkg/​ethutil/​ethutil_test.go Updates deployment and concurrency tests.
pkg/​ethutil/​deployment_transaction.go Centralizes deployment transaction execution.
pkg/​ethutil/​data-availability.go Removes obsolete data-availability utilities.
pkg/​ethutil/​authority.go Adds configurable authority deployment.
pkg/​ethutil/​anvil.go Deploys applications with InputBox addresses.
pkg/​contracts/​iusdwithdrawaloutputbuilder/​iusdwithdrawaloutputbuilder.go Updates the withdrawal-builder ABI.
pkg/​contracts/​generate/​main.go Updates binding generation and permissions.
pkg/​contracts/​generate/​main_test.go Tests generated artifact permissions.
internal/​repository/​repotest/​tournament_test_cases.go Tests immutable tournament descriptors.
internal/​repository/​repotest/​state_proof.go Builds state-proof fixtures.
internal/​repository/​repotest/​state_proof_test.go Verifies generated Merkle proofs.
internal/​repository/​repotest/​node_config_test_cases.go Tests atomic configuration initialization.
internal/​repository/​repotest/​match_test_cases.go Removes obsolete match updates.
internal/​repository/​repotest/​match_advanced_test_cases.go Uses event identities for advances.
internal/​repository/​postgres/​schema/​migrations/​000001_create_initial_schema.down.sql Updates schema rollback.
internal/​repository/​postgres/​postgres_repo_test.go Expands schema contract checks.
internal/​repository/​postgres/​pagination_range_test.go Tests pagination bounds.
internal/​repository/​postgres/​output.go Makes output cursors monotonic.
internal/​repository/​postgres/​node_config.go Adds insert-only configuration initialization.
internal/​repository/​postgres/​event_column_test.go Tests event cursor mapping.
internal/​repository/​postgres/​db/​rollupsdb/​public/​table/​table_use_schema.go Adds bond-event schema switching.
internal/​repository/​postgres/​db/​rollupsdb/​public/​table/​commitments.go Adds commitment snapshot columns.
internal/​repository/​postgres/​db/​rollupsdb/​public/​enum/​tournamentstandingstate.go Adds tournament-standing bindings.
internal/​repository/​postgres/​db/​rollupsdb/​public/​enum/​tournamentkind.go Adds tournament-kind bindings.
internal/​repository/​postgres/​db/​rollupsdb/​public/​enum/​matchtimeoutoutcome.go Adds timeout-outcome bindings.
internal/​repository/​postgres/​db/​rollupsdb/​public/​enum/​matchphase.go Adds match-phase bindings.
internal/​repository/​postgres/​db/​rollupsdb/​public/​enum/​innertournamentdisposition.go Adds disposition bindings.
internal/​repository/​postgres/​db/​rollupsdb/​public/​enum/​commitmentside.go Adds commitment-side bindings.
internal/​repository/​postgres/​db/​rollupsdb/​public/​enum/​bondeventtype.go Adds bond-event type bindings.
internal/​repository/​postgres/​db/​rollupsdb/​public/​enum/​bonddisposition.go Adds bond-disposition bindings.
internal/​repository/​node_config_test.go Tests saved configuration decoding.
internal/​prt/​warnings.go Adds PRT operational warnings.
internal/​prt/​supervisor_readiness_test.go Tests observation readiness reporting.
internal/​prt/​state_proof_test.go Tests Dave proof encoding.
internal/​prt/​result_observation_lag_test.go Tests progress under observer lag.
internal/​prt/​pending.go Tracks pending PRT transactions.
internal/​prt/​observation_health.go Adds tournament observation health.
internal/​prt/​observation_counts.go Validates observed event counts.
internal/​prt/​call_opts.go Adds block-pinned contract calls.
internal/​prt/​call_opts_test.go Tests pinned call options.
internal/​prt/​bond_foreclosure_test.go Tests foreclosure bond recovery.
internal/​model/​uint256.go Adds SQL and JSON uint256 support.
internal/​model/​epoch_status_test.go Tests epoch-status partitioning.
internal/​model/​enum.go Centralizes enum scanning.
internal/​merkle/​proof_test.go Simplifies hash fixtures.
internal/​merkle/​builder_test.go Checks root-child errors.
internal/​jsonrpc/​util_test.go Updates PRT response fixtures.
internal/​jsonrpc/​match_projection_test.go Tests nullable deletion hashes.
internal/​jsonrpc/​config_test.go Tests persisted configuration validation.
internal/​jsonrpc/​batchbudget_test.go Adds bond-event batch budgeting.
internal/​jsonrpc/​application_contract_test.go Tests the InputBox application schema.
internal/​jsonrpc/​api/​params.go Adds event identities and bond parameters.
internal/​jsonrpc/​api/​params_test.go Tests positional parameter ordering.
internal/​evmreader/​util.go Removes obsolete address mapping.
internal/​evmreader/​service.go Simplifies persistent configuration.
internal/​evmreader/​readiness_test.go Updates InputBox readiness checks.
internal/​evmreader/​input_deployment_test.go Tests predeployment input observation.
internal/​evmreader/​foreclosure.go Adds blocked-foreclosure warnings.
internal/​evmreader/​foreclosure_test.go Tests foreclosure diagnostics.
internal/​evmreader/​fixtures_test.go Updates shared InputBox fixtures.
internal/​evmreader/​evmreader_test.go Updates scan expectations.
internal/​evmreader/​edge_cases_test.go Removes legacy input-reader assumptions.
internal/​evmreader/​daveconsensus_adapter.go Introduces sealed-epoch DTOs.
internal/​evmreader/​block_scan_plan.go Routes all consensus InputBoxes.
internal/​evmreader/​block_scan_plan_test.go Updates scan-plan tests.
internal/​evmreader/​adapter_resolver.go Removes data-availability cache state.
internal/​evmreader/​adapter_resolver_test.go Updates adapter invalidation tests.
internal/​cli/​types.go Unifies transaction result output.
internal/​cli/​prompt.go Separates prompt output streams.
internal/​cli/​ethereum.go Applies CLI fee policy.
internal/​claimer/​submit.go Requires complete claim state proofs.
internal/​claimer/​state_proof.go Converts model proofs to contract proofs.
internal/​claimer/​state_proof_test.go Tests claim proof submission.
internal/​claimer/​repository.go Adds configuration initialization APIs.
internal/​claimer/​mocks_test.go Updates claimer mocks.
internal/​claimer/​inflight_test.go Updates proof-aware expectations.
internal/​claimer/​foreclosure.go Clarifies failed-app drain behavior.
internal/​claimer/​claimer.go Updates PRT and shutdown handling.
internal/​claimer/​claimer_test.go Tests cancellation error preservation.
internal/​appstatus/​appstatus.go Warns about blocked foreclosure drains.
internal/​appstatus/​appstatus_test.go Tests failed-foreclosure diagnostics.
internal/​advancer/​publication_test.go Tests obsolete proof publication.
internal/​advancer/​advancer.go Handles foreclosure publication races.
go.mod Promotes uint256 to a direct dependency.
Dockerfile Upgrades golangci-lint.
compose.yaml Updates contracts and PRT signer configuration.
compose.individual-services.yaml Updates deployed contract addresses.
cmd/​cartesi-rollups-node/​root/​root.go Removes the input-reader flag.
cmd/​cartesi-rollups-machine-tool/​accountdrive/​accountdrive.go Supports uint96 account balances.
cmd/​cartesi-rollups-evm-reader/​root/​root.go Removes the input-reader flag.
cmd/​cartesi-rollups-cli/​root/​root.go Adds refund and transaction options.
cmd/​cartesi-rollups-cli/​root/​read/​service/​repository.go Reads advances by event identity.
cmd/​cartesi-rollups-cli/​root/​read/​service/​jsonrpc.go Validates advance event identities.
cmd/​cartesi-rollups-cli/​root/​deposit/​receipt.go Verifies portal-generated inputs.
cmd/​cartesi-rollups-cli/​root/​deploy/​sentries.go Adds PRT sentry configuration.
cmd/​cartesi-rollups-cli/​root/​deploy/​quorum.go Adds transaction-aware quorum deployment.
cmd/​cartesi-rollups-cli/​root/​deploy/​quorum_test.go Refactors quorum fixtures.
cmd/​cartesi-rollups-cli/​root/​deploy/​deploy.go Clarifies staging-period semantics.
cmd/​cartesi-rollups-cli/​root/​deploy/​broadcast.go Reports unconfirmed deployment addresses.
cmd/​cartesi-rollups-cli/​root/​deploy/​authority.go Adds transaction-aware authority deployment.
cmd/​cartesi-rollups-cli/​root/​deploy/​application_test.go Tests deployment validation and removed flags.
cmd/​cartesi-rollups-cli/​root/​contract/​match_test.go Tests updated match projections.
cmd/​cartesi-rollups-cli/​root/​contract/​inputbox.go Resolves InputBox from applications.
cmd/​cartesi-rollups-cli/​root/​contract/​inputbox_test.go Tests application InputBox resolution.
cmd/​cartesi-rollups-cli/​root/​contract/​format.go Formats new tournament enums.
cmd/​cartesi-rollups-cli/​root/​contract/​format_test.go Tests enum formatting.
cmd/​cartesi-rollups-cli/​root/​contract/​contract.go Removes global InputBox override documentation.
cmd/​cartesi-rollups-cli/​root/​contract/​consensus.go Displays sentries and staged results.
cmd/​cartesi-rollups-cli/​root/​contract/​commitment.go Displays updated commitment standing.
cmd/​cartesi-rollups-cli/​root/​contract/​app.go Displays application InputBox details.
cmd/​cartesi-rollups-cli/​root/​app/​status/​status.go Documents failed-app recovery risks.
cmd/​cartesi-rollups-cli/​root/​app/​register/​register_test.go Tests removal of legacy InputBox flags.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread internal/prt/pending.go
Comment on lines +39 to +41
_, pending, err := s.client.TransactionByHash(ctx, tx.Hash)
if err != nil {
return true, fmt.Errorf("checking %s transaction %s: %w", tx.Action, tx.Hash, err)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

2 participants