zips/protocol
Daira Hopwood 71cee89a18 Corrections to note decryption algorithms:
* ephemeralKey is kept as a byte sequence rather than immediately converted to a curve point;
  this matters because of non-canonical encoding.
* The representation of pk_d in a note plaintext may also be non-canonical and need not be in the
  prime subgroup.
* Move checking of cm_u in decryption with ivk to the end of the algorithm, to more closely match
  the implementation.
* The note about decryption of outputs in mempool transactions should have been normative.

Also change ZIP 212 to say that it is aligned with this version of the protocol spec.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2020-11-06 01:00:58 +00:00
..
Makefile protocol/Makefile: ensure that we don't release from a branch other than master or a dirty working tree. 2020-08-30 21:01:50 +01:00
README.rst protocol/README.rst updates. 2020-04-27 15:57:30 +01:00
blossom.pdf Regenerate PDFs. 2020-08-30 21:12:40 +01:00
canopy.pdf Regenerate PDFs. 2020-08-30 21:12:40 +01:00
heartwood.pdf Regenerate PDFs. 2020-08-30 21:12:40 +01:00
incremental_merkle.odg Change coin commitments in Merkle tree diagram back to cm. 2016-02-11 18:37:28 +00:00
incremental_merkle.png Update incremental Merkle tree diagram. 2020-02-02 16:46:34 +00:00
incremental_merkle.svg Update incremental Merkle tree diagram. 2020-02-02 16:46:34 +00:00
jubjub.png Add macros and Makefile support for building the Blossom specification. 2019-02-22 13:49:08 +00:00
key_components.png Change 'Payment address' to 'Shielded payment address' in key components diagrams. 2020-02-02 16:45:47 +00:00
key_components.svg Change 'Payment address' to 'Shielded payment address' in key components diagrams. 2020-02-02 16:45:47 +00:00
key_components_sapling.png Change 'Payment address' to 'Shielded payment address' in key components diagrams. 2020-02-02 16:45:47 +00:00
key_components_sapling.svg Change 'Payment address' to 'Shielded payment address' in key components diagrams. 2020-02-02 16:45:47 +00:00
latexmkrc Protocol spec: Initial index support. 2019-07-08 22:42:16 +01:00
mymakeindex.sh Protocol spec: Initial index support. 2019-07-08 22:42:16 +01:00
protocol.pdf Regenerate PDFs. 2020-08-30 21:12:40 +01:00
protocol.tex Corrections to note decryption algorithms: 2020-11-06 01:00:58 +00:00
sapling.pdf Regenerate PDFs. 2020-08-30 21:12:40 +01:00
sprout.pdf Regenerate PDFs. 2020-08-30 21:12:40 +01:00
zcash.bib Include a reference to [BFIJSV2010] for batch pairing verification techniques. 2020-11-06 01:00:58 +00:00

README.rst

==============================
 Zcash Protocol Specification
==============================

Build dependencies on Debian-based systems include, at least:

.. code::

   apt-get install texlive texlive-science texlive-fonts-extra \
     texlive-generic-recommended texlive-bibtex-extra biber latexmk perl awk


Building
--------

Use:

* ``make nufour`` to make the draft specification for NU4 (``nufour.pdf``);
* ``make heartwood`` to make the specification for Heartwood (``protocol.pdf``);
* ``make blossom`` to make the specification for the Blossom upgrade
  (``blossom.pdf``);
* ``make sapling`` to make the specification for the Overwinter and
  Sapling upgrades (``sapling.pdf``);
* ``make sprout`` to make a version of the specification that does not
  include Overwinter or Sapling (``sprout.pdf``).

``make all`` is equivalent to ``make nufour heartwood blossom sapling sprout``.

By default these use ``latexmk``. If you have trouble getting ``latexmk`` to
work, you can instead use ``make nolatexmk-sapling``, etc. That is not the
preferred way of building because it may not run ``pdflatex`` enough times.

It is also possible to use the incremental (``-pvc``) mode of ``latexmk`` to
automatically rebuild when changes in the source files are detected, by adding
``EXTRAOPT=-pvc`` to the ``make`` command line. In this case the updated PDF
files will be in the ``aux/`` directory. Manual intervention is still needed
when there are LaTeX errors.


Alternative TeX engines
-----------------------

There is experimental support for building the specification using LuaTeX
or XeTeX; see the comments at the top of the `Makefile`. However, this will
`currently produce poor output <https://github.com/zcash/zips/issues/249>`_.
A warning is included below the Abstract to indicate this.