Nightfall Truffle Box¶
The easiest way to get started on Nightfall.
Supported hardware & prerequisites¶
Mac and Linux machines with at least 16GB of memory and 10GB of disk space are supported.
Nightfall requires the following software to run:
- Docker
- Launch Docker Desktop (on Mac, it is on the menu bar) and set memory to 8GB with 4GB of swap space (minimum - 12GB memory is better) or 16GB of memory with 512MB of swap. The default values for Docker Desktop will NOT work. No, they really won't.
- Node (tested with 10.15.3) with npm and node-gyp
- If running macOS, install Xcode then run xcode-select —installto install command line tools.
- Note: Currently will not work with node v12. To check the node version, run node --version. If using mac/brew, then you may need to runbrew install node@10andbrew link --overwrite node@10 --force
- Python
- Be sure npm is setup to use v2.7 of python, not python3. To check the python version, run python --version
- You may need to run npm config set python /usr/bin/python2.7(or wherever your python 2 location is)
Installation¶
First ensure you are in a new and empty directory.
-  Run the unboxcommand vianpxand skip to step 3. This will install all necessary dependencies.npx truffle unbox nightfall
-  Alternatively, you can install Truffle globally and run the unboxcommand.npm install -g truffle truffle unbox nightfall
-  Start Docker. 
-  In the root project directory, we generate the keys and constraint files for our Zero Knowledge Proofs. This is about 7GB and depends on randomness for security. This step can take a while, depending on your hardware (1-3 hours). Before you begin, check once more you have provisioned enough memory for Docker. npm run setup
-  Alternatively, you can generate specific verification keys and constraint files one at time using a prompt. npm run setup-prompt
-  Now, run the development console. truffle develop
-  Compile and migrate the smart contracts. Note inside the development console we don't preface commands with truffle.compile migrate
-  Execute the script provided for registering Zero Knowledge Proof verification keys on-chain. Note inside the development console we don't preface commands with truffle.exec scripts/registerVks.js
-  Truffle can run tests written in Solidity or JavaScript against your smart contracts. Note the command varies slightly if you're in or outside of the development console. // inside the development console. test // outside the development console.. truffle test
FAQ¶
-  How do I use this with Ganache-CLI? It's as easy as modifying the config file! Check out our documentation on adding network configurations. 
-  Where can I find more documentation? This box is a marriage of Truffle, Nightfall, and ZoKrates. Any of them would be a great place to start!