Contract-Design
一個或多個所有者?
我的契約由業主控制,業主可以決定從中提取資金。所有者還可以分配另一個所有者,設置支出限額等。
契約應該有一個還是多個所有者?如果有多個所有者,每個所有者都可以做任何事情,包括分配另一個所有者的權利。
附帶說明一下,我的合約很可能會由另一個合約控制,例如提供投票設施。可以有幾個選民,但只有一個由幾個選民組成的投票委員會。所以,我認為只有一個所有者就足夠了,因為一份契約有幾個委員會似乎沒有意義。好的假設?
您的案例似乎類似於使用 DAO(分佈式自治組織),這是一種由成員提供對乙太坊賬戶/資金的協作控制的方法,成員可以根據其聲譽對提案進行投票。
DAO 可以是你的合約的所有者,並且可以讓你有多個所有者對每筆交易進行投票,並且還可以消除單個所有者的中心故障點。為此,您需要一個支持“元事務”的 DAO。
最好的辦法是保留一個所有者,因為在這種情況下,這有助於契約的邏輯和控制。
請注意,如果您決定擁有多個所有者,則可以指定哪個所有者可以控制哪個功能,例如,您只需將每個不同的所有者分配為不同的修飾符,然後將該修飾符添加到您只希望該所有者使用的特定功能旁邊控制。
例如。為第一個所有者聲明一個修飾符 ownerOnly1,如下所示:
modifier ownerOnly1() { require(msg.sender == owner1); _;
然後使用只有 ‘owner1’ 可以控制的函式,您可以這樣聲明:
function add(uint _anything) ownerOnly1 public { "insert something here"; }
因此,如果您希望只有一個所有者能夠更改其他所有者的資訊或其他任何內容,只需將他/她的修飾符分配給執行該任務的功能即可。然後,您可以創建 owner2、owner3 等,並通過創建自己的單獨修飾符將它們分配給自己的功能。
你的假設可以是雙向的。只有一個所有者可以集中控制投票的結果,但對於這樣的事情,它會在 imo 中執行得足夠好。