-
Notifications
You must be signed in to change notification settings - Fork 1
Make sure to read our Home#Background and Home#Design Goals.
Contents
We achieve our design goals primarily through this codebase as a reference implementation. This repository is a fork of bitcoin core and our implementation is a set of git commits on top of upstream Bitcoin releases. This implements the Zerocash protocol and a few other distinct features.
We use a homu instance called zkbot
to merge all PRs. (Direct pushing to the "latest" branch of the repo is not allowed.) Here's just a quick overview of how it works.
If you're on our team, you can do @zkbot <command>
to tell zkbot to do things. Here are a few examples:
-
r+ [commithash]
this will test the merge and then actually commit the merge into the repo if the tests succeed. -
try
this will test the merge and nothing else. -
rollup
this is liker+
but for insignificant changes. Use this when we want to test a bunch of merges at once to save buildbot time.
More instructions are found here: http://ci.leastauthority.com:12477/
Our git branches and tags always follow this schema:
zc.<UPSTREAM TAG>.<ZC DETAIL>
Some example branches are:
zc.v0.11.1.latest zc.v0.10.0.ticket197.python3-compat.0
The parts of this schema are as follows:
zc.
- Our git branches and tags always begin with the prefix
zc.
. The goal is to disambiguate our branches/tags from upstream within the same repository. (This is predicated on upstream not using that prefix.) <UPSTREAM TAG>
- All of our changes are commits on top of an upstream core release tag. This field is the literal tag.
<ZC DETAIL>
-
-
latest
is the most recent "development" branch based on the given upstream release. As we transition to newer upstream releases, olderzc.<OLD UPSTREAM TAG>.latest
branches will become dormant and contain a subset of our newer development changes.
-
Our development branches have the form zc.<UPSTREAM TAG>.latest
,
and when they are rebased, the new branch has a new name, since the
<UPSTREAM TAG>
field has changed. For example zc.v0.10.0.latest
may be rebased to a new upstream release and the new branch
zc.v0.11.2.latest
.
- Fork our repository
- Create a new branch with your changes
- Submit a pull request
Zcash release tags will take the following form:
zc.<UPSTREAM TAG>.z<N>
The parts are:
<UPSTREAM TAG>
- Described above.
<N>
- The Zcash revision. This number resets to zero every time
<UPSTREAM TAG>
changes, and increments with each new Zcash release upon the same<UPSTREAM TAG>
.
Commit messages should contain enough information in the first line to be able to scan a list of patches and identify which one is being searched for. Do not use "auto-close" keywords -- tickets should be closed manually. The auto-close keywords are "close[ds]", "resolve[ds]", and "fix(e[ds])?".
Watch the Buildbot. Because the Buildbot is watching you.
These are historical, probably bit-rotted, but also probably full of important nuggets:
- Notes from the Boulder Hack Fest
- zdep Google group (requires login)