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



Problem Statement
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.
Solution
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:RustSolidityaxiom-eth repositorySafe Core Protocol