¿Cómo recibir ether en la dirección de la billetera y reenviar a otra dirección en un depósito exitoso?

Quiero implementar una función en la que los usuarios envíen ether a la dirección de la billetera (0x123) y, en caso de depósito exitoso, debe transferirse automáticamente a mi billetera fría (0x983).

Puedo lograr estas características con la ayuda de un contrato inteligente, pero ¿cómo lograrlo con una sola dirección de billetera sin incluir contratos inteligentes?

Además de los contratos inteligentes, una forma más sencilla podría ser escribir un script que llame a web3 para monitorear el saldo, calcular el monto de la transferencia (menos el costo del combustible) y enviar la transacción de transferencia.
¿Cómo monitorear el saldo de una dirección continuamente usando web3?

Respuestas (3)

Después de las discusiones en los comentarios, escribí un script de prueba de bash que hace casi exactamente lo mismo. Tenga en cuenta que este es un truco rápido y tiene los siguientes problemas

  • es muy inseguro (por ejemplo, deja las cuentas personales desbloqueadas para siempre). Lo ejecuté solo para probar, por lo tanto, no hay problema para mí. Pero no lo use en producción sin modificaciones.
  • El TO_ADDR no debe ser administrado por geth (es decir, no debe estar entre los resultados de la "lista de cuentas de geth"), de lo contrario, será un bucle sin salida. Una vez más, fue un truco rápido.
  • Ninguna consideración de rendimiento en absoluto: un bucle tonto que realiza la verificación cada 60 segundos.

Código:

GETH=<your geth path>
TO_ADDR=<destination addr>
for ADDR in $(${GETH} account list | grep -o -e'\{[^}]\+\}' | tr -d '}' | tr -d '{');do
    echo "unlocking '$ADDR'"
    echo "web3.personal.unlockAccount('$ADDR', '<your password>', null);" | ${GETH} attach http://localhost:8545
done

SRC=$(cat <<EOF
addrs = web3.eth.accounts;
to_addr = '$TO_ADDR';
gasPrc=web3.eth.gasPrice;
cost = 21000 * gasPrc;
for (i = 0; i < addrs.length; i++) {
    balance = web3.eth.getBalance(addrs[i]);
    send_val = balance - cost;
    if (send_val > 0) {
        val=web3.fromWei(send_val, "ether");
        web3.eth.sendTransaction({from: addrs[i], to: to_addr, value: web3.toWei(val, "ether"), gasPrice: gasPrc, gas: 21000});
        console.log("Transferring ", web3.toWei(val, "ether"), " wei from ", addrs[i], " to ", to_addr, " gas price ", gasPrc);
    } else {
        console.log("Cannot Transfer ", send_val, " wei from ", addrs[i], " to ", to_addr);
    }
}
EOF
)

while true; do
    if echo "${SRC}" | ${GETH} attach http://localhost:8545 | tee monitor.log | grep -e'Transferring ';then
        date | mail -s 'ether automatically transferred' <your email>
    fi
    sleep 60
done

no puedes Las billeteras no incluyen funcionalidad sin contratos inteligentes. Tampoco veo ninguna razón por la que no incluir contratos inteligentes.

En los intercambios criptográficos, depositaremos el éter o bitcoin en la dirección de la billetera después de que el depósito sea exitoso, se transferirá a la billetera fría del intercambio. Quiero lograr lo mismo.
Esa no es la funcionalidad que existe dentro de las carteras. Todo se hace fuera de la cadena de bloques, a menos que haya un contrato inteligente. Entonces, cada vez que algún sistema detecta un pago en una billetera, se transfiere a otra billetera (fría). Todo esto es especulativo, por supuesto, los intercambios realmente no comparten detalles sobre cómo funcionan sus sistemas.

¿Podría explicarme esto un poco más, como cómo ejecutar este script dentro de una billetera fría como la billetera atómica, es esto posible? Seguramente podría usar la ayuda. 2 de mis billeteras fueron pirateadas de alguna manera y en una de ellas tenía uni token 800 de ellas y se retiraron a partir de hoy, eso es como 25k. Perdí a este tipo todavía deposita diariamente en las dos billeteras que seguramente me gustaría. para atraparlo y, con suerte, si lo hago, es mucho ethereum, me debe 25k por valor, por favor, si pudieras compartir esto conmigo, tengo conocimientos de informática, solo sé un poco de c c ++ phython. Soy un tipo mayor, así que estaba cerca de la computadora cuando tenían la apple ones comadores oye agradeceria tu ayuda si pudieras gracias kev