Skip to content

Latest commit

 

History

History
167 lines (97 loc) · 7.36 KB

README.zh.md

File metadata and controls

167 lines (97 loc) · 7.36 KB

gobtcsign

gobtcsign 简洁高效的比特币交易签名工具库,帮助开发者快速构建、签名和验证比特币交易。

gobtcsign 使用 golang 进行 BTC/DOGECOIN 签名,能帮助开发者探索 BTC 区块链知识。


英文文档

ENGLISH README


安装

go get github.com/yyle88/gobtcsign

功能概述

以下是 gobtcsign 提供的核心功能:

  1. 交易构建:提供高效的交易构建工具,支持添加多个输入输出,并自动计算找零金额。通过动态手续费调整功能,用户可以灵活控制交易费用。
  2. 交易大小预估:依据输入、输出数量及脚本类型,预估交易的虚拟大小(vSize)。这有助于开发者根据实际情况设置合适的手续费率。
  3. 交易签名:兼容多种地址类型,包括 P2PKH、P2SH 和 SegWit。开发者可以使用私钥快速完成交易输入的签名。
  4. 签名验证:提供签名校验功能,确保交易签名的正确性,避免因签名问题导致交易被网络拒绝。
  5. 交易序列化:支持将签名后的交易序列化为十六进制字符串,便于直接广播至比特币网络。

依赖模块

以下是 gobtcsign 依赖的关键模块:

  • github.com/btcsuite/btcd:提供比特币核心协议的实现,是构建和解析交易的基础。
  • github.com/btcsuite/btcd/btcec/v2:用于椭圆曲线加密操作和密钥管理,支持生成和验证数字签名。
  • github.com/btcsuite/btcd/btcutil:处理比特币地址的编码与解码操作,并提供其他常用的比特币实用工具。
  • github.com/btcsuite/btcd/chaincfg/chainhash:提供哈希计算和链相关的常用功能。
  • github.com/btcsuite/btcwallet/wallet/txauthor:用于构建交易的输入输出,并自动处理找零。
  • github.com/btcsuite/btcwallet/wallet/txrules:定义比特币交易规则,包括最小手续费计算和其他限制条件。
  • github.com/btcsuite/btcwallet/wallet/txsizes:用于计算交易的虚拟大小(vSize),便于动态调整手续费。

该项目几乎没有引用除 github.com/btcsuite 以外的其它包,即便如此,当您要签名交易时,依然不应该直接使用该项目,避免添加恶意代码收集您的私钥。正确的做法是fork项目,最正确的做法是拷贝代码到自己的项目里,而不要引用不可信的依赖,而且要严格审查代码,控制服务器的出入网白名单。


使用步骤

  1. 初始化交易参数:定义交易输入(UTXO)、输出目标地址及金额,同时设置 RBF(Replace-By-Fee)选项。
  2. 预估交易大小与手续费:调用库中的方法估算交易大小,依据实时费率设置合理的手续费。
  3. 生成待签名交易:根据输入的交易参数,构建待签名交易。
  4. 签名交易:使用对应私钥完成交易的数字签名。
  5. 验证与序列化:验证签名的有效性,并将交易序列化为十六进制字符串以供广播。

基本样例

给比特币签名 给狗狗币签名


注意事项

  1. 私钥安全性:请勿在生产环境中暴露私钥,仅在开发或测试环境中使用演示数据。
  2. 手续费设置:根据交易大小和网络拥堵情况合理设置手续费,避免交易因手续费过低被矿工拒绝。
  3. 找零地址:在构建交易时,请确保将剩余金额转回自己的地址作为找零,以避免资金损失。
  4. 网络参数:在使用 TestNet 或 MainNet 时,请正确配置网络参数(如 chaincfg.TestNet3Params)。

通过 gobtcsign,开发者可以快速高效地实现比特币交易相关功能,助力区块链应用开发。


比特币入门教程

通过 gobtcsign 简单介绍比特币 BTC 的入门知识,以下是个简单的入门教程。

第一步-创建钱包

使用任意 离线的代码 创建测试钱包。 例如使用代码 创建钱包

注意不要使用在线的网页创建钱包,否则私钥容易被别人悄悄收集。

区块链的钱包创建是离线的,你能使用任意你觉得趁手的离线工具生成你的钱包(任何通过网页在线创建私钥的行为都是耍流氓)

第二步-找水龙头

测试币水头龙,在网上多找找总会有的,让水龙头给自己弄点测试币,这样自己就有了所谓的UTXO啦

第三步-尝试签名和发个交易

通过水龙头给的UTXO就可以发交易

当然实际上还是需要你具备其它能力,比如爬块技术,这样才能得到你的UTXO,否则还是不能发交易的

通过区块链浏览器 和 程序代码,你能够手动发交易,但自动化发交易还是依赖于爬块。

其它的-使用狗狗币学习BTC

由于狗狗币是通过LTC衍生来的,而LTC是通过BTC衍生来的,因此这个包也能用于狗狗币的签名

至于莱特币签名,没有尝试过,假如需要就试试看吧。

该包中有些狗狗币签名的样例,这是因为狗狗币的出块速度快,只几分钟就能达到6个块的确认高度,做实验或者测试相对比较便捷。 而BTC的确认达到6个块需要1小时甚至更久些,在做开发时就不太方便测试和迭代逻辑。 但BTC的资料多些,也更主流,有利于学习区块链相关的知识。 DOGE纯的模仿BTC的,逻辑99%都是互通的,因此在开发时,测试DOGE逻辑也能发现BTC的问题。 因此同时接BTC+DOGECOIN也是不错的选择。

特别的-注意不要遗漏找零输出

注意不要忘记找零否则将会有重大损失,详见下面的案例。

这笔交易发生在区块高度818087里面。 哈希值:b5a2af5845a8d3796308ff9840e567b14cf6bb158ff26c999e6f9a1f5448f9aa 发送方发送了139.42495946 BTC,价值5,217,651美元,而接收方仅收到了55.76998378 BTC,价值2,087,060美元。 剩余的83.65497568 BTC则是矿工费用,价值3,130,590美元。

这是一笔巨大的损失,需要特别重视,避免重蹈覆辙。

免责声明:

数字货币都是骗局

都是以空气币掠夺平民财富

没有公平正义可言

数字货币对中老年人是极不友好的,因为他们没有机会接触这类披着高科技外衣的割韭菜工具

数字货币对青少年也是极不友好的,因为当他们接触的时候,前面的人已经占据了大量的资源

因此妄图以数字货币,比如稍微主流的 BTC ETH TRX 代替世界货币的操作,都是不可能实现的

都不过是早先持有数字货币的八零后们的无耻幻想

扪心自问,持有几千甚至数万个比特币的人会觉得公平吗,其实不会的

因此未来还会有新事物来代替它们,而我现在也不过只是了解其中的技术,仅此而已。

该项目仅以技术学习和探索为目的而存在。

该项目作者坚定持有“坚决抵制数字货币”的立场。


许可

gobtcsign 是一个开源项目,发布于 MIT 许可证下。有关更多信息,请参阅 LICENSE 文件。

贡献与支持

欢迎通过提交 pull request 或报告问题来贡献此项目。

如果你觉得这个包对你有帮助,请在 GitHub 上给个 ⭐,感谢支持!!!

感谢你的支持!

祝编程愉快! 🎉

Give me stars. Thank you!!!