Metamask - браузерный кошелёк для работы с сетью Ethereum. Позволяет принимать/отправлять монеты и токены.
В этой лабораторной работе мы:
Если metamask ещё не установлен, то для его установки нужно перейти на сайт metamask.io
Нажать Download now
Выбрать firefox и нажать Install MetaMask for Firefox
В открывшемся сайте нажать Add to Firefox
Нажать добавить
Далее при настройке metamask будет предложено два варианта. Первый- вход в существующий кошелёк. Второй- создание нового кошелька. Выберем второй.
Придумываем пароль от восьми символов. Безопасность сейчас не нужна, поэтому введём восемь нулей.
После подтверждения пароля будет предложено сохранить его. Вежливо откажемся.
Далее будет предложено сохранить seed фразу
Seed фраза- это что-то вроде пароля от всех наших аккаунтов.
Она создаётся следующим образом:
От seed фразы поочерёдно создаются аккаунты. То есть, для создания первого аккаунта, к seed фразе в конце добавляется 0, хешируется, и из этого хеша создаётся аккаунт. Для второго аккаунта добавляется 1 и так далее.
В итоге, если мы находясь в глобальной сети Ethereum создадим seed фразу, и на аккаунт, образованный от этой фразы получим монеты, то используя эту же seed фразу на другом устройстве, подключённом к той-же сети Ethereum, и дойдя до аккаунта с тем-же номером, мы обнаружим, что на нём есть те же деньги.
Эту seed фразу можно записать, чтобы в будущем использовать те же аккаунты в ganache.
Нажимаем на поле с замком, копируем seed, и вставим его в файл.
$ vim ~/.ethereum/seed
Если папка .ethereum ещё не существует, то создайте её командой mkdir ~/.ethereum
Нажимаем i
для входа в текстовый режим, Ctrl + v
, esc
для выхода из текстового режима, :wq
для сохранения и выхода.
Теперь наш ключ хранится в файле ~/.ethereum/seed
Когда мы нажмём далее, от нас попросят восстановить порядок слов. Откроем файл той-же командой, и восстановим порядок.
После этого мы попадём на главный экран metamask.
Если metamask закрыт, и вы хотите открыть его новой вкладкой, то нужно нажать на расширение metamask > три точки > развернуть
Нажмите на меню сетей (Основная сеть Ethereum) слева от авы и выберите пользовательский rpc
Здесь заполните параметры в соответствии с созданной сетью. На скрине приведён пример случая, когда всё сделано по лабе geth
Тут были указаны локальный адрес компьютера + порт пользовательского взаимодействия и id сети, заданные в genesis блоке и при запуске geth.
При работе с ganache эти данные можно будет узнать на его главной панели.
Сохраняем, и если всё верно, то мы будем подключены к нашей Ethereum сети.
Теперь, если в сети идёт майнинг (в ganache он идёт по умолчанию, используя вид консенсуса Proof Of Authority. В geth его нужно запустить вручную командой miner.start(2)
в geth attach
, и дождаться начала майнинга), то можно создать несколько адресов, и перекидывать между ними деньги.
Давайте возьмём адрес geth, на который идёт майнинг. По лабе geth
его ключ хранится в ~/.ethereum/priv/0. Откроем этот файл командой чтения файлов less
, скопируем ключ, и закроем файл нажатием q
.
Далее, нажав на аву в metamask, открываем импорт счёта
Здесь должен быть выбран способ закрытый ключ
. Вставляем ключ в поле и жмём импортировать
.
Сразу получаем тот самый аккаунт, на который идёт майнинг.
Теперь можно передать деньги на наш первый аккаунт в metamask. Для переключения аккаунтов можно нажать на аву, и выбрать нужный аккаунт. Выбираем первый, где ничего нет. Наверху написано его название и часть адреса. Нажимаем туда, и таким образом копируем адрес.
Теперь возвращаемся на аккаунт с кучей денег, и жмём отправить
В поле поиска вставляем адрес получателя.
Указываем, сколько денег хотим передать. Передадим 20 ETH
Нажимаем далее
и подтвердить
Идём на первый аккаунт и видим, что деньги пришли.
Если вдруг metamask ведёт себя как-то неправильно, это может быть из-за того, что данные в сети и в metamask не совпадают. Это может вызвать например зависшие транзакции, или неверное кол-во монет.
Такая беда может возникнуть например из-за пересоздания сети.
Чтобы исправить это, нужно зайти в настройки metamask (в меню авы) > продвинутый/advanced > сбросить аккаунт. После этого будет сброшена история, и всё должно работать правильно.