¿Cómo puedo recibir una notificación de geth cuando recibo ether?

Me gustaría recibir una notificación de geth cuando mi cuenta reciba ether. Estoy pensando en escribir el comando api eth_getBalancecada minuto, para verificar si mi cuenta recibe ether o no. Sin embargo, no creo que sea una buena manera.

¿Podría decirme una mejor manera de recibir notificaciones de geth?

Respuestas (2)

personalmente registré mis direcciones en https://etherscan.io que brinda dicho servicio, por correo electrónico.

Si realmente quiere hacerlo usted mismo, lo más simple que se me ocurre sería registrar un trabajo cron que inicie un script getBalance.sh que contenga una llamada curl eth_getbalance .

Así que ingrese crontab -ey edite el archivo al final con:

*/5 * * * * /home/youruser/getBalance.sh

Esto activaría el script getBalance.sh cada 5 minutos, cámbielo según sus necesidades.

Cree el /home/youruser/getBalance.sharchivo así, edítelo YOURADDRESSy PORTde acuerdo con el cliente que use, no lo olvide chmod +x:

#!/bin/bash
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["YOURADDRESS", "latest"],"id":1}' 'http://localhost:PORT'

editar: ¡esto está completamente sin probar!

edit2: script de python de trabajo probado llamado getBalance.py. Es una secuencia de comandos muy aproximada que podría insertarse en su trabajo cron en lugar de getBalance.sh, solo imprime 'toto' pero puede enviar un correo electrónico / sms / lo que considere apropiado con él.

import requests
import json
def balance(address, url):

        postData = {"jsonrpc":"2.0","method":"eth_getBalance","params":[address, "latest"],"id":1}
        #print('p: {}'.format(postData))
        response = requests.post(url, data=json.dumps(postData))
        print(response.json())
        result = response.json()
        return result['result']

def writebalance(balance):
        with open('getBalance.txt', 'w') as f:
                f.write(balance)

def readbalance():
        with open('getBalance.txt', 'r') as f:
                bal = f.read()
        return bal


if __name__ == '__main__':
        oldbalance = readbalance()
        newbalance = balance("YOURADDRESS", 'http://localhost:8545')
        if int(newbalance, 16) - int(oldbalance, 16) >0:
                print('toto')
        writebalance(newbalance)
Solo para agregar a lo anterior, además de las notificaciones por correo electrónico, Etherscan.io también admite notificaciones de telegramas enviadas directamente a su dispositivo móvil. Tienes la opción de elegir cualquiera de los dos.

Puede usar Dagger https://matic.network/dagger para enviar correos electrónicos/notificaciones o procesar cualquier evento de contrato.

Aquí está el ejemplo simple de cómo ver la transferencia de token ERC20 usando Dagger:

// web3 contract
var web3Contract = new web3.eth.Contract(abi, address);

// dagger contract
var contract = dagger.contract(web3Contract);
var filter = contract.events.Transfer({room: 'latest'});

// watch
filter.watch(function(data, removed){
    // data.returnValues.to : address to which it has been transferred to
    // data.returnValues.value : value which has been transferred
});

// watch only once
filter.watchOnce(function(data, removed){
    // data.returnValues.to : address to which it has been transferred to
    // data.returnValues.value : value which has been transferred
});

// stop watching
filter.stopWatching();