الدرس رقم 3

Создание и управление смарт-контрактами в Vyper

Закончив этот курс, Вы создали прочную основу для программирования блокчейна с помощью Vyper. Теперь у Вас есть твердое понимание Ethereum, смарт-контрактов и того, как создавать их в Remix IDE с помощью Vyper. Такое понимание открывает целый мир возможностей для разработки децентрализованных приложений и участия в экосистеме блокчейн.

Введение

Добро пожаловать в Урок 3! В этом уроке мы сосредоточимся на применении концепций и синтаксиса, изученных в предыдущих уроках, для разработки смарт-контрактов Ethereum с помощью Vyper с Remix IDE. Мы будем создавать, развертывать и взаимодействовать с простыми смарт-контрактами, что даст Вам практический опыт работы с Vyper и Ethereum. Первый контракт будет представлять собой простой контракт на хранение данных, а второй будет имитировать базовую систему голосования.

SimpleStorage: Введение в смарт-контракты

Первый контракт, который мы развернем, - это SimpleStorage. Этот контракт, как следует из названия, представляет собой простой контракт на хранение данных, в котором хранится одно число. SimpleStorage состоит из переменной storedData и двух функций, set и get. Функция set позволяет пользователю сохранить число, а функция get позволяет любому получить это число.

Развертывание и взаимодействие с SimpleStorage

Мы рассмотрим шаги по развертыванию контракта SimpleStorage на блокчейне Ethereum и взаимодействию с ним. Развертывание контракта в блокчейн Ethereum - это процесс передачи байт-кода и ABI контракта в сеть Ethereum, откуда он может быть вызван и выполнен. Как только контракт развернут, он получает уникальный адрес, по которому с ним можно связаться.

Здесь приведен код для SimpleStorage:

Python
# @title SimpleStorage
storedData: int128

@external
def set(x: int128):
 self.storedData = x

@external
def get() -> int128:
 return self.storedData

В этом контракте мы определяем публичную целочисленную переменную storedData, публичную функцию set(x: int128) для установки значения storedData и публичную константную функцию get() -> int128 для получения текущего значения storedData.

Вот пошаговое руководство по развертыванию этого контракта с помощью Remix:

  1. Откройте веб-браузер и перейдите на сайт Remix Ethereum IDE.

  2. Активируйте плагин Vyper Plugin

  3. Переключите окружение на Injected Web3 в разделе Deploy & Run Transactions. Это позволит подключить Remix к Вашему кошельку MetaMask.

  4. В разделе File Explorer щелкните на значке +, чтобы создать новый файл. Назовите его SimpleStorage.vy.

  5. Вставьте код контракта SimpleStorage в этот новый файл.

  6. Теперь перейдите на вкладкуVyperCompile и выберите контракт SimpleStorage.

  7. Переключитесь на вкладку Deploy & Run Transactions, а затем щелкните на кнопке Deploy.

  8. MetaMask откроет всплывающее окно подтверждения транзакции. Подтвердите транзакцию.

  9. После подтверждения транзакции Вы увидите развернутый контракт SimpleStorage в разделе Развернутые контракты.

  10. Теперь Вы можете взаимодействовать с контрактом. Например, чтобы сохранить число, введите его в функцию set и нажмите кнопку transact. Чтобы получить сохраненный номер, нажмите кнопку Получить.

SimpleVoting: Более сложный контракт

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

Развертывание и взаимодействие с SimpleVoting

Контракт SimpleVoting немного сложнее, чем SimpleStorage. В SimpleVoting у нас будет список кандидатов, каждый из которых представлен строкой.

Здесь приведен код для SimpleVoting:

Python
# Vyper Voting Contract

# Объявите переменную состояния `votes` как HashMap для хранения голосов за каждого кандидата.
голоса: HashMap[bytes32, uint256]

@external
def vote(candidate: bytes32):
   """
    Отдайте голос за кандидата.

    Аргументы:
 candidate: bytes32 - Идентификатор кандидата, за которого следует голосовать.
    """
   # Увеличение количества голосов за указанного кандидата.
    self.votes[candidate] += 1

@external
@view
def get_votes(candidate: bytes32) -> uint256:
 " " " 
 Получите общее количество голосов за кандидата.

    Аргументы:
 candidate: bytes32 - Идентификатор кандидата, за которого нужно получить голоса.

    Returns:
 uint256 - Общее количество голосов, полученных кандидатом.
    """
   return self.votes[candidate]

Этот контракт довольно прост, в нем нет никаких мер предосторожности против двойного или несанкционированного голосования. На практике Вам необходимо предусмотреть процедуры, предотвращающие эти трудности, например, регистрацию избирателей и проверку того, что каждый адрес может проголосовать только один раз.

Заключение и дальнейшие шаги

Закончив этот курс, Вы создали прочную основу для программирования блокчейна с помощью Vyper. Теперь у Вас есть твердое понимание Ethereum, смарт-контрактов и того, как создавать их в Remix IDE с помощью Vyper. Такое понимание открывает целый мир возможностей для разработки децентрализованных приложений и участия в экосистеме блокчейн.

Чтобы еще больше расширить свои навыки и знания, рассмотрите следующие области:

  1. Продвинутое программирование на Solidity: Solidity - еще один популярный язык программирования для смарт-контрактов Ethereum. Изучение Solidity расширит Ваши возможности по работе с существующими контрактами и внесет свой вклад в сообщество Ethereum. Ознакомьтесь с нашим курсом здесь:[вставьте ссылку на курс Solidity, если Вы находитесь онлайн]

  2. Разработка децентрализованных приложений (DApp): Погрузитесь глубже в создание полноценных децентрализованных приложений, сочетая смарт-контракты с фронт-енд разработкой с использованием таких фреймворков, как Web3.js, React или Vue.js. Это позволит Вам создавать интерактивные пользовательские интерфейсы, взаимодействующие с Вашими смарт-контрактами.

  3. Безопасность и аудит: Изучите лучшие практики обеспечения безопасности смарт-контрактов и проведения тщательного аудита кода. Понимание потенциальных уязвимостей и снижение рисков обеспечит надежность и безопасность Ваших смарт-контрактов.

  4. Интероперабельность блокчейна: Исследуйте интеграцию различных сетей и протоколов блокчейн. Узнайте о межцепочечном взаимодействии и разработке интероперабельных смарт-контрактов, которые могут взаимодействовать с несколькими блокчейнами.
    Помните, что технология блокчейн постоянно развивается, и очень важно быть в курсе последних достижений. Взаимодействуйте с сообществом blockchain, активно участвуйте в дискуссиях, изучайте новые концепции и технологии, чтобы оставаться информированным и современным.

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.
الكتالوج
الدرس رقم 3

Создание и управление смарт-контрактами в Vyper

Закончив этот курс, Вы создали прочную основу для программирования блокчейна с помощью Vyper. Теперь у Вас есть твердое понимание Ethereum, смарт-контрактов и того, как создавать их в Remix IDE с помощью Vyper. Такое понимание открывает целый мир возможностей для разработки децентрализованных приложений и участия в экосистеме блокчейн.

Введение

Добро пожаловать в Урок 3! В этом уроке мы сосредоточимся на применении концепций и синтаксиса, изученных в предыдущих уроках, для разработки смарт-контрактов Ethereum с помощью Vyper с Remix IDE. Мы будем создавать, развертывать и взаимодействовать с простыми смарт-контрактами, что даст Вам практический опыт работы с Vyper и Ethereum. Первый контракт будет представлять собой простой контракт на хранение данных, а второй будет имитировать базовую систему голосования.

SimpleStorage: Введение в смарт-контракты

Первый контракт, который мы развернем, - это SimpleStorage. Этот контракт, как следует из названия, представляет собой простой контракт на хранение данных, в котором хранится одно число. SimpleStorage состоит из переменной storedData и двух функций, set и get. Функция set позволяет пользователю сохранить число, а функция get позволяет любому получить это число.

Развертывание и взаимодействие с SimpleStorage

Мы рассмотрим шаги по развертыванию контракта SimpleStorage на блокчейне Ethereum и взаимодействию с ним. Развертывание контракта в блокчейн Ethereum - это процесс передачи байт-кода и ABI контракта в сеть Ethereum, откуда он может быть вызван и выполнен. Как только контракт развернут, он получает уникальный адрес, по которому с ним можно связаться.

Здесь приведен код для SimpleStorage:

Python
# @title SimpleStorage
storedData: int128

@external
def set(x: int128):
 self.storedData = x

@external
def get() -> int128:
 return self.storedData

В этом контракте мы определяем публичную целочисленную переменную storedData, публичную функцию set(x: int128) для установки значения storedData и публичную константную функцию get() -> int128 для получения текущего значения storedData.

Вот пошаговое руководство по развертыванию этого контракта с помощью Remix:

  1. Откройте веб-браузер и перейдите на сайт Remix Ethereum IDE.

  2. Активируйте плагин Vyper Plugin

  3. Переключите окружение на Injected Web3 в разделе Deploy & Run Transactions. Это позволит подключить Remix к Вашему кошельку MetaMask.

  4. В разделе File Explorer щелкните на значке +, чтобы создать новый файл. Назовите его SimpleStorage.vy.

  5. Вставьте код контракта SimpleStorage в этот новый файл.

  6. Теперь перейдите на вкладкуVyperCompile и выберите контракт SimpleStorage.

  7. Переключитесь на вкладку Deploy & Run Transactions, а затем щелкните на кнопке Deploy.

  8. MetaMask откроет всплывающее окно подтверждения транзакции. Подтвердите транзакцию.

  9. После подтверждения транзакции Вы увидите развернутый контракт SimpleStorage в разделе Развернутые контракты.

  10. Теперь Вы можете взаимодействовать с контрактом. Например, чтобы сохранить число, введите его в функцию set и нажмите кнопку transact. Чтобы получить сохраненный номер, нажмите кнопку Получить.

SimpleVoting: Более сложный контракт

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

Развертывание и взаимодействие с SimpleVoting

Контракт SimpleVoting немного сложнее, чем SimpleStorage. В SimpleVoting у нас будет список кандидатов, каждый из которых представлен строкой.

Здесь приведен код для SimpleVoting:

Python
# Vyper Voting Contract

# Объявите переменную состояния `votes` как HashMap для хранения голосов за каждого кандидата.
голоса: HashMap[bytes32, uint256]

@external
def vote(candidate: bytes32):
   """
    Отдайте голос за кандидата.

    Аргументы:
 candidate: bytes32 - Идентификатор кандидата, за которого следует голосовать.
    """
   # Увеличение количества голосов за указанного кандидата.
    self.votes[candidate] += 1

@external
@view
def get_votes(candidate: bytes32) -> uint256:
 " " " 
 Получите общее количество голосов за кандидата.

    Аргументы:
 candidate: bytes32 - Идентификатор кандидата, за которого нужно получить голоса.

    Returns:
 uint256 - Общее количество голосов, полученных кандидатом.
    """
   return self.votes[candidate]

Этот контракт довольно прост, в нем нет никаких мер предосторожности против двойного или несанкционированного голосования. На практике Вам необходимо предусмотреть процедуры, предотвращающие эти трудности, например, регистрацию избирателей и проверку того, что каждый адрес может проголосовать только один раз.

Заключение и дальнейшие шаги

Закончив этот курс, Вы создали прочную основу для программирования блокчейна с помощью Vyper. Теперь у Вас есть твердое понимание Ethereum, смарт-контрактов и того, как создавать их в Remix IDE с помощью Vyper. Такое понимание открывает целый мир возможностей для разработки децентрализованных приложений и участия в экосистеме блокчейн.

Чтобы еще больше расширить свои навыки и знания, рассмотрите следующие области:

  1. Продвинутое программирование на Solidity: Solidity - еще один популярный язык программирования для смарт-контрактов Ethereum. Изучение Solidity расширит Ваши возможности по работе с существующими контрактами и внесет свой вклад в сообщество Ethereum. Ознакомьтесь с нашим курсом здесь:[вставьте ссылку на курс Solidity, если Вы находитесь онлайн]

  2. Разработка децентрализованных приложений (DApp): Погрузитесь глубже в создание полноценных децентрализованных приложений, сочетая смарт-контракты с фронт-енд разработкой с использованием таких фреймворков, как Web3.js, React или Vue.js. Это позволит Вам создавать интерактивные пользовательские интерфейсы, взаимодействующие с Вашими смарт-контрактами.

  3. Безопасность и аудит: Изучите лучшие практики обеспечения безопасности смарт-контрактов и проведения тщательного аудита кода. Понимание потенциальных уязвимостей и снижение рисков обеспечит надежность и безопасность Ваших смарт-контрактов.

  4. Интероперабельность блокчейна: Исследуйте интеграцию различных сетей и протоколов блокчейн. Узнайте о межцепочечном взаимодействии и разработке интероперабельных смарт-контрактов, которые могут взаимодействовать с несколькими блокчейнами.
    Помните, что технология блокчейн постоянно развивается, и очень важно быть в курсе последних достижений. Взаимодействуйте с сообществом blockchain, активно участвуйте в дискуссиях, изучайте новые концепции и технологии, чтобы оставаться информированным и современным.

إخلاء المسؤولية
* ينطوي الاستثمار في العملات الرقمية على مخاطر كبيرة. فيرجى المتابعة بحذر. ولا تهدف الدورة التدريبية إلى تقديم المشورة الاستثمارية.
* تم إنشاء الدورة التدريبية من قبل المؤلف الذي انضم إلى مركز التعلّم في Gate. ويُرجى العلم أنّ أي رأي يشاركه المؤلف لا يمثّل مركز التعلّم في Gate.