Contract Standard for co-owning assets

As part of one of my side projects, I have a use case where assets (like ERC20, ERC721, ETH etc) have to be co-owned by multiple people. This involves a group of people managing the assets together in a democratic way. I have created a high level contract standard for these kind of scenarios. But before that wanted to check if there is any existing standard for the same and also wanted to get your opinion whether such a generic standard will be useful for the community?

Waiting for thoughts and suggestions.






1 Like

With this standard, a group of people can easily manage a contract in a secure manner. Eg : if the contract managed by 3 people gets 3 ETH and if they want to distribute it, they can create/approve following action which consists of 3 sub actions

Action :
transfer(address1, total/3)
transfer(address2, total/3)
transfer(address3, total/3)

And the action can be approved/executed in an atomic way after the approval of all the members.
This also can be used for managing other assets like ERC-20, ERC-721, ERC-1155 etc

1 Like

As an extension, we also can have a democratic and secure way to fund the multi party contract.
This is needed when the contract need to buy/possess assets by transferring funds. The funding by multiple people is challenging as today most of it is done based only on trust. The following proposal addresses it in an elegant manner

Proposal

Have an Escrow contract (which is deployed by the multi party contract) to which users can transfer funds.
Once transferred only the user/multi party contract can withdraw funds from the escrow contract

Have a method to withdraw funds in the multi party contract. Then create a funding action like below to fund the contract

Action :
withdraw(address1, 1)
withdraw(address2, 1)

Before this step, the users have to fund the escrow. Once the action is executed the multi party contract gets funded by the escrow in a secure manner

Have created PR for the same : [EIP-3742] - Standard for multi party contract by saurabhsanthosh · Pull Request #3742 · ethereum/EIPs · GitHub</ti
it would be great if someone can just take a look. Thanks :slight_smile: