Trustlessly use L1 multisig owners to sign txs on L2 using zk proofs
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:
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.
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: