Inspiration
Airdrops are becoming more and more popular for bootstrapping a userbase for protocols. This proved especially helpful for EVM projects such as Uniswap and 1inch, who started using merkle distributors as early as 2020. We noticed that projects on NEAR lagged behind on adopting this technique. Additionally, since their use by Uniswap, merkle distributors didn't receive notable improvements in regard to their efficiency or guarantees. In a trustless idealistic world, we see this technique playing a central role in distributing assets at a large scale, from stimulus checques to charitable aids...
What it does
No Cap Drop allows anyone to mass-distribute assets. We focus on scalability and optimize for storage space and gas. All distributions take place on the same smart contract, and we make use of Zero-Knowledge proofs to offer guarantees to and about recipients, like availability of enough funds to cover all claims, or verifying special properties about recipients, for example, the technique can be used to verify if all recipients belong (or not) to a list, or whether the accounts are created by a certain factory), all without getting the full list of participants. Only the merkle root hash (constant size storage) and a ZK Proof are supplied to start a distribution.
How we built it
The project is written mostly in Rust, even on the client side (with WASM) to generate the Merkle tree, due to its superior performance, especially in hashing. For ZK Proofs, we went with RISC0, a zkVM (based on RISC V) that can be efficiently verified on (native) NEAR contracts. Each person in our team assumed responsibility of the part that he's more comfortable with, but we still found ourselves communicating, exchanging and discussing ideas most of the time. The project has a Frontend, a smart contract and a backend API (to generate ZK proofs).
Challenges we ran into
From a time perspective this project posed as a challenge for a three-devs team. Unforeseen difficulties and bugs led to us sacrificing sleep. From a technical perspective, we struggled with the no_std environment of rust, as it only offers a very restrictive set of data structures and dependencies.
Accomplishments that we're proud of
By building this project we proved to ourselves that we are capable of putting together a functional DApp in less than 48h. Much of this stemmed from our good communication and pair-programming at times. We did put in a lot of focus and determination and it was satisfying at the end.
What we learned
On the Technology side, we learned a lot about running Rust as WASM in the browser, and also in the more limited no-std environments like RISC0's prover. On the organizational side we learned a lot about planning, communication and time management. It was also very refreshing to see how welcoming, friendly, patient and helpful the rest of the community were.
What's next for No Cap Drop
The current version of No Cap Drop has limited and basic functionality. We can get some considerable performance gains in the prover and verifier by integrating RISC0's and NEAR runtime's implementation of some functions. We also have a lot to improve when it comes to UI/UX.
Built With
- ipfs
- javascript
- react
- risc0
- rust
- typescript
- wasm

Log in or sign up for Devpost to join the conversation.