Possible account functionality brainstorm
I’m gathering a list of things that an account could do, that somebody might find useful.
The list below is not ordered or prioritised in any way. Some ideas might only be marginally useful. Please post ideas and suggestions in the comments, and I’ll update this list with the ideas posted.
-
Safe mode that prevents ETH and ERC20 tokens from being sent anywhere other than the multisig owners
-
Sweep: enable the transfer of all assets in a wallet to a new owner in one sweep without revealing private keys.
-
Cosigner: a variant of MultiSig where exactly two signatures are required. Could be employed for implementing further functionality via another contract that acts as a cosigner.
-
Contract as a signer: in multi-sig, one or more of the signing parties can be another contract.
-
Multisig: require X out of Y owners to sign a transaction before it executes.
-
Multisig off chain signing: signatures computed off-chain and supplied as data for a single transaction. Advantage is less gas cost because only a single transaction is needed, disadvantage is the effort required to coordinate the off-chain signature computation.
-
Social recovery (user benefit: recovering without a seed phrase) https://discuss.status.im/t/account-recovery-use-cases-social-recovery-and-dead-mans-switch/1797
-
Dead man’s switch recovery: (user benefit: recovering without a seed phrase) If an account has no activity for X time, then anyone who controls one of a whitelisted group of addresses can start the dead man’s switch recovery process. After Y time, if the account has still seen no activity, then the account funds are distributed to an address or set of addresses. Any account activity (e.g. if the account being recovered signs one transaction) cancels the dead man’s switch recovery process.
-
Third party control: a central authority retains complete control over the wallet, in addition to the day to day user. Possible usecase in retail or enterprise settings where an employee may be delegated control of a wallet, but the corporate entity needs to retain overall control of the wallet so that for example the wallet can be drained by the corporation if the employee is fired.
-
Forwarding wallets: additional addresses for receiving assets that are transferred to a main wallet. Not sure why this would be useful??
-
Privacy account: all deposits to the privacy account are sent to a mixer like tornado cash, wallet only stores mixer receipts. Sending funds from a privacy account involves the wallet sending deposit receipt(s) and the destination address to the mixer contract so that the mixer contract can send the actual funds to the destination using a gas relayer. Note mixer receipts will be denominated in set amounts e.g. 0.1 ETH, 1 ETH, 5 ETH, 10 ETH, etc… and the User and/or the wallet would need to determine what denominations to be stored and used. This has a gas cost versus utility tradeoff.
-
Flexible transactions: the wallet is able to execute arbitrary calls after adequate authorization
-
Time based limits: e.g. daily or monthly limits which additional authorisation is required to exceed
-
Time locking: some funds can’t be moved until after X date. One usecase is vesting periods
-
Paused mode: functionality to enable a wallet to be put into a ‘paused mode’ e.g. a temporary lock on outgoing transfers. Usecase: 3rd party could pause a wallet if it’s owner was kidnapped, both owner and 3rd party would be required to sign any outgoing transactions until the wallet was taken out of ‘paused mode’ (by both the owner and 3rd party signing)
-
Updatable wallet: enable User to switch to a newer version of the wallet contract.
-
User has fine grained control over what account info to expose to dapp: See EIP-1102 https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1102.md
-
Auto asset forwarding: wallet can automatically forward funds according to a set of rules e.g. whenever SNT is received into this wallet forward to address W, or as long as wallet ETH balance is greater than X, forward Y amount of funds each month to address Z. Basically easy fund transfer scripting for folks who don’t want to program smart contracts. Perhaps using something like the MakeCode interface combined with https://atomic.ninja/ ?
-
Destroy function: makes the wallet permanently inaccessible, all funds in the wallet and all funds sent to the wallet after the destroy function is called are lost. Interesting history of destroy function from griffgreen here Could possibly be used in combination with Status Panic Lock
-
Hardware key support
-
Cooling off period: transactions over say X amount in an hour or day are not sent immediately, rather they are queued to be sent after a time delay. During this cooling off period the User can cancel transactions they have already “sent”.
-
Advanced token support: Require the recipient to provide particular functions that are called before the actual transfer of the token
-
Exchange integration (user benefit: being able to exchange assets easily) Allow the user to exchange tokens inside their wallet or when conducting a transfer e.g. the User could send 1000SNT and the reciepient could recieve the value of 1000SNT in ETH. Useful for Keycard Cash when a Merchant might be requesting payment in say DAI and the User only has say SNT in their Keycard Cash account. Or to enable a user to make a small SNT purchase (say a sticker or a name) when they only have ETH.
-
Improved NFT support user benefit: a more visual way to showcase collectibles and support for a wider range of collectibles
-
token value trends being able to easily see how much any token’s value has changed. e.g. 24h up or down, 7day up or down, mini trend graph, etc…
-
super hot account An account for microtransactions that would allow the User to make low value transaction from without any authorization e.g. for functionality like SNT reactions. Account would only store a very low value of tokens e.g. $1 or $2 worth in total. Also perhaps max transaction value without authorization?. User would be prompted to top up the wallet when the funds run low, the top up would require authentication. Requires L2 to be viable due to L1 transaction costs.
-
track DeFi investments from inside wallet An easier way for Users to get an overview of how all their DeFi investments are performing without leaving their wallet. Could dapp notifications through a chat API be part of a solution?
-
MultiSend transactions a mechanism to enable a User to send tokens to different Ethereum addresses in a single transaction. Use cases include airdrops. See https://multisender.app/ for an example implementation
-
Balancer Pool integration so that your multisig/dao can act as a Balancer pool earning fees, and auto balancing it’s assets according to a specific set of holdings… what would be great of course is to make it easy to changes the % holdings at any time without having to completely redeploy the wallet.
This could important functionality for a multicoin future where Users decide what currencies they want to hold and at what %ages… and then Users can just spend as they need and the wallet will be smart and converts tokens into what the vender wants and then magically the market pays you to rebalance your holdings!
Imagine a world where every app, community, every store, every workplace, (every person!) had their own token economy and then they could hold the tokens they cared about in their reserve but frictionlessly exchange their tokens as needed to interact in the multieconomic system…