Add a Base58 codec — the marquee gap for a crypto-family foundation (Bitcoin / IPFS CID / Ripple / Monero addresses & keys). Base58Check stays in hashlib; this ticket is the plain Base58 codec plus the reusable radix core.
Architecture fit
- Introduces a new radix / bignum core under
lib/src/core/ (base-256 ↔ base-58 via repeated division), reused by Base62 and Base45.
- Leading-zero handling: each leading
0x00 byte maps to a leading 1 character and back — the classic Base58 convention. Test this explicitly.
- Codec class in
lib/src/codecs/base58.dart (private ctor, static const bitcoin / ripple / flickr instances as appropriate), public toBase58/fromBase58 in lib/src/base58.dart with codec: override, export in codecs_base.dart.
Differential oracle: package:base_codecs (dev-dep).
Spec: https://digitalbazaar.github.io/base58-spec/
Effort: L · Sequence: first codec — establishes the radix core.
Checklist
Add a Base58 codec — the marquee gap for a crypto-family foundation (Bitcoin / IPFS CID / Ripple / Monero addresses & keys). Base58Check stays in
hashlib; this ticket is the plain Base58 codec plus the reusable radix core.Architecture fit
lib/src/core/(base-256 ↔ base-58 via repeated division), reused by Base62 and Base45.0x00byte maps to a leading1character and back — the classic Base58 convention. Test this explicitly.lib/src/codecs/base58.dart(private ctor,static constbitcoin/ripple/flickrinstances as appropriate), publictoBase58/fromBase58inlib/src/base58.dartwithcodec:override, export incodecs_base.dart.Differential oracle:
package:base_codecs(dev-dep).Spec: https://digitalbazaar.github.io/base58-spec/
Effort: L · Sequence: first codec — establishes the radix core.
Checklist
1mapping, tested at boundaries