Развертывание контракта

Теперь, когда мы сгенерировали двоичный файл Wasm из нашего исходного кода и запустили узел Substrate, мы хотим развернуть этот контракт в нашей цепочке блоков Substrate.

Развертывание смарт-контрактов на Substrate немного отличается от традиционных блокчейнов смарт-контрактов.

В то время как совершенно новый блок исходного кода смарт-контракта развертывается каждый раз, когда вы отправляете контракт на другие платформы, Substrate предпочитает оптимизировать это поведение. Например, стандартный токен ERC20 развертывался в Ethereum тысячи раз, иногда только с изменениями начальной конфигурации (через функцию «конструктора» Solidity). Каждый из этих экземпляров занимает место в блокчейне, эквивалентное размеру исходного кода контракта, хотя на самом деле код не был изменен.

В Substrate процесс развертывания контракта разделен на две части:

  1. Размещение вашего кода в блокчейне
  2. Создание экземпляра вашего контракта

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

Быстрый трек

Если вы пропустили предыдущие шаги и просто хотите увидеть взаимодействие с чернилами! смарт-контракт, загрузите flipper.wasm и [metadata.json](https://contracts.edgewa.re/0/assets/flipper .json)

Размещение вашего кода в блокчейне

Когда ваш узел разработки Substrate запущен, вы можете вернуться в пользовательский интерфейс Polkadot, где вы сможете взаимодействовать со своим блокчейном.

На вкладке Разработчик щелкните специально разработанный раздел Контракты. пользовательского интерфейса.

В разделе Контракты выберите "Загрузить и развернуть код".

Во всплывающем окне выберите учетную запись развертывания с некоторым балансом учетной записи, например «Дэйв». В качестве метаданных контракта выберите файл JSON. В скомпилированном контракте WASM выберите созданный нами файл flipper.wasm. Имя пакета кода будет "flipper". Когда все параметры заполнены, нажмите Далее.docsdeploy1

Создание экземпляра вашего контракта

Смарт-контракты существуют как расширение системы учетных записей в блокчейне. Таким образом, создание экземпляра этого контракта создаст новый «AccountId», который будет хранить любой баланс, управляемый смарт-контрактом, и позволит нам взаимодействовать с контрактом.

Чтобы создать экземпляр нашего контракта, нам просто нужно предоставить этому контрактному счету пожертвование в размере 10 единиц, чтобы заплатить арендную плату за хранение и установить максимально допустимый газ в значение(1 000 000 ):

Примечание. Как упоминалось ранее, создание контракта предполагает создание новой учетной записи. Таким образом, вы должны быть уверены, что предоставили контрактному счету как минимум экзистенциальный депозит, определенный вашей цепочкой блоков. Мы также должны быть в состоянии оплатить арендную плату по контракту (пожертвование). Если мы израсходуем весь этот депозит, контракт станет недействительным. Мы всегда можем пополнить баланс контракта и сохранить его в цепочке.

Затем вы разрешите контракт, подписав и отправив. Вы также можете оставить чаевые автору блока, если хотите.

Когда вы нажимаете Deploy, вы должны увидеть ряд событий, включая создание новой учетной записи (system.NewAccount) и создание экземпляра контракта (contracts.instantiate):