0

My contract is controlled by owner(s) who can decide to discharge the money from it. The owner also can assign another owner, set spending limits, etc.

Should the contract have one or several owners? If there is several owners, each owner could be able to do anything, including assigning another owner's right.

As a side note, it is likely that my contract would be controlled by another contracts, who would for example provide voting facility. There could be several voters, but only one voting comittee consisting of several voters. So, I assume it is enough to have only one owner, because it seems to make no sense to have several comittees for one contract. Good assumption?

2

Your use case seems similar to using a DAO (a distributed autonomous organization), a method for providing cooperative control of an Ethereum account / funds by members who can vote on proposals weighted by their reputation.

A DAO could be the owner of your contract and would let you have multiple owners who vote on every transaction, and also remove a central point of failure with a single owner. You would want a DAO that supports "meta-transactions" for this purpose.

1

The best will be to keep one owner as this just helps with the logic and control of the contract in this case.

Note that if you decide on having multiple owners, you can specify which owner can control which function, for example you just assign each different owner as a different modifier and then just add that modifier next to a specific function that you want only that owner to control.

eg. Declare a modifier ownerOnly1 for the 1st owner as such:

modifier ownerOnly1() {
         require(msg.sender == owner1);
        _;   

Then with a function that only 'owner1' can control you declare as such:

function add(uint _anything) ownerOnly1 public {
    "insert something here";
}

Thus, if you would like just owner one to be able to change other owners' info or whatever, just assign his/her modifier to that function that performs that task. You can then create owner2, owner3 etc. and assign them to their own functions by creating their own individual modifiers.

Your assumption can go both ways. Only one owner leads to central control on what happens to the votes, but for something like this it will work good enough imo.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.