zips/protocol
Jack Grigg 080306b42a Move files rendered for zips.z.cash into a subdirectory
All content that is reachable via links on zips.z.cash is moved into
this directory, so that GitHub Pages can be configured to build the site
from it. This includes non-generated files like CSS that are required
for correct site presentation.
2024-07-16 18:52:47 +00:00
..
Makefile Move files rendered for zips.z.cash into a subdirectory 2024-07-16 18:52:47 +00:00
README.rst Update dependency info. 2022-09-20 10:21:45 +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_orchard.png Refine the key components diagram in \crossref{addressesandkeys} to show that Orchard incoming 2021-06-26 18:41:37 +01:00
key_components_orchard.svg Refine the key components diagram in \crossref{addressesandkeys} to show that Orchard incoming 2021-06-26 18:41:37 +01:00
key_components_sapling.png Update the Sprout key component diagram in \crossref{addressesandkeys} to remove magenta highlighting.Remove magenta highlighting 2021-04-01 02:11:35 +01:00
key_components_sapling.svg Update the Sprout key component diagram in \crossref{addressesandkeys} to remove magenta highlighting.Remove magenta highlighting 2021-04-01 02:11:35 +01: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.tex Acknowledge Conrado Gouvea. 2024-07-01 16:39:48 +01:00
zcash.bib Protocol spec: cosmetics and improved indexing. 2024-07-01 16:39:48 +01:00

README.rst

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

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

.. code::

   apt install python3-pip pandoc perl sed perl \
     texlive texlive-science texlive-fonts-extra texlive-bibtex-extra biber latexmk

Prior to Bullseye you may also need the ``awk`` and ``texlive-generic-recommended``
packages.

For link checking, you will also need the following Python packages:

.. code::

   pip3 install docutils==0.19 rst2html5 certifi PyPDF2


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 linkcheck`` (in the root of the repo) to build everything and also
  perform link checking. This will access the network.

``make all`` is equivalent to ``make nu5 canopy heartwood blossom sapling``.

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.