SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
17.11.2024

Lição: 059: Unidades de Ether e Unidades de Tempo

Nesta aula, exploraremos dois conceitos fundamentais em Solidity: unidades de Ether e unidades de tempo. Compreender essas unidades é crucial para o desenvolvimento de contratos inteligentes, pois elas formam a base para lidar com transações e agendar tarefas dentro do ecossistema Ethereum.

Unidades de Ether

Ether (ETH) é a moeda nativa da blockchain Ethereum. É essencial entender as diferentes unidades de Ether para uma gestão eficaz de gás, transferências de tokens e interação com contratos inteligentes.

Unidades de Ether

Ether possui várias denominações, assim como as moedas fiduciárias têm centavos, reais, etc. Aqui estão algumas unidades comuns de Ether (ETH):

  • wei: A menor denominação de Ether. 1 ETH = (10^{18}) wei.
  • gwei: Frequentemente usada para preços de gás. 1 ETH = (10^{9}) gwei (1 gwei = (10^{9}) wei).
  • finney: 1 finney = (10^{15}) wei (0.001 ETH).
  • szabo: 1 szabo = (10^{12}) wei (0.000001 ETH).
  • ether: A unidade base (1 ETH).

Exemplos

Você pode facilmente converter entre unidades de Ether em Solidity. Vamos olhar alguns exemplos:

pragma solidity ^0.8.0;

contract EtherUnitsExample {
    uint256 public valorEmWei;
    uint256 public valorEmGwei;
    uint256 public valorEmFinney;
    uint256 public valorEmSzabo;
    uint256 public valorEmEther;

    // construtor para definir valores em diferentes unidades
    constructor() {
        valorEmWei = 1 ether; // 1 ETH em wei
        valorEmGwei = 1 gwei; // 1 Gwei em wei
        valorEmFinney = 1 finney; // 1 Finney em wei
        valorEmSzabo = 1 szabo; // 1 Szabo em wei
        valorEmEther = 1 ether; // 1 Ether
    }
}

No exemplo acima, definimos um contrato que inicializa algumas variáveis usando diferentes unidades de Ether. Cada unidade é representada em wei, que é a menor denominação.

Unidades de Tempo

Em Solidity, ao lidar com tempo, é essencial entender como expressar o tempo nas várias unidades disponíveis. As unidades de tempo comumente usadas são:

  • segundos: A unidade base em segundos.
  • minutos: 1 minuto = (60) segundos.
  • horas: 1 hora = (3600) segundos (60 minutos).
  • dias: 1 dia = (86400) segundos (24 horas).
  • semanas: 1 semana = (604800) segundos (7 dias).

Essas unidades de tempo são muito úteis, especialmente ao agendar ações ou definir períodos de bloqueio em contratos inteligentes.

Exemplos

Aqui está um exemplo simples de como usar unidades de tempo em Solidity:

pragma solidity ^0.8.0;

contract TimeUnitsExample {
    uint256 public umDiaEmSegundos;
    uint256 public umaSemanaEmSegundos;

    // construtor para definir valores de tempo
    constructor() {
        umDiaEmSegundos = 1 days; // equivalente a 86400 segundos
        umaSemanaEmSegundos = 1 weeks; // equivalente a 604800 segundos
    }

    // função para verificar se um certo período de tempo passou
    function passouUmaSemana(uint256 tempoDeInicio) public view returns (bool) {
        return (block.timestamp >= tempoDeInicio + umaSemanaEmSegundos);
    }
}

Neste exemplo, o contrato inicializa duas variáveis para representar um dia e uma semana em segundos usando unidades de tempo. Além disso, há uma função que verifica se uma semana se passou desde um determinado tempoDeInicio.

Conclusão

Nesta aula, aprendemos sobre unidades de Ether e unidades de tempo em Solidity. Compreender essas unidades é vital para gerenciar transações, custos de gás e tempos em contratos inteligentes Ethereum de forma eficaz. Ao dominar esses conceitos, você estará melhor preparado para escrever contratos inteligentes eficientes e eficazes na blockchain Ethereum.

Continue praticando e experimentando diferentes unidades de Ether e tempo para solidificar sua compreensão!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!