【Dart/Flutter】BCH地址格式CashAddr的Dart实现

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(・ω・)ノ

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容