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
, что позволяет внешним обзерверам — например, пользователям или другим контрактам — проверять их значения. Это полезно при проверке условий контрактов или при выполнении различных операций с участием эфира.