Solidity

使所有所有者功能多重簽名

  • November 3, 2022

我有一個具有各種所有者功能的智能合約,例如:

function transferOwnership(address newOwner) public virtual onlyOwner {
       require(newOwner != address(0), "Ownable: new owner is the zero address");
       _setOwner(newOwner);
   }
function pause() public onlyOwner {_pause();}
 
function unpause() public onlyOwner {_unpause();}

...

將我的所有所有者功能轉換為多重簽名的最乾淨的方法是什麼?我應該使用任何標準模板嗎?

我是否需要為每個功能創建一個多重簽名工廠並實例化一個新的多重簽名錢包?

我建議使用一個onlyWallet()修飾符,它控制只有在發送地址是多重簽名合約本身的情況下才能執行其他簽名函式。

看:

https://johannlilly.medium.com/how-to-execute-functions-from-other-contracts-with-a-multisig-wallet-8b9b5ab0f680(訪問此處討論的 onlyWallet() 修飾符)

https://github.com/gnosis/MultiSigWallet/blob/master/contracts/MultiSigWallet.sol

您還可以將此範例用作創建多重簽名錢包的參考:

https://solidity-by-example.org/app/multi-sig-wallet/

您可以按原樣保留契約。使用 將您的多重簽名的地址設置為所有者transferOwnership,然後onlyOwner應該通過executeTransaction在您的多重簽名中呼叫這些方法(如 Gnosis Safe 所示)。您可以通過 Web/Etherscan 使用Rabby或通過 CLI 或通過 API 使用0xweb正常執行此操作

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