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?
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.
usuario3078335