Plumo Demo and Brainstorm

At CeloConnect, I demoed a version of celowallet.app that used Plumo zk-SNARK proofs to sync with the chain and fetch a user’s balances in a trustless manner using merkle proofs. Huge shout out to @kobigurk and @jmrossy for working so hard ahead of CeloConnect to make this demo a reality. You can view this demo by going to this page (note the /balances path in the URL):

The demo uses a new WASM library that lets you verify plumo proofs cheaply, even inside a web application. Verifying these proofs lets you quickly validate the current epoch’s validator set, which then lets you verify the latest header. This subsequently lets you download any storage state from arbitrary full nodes on the network using the LES protocol and accompanying merkle proofs that you can verify easily. The end result is that you can built a web application that can trustlessly fetch and verify any chain state. By deploying your web app to IPFS, you can now build fully unstoppable decentralized web applications (no trusted RCP node required!). This is a complete first in the broader crypto space.

Now that the WASM library is live, I wanted to start a conversation around what exciting unstoppable dapps we can build that leverage this. The library doesn’t yet have a copy of the EVM, so it’s not possible to call arbitrary view functions just yet, though it is quite easy to query specific state at specific addresses (e.g. a user’s token balance). What unstoppable web app would you like to see built? Here are some super easy ideas just to get the juices flowing:

  • Unstoppable clock
  • Unstoppable randomness (using Celo’s on-chain randomness beacon)
  • Unstoppable wallet
  • Unstoppable your idea (let’s brainstorm together below)!

PS You can learn more about the Plumo launch from @kobigurk’s awesome tweet thread here:

6 Likes

The library doesn’t yet have a copy of the EVM, so it’s not possible to call arbitrary view functions just yet, though it is quite easy to query specific state at specific addresses (e.g. a user’s token balance).

Does this allow the WASM library to forward eth_call RPC to full node directly from the browser?

If it can make the browser into a light client, then I’d build a stock ticker wall web-app that uses this instead of a RPC node / server backend to constantly show the true market price of all tokens trading on CELO network DEXs.

1 Like

Calling eth_call would need an EVM running in the web app, which is something we are investigating.

For now, you can query specific storage entries and fetch and verify merkle proofs about the validity of that data.

Thanks @marek for this!

Could you give some big-picture/lay context on this? For example:

1. Does Plumo work for a lightweight App on an old phone? I heard plumo itself is quite heavy to download - is that true? If so, can that be addressed?

2. Is there a plan to use Plumo for Valora? Why or why not? [Does this even make sense as a question]?

3. Could I use Plumo instead of forno (or infura/alchemy etc.) as a node to power something like Trelis.com payment checks? Why would this be a good or bad idea?

1 Like