Cancelled

JBP-458: Pulque: private Juicebox powered by Aztec

Cycle

63

loading

Synopsis

Fund the development of Pulque, a protocol extension using Aztec, a privacy-focused zk-rollup

Motivation

ConstitutionDAO has been raising funds to bid for the US constitution back in 2021. Unfortunately, it was easily outbid by tradfi sharks, as the amount raised was known well in advance (allowing said sharks to put mortgage on their Hollywood mansions or reprice their retail products).

ConstitutionDAO2 took this as a learning opportunity and, for a second US constitution auction in late 2022, deployed an anonymous way of collecting funds, running on a protocol called Aztec (more precisely Aztec Connect). The underlying implementation was, basically, a (private) multisig which released the fund later on to the Juicebox project (the donators having an anonymous "proof of deposit" to claim their project token).

Since then, Aztec Connect has been sunsetted to the benefit of "just" Aztec, which will be live on testnet soon (see https://docs.aztec.network/about_aztec/roadmap/main). Aztec is now a full zk-rollup (while Aztec Connect was closer to Tornado Cash, as some kind of giant mixer), putting a main focus on providing full anonymity - in other words, more cool stuff can and will be built. One of them should be Pulque (Pulque being the traditional Aztec Juice), the evolution of ConstitutionDAO 2 strategy, offering both Aztec anonymity and Juicebox trustlessness in treasury management.

Specification

Alice wants to use Pulque. She sends an encrypted message, on Ethereum, with a few ETH, to a Pulque Maker contract. This message is then relayed to Aztec where it gets "transformed" into a Juicebox project payment, without anyone being able to figure out what's happening. Afterward, Alice can choose to receive her project token on an address of her choice (ie without anyone linking it with her). From the outside, people only see Alice interacting with the Pulque Maker contract, the rest is gibberish encryption.

There are multiple design choices to make on how a payer token would land on Aztec (ie a non-anonymous Juicebox bridge to Aztec? A more general bridge aggregating multiple protocols? etc) but once on Aztec, correct payer-project allocation must be done trustlessly (unlike the previous multisig) with a possibility to easily bridge back to L1 Juicebox contracts.

This project will need 3 different areas of focus, in 3 different languages:

  • L1: the contract(s) on Ethereum acting as bridge to Aztec (Solidity)
  • Aztec: the contracts managing the (anonymous) funds and interactions with L1 Juicebox protocol (Noir)
  • Client-side execution: Aztec, as other provable system, relies heavily on logic run by the client (in-browser or in a waller extension) (typescript)

This project end-state would be a fully functionnal implementation, including client-side execution, reducing any friction to integrate it in a frontend (the actual frontend or JBM integration is outside the scope of this project though)

Rationale

There are 2 main value propositions:

  • Having a private payment flow is something we needed in the past and had to adopt a third-party solution, we should therefore seize this opportunity to improve it and offer it to any project.
  • Aztec is a nascent ecosystem, which currently gains popularity (Noir, the language used, being the easiest ZK language to learn which leads to some dev traction), this might therefore increase our visibility (grant or partnership requests with Aztec are not out of the picture neither, for another visibility boost).

Risks

On top of obvious contract risk (both Solidity and Noir, the contract language used on Aztec) or underdelivering (mitigated by the milestoned payment), Aztec is a new stack, using Noir, a fairly new domain-specific language, there are therefore a lots of breaking changes in its development (leading to increased coding overhead, as one need to redo stuff quite often).

Aztec is, for now, only usable on a local "sandbox", there is no testnet yet (see https://docs.aztec.network/about\_aztec/roadmap/main), but it might never come and the project would collapse (fairly low risk, as they raised $100m in their latest round including a16z).

Timeline

This is a rough time estimate with related budget. It is not a "roadmap" per se, as some steps might be done in the same time or some other DAO responsabilities might take precedence on Pulque:

  • Design/R&D: 1-2 weeks - $0 (no tangible deliverable)
  • Noir: 2 weeks - $ 8000 (milestone: Aztec-side contracts running in the current local sandbox)
  • Solidity: 2 weeks - $ 8000 (milestone: L1-side contracts and related tests)
  • PXE / client-side execution: 2-3 week - $ 11000 (milestone: E2E test integrating both L1 and L2 side of at least one private project payment)

Milestone funds are to be send to the Pulque project (ID to define) during the FC after its completion