Solidity
更新智能合約內容
我有一個智能合約。我想每 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); } });
所以你保持與同一個合約實例的互動,避免你為部署新實例支付更多的氣體。