zips/protocol
Daira Hopwood 40e609444d Regenerate PDFs.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2019-05-01 11:21:21 +01:00
..
Makefile Update git commits for sam2p and pdfsizeopt. 2019-04-18 17:03:40 +01:00
README.rst Update protocol/README.rst for Blossom changes. 2019-04-18 17:04:35 +01:00
blossom.pdf Regenerate PDFs. 2019-05-01 11:21:21 +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
jubjub.png Add macros and Makefile support for building the Blossom specification. 2019-02-22 13:49:08 +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 Sapling consensus changes. 2018-04-20 04:22:06 +01:00
key_components_sapling.svg Sapling consensus changes. 2018-04-20 04:22:06 +01:00
protocol.pdf Regenerate PDFs. 2019-05-01 11:21:21 +01:00
protocol.tex Adjust revision date and version. (No longer beta! Wooo! :3 ) 2019-05-01 11:02:42 +01:00
protocol.ver Regenerate PDFs. 2019-05-01 11:21:21 +01:00
sprout.pdf Regenerate PDFs. 2019-05-01 11:21:21 +01:00
zcash.bib Add reference to [SVPBABW2012] for the idea of using multiplicative inverses for nonzero constraints. 2019-05-01 10:57:45 +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 sapling`` to make the specification for the Overwinter and
  Sapling upgrades (``protocol.pdf``);
* ``make blossom`` to make the draft specification for the Blossom upgrade
  (``blossom.pdf``);
* ``make sprout`` to make a version of the specification that does not
  include Overwinter or Sapling.

By default these use ``latexmk``, which does not work on all systems.
Use ``make nolatexmk-sapling`` or ``make nolatexmk-sprout`` 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 pvcsapling``, ``make pvcblossom``, or ``make pvcsprout``.
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 optsapling`` to make an optimized version of ``protocol.pdf``;
* ``make optblossom`` to make an optimized version of ``blossom.pdf``;
* ``make optsprout`` to make an optimized version of ``sprout.pdf``;
* ``make optimized`` to make all optimized PDFs.

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 40-50%.


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 all PDFs.

The results are placed in the ``html`` directory at ``html/sapling.html``,
``html/blossom.html``, and ``html/sprout.html``.

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