From the Archive: $NIL
667 words | 4 minutes
Note: The following blogpost is part of a series of old writeups I did on various DePIN and DeFi projects across the latter half of 2024.
It’s likely that some of the content is out-of-date or no longer reflective of the current state of the project discussed. I’ll leave notes here and there for some updates, but I’m keeping those minimal. Regardless, I’ve decided to post these here anyways for posterity. The writing style may be a little inconsistent and unstructured, but hopefully the reads are still entertaining.
A Look into “Nillion”
Nillion and Blind Computation
“Nillion is a secure computation network that decentralizes trust for high value data in the same way that blockchains decentralized transactions”
That is a very loaded introduction for a very interesting project.
Nillion’s value proposition can be condensed as such: blind computations on secret data.
Blind computation, as the name implies, is the process of performing computations without having information about what the computations being performed achieve nor information about the data being processed.
The term Nillion opts for in discussion of “secrets” is High Value Data (HVD), which they point out the following challenges concerning:
- Secure storage of secrets via encryption
- Performing computations with HVD requiring decryption and subsequent re-encryption
- The above challenges when applied to decentralization and distribution of HVD
- They claim this is “crucial for ensuring transparency, resilience and independence from centralized control”. But why would I want my HVD to be distributed?
Their proposed solution: Multi Party Computation (MPC)
Multi Party Computation, In Brief
MPC is a means for multiple parties to do shared computations on private inputs without revealing those inputs to each other. The classic example (that Nillion uses as well) is the Millionaires’ Problem, where participants will be able to determine who is richer than the other without revealing their net worths to each other.
How is MPC achieved? MPC is often performed using asymmetric cryptography, the basic building block of most modern cryptographic systems (e.g. RSA, ECC are asymmetric systems).
With asymmetric cryptography, there are a few main ways an MPC system can be constructed: the main ones that are often discussed are garbled circuits or homomorphic encryption.
Garbled Circuits
With asymmetric cryptography you can build oblivious transfer, which is a complete primitive for MPC.
An example of (1-2) oblivious transfer is where a sender has two strings (labelled 0 and 1) and sends one of them to a receiver. The receiver receives the string just fine, but with this string, they are unable to deduce any information about the other unsent string, nor are they able to tell which of the two they received (so whether the string they received is string 0 or string 1).
With oblivious transfer, through some mathe-magic you can then build garbled circuits where your problem statement is turned into a set of binary operations with “obfuscated” logic gates. Mind you, this bumps up the computational cost of your task significantly!
Homomorphic Encryption
Homomorphic encryption, in simple terms, is a form of encryption where you can perform mathematical operations on encrypted data that will be reflected upon decryption.
An example would be addition: let’s say you have numbers $x$ and $y$ that are encrypted into $E_x$ and $E_y$. If we are using a homomorphic system, then the decryption of ($E_x+E_y$) is equal to $x+y$.
This means we can perform operations on data without having to decrypt it as an intermediate step! However, most homomorphic encryption schemes are extremely computationally expensive, which brings us to the elephant in the room…
Nillion’s MPC Protocol
Nillion has it’s own language, Nada, which is used to build programs that leverage blind computation on their network. But just how much can we actually build with it?
MPC is computationally expensive and hard to implement, so although Nillion supposedly has it’s own somewhat novel MPC protocol, this brings up two questions: how legit is their protocol and how practical is it to even perform MPC?
Do I even need MPC? Let’s dive in!