¿Cómo programar una transacción?

¿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

Respuestas (4)

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.

Cambiaré a geth también, pensé que esto era algo factible desde la interfaz de usuario de Parity, por eso pregunté. Gracias

Simplemente prográmelo con la interfaz de usuario de la billetera.

transacción de cuentas 1

Cree cualquier transacción que desee, asegúrese de seleccionar "configuración avanzada" y determine que la condición sea:

  • enviar después del número de bloque
  • enviar después de la fecha y la hora

Parity retendrá esta transacción hasta que se cumpla la condición. Tenga en cuenta que, para esto, su nodo debe seguir ejecutándose.

¡Excelente! ¿Podré firmar la transacción antes de programarla o me pedirá que lo haga cuando se alcance la altura del bloque?
Lo cantará de inmediato, pero retiene la transmisión de la transacción hasta que se cumpla la condición de tiempo o bloque.

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.

Sí, la respuesta de Badr es exactamente lo que necesito. La segunda opción no me parece óptima ya que no es realmente automática.

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:

  1. Use MyCrypto (alternar el botón "Enviar más tarde"): aquí hay un tutorial útil .

Interfaz MyCrypto para la programación

  1. Use Ethereum Alarm Clock DAPP

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.