Inspiration

Over the past few hacker houses, we have encountered countless situations with developers that were not able to receive testnet credits to deploy their programs. Additionally, we noticed a repetition of questions raised by developers regarding testing. As such, the developer experience has not been great. Whenever we shared the idea of us building a testing framework for Aleo, many Aleo developers expressed a strong demand. We think that the absence of a local deployment and testing framework has greatly hindered more privacy applications being built on Aleo.

What it does

It's a testing framework that allows developers to easily spin up a local testnet, deploy the program, write test cases in rust to verify the logic of the program, and wind down the local testnet. Developers can generate accounts programatically, perform transitions and verify the output.

How we built it

As snarkVM and snarkOS were written in rust, it would be optimal for the testing framework to also be in rust. It was built by thoroughly analyzing the snarkVM and snarkOS codebases, and making helper functions to call them.

Challenges we ran into

Not having a full understanding of snarkVM, snarkOS and Leo. We were not sure why snarkVM or snarkOS behaved in a certain way. Most members of the team were not familiar with the Rust programming language, and some of us were still new to Leo.

Accomplishments that we're proud of

The fact that we're able to successfully test both public and private values for a token smart contract is a major accomplishment in itself! We're proud to be able to take the idea from concept to a working minimal viable product in such a short amount of time. The task required a high technical ability that was beyond most of our comfort zones. As far as we know, we are the first to develop a testing framework for Aleo.

What we learned

We have developed a better understanding of how snarkVM, snarkOS and Leo works. We are better able to appreciate the complexity of zero-knowledge virtual machines.

What's next for Leology

  • Develop a minimalistic version of snarkos for testing efficiency. (Consensus mechanism removed to avoid waiting, and only requiring 1 node)
  • Full integration of RPC
  • Integration with Leo (To enable users to run command such as leo test)

Built With

  • figma
  • leo
  • rust
  • snarkos
  • snarkvm
Share this project:

Updates