Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
7c9c9db
zallet-core: add zcash_ironwood_migration_backend dependency scaffold
dannywillems Jul 16, 2026
8b40a32
zallet-core: add generic pool-migration JSON-RPC surface (scaffold)
dannywillems Jul 16, 2026
0dd1a39
zallet-core: add z_previewpoolmigration, a note-split planning preview
dannywillems Jul 16, 2026
93687da
zallet-core: wire z_previewpoolmigration to the migration engine
dannywillems Jul 17, 2026
f94258f
CHANGELOG: pool-migration engine wiring and z_previewpoolmigration
dannywillems Jul 17, 2026
cf9a1b9
zallet-core: pin the pool-migration engine to a git rev
dannywillems Jul 17, 2026
a828e4a
zallet-core: bump the pool-migration engine rev
dannywillems Jul 17, 2026
ed79c6d
zallet-core: use the canonical .git URL for the engine dependency
dannywillems Jul 17, 2026
1708280
AGENTS: add a no-magic-numbers code convention
dannywillems Jul 18, 2026
e92af58
zallet: re-pin onto the pool-migration store + adapter crates
dannywillems Jul 18, 2026
2f84929
zallet: wire z_startpoolmigration and the status/list/cancel companions
dannywillems Jul 18, 2026
36826a6
zallet: re-pin the backend workspaces onto the same rev
dannywillems Jul 18, 2026
bac2d72
zallet: wire z_advancepoolmigration prove/broadcast lifecycle
dannywillems Jul 18, 2026
fd08338
zallet: regenerate the backend lockfiles for the re-pin
dannywillems Jul 18, 2026
fe527ee
zallet: drive multi-layer preparation in advance
dannywillems Jul 18, 2026
0d4d734
zallet: remove dead multi-layer error path and stale scaffold docs
dannywillems Jul 18, 2026
17ac3e5
zallet: fix lockfile lockstep and cargo-vet after the re-pin
dannywillems Jul 18, 2026
1644a7d
zallet: re-pin to engine without the dead UnsupportedMultiLayer variant
dannywillems Jul 18, 2026
0144bec
zallet: expose a machine-readable next-actions surface in migration s…
dannywillems Jul 18, 2026
222fc24
zallet: consume the engine's migration state machine
dannywillems Jul 18, 2026
db44300
zallet: de-churn the backend lockfiles for vetting
dannywillems Jul 18, 2026
2cb96e4
zallet: never advance a terminal migration; re-pin
dannywillems Jul 18, 2026
8bc1632
book: regenerate the RPC method reference for the migration methods
dannywillems Jul 19, 2026
0352563
zallet: re-pin to the rebased pool-migration train
dannywillems Jul 19, 2026
4f96262
zallet-core: wire the migration external-signer seam into the RPC sur…
dannywillems Jul 20, 2026
9a670ed
CHANGELOG: add the migration external-signer RPC surface
dannywillems Jul 20, 2026
3537a5f
zallet: re-pin to the pool-migration train tip
dannywillems Jul 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,14 @@ Key external dependencies from the Zcash ecosystem:
- `zebra-chain`, `zebra-state`, `zebra-rpc` -- chain data types and node RPC
- `zaino-*` -- indexer integration

## Code Conventions

- **Never use magic numbers.** Do not inline a bare numeric (or string) literal
whose meaning is not obvious from context. Give it a `const` with a
doc-commented rationale, and reuse the protocol's named constants (`COIN`, the
ZIP-317 `MARGINAL_FEE`, and the migration engine's exported constants) rather
than re-deriving their values. This applies to production code and tests alike.

## Build, Test, and Development Commands

The three workspaces have separate lockfiles, so every check runs once **per
Expand Down
34 changes: 34 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,40 @@ be considered breaking changes.
indicating coinbase origin (mirroring `zcashd`'s `listunspent`), so
integrators no longer need a `getrawtransaction` round-trip per UTXO to
distinguish coinbase from spendable-to-transparent funds.
- `zallet_core::migrate`, an integration point that wires in the
backend-agnostic value-pool migration engine (`zcash_pool_migration_backend`).
It re-exports the engine and provides `SpendableSnapshot`, Zallet's
implementation of the engine's `MigrationBackend` trait for the planning
slice. The engine is still evolving upstream and is pinned to a librustzcash
feature branch, so only the planning path is wired; committing a migration
(building, signing, and persisting the PCZTs) awaits later engine slices.
- A generic pool-to-pool migration JSON-RPC surface (wallet build): the
`z_startpoolmigration`, `z_getpoolmigrationstatus`, `z_advancepoolmigration`,
`z_cancelpoolmigration`, and `z_listpoolmigrations` methods. The surface is
parameterised by a `from_pool`/`to_pool` pair rather than hardcoding a
specific migration; a single supported-migrations table maps each pool pair to
the network upgrade that enables it (Orchard to Ironwood requires NU6.3). These
methods are currently a scaffold: they validate their inputs (pool parsing, the
supported-pair table, and network-upgrade activation) but the migration engine
is not yet wired in, so they return a "not implemented yet" error.
- An external-signer surface for the pool migration (wallet build), so a
hardware or offline signer can sign a migration's transactions out of band:
`z_startpoolmigration` takes an `external_signer` flag that builds the
preparation unsigned and returns its PCZTs; `z_buildpoolmigrationtransfers`
builds the phase-2 transfers unsigned once the preparation is mined;
`z_applypoolmigrationsignature` applies a signed PCZT to its transaction
(moving it to signed, after which `z_advancepoolmigration` proves and
broadcasts it unchanged); and `z_signpoolmigrationpczt` signs a migration PCZT
with the account's spend key for offline / air-gapped signing. Building still
runs in process (it needs only the viewing key and witnesses); only the
signature is external.
- `z_previewpoolmigration` (wallet build), the fully-wired planning preview of
the pool-migration surface. It enumerates the account's spendable source-pool
notes and runs the engine's `plan_migration` to return the proposed plan for
user consent (ZIP 318): the funding notes and their crossing denominations,
each note's transfer broadcast height and expiry, the note-preparation
transaction summary, and the residual left in the source pool. It is
read-only; nothing is built, proved, or broadcast.

### Changed

Expand Down
147 changes: 135 additions & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading