This project demonstrates a basic use-case where a safe on a Layer2 safe(L2)
inherits its keystore (configuration/security policy: owners
and threshold
) from a Safe on a Layer1 safe(L1)
via a Safe module SafeRemoteKeystoreModule
enabled on safe(L2)
.
This Module can optionally set a guard to prevent safe(L2)
to use its local keystore and only enable the remote keystore of safe(L1)
as valid keystore.
It leverages a precompiled contract called l1sload
to load a storage slot on the L1 chain (see L1SLOAD spec).
yarn install
npx hardhat compile
npx hardhat test
npx hardhat deploy_singletons --network <network>
npx hardhat deploy_safe --network <network> --factory <factory> --mastercopy <mastercopy> --owner <owner>
cd frontend
yarn install
yarn dev
open http://localhost:3000
- Support EIP-712 signature