Ethereum: работа с сетью, смарт-контракты и распределенные приложения - Бурков Алексей 3 стр.


Рис. 1.6.13

В заключение данной темы проведем тестирование смарт-контрактов нашего проекта MetaCoin. В этом случае будет запущен специальный тестирующий смарт-контракт TestMetaCoin.sol, находящийся в папке test нашего проекта. Для запуска теста выполните в терминале команду «truffle test» (рис. 1.6.14).

Рис. 1.6.14

Произойдет компиляция и выполнение смарт-контракта TestMetaCoin.sol, а на вкладке EVENTS эмулятора появится событие (рис. 1.6.15).

Рис. 1.6.15

Урок 7. Установка плагина MetaMask для работы с криптокошельками

Аннотация. В данном уроке рассматривается процедура установки плагина для работы с криптокошельками MetaMask для браузера Chrome [5]. Также рассматривается подключение и тестирование плагина с эмулятором блокчейн-сети Ganache.

В заключение настройки нашего окружения установим специальный плагин для браузера MetaMask, при помощи которого мы будем совершать транзакции в нашей виртуальной блокчейн-сети. Для начала откройте в браузере веб-страницу, расположенную по адресу https://MetaMask.io/ (рис. 1.7.1).

Рис. 1.7.1

В данном уроке мы будем работать в браузере Chrome. Поэтому на странице сайта MetaMask перейдите по ссылке GET CHROME EXTENSION (рис. 1.7.1). Откроется страница для скачивания расширения MetaMask, расположенная в интернет-магазине Chrome. Нажмите кнопку «Установить» (рис. 1.7.2).

Замечание. Если у вас браузер, отличный от Chrome, то для установки расширения необходимо перейти по соответствующим ссылкам, расположенным под надписью GET CHROME EXTENSION (см. рис. 1.7.1)

Рис. 1.7.2

Появится окно с запросом разрешения на установку расширения. Нажмите кнопку «Установить расширение» (рис. 1.7.3).

Рис. 1.7.3

После завершения установки расширения откроется стартовая страница MetaMask, на которой необходимо нажать кнопку «Начать» (рис. 1.7.4).

Замечание. Получить доступ к плагину также можно через иконку плагина в верхнем правом углу окна Chrome (рис. 1.7.4).

Рис. 1.7.4

Далее появится страница, где можно создать новый кошелек или импортировать существующий при помощи кодовой фразы. Давайте создадим новый кошелек, нажав кнопку «Создать кошелек» (рис. 1.7.5).

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

Рис. 1.7.5

Появится страница с вопросом о сборе статистики для улучшения плагина. Здесь необходимо нажать кнопку I agree (рис. 1.7.6).

Рис. 1.7.6

Для начала задайте пароль вашего нового криптокошелька, согласитесь с условиями использования плагина и нажмите кнопку «Создать» (рис. 1.7.7).

Рис. 1.7.7

Появится страница с секретной фразой для подключения нового кошелька. Для того чтобы получить доступ к данному кошельку с другого компьютера или при переустановке плагина, необходима секретная фраза кошелька. Ее можно увидеть, нажав на изображение замка на данной странице. Поскольку мы будем работать с кошельками эмулятора Ganache, нам эта фраза неинтересна. Нажмите кнопку «Напомнить позже» (рис. 1.7.8).

Рис. 1.7.8

Далее откроется страница нашего нового криптокошелька Account 1 (рис. 1.7.9). Мы видим, что в данном кошельке 0 ETH. Если нажать выпадающий список в верхнем правом углу страницы, можно увидеть, что кошелек подключен к основной сети Ethereum. Но нам необходимо подключиться к нашей виртуальной сети, созданной в эмуляторе Ganache. Для этого в списке сетей выберите пункт «Пользовательский RPC» (рис. 1.7.9).

Рис. 1.7.9

Откроется страница с настройками для подключения к новой сети. Здесь необходимо ввести имя подключаемой сети на ваше усмотрение, я задал MyNet. Затем необходимо определить адрес и порт нашей виртуальной сети «Новый RPC URL». Адрес и порт отображаются в верхней части окна эмулятора Ganache (рис. 1.7.10).

Рис. 1.7.10

«Закрыть» (крестик в верхнем правом углу) (рис. 1.7.11).

Рис. 1.7.11

Теперь импортируем наши кошельки из эмулятора. Для этого щелкните по цветному кругу в верхнем правом углу страницы нового кошелька и в появившемся меню выберите пункт «Импортировать счет» (рис. 1.7.12).

Рис. 7.12

Появится страница импортирования «Новый счет» (рис. 1.7.13).

Рис. 1.7.13

На данной странице необходимо указать закрытый ключ нашего кошелька из эмулятора. Для получения ключа в окне эмулятора Ganache щелкните по ключу напротив первого кошелька (рис. 1.7.10) и в появившемся окне ACCOUNT INFORMATION скопируйте в буфер обмена параметр Private key (рис. 1.7.14), а затем вставьте его из буфера обмена в поле «Вставьте ваш закрытый ключ тут:» на странице MetaMask (рис. 1.7.13).

Рис. 1.7.14

Для импорта на странице MetaMask нажмите кнопку «Импортировать» (рис. 1.7.13). Итак, мы импортировали наш первый кошелек из эмулятора. При импортировании он получил имя Account 2. Импортируйте второй кошелек из нашего эмулятора в MetaMask. Для этого повторите все действия начиная с рис. 1.7.12. Только скопируйте Private key не первого кошелька, а второго. В итоге при щелчке по цветному кругу на странице MetaMask выпадающее меню будет выглядеть как на рис. 1.7.15.

Рис. 1.7.15

Обратите внимание на то, что сейчас мы имеем три счета. Один, Account 1, подключен к публичной сети Ethereum, а два других, Account 2 и Account 3, подключены к эмулятору Ganache и на этих счетах находится по 100 ETH. Окно эмулятора закрывать нельзя!

Замечание. Если мы не перезапускали эмулятор, то на наших счетах будет не 100 ETH, а несколько меньше, так как ранее мы тестировали демонстрационный проект.

Теперь протестируем работу плагина MetaMask в связке с эмулятором Ganache. Для этого совершим транзакцию, то есть переведем 10 ETH со счета Account 3 на счет Account 2. Перевод средств инициализируется нажатием кнопки «Отправить» на странице MetaMask (рис. 1.7.16).

Рис. 1.7.16

Появится окно выбора получателя. Здесь можно указать адрес кошелька получателя, например, с рис. 1.7.14. Однако мы переводим между своими кошельками, поэтому перейдем по ссылке «Перевод между моими аккаунтами» (рис. 1.7.17).

Рис. 1.7.17

Появится список наших счетов, где выбираем Account 2 (рис. 1.7.18).

Рис. 1.7.18

Появится страница параметров транзакции (рис. 1.7.19). Здесь мы определим сумму 10 ETH и комиссию за перевод как «Средний» (чем быстрее перевод, тем он дороже). Нажмите кнопку «Далее».

Рис. 1.7.19

Далее появится страница подтверждения транзакции (рис. 1.7.20). На данной странице мы видим, что мы переводим 10 ETH со счета Account 3 на счет Account 2. Комиссия за перевод будет равна 0,000034 ETH. Для подтверждения транзакции нажмите кнопку «Подтвердить» (рис. 1.7.20).

Рис. 1.7.20

Посмотрим на результат нашей транзакции. Если зайти в меню наших счетов, то мы можем увидеть, что на счету Account 2 стало 110 ETH, а на счету Account 3 – 89,999966 ETH (рис. 1.7.21).

Рис. 1.7.21

Если открыть окно эмулятора, то мы видим аналогичную картину. С одного кошелька на другой кошелек было переведено 10 ETH (рис. 1.7.22).

Рис. 1.7.22

Урок 8. Установка офлайн-криптокошелька MyEtherWallet

Аннотация. В данном уроке мы рассмотрим инструмент для запуска наших смарт-контрактов – офлайн-криптокошелек MyEtherWallet [6].

Для перевода ETH с одного криптокошелька на другой нам вполне хватит и плагина MetaMask. Однако для тестовых запусков наших смарт-контрактов нам понадобится офлайн-версия электронного криптокошелька MyEtherWallet. Этот криптокошелек позволяет как переводить ETH, так и публиковать, и тестировать смарт-контракты.

Замечание. В принципе MyEtherWallet может полностью заменить MetaMask, но он гораздо сложней в использовании.

Для установки MyEtherWallet перейдите по адресу https://github.com/kvhnuke/etherwallet/releases и скачайте архив с офлайн-версией криптокошелька etherwallet-v.3.40.0.zip (версия может быть иной) (рис. 1.8.1).

Рис. 1.8.1

После окончания скачивания распакуйте архив в любую папку. Для запуска MyEtherWallet в распакованной папке откройте файл index.htm (рис. 1.8.2).

Рис. 1.8.2

После этого запустится веб-браузер с начальной страницей и сообщением о выходе новой онлайн-версии криптокошелька (рис. 1.8.3).

Рис. 1.8.3

Просто закройте окно с сообщением, щелкнув по значку «X» в верхнем правом углу сообщения. Мы попадем на начальную страницу криптокошелька.

Теперь подключим криптокошелек к эмулятору Ganache. Для этого щелкните по выпадающему списку выбора сети блокчейн, расположенному в верхнем правом углу страницы, и выберите последний пункт в списке Add Custom Network / Node (рис. 1.8.4).

Рис. 1.8.4

Для подключения криптокошелька к эмулятору блокчейна Ganache нам необходимо узнать адрес и порт нашего эмулятора Ganache. Для этого запустите Ganache, на стартовом экране выберите вариант запуска QUICKSTART. Затем в окне эмулятора обратите внимание на параметр RPC SERVER. Здесь мы видим запись вида «HTTP://127.0.0.1:7545». Это значит, что адрес сервера – http://127.0.0.1, а порт – 7545 (рис. 1.8.5).

Рис. 1.8.5

Замечание: Не закрывайте окно эмулятора Ganache. Просто сверните его – он нам еще понадобится.

Теперь вернемся в окно криптокошелька MyEtherWallet. После выбора настройки Add Custom Network / Node (рис. 1.8.4) появится окно с настройками сервера и порта блокчейн-сети (рис. 1.8.6).

Рис. 1.8.6

В данном окне задаем следующие настройки: Node Name – любое имя без пробелов (мы задали MyNode), URL – http://127.0.0.1, Port – 7545 (рис. 1.8.6). Мы их получили из эмулятора Ganache (рис. 1.8.5). Для сохранения настроек нажмите кнопку Save & Use Custom Node. Страница MyEtherWallet примет вид как на рис. 1.8.7.

Рис. 1.8.7

Проверим работу криптокошелька, проверим баланс ETH на одном из наших счетов в эмуляторе Ganache. На странице MyEtherWallet нажмите ссылку View Wallet Info (рис. 1.8.8).

Рис. 1.8.8

Разверните окно Ganache и скопируйте из него адрес первого счета (рис. 1.8.9).

Рис. 1.8.9

Вернитесь на страницу MyEtherWallet и выберите способ доступа к криптокошельку как «View w / Address Only». В поле «Your Address» вставьте адрес, скопированный из окна Ganache (рис. 1.8.9).

Рис. 1.8.10

Для просмотра баланса на нашем счете нажмите кнопку View Balance (рис. 1.8.10). Откроется страница с данными о нашем счете в Ganache, где мы видим, что наш баланс равен 100 ETH (рис. 1.8.11).

Назад Дальше