20 个版本
0.2.0 | 2024年6月10日 |
---|---|
0.1.14 | 2023年10月18日 |
0.1.13 | 2023年7月5日 |
0.1.11 | 2023年2月24日 |
0.1.4 | 2020年11月17日 |
#900 in 魔法豆
每月下载 3,928 次
在 5 个 crate 中使用 (通过 zebra-script)
4.5MB
39K SLoC
包含 (神秘的 autoconf 代码,19KB) depend/zcash/src/secp256k1/configure.ac
zcash_script
Rust 对 ECC 的 zcash_script
C++ 库的绑定。
开发中
此 crate 通过手动包含 zcash_script
.h 和 .cpp 文件,使用 bindgen
生成 Rust 绑定,然后将所有内容编译成一个单一库来实现。
更新此 crate
- 创建一个新的分支 batch,以便所有发布提交都可以合并到 PR 中
- 使用以下说明更新
depend/zcash
,使用最新标记的zcashd
版本 - 通过运行
cargo test
测试是否一切正常。如果您遇到任何编译错误,请参阅以下故障排除部分。 - 检查所有开放的 PR,以确定它们在发布前是否可以合并
- 按照以下说明进行发布
- 检查发布标签是否已推送到 https://github.com/ZcashFoundation/zcash_script/tags
更新 depend/zcash
我们在 depend/zcash
中保留了一份 zcash 源代码副本,但它在 0.2.0 版本发布(基于 zcashd 5.9.0)时出现了以下变化:
- 删除了根目录下的
Cargo.toml
,否则 cargo 在发布 crate 时将忽略整个文件夹(参见 https://github.com/rust-lang/cargo/issues/8597)。 - 在 interpreter.h/.cpp 中引入了新的类,以支持回调 API。
- 添加了一些 #if 代码,以移除不需要用于脚本验证的代码。
简化的 API 现在主要需要用于脚本验证的文件。这些文件不太可能发生变化,因此此 crate 不再需要与 zcashd 源代码同步,除非有脚本验证中的某些错误修复。
如果需要更新 zcashd 源代码,您需要手动更新 depend/zcash
源代码树,并重新应用对其所做的更改。如果您这样做,请在此文件中详细记录过程。
发布新版本
使用 cargo release 来发布 zcash-script
的版本。
- 更新
CHANGELOG.md
来记录自上次发布以来的任何重大变化 - 运行
cargo release <level>
来提交版本号的提升(但实际上并不发布),<level>
可以是patch
、minor
或major
- 打开一个包含更改的
zcash_script
PR,进行审查,并等待 CI 通过 - 使用
cargo release --execute <level>
发布新版本
注意:由于 cargo release 实现替换的方式,指定级别非常重要。我们在 Cargo.toml
中指定了多个自动替换,但只有当 cargo release
同时处理版本号的递增时,它们才会被应用,不要手动递增版本号然后运行 cargo release
或 cargo release -- release
,否则代码库中的所有版本引用将不会正确更新。
故障排除
"未定义的引用到 name
"
这通常意味着一个 .c
文件没有被包含在 build.rs
中。在 zcashd 源代码树中搜索 name
以找到包含它的文件,并将其添加到 build.rs
中的 file()
调用中。
"致命错误:找不到文件或目录 file
"
这很可能意味着没有找到 .h
文件。搜索具有指定名称的文件,并将该文件的文件夹添加到 .include()
调用中的 build.rs
文件。如果该文件不存在那里,它很可能是构建时下载的第三方依赖项。使用搜索引擎搜索文件名,尝试找到它所属的项目,并对照 zcashd
中的 depends/packages
文件夹进行交叉引用。然后您可能需要将那些文件复制到 zcash_script
内的某个文件夹中,就像我们在 depend/expected
中做的那样。