Go to file
Conrado Gouvea ceca5845a0 use Zcash v4.7.0 2022-04-18 14:55:33 -03:00
.github/workflows try using x86_64-pc-windows-gnu on windows 2022-03-03 14:06:53 -03:00
depend use Zcash v4.7.0 2022-04-18 14:55:33 -03:00
src update zcash to new V5 API; add tests 2022-03-03 14:06:53 -03:00
.gitignore add .gitignore 2018-02-25 06:58:26 +01:00
.gitmodules use Zcash v4.7.0 2022-04-18 14:55:33 -03:00
CHANGELOG.md (cargo-release) version 0.1.5 2020-12-09 15:47:54 -08:00
Cargo.toml update zcash to current nu5-consensus branch 2022-04-07 17:04:40 -03:00
LICENSE Initial commit 2018-02-25 06:26:24 +01:00
README.md Expand README 2022-03-03 14:06:53 -03:00
build.rs Update error logs and README for submodules 2021-11-15 09:03:09 +10:00

README.md

zcash_script

Build Status Latest Version Rust Documentation

Rust bindings to the ECC's zcash_script C++ library.

Developing

This crate works by manually including the zcash_script .h and .cpp files, using bindgen to generate Rust bindings, and compiling everything together into a single library. Due to the way the zcash_script is written we unfortunately need to include a lot of other stuff e.g. the orchard library.

Note that zcash_script (the C++ library/folder inside zcash) uses some Rust FFI functions from zcash; and it also links to librustzcash which is written in Rust. Therefore, when updating zcash_script (this crate), we need to make sure that shared dependencies between all of those are the same versions (and are patched to the same revisions, if applicable). To do that, check for versions in:

  • zcash/Cargo.toml in the revision pointed to by this crate (also check for patches)
  • librustzcash/Cargo.toml in the revision pointed to by zcash (also check for patches)
  • librustzcash/<crate>/Cargo.toml in the revision pointed to by zcash

Cloning and checking out depend/zcash

Clone this repository using:

git clone --recurse-submodules

Or if you've already cloned:

git submodule update --init

To pull the latest version, use:

git pull --recurse-submodules

Updating depend/zcash

If you need to change the submodule's base branch:

git config -f .gitmodules submodule.depend/zcash.branch <branch-name>

To pull in recent changes from the upstream repo:

git submodule update --remote

To use a specific commit:

cd depend/zcash
git checkout <commit-hash>

Publishing New Releases

Releases for zcash-script are made with the help of cargo release.

Checklist:

  • create a new branch batch the release commits into a PR
  • update CHANGELOG.md to document any major changes since the last release
  • open a PR to merge your branch into master
  • locally run cargo release -- <level> where level can be patch, minor, or major (source)

NOTE: It's important to specify the level when using cargo release because of the way it implements the substitutions. We specify a number of automatic substitutions in Cargo.toml but they will only be applied if cargo release also handles incrementing the version itself, do not increment the version by hand and then run cargo release or cargo release -- release, or it will not correctly update all version references in the codebase.