ether wei - demonoved/A-trial-run-in-solidity GitHub Wiki

// SPDX-License-Identifier: MIT
// compiler version must be greater than or equal to 0.8.20 and less than 0.9.0
pragma solidity ^0.8.23;
contract EtherUints {
    uint public oneWei = 1 wei;
    // 1 wei = 1
    bool public  isOneWei = 1 wei == 1;

    uint public oneEther = 1 ether;
    // 1 ether = 10^18 wei
    bool public isOneEther = 1 ether == 1e18;
}

В этом куске кода объявляется контракт под названием EtherUnits, внутри которого определяются переменные и логика для демонстрации работы с единицами измерения эфира — базового токена сети Ethereum.

Вот подробный разбор кода:

// Объявление контракта с именем EtherUints.
contract EtherUints {
    // Определение публичной переменной 'oneWei' и присвоение ей значения 1 wei.
    uint public oneWei = 1 wei;
    // Сравнение, чтобы проверить равенство 1 wei и 1. Результат будет true,
    // так как 1 wei действительно является базовой единицей измерения и равен 1.
    bool public  isOneWei = 1 wei == 1;

    // Определение публичной переменной 'oneEther' и присвоение ей значения 1 ether.
    uint public oneEther = 1 ether;
    // Проверка равенства 1 ether и 1e18 wei.
    // Результат будет true, т.к. 1 ether по определению равен 10^18 wei.
    bool public isOneEther = 1 ether == 1e18;
}

Подробнее расшифруем логику кода:

  • uint — ключевое слово для определения беззнакового целочисленного типа (unsigned integer), который используется для хранения целых чисел.
  • public — модификатор доступа, который делает переменные доступными для чтения извне контракта.
  • oneWei — переменная, показывающая, что 1 wei является наименьшей подразделённой единицей эфира, и она принимает значение в wei для наглядности.
  • isOneWei — логическая переменная, которая становится true, если 1 wei равен 1. Это раскрывает факт того, что эфир и выражается в wei, и что 1 wei — это наименьшая возможная единица в системе Ethereum.
  • oneEther — переменная, показывающая эквивалентность 1 эфира в wei. Это удобный способ выразить значение в эфире.
  • isOneEther — логическая переменная, которая будет иметь значение true, если 1 ether равен 10^18 wei (1 с восемнадцатью нулями после), что и является стандартным соотношением в сети Ethereum.

Все переменные объявлены как public, что позволяет внешним обзерверам — например, пользователям или другим контрактам — проверять их значения. Это полезно при проверке условий контрактов или при выполнении различных операций с участием эфира.