#private-key #bitcoin #wallet #transaction #address #translation #generate

bitcoinwallet-library

钱包维护一组交易和余额,并提供创建新交易的能力

2 个版本

0.1.16-alpha.02023年4月2日
0.1.12-alpha.02023年1月20日

#45 in #transactions

Download history 32/week @ 2024-03-11 37/week @ 2024-03-18 59/week @ 2024-03-25 91/week @ 2024-04-01 26/week @ 2024-04-08 33/week @ 2024-04-15 42/week @ 2024-04-22 32/week @ 2024-04-29 42/week @ 2024-05-06 28/week @ 2024-05-13 33/week @ 2024-05-20 19/week @ 2024-05-27 28/week @ 2024-06-03 27/week @ 2024-06-10 24/week @ 2024-06-17 39/week @ 2024-06-24

118 每月下载
用于 13 个 crate(11 个直接使用)

MIT 许可证

5MB
19K SLoC

bitcoinwallet-library

这个 Rust crate 是将 Bitcoin Core 钱包实现从 C++ 直接转换为 Rust 的结果。它提供了创建和管理比特币钱包的功能,包括生成新的私钥、签名交易以及与比特币网络同步。

注意:这个 crate 是将 Bitcoin Core 从 C++ 直接转换为 Rust 的一部分。因此,一些函数体可能仍在翻译过程中。请注意,一旦翻译完成,此系统将可测试。

以下数学概念与这个 crate 中使用的某些令牌相关联

  • 私钥:比特币中的私钥是一个随机生成的 256 位整数。它用于生成公钥,公钥再用于创建比特币地址。私钥也用于签名交易。比特币系统的安全性依赖于这样一个事实:从公钥或比特币地址中推导出私钥在计算上是不可行的。从私钥生成比特币公钥的方程是

    public_key = G * private_key
    

    其中 G 是比特币数字签名算法中使用的椭圆曲线的生成点。

  • 公钥:比特币中的公钥是生成点 G 乘以私钥得到的椭圆曲线上的一点。公钥用于创建比特币地址和验证交易数字签名。验证比特币数字签名的方程是

    sG = R + eP
    

    其中 s 是签名,R 是签名的第一个分量,e 是消息散列,G 是生成点,P 是公钥。

  • 比特币地址:比特币地址是公钥的 160 位散列。它用于接收比特币付款。从公钥生成比特币地址的方程是

    address = RIPEMD160(SHA256(public_key))
    

    其中 RIPEMD160 和 SHA256 是比特币中使用的散列函数。

  • 交易:比特币中的交易是从一个地址到另一个地址的已签名消息,用于转移比特币。交易包括输入(要花费的比特币)和输出(要接收的比特币)。签名比特币交易的方程是

    s = k^(-1)(e + da) mod n
    

    其中s是签名,k是随机数,e是消息哈希,d是私钥,a是临时公钥,n是椭圆曲线的阶。

依赖项

~105MB
~894K SLoC