Contract-Development
管理契約開發中不可預見的變化
我在這裡閱讀:
集中管理員
預設情況下,所有 dapp 都是完全去中心化的,但這並不意味著它們不能擁有某種中央管理器,如果你想要的話。也許您想要鑄造更多硬幣的能力,也許您想要禁止某些人使用您的貨幣。您可以添加這些功能中的任何一個,但問題是您只能在開始時添加它們,因此所有代幣持有者在決定擁有遊戲規則之前總是會確切地知道遊戲規則。
(強調我的)
當您啟動 dapp 時,管理您未預見到的更改的最佳實踐是什麼?比如,假設你只發出1000個東西,後來發現一個bug,需要增加到1500個,你怎麼處理?
我看到此文件繼續說明…
中央鑄幣廠
假設您希望流通中的硬幣數量發生變化。
但是假設您沒有“只在開頭添加它們”。現在怎麼辦?這與上述陳述有何關係,您如何管理這些變化?
基本思想是您的契約必須支持您將來可能要進行的所有更改。因此,如果您有一些靜態數字並且沒有更改它的功能,它將始終保持不變。因此,如果您有將來可能想要更改的數字,請添加功能來更改它們。
但是,這並不一定意味著您必須明確知道將來要更改哪些部分。這是因為所謂的可升級契約(例如參見https://medium.com/quillhash/how-to-write-upgradable-smart-contracts-in-solidity-d8f1b95a0e9a)。可升級合約只是一種設計技巧/模式,但如果你想使用這種模式,你必須在一開始就添加對它們的支持。
如果您留下的契約不適合您的目的,並且您無法擴展/修改它以適合您的目的,您唯一的選擇是編寫新契約並以某種方式遷移每個人以使用新契約。根據契約的類型,這可能是不可能的和微不足道的。