¿Alguien puede guiarme sobre cómo programar el envío de una transacción una vez que se extrae un número de bloque específico?
Gracias
Podrías ejecutar la siguiente función:
function f( blocknumber, to_address, value_) {
var filter = web3.eth.filter('latest').watch(function(err, blockHash) {
var target=blocknumber;
if(web3.eth.blockNumber==target)
{
filter.stopWatching();
//your function here
web3.eth.sendTransaction({to:to_address, from:web3.eth.coinbase, value: web3.toWei(value_,"ether")});
filter = null;
console.warn('Block reached');
if (callback)
return callback(false);
else
return false;
}
else {
console.log('Waiting the block');
}
});
};
Lo probé en geth (aunque no uso paridad) y funciona perfectamente. tenga cuidado con los métodos síncronos eth_blockNumber
.
Simplemente prográmelo con la interfaz de usuario de la billetera.
Cree cualquier transacción que desee, asegúrese de seleccionar "configuración avanzada" y determine que la condición sea:
Parity retendrá esta transacción hasta que se cumpla la condición. Tenga en cuenta que, para esto, su nodo debe seguir ejecutándose.
Si su pregunta es sobre cómo enviar una transacción usted mismo en cualquier momento después de alcanzar una cierta altura de bloque, entonces puede ejecutar un demonio en ejecución constante en un host que controla, que lo hará de manera programática, como la respuesta de @BadrBelaj.
Si, por otro lado, lo que desea es enviar una transacción a la red ahora y que la red la ejecute automáticamente una vez a una cierta altura de bloque, entonces no puede hacerlo de forma nativa a nivel de Ethereum. Sin embargo, hay contratos inteligentes desplegados ordenadamente, como Ethereum Alarm Clock , que dependen de la multitud para hacer el trabajo "a la manera de Ethereum". Es muy inteligente y tal vez resuelva su caso de uso.
Es bastante fácil de hacer usando Ethereum Alarm Clock , que se implementó en la red principal y desde entonces funciona perfectamente. El 100% de las transacciones se han ejecutado hasta el momento.
Puede programar una transacción para un bloque/tiempo específico de las siguientes maneras:
Ambas formas son igualmente buenas.
Sobre el protocolo en sí: se ha auditado la seguridad. Ya había más de 1000 ETH movidos a través del protocolo.
Ethereum Alarm Clock es descentralizado y automático. Actualmente es la mejor manera de programar una transacción y no está sujeta a los problemas que presentan las soluciones publicadas en otras respuestas.
Abordando otras respuestas:
Alguien aquí mencionó que la forma EAC no es la mejor, porque "no es automática". Bueno, solo decir que es completamente automático . Otra respuesta menciona el uso del cliente local para programar la transacción: es una forma centralizada, sujeta a escasez de energía e Internet, así como a errores de software. También necesita ejecutar su computadora durante todo el día para este trabajo.
ética