ethereum - examples - solidity español
¿Qué es la dirección(0) en Solidity? (1)
Dentro de una transacción de Ethereum, la cuenta cero es solo un caso especial que se utiliza para indicar que se está implementando un nuevo contrato. Está literalmente ''0x0'' establecido en el campo a en la transacción sin procesar.
Todas las transacciones de Ethereum, ya sea una transferencia entre dos cuentas externas, una solicitud para ejecutar un código de contrato o una solicitud para implementar un nuevo contrato, se codifican de la misma manera. Un objeto de transacción en bruto se verá así:
transaction = {
nonce: ''0x0'',
gasLimit: ''0x6acfc0'', // 7000000
gasPrice: ''0x4a817c800'', // 20000000000
to: ''0x0'',
value: ''0x0'',
data: ''0xfffff''
};
Si se establece en algo distinto de ''0x0'', esta solicitud dará como resultado la transferencia de ether a la dirección (si el value
no es cero) y ejecutará la función codificada en el campo de data
. Recuerde, la dirección puede ser un contrato o una cuenta externa.
Cuando la dirección a es la dirección cero, se creará un nuevo contrato ejecutando el código en los data
(esto es lo que se entiende por "código que devuelve el código"). La dirección del contrato recién creado se conoce técnicamente de antemano, ya que se basa en la dirección del remitente y su número actual. Esa dirección se convierte en la dirección oficial del contrato después de la minería.
Para una buena lectura de las transacciones de Ethereum, consulte esta publicación del blog .
Nota: También existe la address(0)
declaración de código de Solidity real address(0)
que es el valor inicial de una variable de tipo address
. Sin embargo, la documentación que ha publicado se refiere específicamente cuando la dirección de la cuenta en una transacción se establece en ''0x0''.
¿Alguien puede explicarme qué address(0)
está en Solidity? Encontré lo siguiente en los documentos, pero realmente no tiene sentido para mí:
Si la cuenta de destino es la cuenta cero (la cuenta con la dirección 0), la transacción crea un nuevo contrato. Como ya se mencionó, la dirección de ese contrato no es la dirección cero, sino una dirección derivada del remitente y su número de transacciones enviadas (el "nonce"). La carga útil de dicha transacción de creación de contrato se toma como un bytecode EVM y se ejecuta. El resultado de esta ejecución se almacena permanentemente como el código del contrato. Esto significa que para crear un contrato, no envía el código real del contrato, sino el código que devuelve ese código.