Wallet开发用到了BCH,需要使用BCH的CashAddr格式的地址
pub.dev中的Package只有两个两年前更新的库,依赖的老版本的库对新开发的项目不友好.
根据官方规则编写了一个Dart工具类,没有依赖包,参考了其它语言的实现
现在已上传到GitHub,需要的可以直接Clone使用
CashAddr-Dart
Dart文件在这里,已上传到GitHub
使用方法:
//生成不带前缀和分隔符的地址
String cashaddr = BCHUtils().encode("bchtest", 0, "公钥Hash(SHA256(RIPEMD160(Pubkey)))");
//生成带前缀(bitcoincash|bchtest|bchreg)和分隔符(:)的地址
String cashaddr = BCHUtils().encodeFull("bchtest", 0, "公钥Hash(SHA256(RIPEMD160(Pubkey)))");
其中,第一个参数前缀选项:
bitcoincash
用于Bitcoin Cash主网络
bchtest
用于Bitcoin Cash测试网络
bchreg
用于Bitcoin Cash注册测试
第二个参数用于版本字节中的类型
0
:P2KH,1
:P2SH
第三个参数是公钥Hash,也就是生成BTC地址时的值,生成其的伪代码为
SHA256(RIPEMD160(Pubkey))
具体可参考另一篇Blog
生成BTC的Address,以及解码出公钥哈希(Pubkey Hash)
2022/6/20 新增Decode实现
参考:
规则定义:https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md
Python库:https://github.com/Electron-Cash/Electron-Cash/tree/33f3ded201fe07bf0a3d6cd2c08280647b04e2c7/electroncash
有用的话给个Star Thanks(・ω・)ノ