Skip to content

apollo_starknet_client: read DeployAccount v4 from the feeder gateway - #15079

Draft
ron-starkware wants to merge 1 commit into
ron/contract-address/v4-os-flow-e2efrom
ron/contract-address/feeder-client-v4
Draft

apollo_starknet_client: read DeployAccount v4 from the feeder gateway#15079
ron-starkware wants to merge 1 commit into
ron/contract-address/v4-os-flow-e2efrom
ron/contract-address/feeder-client-v4

Conversation

@ron-starkware

Copy link
Copy Markdown
Contributor

Stack — on top of #14819 (ron/contract-address/v4-os-flow-e2e). Targets 0.14.5.

The typed feeder-gateway reader bounced version 0x4 with "DeployAccount version is not supported", so sync-from-feeder and blockifier_reexecution could not see a v4 transaction at all. This routes 0x4 to DeployAccountTransaction::V4 and extracts the shared v3/v4 field validation — v4 is v3's field set, and only the version felt and the address derivation differ.

The reexecution reader passes deployed_contract_address: None, so this makes Transaction::from_api's version-dispatched derivation (#14815) load-bearing for v4.

The writer objects need no v4 variant: their DeployAccountTransaction enum is #[serde(untagged)], so a variant with v3's exact field set would be indistinguishable on deserialization, and the v3-shaped struct already carries version as data. There is also no v4 producer on that path until the JSON-RPC spec adds the broadcasted type.

Tests: a "version": "0x4" reader fixture that parses to V4 and round-trips, the v3/v4 field-equality check, and negatives — an invoke or declare with version 0x4 still fails.

🤖 Generated with Claude Code

The typed feeder-gateway reader bounced version 0x4 with "DeployAccount version
is not supported", so sync-from-feeder and blockifier_reexecution could not see a
v4 transaction at all. Route 0x4 to DeployAccountTransaction::V4 and extract the
shared v3/v4 field validation, which is identical -- v4 is v3's field set, and
only the version felt and the address derivation differ.

The reexecution reader passes `deployed_contract_address: None`, so this makes
`Transaction::from_api`'s version-dispatched derivation load-bearing for v4.

The writer objects need no v4 variant: their DeployAccountTransaction enum is
`#[serde(untagged)]`, so a variant with v3's exact field set would be
indistinguishable on deserialization, and the v3-shaped struct already carries
`version` as data. There is also no v4 producer on that path until the JSON-RPC
spec adds the broadcasted type.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@reviewable-StarkWare

Copy link
Copy Markdown

This change is Reviewable

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.

2 participants