Metamask.md 8.6 KB

Metamask

Metamask - браузерный кошелёк для работы с сетью Ethereum. Позволяет принимать/отправлять монеты и токены.

В этой лабораторной работе мы:

  • установим metamask
  • произведём начальную настройку
  • подключим кошелёк к нашей сети
  • проведём транзакцию

Установка

Если metamask ещё не установлен, то для его установки нужно перейти на сайт metamask.io

Нажать Download now

screen_1

Выбрать firefox и нажать Install MetaMask for Firefox

screen_2

В открывшемся сайте нажать Add to Firefox

screen_3

Нажать добавить

screen_4

Далее при настройке metamask будет предложено два варианта. Первый- вход в существующий кошелёк. Второй- создание нового кошелька. Выберем второй.

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

Далее будет предложено сохранить seed фразу

screen_5

Seed фраза- это что-то вроде пароля от всех наших аккаунтов.
Она создаётся следующим образом:

  • Берётся 128/256 случайно созданных бит (для длинны seed в 12/24 слова)
  • Разбивается по 11 бит на слово
  • Для последнего слова не будет хватать бит. Поэтому предыдущие биты хешируются, и недостающие биты доставляются из начала хеша в конец. Такая система позволяет контролировать целостность seed фразы
  • Используя словарь в 2048 слов, наборы бит заменяются на соответствующие слова
  • 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.

screen_6

Если metamask закрыт, и вы хотите открыть его новой вкладкой, то нужно нажать на расширение metamask > три точки > развернуть

screen_7

Подключение к сети

Нажмите на меню сетей (Основная сеть Ethereum) слева от авы и выберите пользовательский rpc

screen_8

Здесь заполните параметры в соответствии с созданной сетью. На скрине приведён пример случая, когда всё сделано по лабе geth

screen_9

Тут были указаны локальный адрес компьютера + порт пользовательского взаимодействия и id сети, заданные в genesis блоке и при запуске geth.

При работе с ganache эти данные можно будет узнать на его главной панели.

Сохраняем, и если всё верно, то мы будем подключены к нашей Ethereum сети.

Транзакция

Теперь, если в сети идёт майнинг (в ganache он идёт по умолчанию, используя вид консенсуса Proof Of Authority. В geth его нужно запустить вручную командой miner.start(2) в geth attach, и дождаться начала майнинга), то можно создать несколько адресов, и перекидывать между ними деньги.

Давайте возьмём адрес geth, на который идёт майнинг. По лабе geth его ключ хранится в ~/.ethereum/priv/0. Откроем этот файл командой чтения файлов less, скопируем ключ, и закроем файл нажатием q.

Далее, нажав на аву в metamask, открываем импорт счёта

screen_10

Здесь должен быть выбран способ закрытый ключ. Вставляем ключ в поле и жмём импортировать.

Сразу получаем тот самый аккаунт, на который идёт майнинг.

Теперь можно передать деньги на наш первый аккаунт в metamask. Для переключения аккаунтов можно нажать на аву, и выбрать нужный аккаунт. Выбираем первый, где ничего нет. Наверху написано его название и часть адреса. Нажимаем туда, и таким образом копируем адрес.

screen_11

Теперь возвращаемся на аккаунт с кучей денег, и жмём отправить В поле поиска вставляем адрес получателя.

Указываем, сколько денег хотим передать. Передадим 20 ETH

screen_12

Нажимаем далее и подтвердить

Идём на первый аккаунт и видим, что деньги пришли.

Если что-то не работает

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

Такая беда может возникнуть например из-за пересоздания сети.

Чтобы исправить это, нужно зайти в настройки metamask (в меню авы) > продвинутый/advanced > сбросить аккаунт. После этого будет сброшена история, и всё должно работать правильно.