Evento sobre Minería de un nuevo bloque

¿Ethereum genera algún evento cada vez que se extrae un nuevo bloque en la cadena que puede desencadenar un proceso de daemon (digamos código Java)?

Puedes ver esto: media.consensys.net/…

Respuestas (2)

Usando, por ejemplo, la API web3 JS, puede configurar un filtro y observar los cambios de bloque:

var filter = web3.eth.filter('latest');

filter.watch(function(error, result){
  var block = web3.eth.getBlock(result, true);
  console.log('current block #' + block.number);
});
ya no funciona

Hay una org.ethereum.core.EthereumListener.javainterfaz, que proporciona un conjunto de funciones que se invocarían en dicho evento, por ejemplo, onBlock(), onTransactionExecuted()etc. Puede implementarlo o extenderlo EthereumListenerAdapter.javay anular el método que desee, y el método se ejecuta cada vez que ocurre el evento.

Por ejemplo:

public class MineAndYoursListener extends EthereumListenerAdapter {
    @Override
    public void onBlock(Block block, List<TransactionReceipt> receipts) {
    // do what you want to do with my body
    // or daemon process
    }
}
¿Cómo se activará esto desde un cliente geth? Para ser más elaborado, tengo una configuración privada de 2 nodos (ambos ejecutan el cliente geth), ahora, cada vez que se extrae un nuevo bloque en esta cadena privada, ¿cómo activará el código java anterior?
Creo que no entendiste, este es el código de Java, así que espero que tu cliente sea Java (ethereumj), como otro nodo.
Ok, ¿hay alguna manera de hacerlo en un cliente geth y no estoy usando ethereumj?
Mi pregunta estaba más relacionada con cómo capturar un nuevo evento de minería de bloques en un proceso daemon (que puede ser java, nodejs o cualquier otro idioma). ¿Puede el cliente ethereum notificar al daemon sobre el nuevo bloque?
Puede crear registros de eventos, verlos y, en cada bloque exitoso con transacción exitosa, se invocará la devolución de llamada en web3, json rpc. Sin embargo, estoy seguro de que no puede llamar a un proceso Java desde allí