Solidity

更新智能合約內容

  • July 10, 2018

我有一個智能合約。我想每 5 分鐘更新一次該契約的內容(名稱列表)。在此設定的持續時間後名稱會發生變化。我的方法是創建該契約的一個實例(新地址),然後編寫新的名稱集。然而,我覺得這不是有效的。是否可以在無需更改地址或創建新實例的情況下更新內容?有一個更好的方法嗎?

在您的契約中定義一個 setter :

pragma solidity ^0.4.24;

contract Names {

string[] names;

function setname(uint i, string s)public returns(bool){

    names[i]=s;
    return true;
}
}

並且在您的前端假設每 5 分鐘後使用 javascript 呼叫 setname 函式,如下所示:

elapsed5minutes();
var abi=[//your abi array];
   var contractAddress = "//your contract address";
   var contract = web3.eth.contract(abi).at(contractAddress);
    contract.setname.sendTransaction(3,"Brian",{{from:web3.eth.accounts[0]}},function (error, result){   if(!error){
                           console.log(result);
                       } else{
                           console.log(error);
                       }
               });

所以你保持與同一個合約實例的互動,避免你為部署新實例支付更多的氣體。

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