zips/protocol
Daira Hopwood 6e6704411d Curve25519 -> \KASproutCurve; Ed25519 clarifications.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2018-04-20 04:19:28 +01:00
..
Makefile Makefile improvements to ensure optimized PDFs are only written once. 2018-04-05 16:07:36 +01:00
README.rst Makefile improvements to ensure optimized PDFs are only written once. 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 Curve25519 -> \KASproutCurve; Ed25519 clarifications. 2018-04-20 04:19:28 +01: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 References for optimal ate pairings. 2018-04-19 18:53:52 +01: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.

Use:

* ``make optpdf`` to make an optimized version of ``protocol.pdf``;
* ``make optsapling`` to make an optimized version of ``sapling.pdf``;
* ``make optimized`` to make both.

This will probably only work on Linux. The first time one of these
targets is run, it will automatically clone and build the necessary
dependencies (pinned by ``git`` hash) from GitHub.

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


Converting to HTML
------------------

To convert to HTML you will first need to install ``pdf2htmlEX``. On Debian:

.. code::

   apt-get install pdf2htmlex

Then use ``make html`` (or ``make optimized html``) to convert both PDFs.

The results are placed in the ``html`` directory at ``html/protocol.html``
and ``html/sapling.html``.

See `<https://github.com/zcash/zips/issues/127>`_ for limitations of
this conversion.