Aleo presents the development of private applications for the blockchain
Zero-knowledge (zk) proofs are gaining traction in the blockchain space as a solution to a variety of different challenges. The concept has been around for some time in the field of cryptography, leading to the 1985 paper, The knowledge complexity of interactive proof systems. Until recently, practical use cases were limited due to computational complexity.
Zcash has built a digital currency and transaction protocol leveraging evidence zk as a means of keeping transaction details private when two parties engage in commerce. This addresses one of the challenges of using blockchain for transactions, where you may not want everyone on the planet to know who you paid and how much you paid them – just like the majority people wouldn’t share similar information from their bank account publicly either.
Layer 2 blockchains compatible with the Ethereum virtual machine, such as Polygon, are zk-Rollups implementation, which are essentially a large batch of transactions aggregated by the layer 2 blockchain and presented to the Ethereum blockchain with zero-knowledge proof that validates their authenticity. This results in fewer Ethereum transactions, which in turn leads to higher throughput and lower gas fees for interacting with the Ethereum blockchain.
Aleoa layer 1 blockchain, expands on these concepts to create an ecosystem for building decentralized applications for use cases where you may want some of the performance benefits of zk rollups, coupled with the notion that some aspects of blockchain transactions benefit from maintaining a level of confidentiality.
Why dApps need privacy
One of the frequently touted aspects of blockchain technology is the public nature of all transactions. There are use cases, like the zcash example of maintaining some level of banking privacy, where fully public transaction data isn’t ideal. In an interview with The New Stack, Howard Wu, co-founder and CEO of Aleo, said, “There is a wide range of verticals where Web3 lacks privacy. It’s not because we have to lock it down, it’s because many applications require some kind of information asymmetry or knowledge hiding to function properly.
An example given by Wu is the use of a blockchain for a poker game. “A dealer can pass cards to seven or eight other players and request a check or bet from each player,” he said. “Each player can produce a zero-knowledge proof that follows each previous player and weaves it into a single transaction that is then broadcast on the chain, playing one round of the game, then moving on to the next round.” All of this happens without individual players knowing who is holding which cards.
Other real-world applications rely on a combination of public and private state. What Aleo provides is a way for developers to make implementation decisions about what information is made public versus what information remains private. Voting is another practical use case that requires this flexibility. Wu said, “In elections, people want to vote, but they don’t want to show others how they voted. The vote count must be public to understand the result. Having private votes and public tallies ends up being a capable feature in the apps here.
Smarter people than me can probably figure out if there are other risks to activating a blockchain-enabled voting process, but in low-stakes decision-making, like DAO voting, I can definitely see how it could be useful.
From the developer’s implementation perspective, all items designated as private are encrypted. Zero-knowledge proof is what is used to prove that a user is encrypting data with their public address, which means it is verifiable that the person taking the action is who they say they are, but the public address is encrypted, so it is not visible. on chain. The zero-knowledge proof is ultimately what attests to the encryption algorithm, the decryption algorithm, and the logic running under the hood.
Writing Aleo dApps with Leo
One of the unique aspects of Aleo’s approach to dApp development is the Leo programming language that comes with it. In my interview with Wu, I suggested that adding another programming language to the blockchain space could be detrimental to adoption. “When we started,” he replied, “we wanted to lock this in to Rust or Typescript so we didn’t have to reinvent the wheel. It turns out that’s really hard to do, because things that you might think would be cheap in a programming model are very expensive in that model.We ended up building a new language because under the hood what the compiler does is very different from the traditional architecture.
What exactly differentiates Leo from Rust or Typescript? “What we have is a high-level language that gets compiled into polynomials that run inside a proof system,” he said. “The proof system works on polynomials to give you the end result. The final output looks like the output of a normal processor, but it comes with zero-knowledge proof that can attest to the fact that the computation was executed from a specific program on some hidden inputs that could also be public at the discretion of the user. This is the fundamental difference in architecture.
“If you’re using LLVM for Rust or C++,” he continued, “you basically have to break away from the LLVM architecture and invent a new architecture. The challenge is [that] syntax that you normally assume to be cheap on the high-level language ends up being very expensive.
You can see the example syntax for determining which values are public or private in Leo below.
One of the ways Aleo attempts to overcome the friction associated with implementing a new programming language is to make parcel management a central part of the design of the Aleo ecosystem. When developers build for Ethereum, each time an ERC-20 token is deployed, the SafeMath contract is also deployed. Aleo allows you to reference packages instead of reusing them each time in your code. As Wu says, “The goal is to build an ecosystem of packages where you can start writing code glue instead of reinventing functions that have been written before.
Aleo is currently on its third testnet, with a mainnet release to follow after the endgame of the testnet ends in October. Howard Wu also recently posted a list of additional Aleo resources on GitHub. While zk proofs fundamentally change blockchain technology, they also find their way into non-blockchain applications. In May 2021, Cloudflare implemented zk proofs in its Privacy Pass to reduce the number of times an individual might need to complete a captcha.