Тип данных Address
Address - тип данных в Solidity, предназначенный для хранения 20-байтовых адресов. Он может хранить адреса кошельков Ethereum, контрактов и других участников сети Ethereum, а так же "нулевой адрес".
Тип данных address
не встречается в других языках программирования, которые не предназначены для написания смарт контрактов. Solidity - первый язык программирования, где был введен тип данных address
. По отношению к адресу можно использовать, такие методы как balance
, для чтения баланса Ethereum кошелька, указанного в адресе. transfer
, для отправки Ether с текущего контракта на адрес, указанный в переменной address
, и send
, который отправляет средства с текущего контракта на указанный address
.
Типы адресов в Ethereum
- Externally Owned Accounts (EOA) - приватные адреса пользователей в сети Ethereum, контроль над которыми обеспечивается с помощью закрытого ключа. Закрытый ключ позволяет получить полный доступ к адресу и средствам, которые на нем находятся, а так же дает возможность подписывать транзакции от имени адреса, к которому пренадлежит.
- Smart Contracts - Адрес смарт-контракта контракта может использоваться в транзакции в качестве получателя или отправителя средств, а так же для вызова функций контракта. Смарт-контракты поддерживаются не закрытым ключом, а собственным кодом. В каком-то роде, после длеплоя они «владеют собой».
Пример использования Address
Давайте рассмотрим простой пример кода на Solidity, в котором используется тип данных address. Попробуем считывать баланс адреса и отправлять на него средства.
pragma solidity ^0.8.0;
contract AddressLearn {
address public userAddress = 0x122885678228234567890123453229012567890;
function getBalance() public view returns (uint) {
return myAddress.balance;
}
function sendEther() public payable {
myAddress.transfer(msg.value);
}
}
userAddress
содержит в себе адрес кошелька Ethereum. Функция getBalance()
возвращает баланс этого адреса, а функция sendEther()
отправляет Ether на этот адрес с помощью функции transfer()
.
Нулевой адрес
Нулевой адрес содержит все нули в своем значении. Этот адрес обычно обозначается как "0x0000000000000000000000000000000000000000" и считается базовым адресом в Ethereum.
Нулевой адрес не имеет приватного ключа, и любые токены, отправленные на него будут удалены навсегда. Никто, даже Виталик Бутерин, не имеет контроля над этим адресом.
Нулевой адрес используется в контрактах, чтобы указать отсутствие адреса или значение по умолчанию. Так же он является отправителем при создании нового контракта, указывая этим, что контракт создается от имени сети Ethereum, а не конкретным адресом.
Видео объяснение типа данных Address
Подпишись и получи доступ к бесплатным курсам и обучающим материалам от Solidity University! Изучай Solidity и Блокчейн Разработку вместе с нами!