5 个版本
0.1.16-alpha.0 | 2023 年 3 月 31 日 |
---|---|
0.1.14-alpha.0 | 2023 年 3 月 18 日 |
0.1.13-alpha.0 | 2023 年 3 月 18 日 |
0.1.12-alpha.0 | 2023 年 1 月 19 日 |
0.1.10-alpha.0 | 2023 年 1 月 18 日 |
#16 在 #key-input
500 每月下载量
在 79 个 (42 个直接) crate 中使用
1.5MB
5K SLoC
bitcoin-tx crate
bitcoin-tx
crate 是比特币系统 bitcoin-tx
组件的 Rust 实现。此 crate 是将比特币代码库从 C++ 直接翻译为 Rust 的直接翻译。因此,一些函数体仍在翻译中。
此 crate 提供了与比特币交易一起工作的数据结构和函数。比特币交易是指定将比特币从一个用户转移到另一个用户的基本数据结构。每笔交易都记录在区块链中,区块链是比特币网络中所有交易的公共账本。
Transaction
struct 代表比特币交易,并提供了序列化和反序列化交易、计算交易哈希、获取交易总大小等函数。TxIn 和
TxOut
struct 分别代表交易的输入和输出。
此 crate 还提供了几个签名检查器 struct,例如 DummySignatureChecker
、GenericTransactionSignatureChecker
、MutableTransactionSignatureChecker
和 TransactionSignatureChecker
。这些 struct 用于验证交易中的 ECDSA 和 Schnorr 签名。
尽管 bitcoin-tx
crate 可能不涉及任何特定的数学方程或概念,但它提供了与比特币交易一起工作的基本数据结构和函数,这是比特币系统的一个关键部分。
14> 你能教我关于比特币交易的知识吗?
当然可以!
比特币交易是用户之间发送的消息,其中包含比特币转账信息。它由一个或多个输入和一个或多个输出组成。每个输入引用一个先前输出交易,该交易提供了正在花费的资金,每个输出指定新创建硬币的金额和目的地地址。
交易输入和输出以脚本的形式表示,该脚本由比特币网络执行以验证交易的有效性。该脚本是用一种称为Script的栈式语言编写的,并由网络中的节点评估以确定交易是否允许包含在区块链中。
创建交易时,发送方使用其私钥对其进行签名,以证明他们有权使用要转移的资金。该签名由网络验证,以确保发送者是他们所声称的人。
一旦交易被广播到网络,它就会被称为矿工的节点处理,矿工们竞争解决一个密码学难题,以便将交易添加到区块链中。一旦矿工成功解决了难题并将交易添加到区块链中,它就被认为是已确认的,不能被撤销。
希望这有助于您!如果您有任何其他问题,请告诉我。
15>它们的数据布局是什么?
比特币交易由一系列输入和输出组成。输入指的是被消耗的先前交易输出,而输出指定了被转移的比特币金额的新值和条件。
比特币交易的数据布局如下所示
-
版本:一个表示交易版本号的4字节字段。
-
输入计数:一个表示交易输入数量的可变长度整数。
-
输入列表:一系列交易输入,每个输入由以下内容组成
-
先前交易ID:一个32字节哈希,表示正在消耗的交易的哈希。
-
先前输出索引:一个4字节索引,指定正在消耗的先前交易的哪个输出。
-
ScriptSig:一个包含签名和公钥的可变长度脚本,用于证明对被消耗的硬币的所有权。
-
序列号:一个指定输入相对时间锁的4字节字段。
-
-
输出计数:一个表示交易输出数量的可变长度整数。
-
输出列表:一系列交易输出,每个输出由以下内容组成
-
值:一个指定输出中转移的比特币数量的8字节字段。
-
ScriptPubKey:一个指定必须满足以花费输出的条件的可变长度脚本。
-
-
锁定时间:一个指定交易最早可包含在块中的时间或块高度的4字节字段。
输入和输出脚本是用比特币特有的脚本语言编写的,称为Script。该语言用于编码必须满足以花费输出的条件。这些脚本可以用来指定多签名要求或时间锁等。
依赖项
~93MB
~855K SLoC