What is tnnltnnl is a privacy layer for all standards-compliant fungible tokens that exist on the Ethereum network. tnnl is derived from Zcash. In the same manner that Zcash uses zk-SNARKs to shield a practically arbitrary amount of a single basecoin, tnnl uses zk-SNARKs to shield practically arbitrary amounts of an arbitrary amount of basecoins.
How does it work?Let's say Alice wants to send an amount N of OmiseGO to Bob
privately…
SHIELDING TRANSACTIONS In order to transition from a transparent system to a private system, a shielding transaction is required. First, Alice broadcasts a transaction to the OMG contract, assigning the amount N (or greater) to her account on the tnnl contract. Then, she broadcasts a shielding transaction, in which notes are appended to a note commitment tree.
PRIVATE TRANSACTIONS Now that the amount N of OMG exists in the private system, a private transaction can occur! Alice creates a transaction that creates new notes that give Bob the amount N and it is routed through an onion router that preserves Alice's sender privacy, since normally she would have to pay for the gas (the execution cost) in Ether, which lacks privacy.
DESHIELDING TRANSACTIONS Bob, if he so chooses to make the amount N of OMG public so as to use within the OmiseGO ecosystem, creates a transaction that is also routed via the same onion routing mechanism.
Whitepaper: The Darkpaper was released at Devcon4. Read the darkpaper on
github.
FAQQ: How much gas does a transaction use?
A: Due to the current gas prices, a tnnl transaction costs about 1.45M gas. There is an EIP (1108) that should help reduce this cost.
Q: There are a few things in the procotol specification that are not instantiated. What are the these exact values?
A: Not all values have been decided on since implementation is not yet fully complete. We are open to suggestions from the community for much of these, so if you see a CONST or value not explicitly instantiated that does not yet have an existing issue, please open an issue to start a discusssion on the possible values it could be given.
Q: Does 'tnnl' stand for anything?
A: Not really, no. It's a decent mispelling of 'tunnel' that we were able to get a domain for. wink
Q: Will there be an ICO?
A: No. TNL — which is how we refer to the network token (with a defensive acronym of 'tnnl Network Laborage') — will be primarily distributed via a mining process. We're not fans of ICOs.
Q: Are there any hardware/software requirements?
A: Yes, but the exact specifications of the baseline requirements are to be determined as implementation progresses. Currently, it is estimated that 4GB of RAM is required for generating proofs. This proof generation program can be run inside a Docker container.
Q: Does tnnl suffer form the same problem as Zcash, where a trusted setup is required?
A: Unfortunately, yes. We will have to go through our own key generation ceremony since out circuit differs from Zcash's. It should be a blast.
Q: When will the code be made public?
A: There needs to be some cleanup and documentation before our code can be made public (there's some gross C++, and we recognize that some of our code is not yet comprehensible to mortals). That being said, we're frantically working on this to get this public ASAP, so other open-source developers can contribute.