Get you own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Inputs
ivk— incoming viewing key as a 32‑byte (64‑hex) string, no0xprefix.d— diversifier as 11 bytes (22 hex), no0xprefix.
Outputs
pkD— payment address public key component in hex (no0x).payment_address— complete shielded payment address.
Use case
Thewallet/getzenpaymentaddress method is used for:
- Creating legacy zen payment addresses for compatibility with older systems
- Generating addresses in the legacy zen protocol format
- Supporting backwards compatibility in shielded transaction implementations
- Maintaining compatibility with legacy shielded TRC20 applications
How it works (legacy zen)
- Parse
ivk(32 bytes) andd(11 bytes) from hex. - Compute
g_d = diversifyHash(d)(Jubjub point). If invalid, choose a newd(rare) untildiversifyHashreturns a valid point. - Compute
pkD = ivk · g_d. - Encode
(d, pkD)as the legacy zen payment address (Bech32m with HRPztron).
Example (JavaScript, WASM Sapling)
Example (Python)
- Exact lengths:
ivk= 64 hex (32 bytes),d= 22 hex (11 bytes), no0x. - If a specific
dis “not valid”, generate a new diversifier untildiversifyHash(d)returns a valid point.