The contract wallet we're developing allows users to utilize the same wallet addresses across multiple chains. Additionally, users can add or remove devices from their wallets as required. This presents a challenge regarding the synchronization of ownership over various chains.
To mitigate this, we've developed an individualized Proof of Authority (PoA) blockchain for each user that we've named 'Keychains'. These Keychains are lazily relayed across multiple chains, maintaining the sync. Every block in a Keychain encapsulates modifications of ownership, and the owners are determined by the preceding blocks.
Each user has a genesis block dictating their initial state. The hash of this genesis block serves to determine the user's wallet address. This mechanism ensures deterministic ownership for chains that are not yet deployed.
The system abstracts owners into two roles: 'Guardians' and 'Controllers'. Each signer has a numerical representation of their guardian authority and controller authority.
The initial state includes the public address of a two-factor authentication (2FA) attestee as a guardian and the user's local public key as a controller.
Certain actions require one or more signatures whose collective sum of authority exceeds the action-specific value of controller and guardian authority.
Similarly, each new block in a Keychain needs to be accompanied by signatures with sufficient authority. This ensures the sovereignty of the user over their Keychains.
Through this structure, the contract wallet balances the demands of cross-chain synchronization, user device flexibility, and user sovereignty, all while maintaining a secure and robust framework.