Урок 2

Основы Ethereum и Solidity

Ethereum - это платформа на основе блокчейна, поддерживающая смарт-контракты и децентрализованные приложения (dApps).

Обзор Ethereum

Ethereum - это основанная на блокчейне платформа распределенного программного обеспечения с открытым исходным кодом, которая стала главным соперником Биткойна. Впервые Ethereum был предложен в 2013 году криптовалютным исследователем Виталиком Бутериным, который предложил добавить к Биткойну скриптовый язык для программирования. Он был запущен 30 июля 2015 года. Разработка Ethereum была спонсирована онлайновым краудсейлом - разновидностью краудсорсинга, в ходе которого выпускались криптовалютные токены.

Подробнее: Что такое Ethereum?

Родная криптовалюта Ethereum называется Ether (ETH), и в ней используется язык программирования, известный как Solidity. Блокчейн, технология, лежащая в основе Ethereum, - это распределенная бухгалтерская книга, которая ведет постоянный, защищенный от взлома список записей. Эта децентрализованная архитектура позволяет разработчикам создавать широкий спектр децентрализованных приложений (dApps), используя преимущества надежной экосистемы платформы и ее универсальность.

Одна из основных особенностей Ethereum - поддержка смарт-контрактов, которые представляют собой цифровые контракты, выполняющиеся автоматически на основе заранее определенных условий, как мы уже говорили в Уроке 1. Эти смарт-контракты позволяют создать среду без доверия, в которой транзакции могут проводиться безопасно и прозрачно, без участия посредников. Майнеры в сети Ethereum выпускали токены Ether, которые служили не только валютой, но и средством оплаты за использование платформы; после "Слияния" Ethereum перешел на механизм Proof-of-Stake (PoS), при котором валидаторы (не майнеры) подтверждают транзакции и создают новые блоки. Вместо того чтобы выпускать токены Ether, валидаторы зарабатывают комиссионные за транзакции и вознаграждения за блок в Ether за свое участие в сети. Эфир по-прежнему служит средством оплаты за использование платформы, но его выпуск и распределение отличаются от предыдущего механизма Proof-of-Work (PoW).

Способность Ethereum размещать dApps и смарт-контракты вызвала значительный интерес со стороны разработчиков и организаций, сделав его ведущей платформой для создания инновационных решений в различных отраслях, включая финансы, цепочки поставок, игры и т.д. Экосистема Ethereum продолжает развиваться, оставаясь на переднем крае технологии блокчейн, стимулируя инновации и создавая процветающее сообщество разработчиков и пользователей.

Читайте далее: Что такое слияние?

Подробнее: Что такое DApp?

Введение в язык программирования Solidity

Solidity - это высокоуровневый, статически-типизированный язык программирования, специально разработанный для написания смарт-контрактов на блокчейне Ethereum. Разработанный основной командой Ethereum, синтаксис Solidity создан под влиянием JavaScript, что делает его знакомым и доступным для широкого круга разработчиков. Язык является Тьюринг-полным, что позволяет разработчикам создавать сложную логику и реализовывать различные функциональные возможности в своих смарт-контрактах. Solidity компилируется в байткод Ethereum Virtual Machine (EVM), который выполняется в сети Ethereum.

В Solidity разработчики могут определять пользовательские структуры данных, создавать определяемые пользователем функции и реализовывать механизмы контроля доступа, среди прочих возможностей. С помощью Solidity можно создавать широкий спектр децентрализованных приложений, включая децентрализованные финансовые (DeFi) платформы, не сгораемые токены (NFT), децентрализованные автономные организации (DAO) и многое другое.

Структура контракта Solidity: пример

Контракт Solidity - это самостоятельный кусок кода, который состоит из переменных, функций, событий и модификаторов, среди прочих элементов. Основная структура контракта Solidity выглядит следующим образом:

  1. Директива Pragma: В этой строке указывается совместимая версия компилятора Solidity для смарт-контракта. Например:

    Solidity
    pragma solidity ^0.8.0;
    
  2. Определение контракта: В этой строке объявляется контракт и его название. \
    Например:

    Solidity
    контракт SimpleToken {
    
  3. Переменные состояния: Это переменные, которые хранят состояние контракта в блокчейне. Например, Вы можете хранить общий запас жетонов:

    Solidity
    uint256 public totalSupply;
    
  4. Функции: Функции определяют поведение контракта и могут быть вызваны внешними пользователями или другими контрактами. Вот простая функция для передачи токенов:

    Solidity
    function transfer(address recipient, uint256 amount) public {
     // ... transfer logic ...
    }
    
  5. События: События используются для регистрации определенных действий в контракте и могут отслеживаться внешними пользователями или контрактами. Например, событие Transfer в токен-контракте:

    Solidity
    событие Transfer(адрес, индексируемый from, адрес, индексируемый to, значение uint256);
    
  6. Модификаторы: Модификаторы используются для изменения поведения функций, обычно для контроля доступа или проверки предварительных условий. Например, модификатор, проверяющий, достаточно ли у отправителя жетонов для передачи:

    JavaScript
    модификатор hasEnoughTokens(uint256 amount) {
     require(balanceOf[msg.sender] >= amount, "Insufficient balance");
     _;
    }
    
  7. Конструктор: Конструктор - это специальная функция, которая инициализирует переменные состояния контракта при его развертывании. Например, инициализация общего запаса токена:

    JavaScript
    constructor(uint256 _totalSupply) {
     totalSupply = _totalSupply;
     balanceOf[msg.sender] = _totalSupply;
    }
    

Если собрать все это вместе, то простой контракт Solidity для токена может выглядеть следующим образом:

TypeScript
pragma solidity ^0.8.0;

contract SimpleToken {
 uint256 public totalSupply;
 mapping(address => uint256) public balanceOf;

 event Transfer(address indexed from, address indexed to, uint256 value);

 modifier hasEnoughTokens(uint256 amount) {
        require(balanceOf[msg.sender] >= amount, "Insufficient balance");
        _;
    }
}

Основные моменты
Ethereum - это платформа на основе блокчейна, поддерживающая смарт-контракты и децентрализованные приложения (dApps).
Родной криптовалютой Ethereum является Эфир (ETH).
Solidity - это высокоуровневый язык программирования, используемый для написания смарт-контрактов на Ethereum.
Смарт-контракты в Ethereum выполняются автоматически на основе заранее определенных условий.
Ethereum перешел на механизм Proof-of-Stake (PoS) для подтверждения транзакций и создания новых блоков.
Solidity позволяет разработчикам определять структуры данных, создавать функции, реализовывать контроль доступа и многое другое.
Экосистема Ethereum привлекает разработчиков и организации из различных отраслей.
Контракты Solidity состоят из прагм, определения контракта, переменных состояния, функций, событий, модификаторов и конструкторов.
Контракты Solidity можно использовать для создания DeFi платформ, NFT, DAO и т.д.

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 2

Основы Ethereum и Solidity

Ethereum - это платформа на основе блокчейна, поддерживающая смарт-контракты и децентрализованные приложения (dApps).

Обзор Ethereum

Ethereum - это основанная на блокчейне платформа распределенного программного обеспечения с открытым исходным кодом, которая стала главным соперником Биткойна. Впервые Ethereum был предложен в 2013 году криптовалютным исследователем Виталиком Бутериным, который предложил добавить к Биткойну скриптовый язык для программирования. Он был запущен 30 июля 2015 года. Разработка Ethereum была спонсирована онлайновым краудсейлом - разновидностью краудсорсинга, в ходе которого выпускались криптовалютные токены.

Подробнее: Что такое Ethereum?

Родная криптовалюта Ethereum называется Ether (ETH), и в ней используется язык программирования, известный как Solidity. Блокчейн, технология, лежащая в основе Ethereum, - это распределенная бухгалтерская книга, которая ведет постоянный, защищенный от взлома список записей. Эта децентрализованная архитектура позволяет разработчикам создавать широкий спектр децентрализованных приложений (dApps), используя преимущества надежной экосистемы платформы и ее универсальность.

Одна из основных особенностей Ethereum - поддержка смарт-контрактов, которые представляют собой цифровые контракты, выполняющиеся автоматически на основе заранее определенных условий, как мы уже говорили в Уроке 1. Эти смарт-контракты позволяют создать среду без доверия, в которой транзакции могут проводиться безопасно и прозрачно, без участия посредников. Майнеры в сети Ethereum выпускали токены Ether, которые служили не только валютой, но и средством оплаты за использование платформы; после "Слияния" Ethereum перешел на механизм Proof-of-Stake (PoS), при котором валидаторы (не майнеры) подтверждают транзакции и создают новые блоки. Вместо того чтобы выпускать токены Ether, валидаторы зарабатывают комиссионные за транзакции и вознаграждения за блок в Ether за свое участие в сети. Эфир по-прежнему служит средством оплаты за использование платформы, но его выпуск и распределение отличаются от предыдущего механизма Proof-of-Work (PoW).

Способность Ethereum размещать dApps и смарт-контракты вызвала значительный интерес со стороны разработчиков и организаций, сделав его ведущей платформой для создания инновационных решений в различных отраслях, включая финансы, цепочки поставок, игры и т.д. Экосистема Ethereum продолжает развиваться, оставаясь на переднем крае технологии блокчейн, стимулируя инновации и создавая процветающее сообщество разработчиков и пользователей.

Читайте далее: Что такое слияние?

Подробнее: Что такое DApp?

Введение в язык программирования Solidity

Solidity - это высокоуровневый, статически-типизированный язык программирования, специально разработанный для написания смарт-контрактов на блокчейне Ethereum. Разработанный основной командой Ethereum, синтаксис Solidity создан под влиянием JavaScript, что делает его знакомым и доступным для широкого круга разработчиков. Язык является Тьюринг-полным, что позволяет разработчикам создавать сложную логику и реализовывать различные функциональные возможности в своих смарт-контрактах. Solidity компилируется в байткод Ethereum Virtual Machine (EVM), который выполняется в сети Ethereum.

В Solidity разработчики могут определять пользовательские структуры данных, создавать определяемые пользователем функции и реализовывать механизмы контроля доступа, среди прочих возможностей. С помощью Solidity можно создавать широкий спектр децентрализованных приложений, включая децентрализованные финансовые (DeFi) платформы, не сгораемые токены (NFT), децентрализованные автономные организации (DAO) и многое другое.

Структура контракта Solidity: пример

Контракт Solidity - это самостоятельный кусок кода, который состоит из переменных, функций, событий и модификаторов, среди прочих элементов. Основная структура контракта Solidity выглядит следующим образом:

  1. Директива Pragma: В этой строке указывается совместимая версия компилятора Solidity для смарт-контракта. Например:

    Solidity
    pragma solidity ^0.8.0;
    
  2. Определение контракта: В этой строке объявляется контракт и его название. \
    Например:

    Solidity
    контракт SimpleToken {
    
  3. Переменные состояния: Это переменные, которые хранят состояние контракта в блокчейне. Например, Вы можете хранить общий запас жетонов:

    Solidity
    uint256 public totalSupply;
    
  4. Функции: Функции определяют поведение контракта и могут быть вызваны внешними пользователями или другими контрактами. Вот простая функция для передачи токенов:

    Solidity
    function transfer(address recipient, uint256 amount) public {
     // ... transfer logic ...
    }
    
  5. События: События используются для регистрации определенных действий в контракте и могут отслеживаться внешними пользователями или контрактами. Например, событие Transfer в токен-контракте:

    Solidity
    событие Transfer(адрес, индексируемый from, адрес, индексируемый to, значение uint256);
    
  6. Модификаторы: Модификаторы используются для изменения поведения функций, обычно для контроля доступа или проверки предварительных условий. Например, модификатор, проверяющий, достаточно ли у отправителя жетонов для передачи:

    JavaScript
    модификатор hasEnoughTokens(uint256 amount) {
     require(balanceOf[msg.sender] >= amount, "Insufficient balance");
     _;
    }
    
  7. Конструктор: Конструктор - это специальная функция, которая инициализирует переменные состояния контракта при его развертывании. Например, инициализация общего запаса токена:

    JavaScript
    constructor(uint256 _totalSupply) {
     totalSupply = _totalSupply;
     balanceOf[msg.sender] = _totalSupply;
    }
    

Если собрать все это вместе, то простой контракт Solidity для токена может выглядеть следующим образом:

TypeScript
pragma solidity ^0.8.0;

contract SimpleToken {
 uint256 public totalSupply;
 mapping(address => uint256) public balanceOf;

 event Transfer(address indexed from, address indexed to, uint256 value);

 modifier hasEnoughTokens(uint256 amount) {
        require(balanceOf[msg.sender] >= amount, "Insufficient balance");
        _;
    }
}

Основные моменты
Ethereum - это платформа на основе блокчейна, поддерживающая смарт-контракты и децентрализованные приложения (dApps).
Родной криптовалютой Ethereum является Эфир (ETH).
Solidity - это высокоуровневый язык программирования, используемый для написания смарт-контрактов на Ethereum.
Смарт-контракты в Ethereum выполняются автоматически на основе заранее определенных условий.
Ethereum перешел на механизм Proof-of-Stake (PoS) для подтверждения транзакций и создания новых блоков.
Solidity позволяет разработчикам определять структуры данных, создавать функции, реализовывать контроль доступа и многое другое.
Экосистема Ethereum привлекает разработчиков и организации из различных отраслей.
Контракты Solidity состоят из прагм, определения контракта, переменных состояния, функций, событий, модификаторов и конструкторов.
Контракты Solidity можно использовать для создания DeFi платформ, NFT, DAO и т.д.

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.