Solidity University

Address

Address в Solidity
Photo by regularguy.eth / Unsplash

Тип данных 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 и Блокчейн Разработку вместе с нами!

Информация об авторе
Nick Newermin

Nick Newermin

Привет! Меня зовут Николай, я занимаюсь web3 разработкой уже более пяти лет, веду канал "Блокчейн Разработчик" и создаю образовательную онлайн платформу Solidity University. #Web3ForEveryone

Solidity University

Подпишись и получи бесплатный доступ к нашим курсам и обучающим материалам

Solidity University

Отлично! Вы успешно зарегистрировались.

С возвращением! Вы успешно вошли в систему.

Вы успешно подписались на Solidity University.

Успех! Проверьте вашу электронную почту для входа по магической ссылке.

Успех! Ваши платежные данные обновлены.

Ваши платежные данные не были обновлены.