3个版本 (1个稳定版)
2.20.1-0.5.0 | 2022年8月12日 |
---|---|
2.19.1 | 2020年7月5日 |
2.19.1-3 | 2022年2月24日 |
#4 in #groestlcoin
每月 24 次下载
用于 groestlcoin
3MB
55K SLoC
包含 (晦涩的autoconf代码,61KB) depend/groestlcoin/configure.ac,(晦涩的autoconf代码,17KB) configure.ac
Groestlcoin的libgroestlcoinconsensus
与Rust绑定
此项目使用cargo从Groestlcoin的C++源代码构建libgroestlcoinconsensus
库,并提供对其API的Rust绑定。
libgroestlcoinconsensus
允许使用Groestlcoin独特的脚本引擎进行交易验证。Groestlcoin启用应用程序应使用libgroestlcoinconsensus
库,以避免接受Groestlcoin网络节点不会接受的交易。
此项目通过使用cargo创建libgroestlcoinconsensus
库,简化了Rust开发者的生活。无需直接处理过时的C++工具链。这也有助于简化共识库的交叉编译,例如,为移动应用程序。
libgroestlcoinconsensus
引用了另一个库的代码secp256k1。该库的快照也包含在Groestlcoin源代码中,因此它可以嵌入到libgroestlcoinconsensus
中。然而,典型的Groestlcoin启用应用程序可能需要访问更多的secp256k1功能。项目rust-secp256k1提供了一个cargo构建和Rust绑定,因此我们依赖于该项目而不是将Groestlcoin嵌入式源代码编译到libgroestlcoinconsensus
中。这引入了风险,因为两个secp256k1源代码之间的差异可能会破坏与Groestlcoin的共识。
版本号
我们使用[轻微滥用]语义版本控制。第一个主版本.次版本.修订版本
数字跟踪所购买的Groestlcoin Core代码(见下文),第二个主版本.次版本.修订版本
跟踪此crate。例如,如果我们通过修订版本
版本升级Groestlcoin Core代码,我们也会增加我们的修订版本
版本。
这种做法的一个副作用是,crates.io
将我们的发布版本以黄色显示,就像它们是预发布版本一样,这是由于我们使用了-
,在语义版本控制中,这表示预发布版本。
Groestlcoin Core子树
我们使用git subtree来提供Groestlcoin Core代码。这可以从以下提交中看出,这些提交是使用以下命令创建的:git subtree add --prefix='depend/groestlcoin' https://github.com/groestlcoin/groestlcoin.git v2.19.1 --squash
。
0c8f8595b Squashed 'depend/groestlcoin/' content from commit 9b4017c7c
b96a589b0 Merge commit '0c8f8595b64fa28c5aedfa37d28ecda7e36e1dc5' as 'depend/groestlcoin'
要使用Groestlcoin Core的较新版本,例如v2.20.1
git subtree pull --prefix='depend/groestlcoin' https://github.com/groestlcoin/groestlcoin.git v2.20.1 --squash
MSRV
此crate的MSRV为1.41.1。
Githooks
为了帮助开发者捕捉在CI运行之前出现的错误,我们提供了一些githooks。如果您尚未在本地的githooks中进行配置,您可以通过在存储库的根目录中运行以下命令来使用此存储库中的githooks:
git config --local core.hooksPath githooks/
或者,在您的.git/hooks
目录中添加我们提供的githooks的符号链接。
API
API非常基础,直接暴露Groestlcoin的API。这是故意的,以保持此项目的最小占用空间,不添加任何额外的运行时依赖项。您将需要一个其他Rust库来序列化Groestlcoin交易和脚本。
验证Groestlcoin交易的单一支出(输入)
verify(spent_output_script: &[u8],amount: u64,spending_transaction: &[u8],input_index: usize) -> Result<(), Error>
参数
- spend_output_script:要支出的Groestlcoin交易输出脚本
- amount:支出的输出金额,单位为gros
- spending_transaction:支出Groestlcoin交易,以Groestlcoin的在线格式序列化
- input_index:在spending_transaction中的输入索引
注意,仅对Segwit交易检查支出的金额。上述示例不是segwit,因此验证将接受任何金额。