Add Orchard-to-Ironwood migration flow#73
Open
czarcas7ic wants to merge 174 commits into
Open
Conversation
Adding the always-visible Migration item surfaced that the sidebar's Column+Spacer layout overflows when the nav doesn't fit (a 6th item at a 982px window, and latently at the 720px minimum). Wrap the nav in Expanded + ListView so it scrolls instead of overflowing; the footer (settings / about / sign out / sync) stays pinned. Scope the accounts list drag test to the pane's list since the sidebar now also has a ListView.
Repin librustzcash and zcash_voting to the pczt-elidable-fields integration heads (plus the crates-io orchard patch) so the graph resolves to a single orchard node and the builder emits unpadded migration children: 1 Orchard action + 1 Ironwood action instead of padded pairs, roughly halving each child PCZT and the resulting QR loop. Align the ZIP-317 estimates and the test fixture with the 2-logical-action children (10_000 zatoshis) and adapt to the stack's API (fallible v2 serialize, optional wire nullifier, the extractor's shared post-NU6.3 circuit). The wallet still emits full-field PCZTs here; recomputable-field elision stays on its own branch.
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
…FF)" This reverts commit 7048cbc.
Delegate the version 6 migration field-omission policy and dummy index validation to zcash_client_backend. Keep Vizor responsible for capturing constructor dummy indices and for its ordinary and legacy signer wire paths.
…m/use-librustzcash-signer-redaction
…m/use-librustzcash-signer-redaction
Delegate version 6 migration batch policy to the librustzcash helper. Remove Vizor dummy-index plumbing and retain only the Keystone-specific Sapling witness omission and legacy serialization behavior.
…edaction Use librustzcash signer redaction for migration batches
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.
Summary
Adds the production Orchard-to-Ironwood migration flow for software and Keystone accounts. Migration becomes available on the selected wallet network once NU6.3 is active. Sync requests and verifies Ironwood state only at or after that network's canonical activation height, including the standard public testnet configuration.
Migration preparation uses base-10 denominations and plans a minimal forest of Orchard split transactions whose bundles are padded to 16 actions. It persists encrypted stage and signature state, broadcasts dependent stages only after predecessor notes reach trusted confirmation depth, and reconciles reorgs and restarts without repeating completed work.
The Keystone path signs all split and migration PCZTs in one session, caps each batch at the firmware's 40-PCZT ceiling, validates request correlation and firmware metadata, and keeps optional-field redaction and signature-only completion inside the migration flow.
The UI reports completed and remaining split stages before migration submissions, refreshes durable run status while confirmations advance, and prevents overlapping timer work. Duplicate broadcasts and accepted transactions that are not yet stored locally remain retryable.
The Rust workspace keeps version requirements in dependency declarations and pins compatible voting and librustzcash revisions in root [patch.crates-io] entries.