Shielded addresses almost always contain a prefix that indicates the destination pool or generic address type (zkbob: prefix). The Rust library is fully responsible for generating, parsing, and validating addresses. To introduce a new pool, changes must be made to the hardcoded map located in the libzkbob-rs library. However, this approach is not very convenient.
For the simplicity of deploying a new pool, the hardcoded map should be removed from the libzkbob-rs library, moved to a higher level (zkbob-client-js), and made customizable from the application side. The Rust library will no longer have knowledge of address prefixes; it will only deal with the base58 block of the address.
The following changes are introduced by this pull request:
Hardcoded prefixes are fully removed from libzkbob-rs.
The libzkbob-rs::address:parse_address function now parses only the last address block (base58) and ignores any prefixes
The network name should not be passed in the UserAccount constructor in libzkbob-rs-wasm
Methods generate_universal_address_for_seed, validate_universal_address, and assemble_universal_address are added to work with generic addresses. Associated methods without the universal keyword work with pool-specific addresses only.
Wasm libraries were published as a beta on npm.js (st, mt)
Shielded addresses almost always contain a prefix that indicates the destination pool or generic address type (
zkbob:
prefix). The Rust library is fully responsible for generating, parsing, and validating addresses. To introduce a new pool, changes must be made to the hardcoded map located in the libzkbob-rs library. However, this approach is not very convenient.For the simplicity of deploying a new pool, the hardcoded map should be removed from the libzkbob-rs library, moved to a higher level (zkbob-client-js), and made customizable from the application side. The Rust library will no longer have knowledge of address prefixes; it will only deal with the base58 block of the address.
The following changes are introduced by this pull request:
generate_universal_address_for_seed
,validate_universal_address
, andassemble_universal_address
are added to work with generic addresses. Associated methods without the universal keyword work with pool-specific addresses only.Wasm libraries were published as a beta on npm.js (st, mt)
This PR closes #75
Associated PRs: