zips/protocol
Daira Hopwood c3fae92bb4 Support for building size-optimized PDFs, and other Makefile and README improvements.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2018-04-05 16:07:36 +01:00
..
Makefile Support for building size-optimized PDFs, and other Makefile and README improvements. 2018-04-05 16:07:36 +01:00
README.rst Support for building size-optimized PDFs, and other Makefile and README improvements. 2018-04-05 16:07:36 +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.pdf Change coin commitments in Merkle tree diagram back to cm. 2016-02-11 18:37:28 +00:00
incremental_merkle.png Cosmetics. 2018-03-18 21:00:16 +00:00
incremental_merkle.svg Regenerate PDFs. 2017-12-02 02:11:41 +00:00
key_components.odg Remove viewing keys (except for sk_enc) for now. 2016-03-13 02:16:30 +00:00
key_components.pdf Cosmetics. 2016-09-04 04:33:45 +01:00
key_components.png Cosmetics. 2018-03-18 21:00:16 +00:00
key_components.svg Separate viewing keys (a_pk, sk_enc) from receiving keys sk_enc. 2017-12-16 23:40:34 +00:00
key_components_sapling.png Updates to Sapling construction, changing how the nullifier is computed and separating it from the randomized spend verifying key (rk). 2018-03-18 21:43:57 +00:00
key_components_sapling.svg Updates to Sapling construction, changing how the nullifier is computed and separating it from the randomized spend verifying key (rk). 2018-03-18 21:43:57 +00:00
protocol.pdf Regenerate PDFs. 2018-03-19 00:03:39 +00:00
protocol.tex Add specification of Output statement. 2018-03-19 00:01:25 +00:00
protocol.ver Regenerate PDFs. 2018-03-19 00:03:39 +00:00
sapling.pdf Regenerate PDFs. 2018-03-19 00:03:39 +00:00
zcash.bib Cosmetics. 2018-03-18 21:00:16 +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


Building
--------

Use:

* ``make pdf`` to make the current protocol specification (``protocol.pdf``);
* ``make sapling`` to make the draft specification for the Overwinter and
  Sapling upgrades (``sapling.pdf``).

By default these use ``latexmk``, which does not work on all systems.
Use ``make nolatexmk-pdf`` or ``make nolatexmk-sapling`` if you run into
problems with ``latexmk``, but that is not the preferred way of building
because it may not run ``pdflatex`` enough times.

There is also support for using the incremental (``-pvc``) mode of
``latexmk`` to automatically rebuild when changes in the source files
are detected: ``make pvcpdf`` or ``make pvcsapling``.
Manual intervention is still needed when there are LaTeX errors.


Optimizing PDF size
-------------------

Optionally, you can use `Péter Szabó <https://github.com/pts>`_'s
``pdfsizeopt`` program to optimize the size of the resulting PDF files.

Run ``make optimized`` to rebuild both PDFs and then optimize them.
This will probably only work on Linux. The first time this is run it
will automatically clone and build the necessary dependencies (pinned
by ``git`` hash) from GitHub.

Alternatively, you can run ``make optimize-pdf`` or ``make optimize-sapling``
to optimize just ``protocol.pdf`` or ``sapling.pdf`` respectively.

This gives a size saving of about 50% for ``protocol.pdf``, and
40% for ``sapling.pdf``.