Solidity

更新多個複製合約

  • June 25, 2021

一個快速的問題:如果一個合約工廠通過複製生成了很多合約,並且希望在所有這些複製的合約中更新一個參數,那麼實現這一目標的最佳方法是什麼?假設所有此類合約都可以使用 setter。一個好的措施是低gas成本,易於實施和快速執行。

還要添加一個約束:生成的契約不屬於我,也不屬於任何已知的個人。他們在野外。

如果您正在使用現有合約,除了分批發送這些更新以節省交易費用成本之外,您無能為力。

但是,如果您從頭開始部署新的代理合約,那麼您可以使用一個單獨的合約來保存您希望更新的設置。代理合約將從該合約中查找它們的設置,這將允許通過一次寫入更新所有合約的設置。

例如:

contract Settings(){
 uint256 public fooValue = 1;

 function setFooValue(uint256 x){
   fooValue = x;
 }
}

contract MyContract(){
 settings Settings = Settings(0x1234...)
 
 function doSomething() public {
   uint256 foo = settings.fooValue()
 }
}

通過呼叫settings.setFooValue(19),我可以更改所有已部署的合約,成本僅為 25,000 gas,即使有數万個已部署的合約。

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