# @onechain/btc


## 约定

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


## Dependencies

- bitcoinjs-lib 由 bitcoinjs 维护，代码结构优秀，3000+ star 。
- 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 钱包创建双花交易。
