Skip to content

zcash_client_backend: Add support for limited-use transparent address rotation #1939

@nuttycom

Description

@nuttycom

We have two use cases in Zashi (NEAR Intents integration and Coinbase Onramp) where the wallet needs to supply an address for one-time-use addition of funds to the wallet. In the NEAR use case, we have some guarantee that the address will be used within 24 hours of the time that it is exposed.

Proposed solution:

  • Use ephemeral addresses for this purpose. As these addresses are intended to be one-time-use, they should not be derived via the normal BIP 44 change indexes, because such derivation might cause other wallets to link these addresses to one another in the future.
  • Add an address_expiry_height field to address metadata, and also make the block height at which the address was first exposed visible.
  • Wallets may make frequent checks (probably with exponential backoff between checks) until funds are detected at the address. Once the backoff exceeds ~24 hours worth of blocks, future checks of the address will be scheduled as for other ephemeral addresses. If funds are detected at the address, then additional checks should not be performed (as these addresses are intended for one-time-only use).
  • Normal gap limit exhaustion rules should be followed - if the wallet cannot allocate a fresh address without violating the gap limit, then the address retrieval API should return an error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions