coinbase / smart-wallet

MIT License
284 stars 54 forks source link

Request/Discuss: Weighted Signers #21

Closed kamescg closed 5 months ago

kamescg commented 5 months ago

Today most smart accounts implementations treat every signer as equal, which generally makes sense for multi-sigs where each user is expected to be an unique individual and wants equal signing rights.

But I question that design constraint as it relates smart accounts, which are designed for a single person to use across multiple environments and contexts.

For example the Light smart account implementation by @shunkakinoki includes the ability to add weights to each signer.

https://light.so/0xFbd80Fe5cE1ECe895845Fd131bd621e2B6A1345F/owners

image

The weights give certain accounts increased/decreased permissions when it comes to authorizing transactions.

For example if the smart account has a threshold of 2/N it would require two accounts with a weight of 1 or a single account with a weight of 2 to authorize a transaction.

I think this starts to get especially interesting especially when you assign "transaction rules" around different signing thresholds and account weights.

For example maybe there is a spending limit of 1,000 USDC every 14 days for accounts with a weight of 1 and thus don't require additional signatures to confirm the transaction, but for any transaction that moving 1,000+ USDC it would require a signature from multiple accounts.

tl;dr

Having equally weighted signers in a multi-sig is a popular approach for smart accounts today. But it's worth questioning if that design constraint is worth keeping as move into the era of smart account for individuals.

wilsoncusack commented 5 months ago

Thanks for this! Our goal with multiple signers was to make it easy for a user to control the same account across devices and in different contexts. I think I would implement a weighted signer at the periphery: have an owner that is itself a contract that has this logic.

kamescg commented 5 months ago

That makes sense. Could definitely see that working easily with a periphery account and handling the core logic there.

wilsoncusack commented 5 months ago

Going to close this for now, as I am not sure we'll ever take on in the core. Thank you!