Учебники

Ethereum — Краткое руководство

Ethereum — Введение

Огромный успех Биткойна вызвал у некоторых интерес к созданию собственных валют. Глядя на преимущества, которые предлагает биткойн — цифровая валюта, люди хотели использовать концепцию блокчейна в своих собственных приложениях. Люди хотели перейти от своих физических контрактов к интеллектуальным цифровым контрактам, где автоматически решались бы несколько вопросов, таких как отказ от прав, прозрачность, безопасность и т. Д. Результатом этих усилий стало создание Ethereum — популярной платформы для создания распределенных приложений Blockchain, поддерживающих умные контракты.

Из этого руководства вы узнаете, как создать распределенное приложение (DAPP) на платформе Ethereum. В частности, вы узнаете, как написать контракт, протестировать его на локальном блокчейне и, наконец, развернуть его на внешнем блокчейне для глубокого тестирования и коммерческого использования. Вы будете использовать Solidity , объектно-ориентированный язык для разработки контрактов. Вы также будете использовать Remix , IDE с открытым исходным кодом для разработки и тестирования контрактов. Чтобы развернуть проверенный контракт на внешнем блокчейне, вы будете использовать Ganache . Для взаимодействия с договором вам понадобится клиентское приложение. Мы будем использовать MyEtherWallet для создания кошелька для каждого такого клиента. Создатель контракта опубликует контракт. Любой другой клиент посмотрит на ценность контакта, используя интерфейс, предоставленный договором, и отправит немного денег создателю за выполнение части договора.

Итак, давайте начнем с написания контракта.

Ethereum — Умные Контракты

Есть несколько инструментов для разработки и тестирования контрактов. Один из самых простых инструментов представлен на официальном сайте Ethereum. Инструмент называется Remix , мы будем использовать его для разработки нашего контракта.

Ремикс для разработки контрактов

Откройте Remix IDE, введя следующий URL в вашем браузере.

https://remix.ethereum.org

Появится следующий экран.

Разработка контракта

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

Варианты ремиксов

Теперь вы начнете писать свой контракт.

Ethereum — Твердость для написания контракта

Солидность — это объектно-ориентированный язык, специально разработанный для написания контрактов. Это язык высокого уровня, который наследует черты C ++, Python и JavaScript. Компилятор Solidity компилирует ваш исходный код в байт-код, который работает на виртуальной машине Ethereum (EVM).

Для быстрого понимания синтаксиса Solidity посмотрите на пример кода в IDE.

pragma solidity >=0.4.22 <0.6.0;
contract Ballot {

Первая строка — это директива для компилятора. Вторая строка начинается с определения договора. В контракте вы объявляете переменные, такие как —

address chairperson;

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

Затем вы можете определить конструктор, который вызывается во время создания контракта.

constructor(uint8 _numProposals) public {

После конструктора вы определите несколько методов, которые являются методами контракта. В примере контракта giveRightToVote является одним из таких методов, имеющих следующий синтаксис:

function giveRightToVote(address toVoter) public {

Ключевое слово public делает этот метод общедоступным для любого клиента, имеющего доступ к контракту.

Аналогично, в примере контракта определены еще три метода: делегат, голосование и WinProposal . Изучите их для собственного понимания синтаксиса Solidity. Это предварительные условия для написания собственного контракта. Объяснение полного синтаксиса Solidity выходит за рамки данного руководства.

Ethereum — Разработка MyContract

Мы назовем наш контракт MyContract как в следующей декларации —

contract MyContract {

Мы объявим две переменные следующим образом:

uint amount;
uint value;

Переменная сумма будет содержать накопленные деньги, отправленные исполнителями договора создателю договора. Поле значения будет содержать стоимость контракта. Когда исполнители исполняют контракт, поле значения будет изменено, чтобы отразить сбалансированную стоимость контракта.

В конструкторе контракта мы устанавливаем значения этих двух переменных.

constructor (uint initialAmount, uint initialValue) public {
   amount = 0;
   value = 1000;
}

Поскольку изначально сумма, собранная по контракту, равна нулю, мы устанавливаем в поле суммы значение 0. Мы устанавливаем в качестве значения контракта произвольное число, в данном случае это 1000. Создатель контракта принимает решение об этом значении.

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

function getAmount() public view returns(uint) {
   return amount;
}

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

function getBalance() public view returns(uint) {
   return value;
}

Наконец, мы пишем метод контракта (Отправить) . Это позволяет клиентам отправлять деньги создателю контракта —

function send(uint newDeposit) public {
   value = value - newDeposit;
   amount = amount + newDeposit;
}

Выполнение метода send изменяет поля стоимости и суммы контракта.

Полный код договора приведен ниже —

contract MyContract {
   uint amount;
   uint value;

   constructor (uint initialAmount, uint initialValue) public {
      amount = 0;
      value = 1000;
   }
   function getBalance() public view returns(uint) {
      return value;
   }
   function getAmount() public view returns(uint) {
      return amount;
   }
   function send(uint newDeposit) public {
      value = value - newDeposit;
      amount = amount + newDeposit;
   }
}

Ethereum — Составление договора

Как только вы напишите полный код контракта, его компиляция в этой среде будет тривиальной. Просто установите флажок Автокомпиляция в IDE, как показано на скриншоте ниже.

Флажок автокомпиляции

В качестве альтернативы вы можете скомпилировать договор, нажав кнопку с заголовком «Начать компиляцию» .

Начать компилировать

Если есть какая-либо опечатка, исправьте это в окне кода. Убедитесь, что код скомпилирован полностью без ошибок. Теперь вы готовы развернуть контракт.

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

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

Развернуть контракт

Название контракта отображается в выделенном списке. Ниже вы увидите кнопку Deploy , нажмите на нее, чтобы развернуть контракт. Контракт будет развернут на встроенном блокчейне Remix. Вы сможете увидеть развернутый контракт внизу экрана. Вы можете увидеть это в выделенной части скриншота ниже.

Развернуть выделенную часть

Обратите внимание на наличие трех имен методов в этой выделенной области. Далее вы будете взаимодействовать с контрактом, выполняя методы контракта.

Ethereum — Взаимодействие с контрактом

Когда вы щелкнете по развернутому контракту, вы увидите различные открытые методы, предоставляемые контрактом. Это показано на скриншоте ниже.

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

Первый метод send содержит поле редактирования перед ним. Здесь вы введете параметры, необходимые для метода контракта. Два других метода не принимают никаких параметров.

Отправка денег

Теперь введите некоторую сумму, например 100, перед функцией отправки, отображаемой в окне контракта. Нажмите кнопку отправки . Это выполнит метод отправки контракта, уменьшая значение поля значения контракта и увеличивая значение поля суммы .

Отправка денег

Изучение стоимости контракта

Предыдущее действие отправки денег уменьшило стоимость контракта на 100. Теперь вы можете проверить это, вызвав метод getBalance контракта. Вы увидите результат при нажатии на кнопку getBalance , как показано на скриншоте ниже —

Изучение стоимости контракта

Стоимость контракта теперь снижена до 900.

Изучение собранной суммы

В этом разделе мы рассмотрим сумму денег, собранную на данный момент по этому контракту. Для этого нажмите на кнопку getAmount . Появится следующий экран.

Изучение собранной суммы

Значение поля количества изменилось с 0 до 100.

Попробуйте выполнить несколько операций отправки и проверьте значения контракта и поля суммы, чтобы сделать вывод, что развернутый контракт выполняется должным образом.

Ethereum — ограничения ремикса

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

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

Ethereum — Ганаш для блокчейна

Ganache используется для настройки персонального блокчейна Ethereum для тестирования ваших контрактов Solidity. Это обеспечивает больше возможностей по сравнению с Remix. Вы узнаете об особенностях, когда будете работать с Ganache. Прежде чем вы начнете использовать Ganache, вы должны сначала загрузить и установить Blockchain на вашем локальном компьютере.

Загрузка Ганаш

Вы можете скачать Ganache по следующему URL —

https://truffleframework.com/ganache

Ganache доступен на нескольких платформах. Мы разработали и протестировали весь этот учебник на Mac. Таким образом, на скриншотах ниже будет показана установка Mac. Когда вы открываете установочный URL, указанный выше, он автоматически определяет ОС вашего компьютера и направляет вас к соответствующей бинарной установке. На приведенном ниже снимке экрана показана установка Mac.

Загрузка Ганаш

Когда вы нажмете кнопку ЗАГРУЗИТЬ, начнется загрузка файла DMG для установки на Mac.

Установка Ganache

Найдите «Ganache-2.0.0.dmg» в папке «Загрузки» и дважды щелкните по нему, чтобы установить Ganache. После успешной установки появится следующий экран —

Установка Ganache

Перетащите значок Ganache в папку приложения. Теперь Ganache доступен как приложение на вашем Mac.

Если вы используете другую ОС, следуйте инструкциям, приведенным для успешной установки.

Начиная Ганаш

Теперь найдите Ganache в папке «Приложение» и дважды щелкните его значок, чтобы запустить Ganache.

Ganache Desktop

Когда Ganache запускается, появится экран Ganache, как показано ниже —

Ganache Desktop

Нажмите QUICKSTART, чтобы запустить Ganache. Вы увидите консоль Ganache, как показано ниже —

БЫСТРЫЙ СТАРТ

Консоль на скриншоте выше показывает две учетные записи пользователей с балансом 100 ETH (Ether — валюта для транзакций на платформе Ethereum). Он также показывает нулевое количество транзакций для каждой учетной записи. Поскольку пользователь еще не выполнил никаких транзакций, этот счет, очевидно, равен нулю.

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

Ethereum — Настройки сервера Ganache

Нажмите на значок настроек в верхней правой части экрана, как показано на скриншоте ниже —

Настройки Ganache

Экран настроек сервера появится, как показано ниже —

Настройки сервера

Здесь вы сможете установить значения адреса сервера и номера порта для вашего сервера Ganache. В настоящее время оставьте их значения по умолчанию. Идентификатор сети является внутренним идентификатором цепочки блоков сервера Ganache; оставьте это к его значению по умолчанию. Кнопка Automine находится во включенном состоянии, указывая, что транзакции будут обработаны мгновенно. Если вы отключили это, он попросит вас ввести время в секундах, после которого блоки будут добываться.

Учетная запись и ключи

Когда вы нажмете на пункт меню « Аккаунты и ключи» , вы увидите следующий экран —

Учетная запись и ключи

Здесь вы сможете установить баланс по умолчанию для каждой учетной записи. Значение по умолчанию — 100. Теперь это объясняет, почему вы видели 100 ETH для каждой учетной записи на скриншоте рабочего стола. Вы также можете установить количество учетных записей на этом экране. Значение, показанное на этом снимке экрана, равно 2, и поэтому на рабочем столе было только две учетные записи.

Теперь мы поработаем с экраном двух настроек; знание того, как эти две работы будут достаточными. Перезагрузите сервер, нажав кнопку RESTART в правой части экрана. Теперь вы вернетесь к экрану рабочего стола. Попробуйте ввести разные значения в два поля выше, перезагрузите сервер и посмотрите, как он работает.

Эфириум — быстрое прохождение

Теперь мы кратко поймем, что доступно на рабочем столе Ganache. На рабочем столе вверху у нас есть несколько пунктов меню, некоторые из которых имеют непосредственное отношение к нам. Строка меню выделена на скриншоте ниже —

Опции меню Ganache

При нажатии на меню « ТРАНЗАКЦИИ» отображаются все транзакции, выполненные до сих пор. Вы будете выполнять транзакции очень скоро. Теперь вернитесь на экран выше и время от времени проверяйте транзакции. Типичный экран транзакции, как показано ниже —

Ганаш СДЕЛКИ

Аналогично, когда вы нажимаете на меню БЛОКИ , вы увидите различные добытые блоки. Рассмотрите следующий скриншот, чтобы понять, как выглядит меню БЛОКИ —

Ганаш Блоки

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

Теперь, когда вы поняли, как использовать Ganache для настройки частного блокчейна Ethereum, вы теперь создадите несколько клиентов, которые будут использовать этот блокчейн.

Ethereum — MyEtherWallet

Для клиентского приложения вы будете использовать MyEtherWallet .

Загрузите программное обеспечение MyEtherWallet по следующему URL —

https://github.com/kvhnuke/etherwallet/releases/tag/v3.21.06

При необходимости разархивируйте загруженный файл и откройте index.html . Вы увидите следующий интерфейс для создания нового кошелька.

MyEtherWallet

Ethereum — Создание кошелька

В этой главе мы научимся создавать кошелек Ethereum. Чтобы создать новый кошелек, введите пароль по вашему выбору, а затем нажмите кнопку « Создать новый кошелек ». Когда вы это сделаете, кошелек будет создан. Цифровой кошелек — это, по сути, генерация пары открытый / закрытый ключ, которую нужно хранить в надежном месте. Результат создания кошелька на следующем экране —

Создать новый кошелек

Нажмите кнопку «Загрузить файл хранилища ключей (UTC / JSON)» , чтобы сохранить сгенерированные ключи. Теперь нажмите на «Я понимаю. Продолжить » . Ваш закрытый ключ появится на экране, как показано на скриншоте ниже —

Скачать KeyStore

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

Бумажник для печати

Чтобы разблокировать свой кошелек, нажмите кнопку «Сохранить свой адрес» . Вы увидите следующий экран.

Разблокировать свой кошелек

Кошелек можно разблокировать с помощью параметра «Закрытый ключ», как показано на приведенном выше экране. Вырежьте и вставьте закрытый ключ из предыдущего снимка экрана и нажмите кнопку «Разблокировать». Ваш кошелек будет разблокирован, и в нижней части экрана появится сообщение. Поскольку на данный момент в кошельке ничего нет, разблокировка кошелька на данный момент нам не очень полезна.

Прикрепление кошелька к блокчейну Ganache

Вы создали кошелек; этот кошелек является клиентским интерфейсом для Blockchain. Мы прикрепим кошелек к блокчейну Ganache, который вы начали на предыдущем уроке. Для этого щелкните раскрывающийся список « Сеть», как показано на снимке экрана ниже.

Сеть Dropdown

Перейти в конец списка. Вы увидите опцию «Добавить пользовательскую сеть / узел» . Выберите этот пункт.

Теперь появится экран с запросом адреса сервера Ganache и порта, который он прослушивает.

Добавить пользовательскую сеть

Введите данные вашего сервера Ganachehttp://127.0.0.1 и порт: 8545 . Это будут значения, установленные вами в настройках сервера Ganache. Дайте имя по вашему выбору этому узлу. Нажмите кнопку «Сохранить и использовать пользовательский узел» . Вы увидите сообщение о подключении в нижней части экрана. На этом этапе ваш кошелек успешно подключен к блокчейну Ganache.

Теперь вы готовы развернуть контракт на этом подключенном блокчейне.

Ethereum — контракт на развертывание

Для развертывания контракта выберите пункт меню « Контракты», как показано на снимке экрана ниже.

Выберите меню контрактов

Вам нужно будет ввести байт-код контракта на этом экране. Помните, что когда вы компилируете код контракта Solidity, он генерирует байт-код, который работает на EVM. Теперь вам нужно получить этот байт-код из Remix IDE .

Перейдите на экран Remix IDE, ваш ранее набранный контракт должен быть там в окне кода. Если нет, перепечатайте контракт в окне кода. Нажмите на кнопку Bytecode, как показано на следующем скриншоте —

Экран Remix IDE

Байт-код вашего скомпилированного источника копируется в буфер обмена вместе с некоторой другой информацией. Вставьте скопированный код в ваш любимый текстовый редактор. Ниже приведен скриншот текстового редактора.

Remix байт-код

Значение тега объекта содержит желаемый байт-код. Скопируйте это внимательно, убедившись, что вы не копируете кавычки. Байт-код действительно длинный, поэтому убедитесь, что вы копируете до последнего байта, включая его. Теперь вставьте этот байт-код в экран Deploy Contract, как показано ниже —

Желаемый байт-код

Поле Gas Limit устанавливается автоматически.

Ниже поля «Лимит газа» вы найдете вариант доступа к кошельку.

Доступ к кошельку

Теперь получите доступ к кошельку, используя закрытый ключ учетной записи Ganache, на которой будет развернут этот контракт. Чтобы получить этот закрытый ключ, вернитесь в окно Ganache . Нажмите на значок ключа первой учетной записи, как показано ниже —

Первый аккаунт

Вы увидите закрытый ключ учетной записи № 1, как показано на скриншоте ниже —

Закрытый ключ первого аккаунта

Скопируйте этот закрытый ключ и вставьте его в раздел «Вставьте свой личный ключ», как показано ниже.

Вставьте свой закрытый ключ

Вы увидите кнопку «Разблокировать» в нижней части экрана. После разблокировки в нижней части экрана появится сообщение об успехе. На этом этапе ваш кошелек подключен к учетной записи № 1 блокчейна Ganache.

Теперь вы готовы подписать и развернуть договор. Нажмите на кнопку «Подписать транзакцию» , как показано на скриншоте ниже —

Подписать сделку

Подписание транзакции генерирует и отображает как необработанные, так и подписанные транзакции. Нажмите кнопку «Развернуть договор» , чтобы развернуть договор на блокчейне Ganache. Помните, что контракт развернут пользователем учетной записи # 1 Ganache Blockchain. Таким образом, пользователь аккаунта № 1 становится создателем договора. Перед развертыванием контракта вам будет предложено подтвердить транзакцию, поскольку это может стоить вам реальных денег, если вы разместите этот контракт на общедоступной реальной цепочке блоков Ethereum. Не волнуйтесь, для текущего частного Blockchain, работающего на вашей локальной машине, никаких реальных денег не требуется. Нажмите на кнопку « Выполнить транзакцию» , как показано на скриншоте ниже.

Частный блокчейн работает

Исследуйте консоль Ганаша; вы увидите, что баланс ETH на счете № 1 уменьшился, как показано на скриншоте ниже —

Ганаш консоль

Теперь нажмите на меню СДЕЛКИ, как показано на скриншоте ниже —

Скриншот Ganache транзакции

Вы увидите детали транзакции.

Ganache Подробнее о транзакциях

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

Ethereum — Взаимодействие с развернутым контрактом

Теперь вы готовы взаимодействовать с развернутым контрактом. Вернитесь на рабочий стол MyEtherWallet и нажмите вкладку «Взаимодействовать с контрактом», как показано на снимке экрана ниже.

Взаимодействовать с контрактом

Вставьте адрес договора, который вы ранее скопировали в поле «Адрес договора» . Вам также нужно вставить «Интерфейс ABI / JSON» контракта на экране выше.

Чтобы получить ABI , перейдите в окно Remix и нажмите кнопку ABI , как показано на скриншоте ниже.

Кнопка ABI

Интерфейс ABI / JSON будет скопирован в буфер обмена. Вставьте это в ваш любимый редактор, чтобы проверить сгенерированный интерфейс, который показан ниже —

ABI / JSON Interface
[
   {
      "constant": false,
      "inputs": [
         {
            "name": "newDeposit",
            "type": "uint256"
         }
      ],
      "name": "send",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "inputs": [
         {
            "name": "initialAmount",
            "type": "uint256"
         },
         {
            "name": "initialValue",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "getAmount",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "getBalance",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   }
]

После того, как вы вставите этот JSON в интерфейс MyEtherWallet , вы заметите, что кнопка ACCESS под интерфейсом JSON теперь активирована, как показано ниже —

Мой эфирный кошелек

Нажмите кнопку Доступ , чтобы получить доступ к договору.

После нажатия кнопки « Доступ» на экране появится адрес контракта и раскрывающийся список функций, как в редакторе Remix. Это показано на скриншоте ниже —

Кнопка доступа

Вы можете проверить различные функции контракта, как в случае развертывания Remix. Обратите внимание, что контакт теперь развернут на внешней блокчейне Ganache. Проверьте функцию getAmount ; Вы получите нулевое значение Amount, а getBalance покажет баланс 1000.

Теперь попробуйте отправить деньги. Он предоставит вам контроль textedit для ввода суммы. Когда вы пишете контракт, будет использоваться некоторый «газ», и вам будет предложено подтвердить транзакцию, прежде чем записывать ее в блокчейн. Транзакция будет выполнена в течение короткого времени, в зависимости от времени майнинга, установленного вами на сервере Ganache. После этого вы можете пересмотреть поля стоимости и суммы контракта, чтобы убедиться, что они действительно изменены.

Теперь вы можете просмотреть рабочий стол Ganache, чтобы просмотреть транзакции, которые вы уже выполнили. Пример вывода показан ниже —

образец вывода

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

Ethereum — Создание контрактных пользователей

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

Нажмите на меню контрактов и выберите опцию «Взаимодействовать с контрактом», как в предыдущем случае. Обратите внимание, что этот новый пользователь будет просто взаимодействовать с уже опубликованным контрактом и не будет развертывать свой собственный контракт. Укажите адрес договора и ABI, который вы использовали в предыдущем случае.

Взаимодействовать с адресом договора

Теперь нажмите кнопку Access и вызовите метод отправки . При запросе введите какое-нибудь значение, скажем, 100 ETH для отправки. Отправьте транзакцию. После отправки появится следующий экран.

Взаимодействовать с контрактом доступа

Чтобы присоединить этот новый клиент к нашей цепочке блоков Ganache, перейдите на консоль Ganache. Нажмите на значок ключа учетной записи № 2, как показано на следующем снимке экрана —

Скриншот консоли Ganache

Вы получите закрытый ключ для учетной записи № 2.

Закрытый ключ консоли Ganache

Скопируйте полученный ключ и используйте его во вновь созданном кошельке, как показано здесь —

Новый созданный кошелек

Нажмите на кнопку разблокировки , чтобы прикрепить кошелек.

Когда кошелек будет успешно разблокирован, напишите желаемую транзакцию отправки.

Кошелек успешно разблокирован

Создайте транзакцию, нажав кнопку «Создать транзакцию» .

Генерация транзакции

Сделайте транзакцию и подождите некоторое время, чтобы она отразилась в блокчейне. Теперь выполните «getAmount» , показанная сумма должна составить 200.

Генерировать получить сумму

Выполните «getBalance» . Поле значения теперь должно быть 800.

Создать получить баланс

Изучите журнал транзакций, чтобы увидеть различные транзакции, выполняемые разными пользователями.

Изучить сделку

Эфириум — Резюме

Вы узнали, как написать свой собственный цифровой контракт в Солидности. Вы разработали и протестировали контрактный интерфейс в Remix IDE. Для дальнейшего многопользовательского тестирования вы развернули этот контракт на Ganache Blockchain. На Ganache вы создали две учетные записи. Первый аккаунт был использован для публикации договора. Второй счет был использован для потребления контракта.

Что дальше?

Блокчейн Ganache, который вы использовали во всем этом процессе, является частным и локальным для вашей машины. Как только вы полностью удовлетворены работой контракта, вы можете приступить к его публикации на реальной цепочке блоков Ethereum. Однако для этого потребуется потратить реальные деньги. В демонстрационном приложении мы использовали 1000 ETH по умолчанию для каждой учетной записи пользователя в Ganache. Когда вы размещаете свой контракт на реальной цепочке блоков, вам придется покупать ETH, конвертируя валюту своей страны в ETH. Эта валюта будет храниться в вашем кошельке, и вы сможете потратить ее так, как хотите.