project screenshot 1
project screenshot 2
project screenshot 3

sunflower

Trustlessly use L1 multisig owners to sign txs on L2 using zk proofs

sunflower

Created At

ETHGlobal Paris

Winner of

trophy

🏦 Safe — 🥈 Safe{Core} Protocol

Project Description

Various people use multisigs to personally/professionally manage funds/access control. However, in the case of multi-chain use cases, the UX is not very great.

For instance, a popular platform Gnosis Safe has these downsides:

  • no direct way from UI to deploy a multi-sig on the same address on other networks, though there is a hacky way reserved for advanced users (replaying creation tx). I believe this is intentional because...
  • multi-sigs deployed by the same user, on the same address, and on different chains are treated as a completely independent multi-sig since there is no link.
  • there is friction for multi-sig user groups to expand to other chains since they have to create multi-sig and then also keep updating their multi-sig everywhere in case they decide to add someone to their group of owners or have to let someone go.

An ideal UX could be: to create multi-sig once and get access everywhere.

A trivial solution is to just use one of the many available messaging layers that involve some trust assumptions. But this reduces the security of multi-sig to a minimum of multi-sig owners clashing and messaging layer security. Often messaging layers are some form of multi-sigs.

With trustlessness as the primary goal, I have prepared a PoC which demonstrates a use case in which we can read L1's data on L2 using zk state proofs.

This project is a Gnosis Safe plugin that is used by a multi-sig on L2 to inherit ownership of a multi-sig on L1. The demo includes a transaction that is done through a multi-sig on Optimism Mainnet by the owners of a multi-sig on Ethereum Mainnet.

How it's Made

The Optimism L2 has a precompile which gives access to L1's block hash. This allows access to the execution details of L1. However, doing MPT proofs + RLP can be costly in terms of computation and call data size. Hence, in this hack, I am using open-source code developed by the Axiom team, along with some modifications to provide a zk proof of storage slots given a block hash.

Technologies used:

  • Rust
  • Solidity
  • axiom-eth repository
  • Safe Core Protocol
background image mobile

Join the mailing list

Get the latest news and updates