この投稿では、Smart contract walletを他のチェーンでもシームレスに利用するためにどのような課題があり、その解決策について探る。特に今回はEthereumとL2・L3のEthereumエコシステムに限定する。
また具体例として、私たちのプロトコルであるFutabaとSmart contract walletのプロトコルであるSafeを組み合わせたCross-chain Safeの提案する。
Table of contents
Smart contract walletの機能
- Walletの作成
- Contract walletを作成する場合はCREATE2を使用して新しいContractをデプロイする場合が多い
- Control wallet (≒keystore contractの修正)
- Ownerのアドレスや検証鍵の管理を行うことを指し、ソーシャルリカバリーのようなキーを変更するためのルール
- トランザクションの実行
- トランザクションはガスレスのためにユーザーは署名してRelayerやBundlerが実行することが多い
- コントラクト内で署名の検証が行われたのちにトランザクションの中身が実行される
Problems with cross-chain (multichain) smart contract wallet
Cross-chain (Multichain) smart contract walletにおける問題は大きく分けて3つある。
- それぞれのチェーンで異なるアドレスのアカウントを生成されてしまう
- アカウント作成をそれぞれのチェーンで行う必要がある
- それぞれのsmart contract walletでkeystoreの設定を行う必要がある
Each chain generates an account with a different address
現在ではそれぞれのチェーンでContract walletを作成する場合、Contractのアドレスがそれぞれ異なっってしまう。
これはEOAが同じアドレスで複数のチェーンで使用できるという現在のUXよりも低いものになってしまう。これによって同じOwnerであるにも関わらずアセットをBridgeする際にdestination chainのアドレスを別途指定する必要がある。
Each chain must create an account