7. Variables built-in (msg.sender, msg.value...)

# block.chainid

Cada red tiene un número de identificación único y a través de la variable 'block.chainid' es posible identificar la red actual. Ethereum mainnet, que es la principal, tiene id 1. Rinkeby, una de sus redes de prueba, tiene id 3.

ID de otras redes EVM:

  • Binance Smart Chain (BSC) => id 56
  • Polygon Mainnet => id 137
  • Fantom Opera => id 250

Puede ver una lista completa de Chain IDs en https://chainlist.org/ (opens new window).

block.chainid; //Retorna el id de la blockchain.

# block.coinbase

Cuando sea hecho el deploy del contrato que se está escribiendo, un minero lo incluirá en la blockchain y, a través de este parámetro, será posible interactuar con este minero. Incluso, cuando se realice una interacción con este contrato, el minero tendrá acceso.

block.coinbase; //Dirección del minero de bloque.
}

# block.difficulty

El parámetro de dificultad es lo que “regula” la emisión de nuevas monedas dentro de una red en función de la cantidad de mineros que están trabajando en ella y este parámetro siempre se está ajustando de acuerdo a la oferta y demanda de potencia computacional para realizar las pruebas de hash. A través de block.difficulty es posible acceder a la dificultad de minería en el bloque actual.

block.difficulty; //Dificultad parar minar un bloque.

# block.gaslimit

Cuantos más cálculos y operaciones tenga un contrato inteligente, más gas consumirá. A través de este parámetro es posible acceder a la cantidad de gas disponible en el bloque actual para saber si su contrato será procesado o no.

block.gaslimit; //Consultar el límite de gas del bloque.

# block.number

Devuelve el número de bloque actual. Se puede usar para muchas cosas y una de las más comunes es bloquear dinero hasta un bloque determinado.

Al momento de escribir esto, el bloque actual de la red Ethereum es 15693834 (opens new window).

block.number; //Agarra el número del bloque actual.

# block.timestamp

La marca de tiempo es un formato muy popular para codificar fecha y hora en un formato numérico, por ejemplo, la marca de tiempo ahora es: 1665116986.

block.timestamp; //Fecha y hora actual en el formato Uint.

# msg.sender

Debe estar muy atento al uso que se le dará a esta instrucción porque en el caso de crear el contrato, msg.sender será el creador del mismo, pero luego en una interacción con este contrato, msg.sender será la billetera u otro contrato que interactuaba con él.

msg.sender; //Muestra quién llamó aquella transacción.

# msg.value

Accederá a la cantidad de Ethers (u otra moneda si es otra blockchain) que se envió en una transacción.

msg.value; //Cantidad de Ethers que contiene la transacción.

# tx.origin

Similar a msg.sender, pero solo se refiere a direcciones de billetera, mientras que msg.sender también puede referirse a contratos.

tx.origin; //Dirección que envió la transacción.

# tx.gasprice

Retornará el valor del gas de transacción.

tx.gasprice; //Precio del gas de la transacción la transacción.
Last Updated: 9/10/2022, 4:27:54