Las cuentas no pueden mostrar las transacciones entrantes

En Ethereum-Mist_wallet, bajo cuentas, veo:

Las cuentas no pueden mostrar transacciones entrantes, pero retener y enviar ether. Para ver las transacciones entrantes, cree un contrato de billetera para almacenar ether.

¿Qué significa esto exactamente? En mi red privada puedo ver las transacciones de una cuenta específica en Latest Transactions. Entonces, ¿para qué es esto?

Respuestas (2)

Hay dos tipos de cuentas en Ethereum:

  1. Cuentas de propiedad externa, controladas por claves privadas
  2. Cuentas de contrato, controladas por su código de contrato

Las cuentas no pueden mostrar transacciones entrantes, pero retener y enviar ether

Aquí las cuentas se refieren a EOA. Los EOA pueden retener y transferir ethers, pero no pueden mostrar las transacciones entrantes. Sin embargo, pueden mostrar las transacciones enviadas desde la cuenta, como la transferencia de ethers o la ejecución de contratos.
Por ejemplo, si transfiere algunos éteres de etherbase (Cuenta1) a otra cuenta, diga Cuenta2. La cuenta 1 mostrará los detalles de la transacción, pero la cuenta no mostrará nada en la Latest Transactionspestaña.

Pestaña Última transacción de Cuenta1

Para ver las transacciones entrantes, cree un contrato de billetera para almacenar ether.

Sin embargo, si tiene que realizar un seguimiento de las transacciones entrantes en una cuenta, debe crear un contrato de billetera.
Ahora, si transfiere éteres de Cuenta1 a su billeteraContract (digamos que sea WalletContract1), tanto Cuenta1 como WalletContract1 mostrarán las transacciones.
Por lo tanto, los contratos de billetera también mantienen una lista de transacciones entrantes, mientras que los EOA no .


Hay diferentes tipos de contratos de billetera como:

  • Cuenta de propietario único
  • Contrato de billetera multifirma

que ofrecen características mucho mejores que los EOA normales. Pero crear un contrato de billetera requiere una tarifa de transacción (gas). Lea la descripción completa aquí .


Lea la diferencia entre los EOA y los contratos de billetera aquí .

Puede obtener transacciones que no hagan nada más que mover ether de la cuenta A a la cuenta B, firmadas por la cuenta A; simplemente escuchando nuevos bloques y filtrando tx con to === B. Pero para capturar "transacciones internas", es decir, contratos inteligentes que envían ether a la cuenta B, tendría que pasar por los rastros de ejecución y seleccionar los códigos de operación que envían ether. Alternativamente, puede verificar el saldo de la cuenta B después de cada tx y notar cambios.

Sin embargo, con los tokens ERC20, simplemente puede suscribirse al Transferevento, incluso filtrarlo automáticamente por destinatario :

const filter = myToken.events.Transfer({ filter: { to: B } })
filter.on("data", event => {
    console.log(`Received ${event.returnValues.tokens} tokens!`)
})

// later...
filter.unsubscribe()

Este método también estará disponible en Ethereum 2.0 para Ether, si los planes continúan para convertirlo en un token ERC20 que vive en una dirección fija como 0x00. Por ahora, el seguimiento de ether es más fácil invocando eth.getBalance(B)después de cada bloque.