Me gustaría implementar un método de autodestrucción para un contrato inteligente que reúna el dinero de las personas como último recurso.
Antes de llamar a la autodestrucción, me gustaría reembolsar todo el dinero a los usuarios y enviar lo que quede a la dirección del propietario.
Estoy pensando en algo a lo largo de las líneas de
uint256 usersLength = users.length;
for (var i = 0; i < usersLength; i++ ) {
address user = users[i];
uint256 refundAmount = pooledMoney[user];
user.transfer(refundAmount);
)
selfdestruct(owner);
Estoy un poco preocupado por lo que sucedería si el tamaño de la users
matriz es muy grande, ¿se quedará sin combustible el método dentro del circuito?
Si es así, ¿cuáles son las soluciones alternativas para implementar algo como esto?
Sí, la transacción se quedará sin gas si la matriz de usuarios es demasiado grande.
La alternativa es que cada usuario recupere su parte de la reserva.
function withdraw() public {
uint refundAmount = pooledMoney[msg.sender];
if (refundAmount > 0) {
pooledMoney[msg.sender] = 0;
msg.sender.transfer(refundAmount);
emit Refunded(msg.sender, refundAmount);
}
}
Después de que todos los usuarios hayan retirado su éter, el propietario puede destruir el contrato.
criptomoneda