Scaling and Securing Blockchain Technology

Over the past 12 Sunday mornings, I attended a Cryptography and Complexity course at the Technion, the Israeli MIT equivalence, delivered by cryptography professor Yuval Ishai, an old friend and one of the smartest people I know. I graduated from this same institute back in 1996 with a bachelor degree in computer science. Going back to school, even if only for a short while, without the pressure of homework, exams and sport classes, and equipped with a clear and focused mission, has been a refreshing experience that I recommend anyone to try.

Why am I learning cryptography now? What can be so important? Let me explain. Cryptography has always been an important topic throughout history. Julius Caesar used a simple letter replacement code when sending commands to his troops. Allen Turing almost single-handedly helped the allies defeat Nazi Germany during WWII by breaking the codes produced by the Enigma encryption machine. The American navy surprised the Imperial Japanese fleet at Midway based on an educated guess and the deciphered text of their communications.

The advancement of the internet and specifically blockchain technology, has made cryptography all the more important. Recent advancements in this field are mind boggling.

Zero Knowledge Proofs (ZKP) can prove that some claim is true without revealing what this claim is. A strong tool to protect your privacy.

Homomorphic Encryption lets you run a computation on encrypted data without decrypting it first. Sounds like science fiction right?

Secure Multiparty Computation allows parties to jointly compute a solution over their private inputs without revealing those inputs to each other.

All these technologies are available now. I wanted to know if we can use some of these wonderful tools to continue to improve Ardor and the newly released lightweight contracts to continue our journey to make blockchain technology accessible and mainstream.

How can we use these technologies? Here are several examples:

Trusted Contract Execution

As you recall from my previous articles and talks about lightweight contracts, our contracts are executed by a single node. How can you trust that this node actually executed the contract correctly? We do have some good solutions for this now, but these are off-blockchain solutions, which require parties to take another verification step. Can we use advanced cryptography to improve on this?

What if a contract runner could submit the transactions created by running the contract, together with a digital signature which proves to all other nodes that the contract runner has indeed run the exact contract code on the given contract input?

Blockchain Scaling

Existing blockchain nodes perform a lot of extra computations to increase trust. For example, when a new block is forged and submitted to the network, each node that receives this new block has to re-validate all transactions stored in the block - a time consuming operation. What if we could streamline this validation process by attaching a cryptographic proof to each block that is easier to re-validate?

Confidential Tokens

What if instead of storing token balances on the blockchain we will just save a proof of the token balance on the blockchain while each user keeps the information about their token balance to themselves?

Secure Voting

Our existing voting system allows anyone to track the voting progress before the poll is over and match an account with its vote. Can we use cryptography to support secure voting?

All these features can be implemented today using a combination of the advanced cryptographic tools described above. However, the technologies in their current state are still complex and hard to access. The time I spent learning cryptography enables me now to fully understand the potential of these tools.

In my upcoming blog posts, I will delve more deeply into cryptographic tools and explain how they can be integrated into Jelurida’s blockchain solutions.