Proto commits in zcash/librustzcash

These 59 commits are when the Protocol Buffers files have changed:

Commit:dc4769e
Author:Schell Carl Scivally
Committer:Schell Carl Scivally

zcash_client_backend: support transparent change in change strategies Adds `fees::TransparentChangePolicy` and `with_transparent_change_policy` builders on the ZIP 317 and fixed change strategies. When a strategy is configured with `TransparentChangeAllowed` and the net flows of the transaction under construction are fully transparent, change is returned to the transparent pool as a single non-ephemeral output (represented by the new `ChangeValue::transparent` constructor) instead of being shielded to the fallback change pool. The policy has no effect on transactions that involve shielded flows, so shielded change information is never leaked to the transparent pool. The proposal protobuf encoding is wire-compatible: a transparent change value is encoded using the existing transparent value pool with `isEphemeral` unset, a combination that previously failed to decode with `ProposalDecodingError::InvalidChangeRecipient`. This is required in order for `zallet` to replicate `zcashd`'s `z_sendmany` behavior for fully-transparent spends. Part of zcash/librustzcash#1839. Co-Authored-By: Claude <noreply@anthropic.com>

Commit:52a19f0
Author:Kris Nuttycombe

zcash_client_backend: Carry the requested transaction version on the Proposal The transaction version requested at proposal time (the `proposed_version` argument to `propose_transfer` and friends) was previously used only to validate and route the proposal, then discarded, and had to be supplied again separately to `create_proposed_transactions`. The two version inputs could silently disagree. Record the requested version on the `Proposal` — and in its serialized proto form, so it survives a propose-then-build round-trip — and read it during building. `create_proposed_transactions` no longer takes a `proposed_version` argument, and `create_pczt_from_proposal` builds at the proposal's version, falling back to the version implied by the target height when none was requested. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Commit:562d5c3
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Defer input-less proposal step anchors A proposal step binds a single anchor height for all of its shielded-tree lookups. A step that spends no shielded notes has nothing to witness against that anchor, yet was still required to resolve one: a proposal serialized by an earlier version encoded such a step's anchor height as zero, and decoding fed that zero into the tree lookups, failing to build with `AnchorNotFound(0)`. Make `Step::anchor_height` an `Option<BlockHeight>` that is `Some` only when the step spends shielded notes (which must be witnessed against a specific anchor). A step with no shielded inputs carries `None` and defers the choice of anchor to interpretation time. The `Proposal` now records the `ConfirmationsPolicy` under which it was constructed (serialized alongside the proposal), and `create_proposed_transaction` resolves a deferred anchor via the new `ConfirmationsPolicy::anchor_height`, as the target height less the policy's trusted confirmations. A proposal decoded without the confirmations policy field (produced by an earlier version) falls back to the default policy, and a zero anchor height decodes as deferred. The resolved anchor is a real, recent anchor applied to every shielded-output bundle, so the Orchard turnstile indistinguishability property is preserved: a transaction with only routed shielded outputs remains indistinguishable from one that spends real notes in that pool. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Commit:ad3bfe9
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Select and spend received Ironwood notes Make received Ironwood notes spendable. `InputSource::select_spendable_notes` and `select_unspent_notes` gain Ironwood branches that read `ironwood_received_notes`, and `ReceivedNotes` gains a distinct `ironwood` note list (with `ironwood`/`take_ironwood`/`ironwood_value` and a `NoteRetention::should_retain_ironwood`) kept separate from Orchard so each pool's value and bundle action count stay honest. The greedy input selector includes the Ironwood pool in its selectable pools once Ironwood is active at the target height, spends Ironwood notes alongside Orchard notes (they share the Orchard receiver and the `use_orchard` decision), and attributes each spent Ironwood note to the Ironwood bundle so the fee is computed from the correct per-bundle action counts. The `propose_send_max` and `propose_shielding_coinbase` paths replace the previously hardcoded `ironwood_action_count = 0` with a count derived from the selected Ironwood spends and, when a payment to an Orchard receiver is routed to the Ironwood bundle, the requested output; the output is charged to exactly one of the Orchard or Ironwood bundles. Routing uses the same `orchard_outputs_to_ironwood` predicate as the builder, so the proposed fee matches the built transaction. The transaction-builder spend path (`Builder::add_ironwood_spend`, the Ironwood anchor via `with_ironwood_tree_mut`) was already present; this connects note selection to it so a wallet can spend received Ironwood notes end to end. Part of the Ironwood upstreaming tracked in zcash/librustzcash#2530. Co-Authored-By: Adam Tucker <adam@osmosis.team> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> This change also: - decrypts Ironwood outputs in decrypt_transaction, tracking them separately from Orchard outputs (Decrypt Ironwood outputs in decrypt_transaction) - represents Ironwood payment outputs and the Ironwood value pool in proposals and their protobuf serialization, anchoring every shielded-tree lookup to Step::anchor_height - routes Ironwood-spend change into the Ironwood pool and keeps Orchard-spend change in the Orchard pool via same-address change outputs - counts Ironwood notes in AccountMeta and the ZIP 317 change strategies - looks up spendable Ironwood notes by outpoint and marks spent Ironwood notes when storing a sent transaction in zcash_client_sqlite

Commit:5fdd8ef
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Select and spend received Ironwood notes Make received Ironwood notes spendable. `InputSource::select_spendable_notes` and `select_unspent_notes` gain Ironwood branches that read `ironwood_received_notes`, and `ReceivedNotes` gains a distinct `ironwood` note list (with `ironwood`/`take_ironwood`/`ironwood_value` and a `NoteRetention::should_retain_ironwood`) kept separate from Orchard so each pool's value and bundle action count stay honest. The greedy input selector includes the Ironwood pool in its selectable pools once Ironwood is active at the target height, spends Ironwood notes alongside Orchard notes (they share the Orchard receiver and the `use_orchard` decision), and attributes each spent Ironwood note to the Ironwood bundle so the fee is computed from the correct per-bundle action counts. The `propose_send_max` and `propose_shielding_coinbase` paths replace the previously hardcoded `ironwood_action_count = 0` with a count derived from the selected Ironwood spends and, when a payment to an Orchard receiver is routed to the Ironwood bundle, the requested output; the output is charged to exactly one of the Orchard or Ironwood bundles. Routing uses the same `orchard_outputs_to_ironwood` predicate as the builder, so the proposed fee matches the built transaction. The transaction-builder spend path (`Builder::add_ironwood_spend`, the Ironwood anchor via `with_ironwood_tree_mut`) was already present; this connects note selection to it so a wallet can spend received Ironwood notes end to end. Part of the Ironwood upstreaming tracked in zcash/librustzcash#2530. Co-Authored-By: Adam Tucker <adam@osmosis.team> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> This change also: - decrypts Ironwood outputs in decrypt_transaction, tracking them separately from Orchard outputs (Decrypt Ironwood outputs in decrypt_transaction) - represents Ironwood payment outputs and the Ironwood value pool in proposals and their protobuf serialization, anchoring every shielded-tree lookup to Step::anchor_height - routes Ironwood-spend change into the Ironwood pool and keeps Orchard-spend change in the Orchard pool via same-address change outputs - counts Ironwood notes in AccountMeta and the ZIP 317 change strategies - looks up spendable Ironwood notes by outpoint and marks spent Ironwood notes when storing a sent transaction in zcash_client_sqlite

Commit:f8539a1
Author:Schell Carl Scivally

zcash_client_backend: support transparent change in change strategies Adds `fees::TransparentChangePolicy` and `with_transparent_change_policy` builders on the ZIP 317 and fixed change strategies. When a strategy is configured with `TransparentChangeAllowed` and the net flows of the transaction under construction are fully transparent, change is returned to the transparent pool as a single non-ephemeral output (represented by the new `ChangeValue::transparent` constructor) instead of being shielded to the fallback change pool. The policy has no effect on transactions that involve shielded flows, so shielded change information is never leaked to the transparent pool. The proposal protobuf encoding is wire-compatible: a transparent change value is encoded using the existing transparent value pool with `isEphemeral` unset, a combination that previously failed to decode with `ProposalDecodingError::InvalidChangeRecipient`. This is required in order for `zallet` to replicate `zcashd`'s `z_sendmany` behavior for fully-transparent spends. Part of zcash/librustzcash#1839. Co-Authored-By: Claude <noreply@anthropic.com>

Commit:1ddc450
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Represent the Ironwood value pool in proposal protobufs Add an `Ironwood` variant to the proposal `ValuePool` enum so that a proposal which spends Ironwood notes can be serialized to and parsed back from the protobuf proposal format. Previously `Proposal::from_standard_proposal` hit a `todo!` when encoding any Ironwood input, output, or change value, so a wallet that serializes proposals (e.g. to hand them across an FFI boundary for review and signing) could not propose spending Ironwood funds at all. Extends the end-to-end `spend_received_ironwood_note` test to assert that the Ironwood-spending proposal round-trips through protobuf before it is used to create the transaction. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Commit:459e74c
Author:Kris Nuttycombe

zcash_client_backend: Represent the Ironwood value pool in proposal protobufs Add an `Ironwood` variant to the proposal `ValuePool` enum so that a proposal which spends Ironwood notes can be serialized to and parsed back from the protobuf proposal format. Previously `Proposal::from_standard_proposal` hit a `todo!` when encoding any Ironwood input, output, or change value, so a wallet that serializes proposals (e.g. to hand them across an FFI boundary for review and signing) could not propose spending Ironwood funds at all. Extends the end-to-end `spend_received_ironwood_note` test to assert that the Ironwood-spending proposal round-trips through protobuf before it is used to create the transaction. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Commit:f1f3a54
Author:Kris Nuttycombe

Apply minor review suggestions from PR #2509 - Fix the `expected_nu7` regtest activation heights to differ from the NU6.3 height, assert NU6.3 activation at its own height, and check NU7 non-activation against the NU6.3 height in the `zcash_protocol` `local_consensus` tests. - Remove the stale placeholder-branch-ID paragraph from the `BranchId::Nu6_3` docs. - Simplify the `BranchId::Nu6_2` height-bounds arm to match the pattern of the prior arms. - Reference ZIP 229 (the v6 transaction format) instead of the withdrawn ZIP 230 in the `V6_TX_VERSION` and `TxVersion::V6` docs. - Clarify the PCZT `Creator` docs around Orchard/Ironwood flag representability. - Make `orchard_bundle_version_for_branch` an exhaustive match to avoid a future maintenance hazard. - Restore alphabetical ordering of the `tx_extractor::Error` variants. - Use "shielded pool" instead of "shielded protocol" in the `GetSubtreeRoots` doc comment of the lightwalletd protocol definition. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Commit:6d5aac2
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Merge commit 'e49e97da5673d5a91c633a32bbef2f040bfe8573' into chore/ironwood_lightwallet_protocol Generated By: ``` git subtree -P zcash_client_backend/lightwallet-protocol/ pull git@github.com:zcash/lightwallet-protocol.git v0.5.0 --squash ```

Commit:e49e97d
Author:Kris Nuttycombe

Squashed 'zcash_client_backend/lightwallet-protocol/' changes from dd0ea2c3c5..ac7cee052a ac7cee052a Release lightwallet-protocol v0.5.0 737aced56f Merge pull request #29 from valargroup/codex/ironwood-proto-updates 657272bde5 Apply Ironwood proto updates 7d2479e3b6 Merge pull request #26 from zcash/2026-04-remove-protoversion 9de72fc317 Remove `protoVersion` field from `CompactBlock` git-subtree-dir: zcash_client_backend/lightwallet-protocol git-subtree-split: ac7cee052a1bf5d430985a478d39e8b513fc4bd4

Commit:59c685c
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Remove zcash_client_memory from the workspace The in-memory wallet backend now lives in its own repository at https://github.com/zcash/zcash_client_memory. Drop the crate from the workspace along with every reference to it: the workspace member, the README dependency graph, the dep-graph linter's crate list, the generated-file attribute, and the crate summary in AGENTS.md. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Commit:4d762e6
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Record transparent send/receive sides independently Refactors `put_transparent_outputs` to drive storage off the data on each `WalletTransparentOutput` rather than its `TransferType`: - Receive side: record the output as received whenever `recipient_account()` returns `Some` (i.e., the recipient address belongs to a wallet account). - Send side: emit one sent-output record per entry in `funding_accounts()`. If `recipient_account` is also known, the send is recorded as `Recipient::InternalTransparent`; otherwise as `Recipient::External` against the funder's external address. This resolves the pre-existing TODO `// TODO: Even if the recipient address is external, record the send as internal.` by giving cross-account and same-account transparent self-transfers a correctly-typed recipient instead of an incorrect `External`. Adds a new `Recipient::InternalTransparent { receiving_account, recipient_address }` variant (behind the `transparent-inputs` feature flag) and wires writers in `zcash_client_sqlite::wallet::recipient_params` and the `zcash_client_memory` proto-serialization paths. The `funding_account: Option<AccountId>` parameter on `put_transparent_outputs` is no longer needed: each output now carries its own `funding_accounts`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Commit:9607fd1
Author:Kris Nuttycombe

Merge commit '0696f94468eeab29e5939e68a46afcb7167cf506' into HEAD Generated via: ``` git subtree -P zcash_client_backend/lightwallet-protocol/ pull git@github.com:zcash/lightwallet-protocol.git v0.4.1 --squash ```

Commit:0696f94
Author:Kris Nuttycombe

Squashed 'zcash_client_backend/lightwallet-protocol/' changes from 23f0768ea4..dd0ea2c3c5 dd0ea2c3c5 Merge pull request #23 from zcash/2026-03-doc-fixes 93b26b7db1 v0.4.1 release - minor doc fixups d528fa82e3 Merge pull request #22 from zcash/2025-12-doc-git-subtree b421ef0b34 Merge pull request #22 from zcash/2025-12-doc-git-subtree 4a26e54c36 Fix git subtree command syntax in README 34bb38b606 Merge pull request #20 from zcash/doc/get_block a507182f92 Document GetBlock transparent data behavior and clarify nullifier RPCs fc5cc9a4b1 Merge pull request #19 from zcash/deprecate_get_nullifiers f0ebc72cad Mark `GetBlockNullifiers` and `GetBlockRangeNullifiers` as deprecated. 9a5f7a0eec Merge pull request #16 from zcash/2026-01-remove-fullHeader f1095897d9 revert the previous PR that added BlockID.fullHeader 99d9bf9fff Merge pull request #15 from zcash/2025-12-compactblock-doc bbdd689d73 either CompactBlock.{hash, prevHash}, or CompactBlock.header aa42926ed3 Merge pull request #13 from pacu/add-README da4d3d57d8 Add rationale suggested by @LarryRuane 4edd22465b fix type e36df314b8 clean up whitespace and line width 215cb5a3f3 Add PR suggestions. Organize Clients section 3e78d5d872 Apply suggestions from code review 96b86544db Apply suggestion from @LarryRuane 6259b97df0 Apply suggestion from @nuttycom f2fcef3e42 Apply suggestion from @nuttycom 8cc1e66b11 Apply suggestion from @LarryRuane 99132222dd Apply suggestion from @nuttycom 207cc5e6f9 create a README file with context and instructions 7392b9706f Merge pull request #12 from zcash/release/v0.4.0 git-subtree-dir: zcash_client_backend/lightwallet-protocol git-subtree-split: dd0ea2c3c5827a433e62c2f936b89efa2dec5a9a

Commit:f2dedaf
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Update to zcash/lightwallet_protocol@v0.4.0 Merge commit '9dd7924631649fc4344e037b4eff64572eff5ba6' into update_lightwallet_protocol Generated via: ``` git subtree -P zcash_client_backend/lightwallet-protocol/ pull git@github.com:zcash/lightwallet-protocol.git v0.4.0 --squash ```

Commit:9dd7924
Author:Kris Nuttycombe

Squashed 'zcash_client_backend/lightwallet-protocol/' changes from b314868de..23f0768ea 23f0768ea Release lightwallet-protocol v0.4.0 41156c767 Merge pull request #11 from zcash/feature/get_mempool_tx_pools 7c130e883 Add `lightwalletProtocolVersion` field to `LightdInfo` struct. edbb726d7 Apply suggestion from code review 38fddd73b Apply suggestions from code review 0250f2720 Add pool type filtering to `GetMempoolTx` argument. 54ccaadd5 Change semantics of pool-based pruning of compact transactions from "may prune" to "must prune". b0667ec99 Merge pull request #9 from zcash/2025-11-doc-TransparentAddressBlockFilter f3fea7bd4 doc: TransparentAddressBlockFilter doesn't include mempool a67dd323a Merge pull request #8 from zcash/2025-11-lightdinfo-upgrade-info 11da4b7e3 add next upgrade info to LightdInfo structure (GetLightdInfo) 42cd8f720 Transparent data docs update (#7) c0cf957ac Merge pull request #5 from zcash/2025-11-comments 912fc3609 Minor clarification in GetBlockRange documentation. 6b03f2cce Documentation (comments) only d978256a2 Merge pull request #1 from zcash/compact_tx_transparent 7eeb82e7c Merge pull request #4 from zcash/add_changelog a95359dc9 Apply suggestions from code review 592b637a8 Add transparent data to the `CompactBlock` format. 9d1fb2c41 Add a CHANGELOG.md that documents the evolution of the light client protocol. 180717dfa Merge pull request #3 from zcash/merge_librustzcash_history 450bd4181 Merge the history of the .proto files from `librustzcash` for complete history preservation. a4859d11d Move protobuf files into place for use in `zcash/lightwallet-protocol` 2e66cdd9e Update zcash_client_backend/proto/service.proto eda012519 fix comment f838d10ad Add gRPC LightdInfo Donation Address db12c0415 Merge pull request #1473 from nuttycom/wallet/enrichment_queue 698feba96 Apply suggestions from code review 20ce57ab3 zcash_client_backend: Add `block_height` argument to `decrypt_and_store_transaction` a6dea1da8 Merge pull request #1482 from zancas/doc_tweak 4d2d45fc9 fix incorrect doc-comment e826f4740 update CompactBlock doc-comment, to cover non-Sapling shielded notes, and addresses e9a6c00bf Various documentation improvements 988bc7214 Merge pull request #872 from nuttycom/feature/pre_dag_sync-suggest_scan_ranges 58d07d469 Implement `suggest_scan_ranges` and `update_chain_tip` a9222b338 Address comments from code review. e20310857 Rename proto::compact::{BlockMetadata => ChainMetadata} ac63418c5 Reorganize Sapling and Orchard note commitment tree sizes in CompactBlock. 0fdca14f1 zcash_client_backend: Add note commitment tree sizes to `CompactBlock` serialization. 2a0c2b8b7 zcash_client_backend: Add gRPC bindings behind feature flag 1342f0480 zcash_client_backend: Address compact_formats.proto comments 68aa4e01b zcash_client_backend: Bring in latest `compact_formats.proto` e712eb1bc Add prevHash field to CompactBlock 440384c3e Build protobufs for compact formats git-subtree-dir: zcash_client_backend/lightwallet-protocol git-subtree-split: 23f0768ea4471b63285f3c0e9b6fbb361674aa2b

Commit:5a2e7ec
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Update light client protobuf definitions to zcash/lightwallet-protocol@d978256a2bf33bb5f83846d8994e7377512f5f05 Merge commit '9a07d0e611312b76621600c0a4fbe5a3e48e6486' into feature/scan_compact_tx_transparent Generated via: ``` git subtree -P zcash_client_backend/lightwallet-protocol/ pull git@github.com:zcash/lightwallet-protocol.git main --squash ```

Commit:9a07d0e
Author:Kris Nuttycombe

Squashed 'zcash_client_backend/lightwallet-protocol/' changes from b314868de..d978256a2 d978256a2 Merge pull request #1 from zcash/compact_tx_transparent 7eeb82e7c Merge pull request #4 from zcash/add_changelog a95359dc9 Apply suggestions from code review 592b637a8 Add transparent data to the `CompactBlock` format. 9d1fb2c41 Add a CHANGELOG.md that documents the evolution of the light client protocol. 180717dfa Merge pull request #3 from zcash/merge_librustzcash_history 450bd4181 Merge the history of the .proto files from `librustzcash` for complete history preservation. a4859d11d Move protobuf files into place for use in `zcash/lightwallet-protocol` 2e66cdd9e Update zcash_client_backend/proto/service.proto eda012519 fix comment f838d10ad Add gRPC LightdInfo Donation Address db12c0415 Merge pull request #1473 from nuttycom/wallet/enrichment_queue 698feba96 Apply suggestions from code review 20ce57ab3 zcash_client_backend: Add `block_height` argument to `decrypt_and_store_transaction` a6dea1da8 Merge pull request #1482 from zancas/doc_tweak 4d2d45fc9 fix incorrect doc-comment e826f4740 update CompactBlock doc-comment, to cover non-Sapling shielded notes, and addresses e9a6c00bf Various documentation improvements 988bc7214 Merge pull request #872 from nuttycom/feature/pre_dag_sync-suggest_scan_ranges 58d07d469 Implement `suggest_scan_ranges` and `update_chain_tip` a9222b338 Address comments from code review. e20310857 Rename proto::compact::{BlockMetadata => ChainMetadata} ac63418c5 Reorganize Sapling and Orchard note commitment tree sizes in CompactBlock. 0fdca14f1 zcash_client_backend: Add note commitment tree sizes to `CompactBlock` serialization. 2a0c2b8b7 zcash_client_backend: Add gRPC bindings behind feature flag 1342f0480 zcash_client_backend: Address compact_formats.proto comments 68aa4e01b zcash_client_backend: Bring in latest `compact_formats.proto` e712eb1bc Add prevHash field to CompactBlock 440384c3e Build protobufs for compact formats git-subtree-dir: zcash_client_backend/lightwallet-protocol git-subtree-split: d978256a2bf33bb5f83846d8994e7377512f5f05

Commit:650a40f
Author:Jack Grigg
Committer:GitHub

Merge pull request #1899 from zcash/extract_proto_to_subtree Add zcash/lightwallet-protocol as a subtree & replace proto files with symlinks to canonical files.

Commit:7b62e00
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_memory: Move .proto files out of `src` tree.

The documentation is generated from this commit.

Commit:b81e191
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Merge remote-tracking branch 'upstream/main' into willem/zcash_client_memory

Commit:1be9c62
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Merge commit '82f076b7cb874dc452f2f33bc3fcc0338593a163' into HEAD This was generated by the following command: ``` git subtree pull --prefix=zcash_client_backend/lightwallet-protocol --squash git@github.com:zcash/lightwallet-protocol.git 5d00e09688b3df11eb5fea967460a8b728bcf97a ```

Commit:82f076b
Author:Kris Nuttycombe

Squashed 'zcash_client_backend/lightwallet-protocol/' changes from b314868de..5d00e0968 5d00e0968 Add transparent data to the `CompactBlock` format. git-subtree-dir: zcash_client_backend/lightwallet-protocol git-subtree-split: 5d00e09688b3df11eb5fea967460a8b728bcf97a

Commit:3d3821a
Author:Kris Nuttycombe

zcash_client_backend: Replace service.proto and compact_formats.proto with canonical versions. These files have been replace by symlinks to the canonical versions in `zcash_client_backend/lightwallet-protocol`, which is managed via `git subtree`.

Commit:0d25b63
Author:Kris Nuttycombe

Merge commit '67ccc0a1f69f69bffdc7add0c521b43b2c0ef07d' as 'zcash_client_backend/lightwallet-protocol'

Commit:67ccc0a
Author:Kris Nuttycombe

Squashed 'zcash_client_backend/lightwallet-protocol/' content from commit b314868de git-subtree-dir: zcash_client_backend/lightwallet-protocol git-subtree-split: b314868de5589b3e24d62e523ae6c4182a8e6212

Commit:b4e9a15
Author:Kris Nuttycombe
Committer:GitHub

Update zcash_client_backend/proto/service.proto

Commit:38b85fa
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Add transparent data to the `CompactBlock` format. This also modifies the `BlockRange` type to allow callers to specify a set of pool types for which data should be returned. In the case that no pool types are specified, a server should return compact blocks containing only data relevant to the shielded (Sapling and Orchard) pools.

Commit:458273d
Author:Hazel OHearn
Committer:Hazel OHearn

fix comment

Commit:46e8ee0
Author:Eric Tu

fix account protobuf

Commit:26dcb55
Author:Emerson Hall
Committer:Emerson Hall

Add gRPC LightdInfo Donation Address

Commit:dcd2c3a
Author:Eric Tu

Merge branch 'main' into willem/zcash_client_memory

Commit:10f53c4
Author:Eric Tu
Committer:GitHub

Implement Key Source and Account Name (#34) * Added account key sources and name with todos * implemented account_name into Account struct * implemented handling of key_source * fix test * lint

Commit:c334f70
Author:Eric Tu
Committer:GitHub

Memory Wallet Implementation (#1) * add stubbed version of getting balances for wallet summary * adds helper methods at top level and partially implements filter for unspent notes * add map to store block end heights for tree shards * add orchard as well * accounts table * implement block_height_extrema * add impl of update_chain_tip * remove some unwraps from get_summary * add impls for get_max_checkpointed_height * add impl of get_target_and_anchor_heights * fix get_transaction * add impl for get_min_unspent_height * add get_memo impl * adds comment for truncate_to_height. Will implement this in future * tracing debug * yep * update last_Scanned_height outside tx loop * add updating orchard balance * clippy * add impls for inputSource trait * add sorting when selecting notes * Update Cargo.toml * serde block * allow constructing nullifiers * serde notes * serde transactions * top level in progress * scan queue * export error type * start account serde * serde account birthday * move serialization to separate module * clippy fix * skip * add unimplemented warnings for account import from seed phrase * remove unused imports * Remove Uivk * serde ufvk * Keep track of current diversifier idx * serde account * serde accounts * only serde left is on shard tree * almost done shardstore * use new trait * remote visit_seq from orchard note wrapper * remove unused array module * more nullifier to use trait * serialize shard store. need to deser now * serde memoryshardstore * serd shardtree * bring remaing code across for scanning * add orchard tree handling in put_blocks * only import if orchard enabled * Network Wrapper * done! cleanup time * clippy * break into modules * clippy fix * fmt * fmt * clean up frontierwrapper structs * add implementation of DataStoreFactor for memwallet * add back loading accounts from seeds only for testing * switch to use mutable ref in testing trait * partial implementation of scan_complete * fix bug from attepting to iterate over a reverse range in Rust * type safe tree and frontier serde * fmt * rename * more rename * fix issue with non-inclusive range * more cleanup * forgot to import * more clean * add proper recording of spend notes and memos * add partially implemented get_tx_history * ByteArray Trait * more refactor * clippy\ fix * Rename * cippy cix * proptest for shardtree serde * add fix for orchard support * more clean * donezo * clippy * add wasm-bindgen feature * move to upstream imt and shardtree patch * migrate 3 more tests across * adds new trait method to implement change_note_spends_succeed * Serde SendNoteTable * clippy fix * fmt * remove comment * Fix tree serialization when wallet has just been initialized * remove the raw field on get_tx_history as it broke tests * fix issue querying notes * add error handling * migrate send_multi_step_proposed_transfer * fix wallet deser * add data_api methods to allow fetching historical checkpoints * global fmt * fix clippy lints * fix test * add logic for detecting pending notes in wallet summary * fix serialization * fmt * change_note_spends_succeed passing for sapling! * add scan progress * add more comprehensive scan progress calculatioon * add unscanned ranges functionality * feature gate orchard import * add updating scan ranges on wallet import * fix bug in shard_end for updating ranges * passing birthday range scan check * cargo lock * screen out locked transactions when computing balance * fix missing nullifiers for orchard * retrievel all inputs in get_spendable_notes rather than filtering * rewrite note selection strategy to be split per pool * fix checkpoint getter for tests * fix clippy lints * switch from maybe_rayon to rayon for memwallet * remove proptest genereated file * move MemBlockCache to own module outside of testing * implement BlockCache and BlockSource * works! * change back batch size of batchrunners until further experimentation * TODO on for_each_checkpoint on sql store * switch from parking_lot to wasm_sync * add new records for transaction and add_partial method * mostly complete adding transparent output logic * remove debug * re add async trait * remove comment * test passing for shielding a transparent output * add start of implementation of data retrieval queue * add the extra features to wallet_read we need for tests * migrate tests to librustzcash and make generic over wallet impl * add test module for transparent tests * implement get_transparent_balance and get first transparent test passing * fix sqllite test * add truncate_to_height and gets transparent tests passing * global fmt * remove all IntoIterator impls * handle unwrap in get_spendable_transparent_outputs * serde on transparent related tables * fmt sqlite changes * remove incorrect todo * proto * make all methods in sync public * add from impl * adds serialization attributes to librustzcash types * format * add serialization to enable proposals to be serialized * put client memory back * add derives for noteId * add derives for FeeRule * add NoteSummary type to serialize notes * proto * fix transparent_balance_across_shielding * fix account delta * remove prints * handle ephemeral addrs * Add todo * default legacy transparent * filling in store_decrypted_tx * funding_accounts * multi_step passes * fmt * remove some prints * fmt * fmt * fmt * fix suggestions * ensure tests build with all feature flag combinations * removes serde skip from addresses field for an account and adds intermediate types to enable serialization * merge upstream and fix missing implementations. tests not passing * return a zero recovery ratio for now * fixing is_change error * fix nullifier spend detection logic * clippy lint * add tx account detection for utxo sending only. All tests passing * Willem's refactor * re-add .cargo * re-add editor config * keep willems branch with main * fix proto * remove whitespace --------- Co-authored-by: Willem Olding <willemolding@gmail.com>

Commit:52abb1f
Author:Jack Grigg
Committer:GitHub

Merge pull request #1473 from nuttycom/wallet/enrichment_queue Add queues to track the need for transaction enhancement and/or verification of mined status.

Commit:52f7a77
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Apply suggestions from code review Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>

Commit:1820788
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Add `block_height` argument to `decrypt_and_store_transaction` In the case that `decrypt_and_store_transaction` is being used to add data for fully-transparent transactions to the database, it may be the case that there is no existing relationship between a transaction and the block height at which it was mined (unlike for transactions being enhanced after discovery via block scanning.) This change makes it possible to set the mined height for transactions that do not have any shielded components that involve the wallet.

Commit:44e36a3
Author:zancas

fix incorrect doc-comment

Commit:cc9ec1d
Author:zancas

update CompactBlock doc-comment, to cover non-Sapling shielded notes, and addresses

Commit:c6520cf
Author:Daira-Emma Hopwood
Committer:Daira-Emma Hopwood

Change the protobuf schema to explicitly specify whether a `ChangeValue` is ephemeral. This also fixes `try_into_standard_proposal` to allow decoding from the protobuf representation into a proposal that uses references to prior ephemeral transparent outputs, provided that the "transparent-inputs" feature is enabled. Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>

Commit:2fae4bb
Author:Daira-Emma Hopwood
Committer:Daira-Emma Hopwood

ZIP 320 implementation. Co-authored-by: Kris Nuttycombe <kris@nutty.land> Co-authored-by: Jack Grigg <str4d@electriccoin.co> Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>

Commit:dd6711a
Author:Kris Nuttycombe

zcash_client_backend: Address comments from code review & fix incorrect `data_api::wallet` documentation.

Commit:beeea7b
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Modify `Proposal` to make multi-step transactions representable.

Commit:6e0d9a9
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Add selected output pools to transaction proposals. Fixes #1174

Commit:3206255
Author:Jack Grigg
Committer:Jack Grigg

Various documentation improvements

Commit:adc7556
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Add Orchard support to transaction proposals.

Commit:aeb405e
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Apply suggestions from code review Co-authored-by: str4d <thestr4d@gmail.com> Co-authored-by: Daira Emma Hopwood <daira@jacaranda.org>

Commit:5725633
Author:sasha
Committer:Kris Nuttycombe

Add a protobuf representation for transaction proposals. Co-authored-by: Kris Nuttycombe <kris@nutty.land>

Commit:6fa0b46
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Implement `suggest_scan_ranges` and `update_chain_tip` This implements a priority queue backed by the wallet database for scan range ordering. The scan queue is updated on each call to `put_blocks` or to `update_chain_tip`.

Commit:c13c8c6
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Address comments from code review.

Commit:c363e71
Author:Kris Nuttycombe

Rename proto::compact::{BlockMetadata => ChainMetadata}

Commit:ba70917
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

Reorganize Sapling and Orchard note commitment tree sizes in CompactBlock. We move thes fields out into a separate BlockMetadata struct to ensure that future additions to block metadata are structurally separated from future additions to block data.

Commit:32e2991
Author:Kris Nuttycombe
Committer:Kris Nuttycombe

zcash_client_backend: Add note commitment tree sizes to `CompactBlock` serialization.

Commit:17a4830
Author:Jack Grigg
Committer:Jack Grigg

zcash_client_backend: Add gRPC bindings behind feature flag The lightwalletd service file is sourced from: Git: https://github.com/zcash/lightwalletd Rev: ad5ecda5fbb5e12799f926b8cd785d54fdd250c8 Closes zcash/librustzcash#585.

Commit:cceae3a
Author:Jack Grigg

zcash_client_backend: Address compact_formats.proto comments

Commit:18562c7
Author:Jack Grigg

zcash_client_backend: Bring in latest `compact_formats.proto` Source: https://github.com/zcash/lightwalletd/blob/83bb19918fb36a5f6d5013fba7938daf3d73db1d/walletrpc/compact_formats.proto

Commit:2bbd25b
Author:Jack Grigg
Committer:Jack Grigg

Add prevHash field to CompactBlock This enables basic verification of chain validity when CompactBlocks are received without the full header.

Commit:af7e263
Author:Jack Grigg
Committer:Jack Grigg

Build protobufs for compact formats