Обновление содержимого смарт-контракта

У меня есть смарт-контракт. Я хочу обновлять содержимое (список имен) этого контракта, скажем, каждые 5 минут. Имена меняются после этого установленного времени. Мой подход состоит в том, чтобы создать экземпляр этого контракта (новый адрес), а затем написать новый набор имен. Однако я чувствую, что это неэффективно. Можно ли обновлять вещи без изменения адреса или создания нового экземпляра? Есть лучший способ сделать это?

Ответы (1)

в вашем контракте определите сеттер:

pragma solidity ^0.4.24;

contract Names {

 string[] names;

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

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

и в вашем интерфейсе скажем, используя javascript через каждые 5 минут, когда вы вызываете функцию 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);
                        }
                });

таким образом, вы продолжаете взаимодействовать с одним и тем же экземпляром контракта, не платя больше газа за развертывание нового экземпляра.

Спасибо. это было действительно полезно. Я довольно новичок в солидности.