Contract-Design

從多重簽名錢包部署合約

  • August 6, 2019

我使用 Mist 創建了一個多重簽名錢包,但不知道如何從錢包地址部署合約。甚至可能嗎?如果是這樣,該怎麼做?

只要多簽合約可以呼叫其他合約中的任意函式,就可以使用多簽錢包。

由於大多數多重簽名本身無法創建合約,因此需要幫助。可以首先手動部署“工廠”合約(由任何人/任何人)。它將包括要創建的契約模板和一個功能,例如function deployInstance() .... 多重簽名將能夠呼叫該函式。這通常會導致多重簽名獲得所有者權限。

這將使一次性部署的成本增加一倍,但它會完成它。

值得一提的是,如果最終狀態目標是讓多重簽名擁有所有權,那麼從普通的 EOA 進行部署然後將所有權轉移給多重簽名可能是切實可行的。可轉移性是要部署的合約的屬性,但並非不尋常或不合理。

希望能幫助到你。

這取決於您使用的多重簽名錢包,但很可能不是。

有2種情況:

  • 案例 1:在部署 A 之前,您知道要從智能合約 A 部署的智能合約 B
  • 案例2:你只知道智能合約B部署A,部署A之後

情況1

這是最常見的情況,也是您只能使用 Solidity 的唯一情況。當您編寫智能合約 A 時,您需要在同一個文件中導入 B 或定義 B。在函式中,您可以像這樣創建 B 的實例:

B b = new B()

案例2

在這種情況下,僅靠 Solidity 是不夠的。您需要使用assembly,這是 Solidity 提供的一種逃生艙口,允許您指定要執行的 EVM 操作碼。這是使用 Solidity 的 EVM 最靈活的方式,但它也有風險,因為你可能會自己上吊。

這將是程序:

  1. 將智能合約編譯成字節碼
  2. 將此字節碼作為函式的參數傳遞給智能合約
  3. 在這個函式中,用於assembly呼叫CREATE操作碼,並將字節碼傳遞給它

引用自:https://ethereum.stackexchange.com/questions/9627