Lección 1

Добро пожаловать в программирование на SmartPy и Tezos

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

Введение в блокчейн, Tezos и SmartPy

Основы блокчейна

Прежде чем мы сможем полностью понять Tezos и SmartPy, мы должны сначала понять технологию, которая лежит в основе всего этого: блокчейн. Блокчейн - это цепочка блоков, каждый из которых содержит список транзакций. Технология Blockchain обеспечивает децентрализованную базу данных, или "цифровую книгу", транзакций, которую могут видеть все участники сети. Его архитектура гарантирует, что каждая транзакция уникальна, и как только она записана в базу данных, ее невозможно изменить.

Введение в Tezos

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

Tezos также предлагает платформу для смарт-контрактов, которые представляют собой самоисполняющиеся контракты с соглашением между покупателем и продавцом, записанным непосредственно в строках кода. Такая способность управлять и проверять цифровые соглашения предлагает широкий спектр потенциальных применений - от финансовых услуг до цепочек поставок и децентрализованных приложений (DApps). Подробнее о Tezos: Что такое Tezos? Все, что Вам нужно знать о XTZ

SmartPy: Язык смарт-контрактов для Tezos

Для создания смарт-контрактов на Tezos мы используем язык под названием SmartPy. SmartPy - это библиотека на языке Python для разработки смарт-контрактов для блокчейна Tezos. Это интуитивно понятный и эффективный язык для выражения контрактов и связанных с ними сценариев тестирования.

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

Начало работы со SmartPy и Ваш первый контракт

Доступ к SmartPy IDE

SmartPy включает в себя полнофункциональную интегрированную среду разработки (IDE), доступную из Вашего веб-браузера. Перейдите в SmartPy IDE, чтобы начать писать свой первый смарт-контракт.

Написание Вашего первого контракта

В SmartPy IDE Вы найдете окно редактирования, в котором Вы можете ввести код Вашего контракта. Давайте начнем с составления базового контракта. Скопируйте и вставьте следующий код в редактор SmartPy:

Python
import smartpy as sp

# Модуль SmartPy
@sp.module
def main():
   # Класс контрактов
 class MyContract(sp.Contract):
 def __init__(self, myParameter1, myParameter2):
 self.data.myParameter1 = myParameter1
 self.data.myParameter2 = myParameter2

 # Точка входа, т.е. приемник сообщений
 # (контракты реагируют на сообщения)
 @sp.entrypoint
 def myEntryPoint(self, params):
 assert self.data.myParameter1 <= 123
 self.data.myParameter1 += params

Понимание контракта

Этот контрактный кодекс состоит из нескольких важных частей:

  • import smartpy as sp - Здесь импортируется библиотека SmartPy, чтобы мы могли использовать ее для написания нашего контракта.
  • @sp.module - Этот декоратор сообщает интерпретатору SmartPy, что данная функция будет содержать контракт SmartPy.
  • class MyContract(sp.Contract): - Здесь мы определяем новый класс (образец для создания новых объектов) для нашего контракта. Он наследуется от суперкласса sp.Contract, который предоставляет множество полезных функциональных возможностей для работы с состоянием контракта и определения его поведения.
  • self.data.myParameter1 = myParameter1 и self.data.myParameter2 = myParameter2 - Здесь мы определяем начальное состояние нашего контракта. Эти два параметра будут переданы контракту при его развертывании на блокчейне.
  • @sp.entrypoint - Этот декоратор сообщает интерпретатору, что следующая функция(myEntryPoint) является точкой входа нашего контракта. Точки входа - это то, как мы взаимодействуем с нашим контрактом после его развертывания.
  • self.data.myParameter1 += params - Эта строка кода увеличивает myParameter1 на сумму, переданную в myEntryPoint.

Тестирование контракта

Важнейшей частью составления контрактов является их тщательное тестирование. Тестирование в SmartPy интегрировано в процесс разработки. Вот как Вы можете добавить тесты в контракт:

Python
# Тесты
@sp.add_test(name="Welcome")
def test():
   # Мы определяем тестовый сценарий вместе с некоторыми выводами и проверками
 # Сценарий принимает модуль в качестве параметра
 scenario = sp.test_scenario(main)
    scenario.h1("Welcome")

    # Сначала мы определяем контракт и добавляем его в сценарий
 c1 = main.MyContract(12, 123)
 scenario += c1

 # И вызываем некоторые из его точек входа
 c1.myEntryPoint(12)
 c1.myEntryPoint(13)
 c1.myEntryPoint(14)
 c1.myEntryPoint(50)
 c1.myEntryPoint(50)
 c1.myEntryPoint(50).run(valid=False)  # ожидается, что это не удастся

 # Наконец, мы проверяем его окончательное хранение
 scenario.verify(c1.data.myParameter1 == 151)

   # Мы можем определить другой контракт, используя текущее состояние c1
 c2 = main.MyContract(1, c1.data.myParameter1)
    scenario += c2
 scenario.verify(c2.data.myParameter2 == 151)

Запуск контракта и тестов

Теперь Ваш полный контракт должен выглядеть следующим образом:

Python
import smartpy as sp

# Это редактор SmartPy.
# Вы можете поэкспериментировать со SmartPy, загрузив шаблон.
# (в меню Commands над этим редактором)
#
# Типичная программа SmartPy имеет следующий вид:


# Модуль SmartPy
@sp.module
def main():
   # Класс контрактов
 class MyContract(sp.Contract):
 def __init__(self, myParameter1, myParameter2):
 self.data.myParameter1 = myParameter1
 self.data.myParameter2 = myParameter2

 # Точка входа, т.е. приемник сообщений
 # (контракты реагируют на сообщения)
 @sp.entrypoint
 def myEntryPoint(self, params):
 assert self.data.myParameter1 <= 123
 self.data.myParameter1 += params


# Тесты
@sp.add_test(name="Welcome")
def test():
   # Мы определяем тестовый сценарий вместе с некоторыми выводами и проверками
 # Сценарий принимает модуль в качестве параметра
 scenario = sp.test_scenario(main)
    scenario.h1("Welcome")

    # Сначала мы определяем контракт и добавляем его в сценарий
 c1 = main.MyContract(12, 123)
 scenario += c1

 # И вызываем некоторые из его точек входа
 c1.myEntryPoint(12)
 c1.myEntryPoint(13)
 c1.myEntryPoint(14)
 c1.myEntryPoint(50)
 c1.myEntryPoint(50)
 c1.myEntryPoint(50).run(valid=False)  # ожидается, что это не удастся

 # Наконец, мы проверяем его окончательное хранение
 scenario.verify(c1.data.myParameter1 == 151)

   # Мы можем определить другой контракт, используя текущее состояние c1
 c2 = main.MyContract(1, c1.data.myParameter1)
    scenario += c2
 scenario.verify(c2.data.myParameter2 == 151)

После того, как Вы написали контракт и тесты, Вы можете запустить их непосредственно в IDE. Нажмите кнопку "Выполнить" в правом верхнем углу IDE. IDE скомпилирует Ваш контракт, выполнит тесты и выведет на экран результаты вместе с подробным объяснением каждой операции и изменения состояния.

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

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.
Catálogo
Lección 1

Добро пожаловать в программирование на SmartPy и Tezos

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

Введение в блокчейн, Tezos и SmartPy

Основы блокчейна

Прежде чем мы сможем полностью понять Tezos и SmartPy, мы должны сначала понять технологию, которая лежит в основе всего этого: блокчейн. Блокчейн - это цепочка блоков, каждый из которых содержит список транзакций. Технология Blockchain обеспечивает децентрализованную базу данных, или "цифровую книгу", транзакций, которую могут видеть все участники сети. Его архитектура гарантирует, что каждая транзакция уникальна, и как только она записана в базу данных, ее невозможно изменить.

Введение в Tezos

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

Tezos также предлагает платформу для смарт-контрактов, которые представляют собой самоисполняющиеся контракты с соглашением между покупателем и продавцом, записанным непосредственно в строках кода. Такая способность управлять и проверять цифровые соглашения предлагает широкий спектр потенциальных применений - от финансовых услуг до цепочек поставок и децентрализованных приложений (DApps). Подробнее о Tezos: Что такое Tezos? Все, что Вам нужно знать о XTZ

SmartPy: Язык смарт-контрактов для Tezos

Для создания смарт-контрактов на Tezos мы используем язык под названием SmartPy. SmartPy - это библиотека на языке Python для разработки смарт-контрактов для блокчейна Tezos. Это интуитивно понятный и эффективный язык для выражения контрактов и связанных с ними сценариев тестирования.

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

Начало работы со SmartPy и Ваш первый контракт

Доступ к SmartPy IDE

SmartPy включает в себя полнофункциональную интегрированную среду разработки (IDE), доступную из Вашего веб-браузера. Перейдите в SmartPy IDE, чтобы начать писать свой первый смарт-контракт.

Написание Вашего первого контракта

В SmartPy IDE Вы найдете окно редактирования, в котором Вы можете ввести код Вашего контракта. Давайте начнем с составления базового контракта. Скопируйте и вставьте следующий код в редактор SmartPy:

Python
import smartpy as sp

# Модуль SmartPy
@sp.module
def main():
   # Класс контрактов
 class MyContract(sp.Contract):
 def __init__(self, myParameter1, myParameter2):
 self.data.myParameter1 = myParameter1
 self.data.myParameter2 = myParameter2

 # Точка входа, т.е. приемник сообщений
 # (контракты реагируют на сообщения)
 @sp.entrypoint
 def myEntryPoint(self, params):
 assert self.data.myParameter1 <= 123
 self.data.myParameter1 += params

Понимание контракта

Этот контрактный кодекс состоит из нескольких важных частей:

  • import smartpy as sp - Здесь импортируется библиотека SmartPy, чтобы мы могли использовать ее для написания нашего контракта.
  • @sp.module - Этот декоратор сообщает интерпретатору SmartPy, что данная функция будет содержать контракт SmartPy.
  • class MyContract(sp.Contract): - Здесь мы определяем новый класс (образец для создания новых объектов) для нашего контракта. Он наследуется от суперкласса sp.Contract, который предоставляет множество полезных функциональных возможностей для работы с состоянием контракта и определения его поведения.
  • self.data.myParameter1 = myParameter1 и self.data.myParameter2 = myParameter2 - Здесь мы определяем начальное состояние нашего контракта. Эти два параметра будут переданы контракту при его развертывании на блокчейне.
  • @sp.entrypoint - Этот декоратор сообщает интерпретатору, что следующая функция(myEntryPoint) является точкой входа нашего контракта. Точки входа - это то, как мы взаимодействуем с нашим контрактом после его развертывания.
  • self.data.myParameter1 += params - Эта строка кода увеличивает myParameter1 на сумму, переданную в myEntryPoint.

Тестирование контракта

Важнейшей частью составления контрактов является их тщательное тестирование. Тестирование в SmartPy интегрировано в процесс разработки. Вот как Вы можете добавить тесты в контракт:

Python
# Тесты
@sp.add_test(name="Welcome")
def test():
   # Мы определяем тестовый сценарий вместе с некоторыми выводами и проверками
 # Сценарий принимает модуль в качестве параметра
 scenario = sp.test_scenario(main)
    scenario.h1("Welcome")

    # Сначала мы определяем контракт и добавляем его в сценарий
 c1 = main.MyContract(12, 123)
 scenario += c1

 # И вызываем некоторые из его точек входа
 c1.myEntryPoint(12)
 c1.myEntryPoint(13)
 c1.myEntryPoint(14)
 c1.myEntryPoint(50)
 c1.myEntryPoint(50)
 c1.myEntryPoint(50).run(valid=False)  # ожидается, что это не удастся

 # Наконец, мы проверяем его окончательное хранение
 scenario.verify(c1.data.myParameter1 == 151)

   # Мы можем определить другой контракт, используя текущее состояние c1
 c2 = main.MyContract(1, c1.data.myParameter1)
    scenario += c2
 scenario.verify(c2.data.myParameter2 == 151)

Запуск контракта и тестов

Теперь Ваш полный контракт должен выглядеть следующим образом:

Python
import smartpy as sp

# Это редактор SmartPy.
# Вы можете поэкспериментировать со SmartPy, загрузив шаблон.
# (в меню Commands над этим редактором)
#
# Типичная программа SmartPy имеет следующий вид:


# Модуль SmartPy
@sp.module
def main():
   # Класс контрактов
 class MyContract(sp.Contract):
 def __init__(self, myParameter1, myParameter2):
 self.data.myParameter1 = myParameter1
 self.data.myParameter2 = myParameter2

 # Точка входа, т.е. приемник сообщений
 # (контракты реагируют на сообщения)
 @sp.entrypoint
 def myEntryPoint(self, params):
 assert self.data.myParameter1 <= 123
 self.data.myParameter1 += params


# Тесты
@sp.add_test(name="Welcome")
def test():
   # Мы определяем тестовый сценарий вместе с некоторыми выводами и проверками
 # Сценарий принимает модуль в качестве параметра
 scenario = sp.test_scenario(main)
    scenario.h1("Welcome")

    # Сначала мы определяем контракт и добавляем его в сценарий
 c1 = main.MyContract(12, 123)
 scenario += c1

 # И вызываем некоторые из его точек входа
 c1.myEntryPoint(12)
 c1.myEntryPoint(13)
 c1.myEntryPoint(14)
 c1.myEntryPoint(50)
 c1.myEntryPoint(50)
 c1.myEntryPoint(50).run(valid=False)  # ожидается, что это не удастся

 # Наконец, мы проверяем его окончательное хранение
 scenario.verify(c1.data.myParameter1 == 151)

   # Мы можем определить другой контракт, используя текущее состояние c1
 c2 = main.MyContract(1, c1.data.myParameter1)
    scenario += c2
 scenario.verify(c2.data.myParameter2 == 151)

После того, как Вы написали контракт и тесты, Вы можете запустить их непосредственно в IDE. Нажмите кнопку "Выполнить" в правом верхнем углу IDE. IDE скомпилирует Ваш контракт, выполнит тесты и выведет на экран результаты вместе с подробным объяснением каждой операции и изменения состояния.

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

Descargo de responsabilidad
* La inversión en criptomonedas implica riesgos significativos. Proceda con precaución. El curso no pretende ser un asesoramiento de inversión.
* El curso ha sido creado por el autor que se ha unido a Gate Learn. Cualquier opinión compartida por el autor no representa a Gate Learn.