@onechain/bch

Plugin BCH of One Chain.

Usage no npm install needed!

<script type="module">
  import onechainBch from 'https://cdn.skypack.dev/@onechain/bch';
</script>

README

@onechain/bch

约定

  1. BTC 尚未明确 chainID ,所以在本项目中我们统一使用 mainnet, testnet, regtest 作为几个主要测试链的 chainID 。

Dependencies

  • bitcore-lib-cash 由 bitpay 维护,3000+ star ,目前来看是唯一好用的 BCH 库。
  • bip39 由 bitcoinjs 维护,被 bitcoinjs-lib, web3 依赖。
  • coinselect 由 bitcoinjs 维护,是一个内置了多种 unspents 挑选算法的库。
  • lodash-es 知名库,38000+ star。
  • node-fetch fetch 在 node 环境的兼容实现,3000+ star,800w+ 周下载量,被 eosjs 依赖。
  • util node 的 util 模块在各种环境下的实现,web3 兼容浏览器时必须依赖,1000w+ 周下载量。
  • buffer buffer 在 browser 环境的兼容实现,star 较少,800w+ 周下载量,被很多库间接依赖。

推送交易的 fee 填错了怎么办?

这个失误主要会造成的问题是交易卡住,一直阻塞在 unconfirmed 状态。解决的方法是使用同样的 inputs 再创建一笔交易覆盖即可,也就是双花,最终 fee 更高的交易会优先被确认。对于 api 服务不支持双花的情况,可以换个 api 服务商,或使用 Electrum 钱包创建双花交易。

相同私钥生成的 BCH 地址和其他钱包不一致?

这是因为 bitcore-lib-cash 中 PrivateKey 类创建实例的流程有关,它支持从多种数据结构创建 PrivateKey 实例,但是每种创建方法对 publicKey 是否是压缩格式却认知不统一,最终压缩过的 publicKey 和没压缩过的产生的地址就完全不同了。

  • 从 Buffer 推导的是非压缩的,不能直接转地址
  • 从 Hex 推导的是压缩的
  • 从 WIF 推导的是压缩的