Actualización del contenido de un contrato inteligente

Tengo un contrato inteligente. Quiero actualizar el contenido (lista de nombres) de ese contrato, digamos cada 5 minutos. Los nombres cambian después de esta duración establecida. Mi enfoque es crear una instancia de ese contrato (nueva dirección) y luego escribir el nuevo conjunto de nombres. Sin embargo, siento que esto no es eficiente. ¿Es posible actualizar cosas sin tener que cambiar la dirección o crear una nueva instancia? ¿Hay una mejor manera de hacer esto?

Respuestas (1)

en su contrato defina un setter:

pragma solidity ^0.4.24;

contract Names {

 string[] names;

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

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

y en su interfaz, digamos que usa javascript después de cada 5 minutos, llama a la función setname de la siguiente manera:

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);
                        }
                });

por lo que mantiene la interacción con la misma instancia de contrato, evitando que pague más gasolina por implementar una nueva instancia.

gracias. esto fue realmente útil. Soy bastante nuevo en solidez.