7. Variáveis built-in (msg.sender, msg.value...)

# block.chainid

Cada rede possui um número único de identificação e através da variável 'block.chainid' é possível identificar a rede atual. A Ethereum mainnet, que é a principal, possui o id 1. Já a Rinkeby, uma de suas redes de teste, possui o id 3.

ID de outras redes EVM:

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

Você pode ver uma lista completa de Chain IDs em https://chainlist.org/ (opens new window).

# block.coinbase

Quando for feito o deploy do contrato que estiver sendo escrito, um minerador irá incluí-lo na blockchain e através desse parâmetro é possível interagir com esse minerador. Ou até mesmo depois quando for feita uma interação com esse contrato poderá acessar o minerador que processou essa interação.

# block.difficulty

O parâmetro dificuldade é o que "regula" a emissão de novas moedas dentro de uma rede baseado na quantidade de mineradores que estão trabalhando nisso e esse parâmetro está sempre sendo ajustado de acordo com a oferta e demanda de poder computacional para realizar os testes de hash. Através de block.difficulty é possível acessar a dificuldade de mineração no bloco atual.

# block.gaslimit

Quanto mais cálculos e operações um smart contract tiver, mais gas ele irá consumir. Usando esse parâmetro é possível acessar a quantidade de gas disponível no bloco atual para saber se seu contrato irá ser processado ou não.

# block.number

Retorna o número do bloco atual, pode ser usado para muitas coisas e uma das mais comuns é travar dinheiro até determinado bloco.

No momento em que escrevo isso o bloco atual da rede Ethereum é 13525758 (opens new window).

# block.timestamp

Timestamp é um formato muito conhecido para encodar data e hora em um formato numérico, por exemplo o timestamp de agora é: 1635696570.

# msg.sender

Deve-se ficar muito atento ao uso que será feito dessa instrução pois no caso de criação do contrato, msg.sender será o criador do contrato mas depois em uma interação com esse contrato msg.sender será a carteira ou outro contrato que interagiu com ele.

# msg.value

Irá acessar a quantidade de Ethers (ou outra moeda se for outra blockchain) que foi enviada em uma transação.

# tx.origin

Muito parecido com msg.sender porém refere-se somente a endereços de carteira enquanto msg.sender pode referir-se também a contratos. Para compreender o uso mais detalhado acesse Broken link.

# tx.gasprice

Irá retornar o preço de gas da transação.

Last Updated: 08/10/2022 22:55:37