uma / jimmy
比特币编程库
dev-master
2024-07-30 16:19 UTC
Requires
- php: ~8.3.0
- ext-gmp: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.60
- phpunit/phpunit: ^11.2
- uma/ocular: ^2.0
This package is auto-updated.
Last update: 2024-08-30 16:34:51 UTC
README
Jimmy Song的《比特币编程》代码,用PHP实现。
composer require uma/jimmy:dev-master
免责声明
这是一些玩具级代码,用于学习概念,不适合用于达到生产状态的实际项目。
它性能不佳,未经过充分测试,并且未经审查。如果您在主网上使用它,可能会泄露私钥,创建无法使用的无效UTXO交易等。
为了强调这一点,我不会标记任何版本,并且不保证任何形式的向后兼容性。为了进一步强调,这个库默认假设它在测试网上运行,而不是主网上。
实现的书章节
- 第1章:有限域
- 第2章:椭圆曲线
- 第3章:椭圆曲线密码学
- 第4章:序列化
- 第5章:交易
- 第6章:脚本
- 第7章:交易创建和验证
- 第8章:脚本哈希支付
- 第9章:区块
- 第10章:网络
- 第11章:简化支付验证
- 第12章:布隆过滤器
- 第13章:SegWit
其他感兴趣的区域
- BIP-0032:分层确定性钱包
- BIP-0039:生成确定性密钥的助记码
- BIP-0044:确定性钱包的多账户层次结构
- BIP-0084:基于P2WPKH账户的推导方案
- BIP-0086:单一密钥P2TR输出的密钥推导
- BIP-0173:原生v0-16见证输出的Base32地址格式
- BIP-0325:Signet
- BIP-0340:secp256k1的Schnorr签名
- BIP-0341:Taproot
- BIP-0342:Taproot脚本的验证
- BIP-0350:v1+见证地址的Bech32m格式
- BIP-0370:部分签名比特币交易格式版本2
- BIP-0371:PSBT的Taproot字段
如何
实现与ECC相关的代码需要在256位整数上执行数学运算,这就是为什么这本书使用Python。
PHP,像大多数编程语言一样,只有32或64位的整数与机器的字节大小匹配。然而,该语言有一个到libgmp的本地绑定,该绑定提供了对表示和执行任意大整数的数学运算的支持,尽管性能可忍受(但不足以满足需求),就像Python一样。