Всем привет.
Недавно мне понадобился мультисиг кошелек для ЕТН, и я пошел гуглить… Первое на что наткнулся, статья «Эволюция кошельков Эфириума», самих обзоров кошельков там нет, но чуть теории никому не помешает, рекомендую ознакомиться.
Потом нашел статью «Краткий обзор multisig кошельков для Ethereum», заинтересовал кошелек Gnosis – возможность держать «лёгкий» кошелек, норм UI-йка и пока что без сюрпризов в стиле Parity (if you know what I mean? ).
Есть два варианта использования Gnosis кошелька:
- онлайн (в паре с Metamask, Mist или Parity): https://wallet.gnosis.pm/#/wallets
- локально: https://github.com/gnosis/MultiSigWallet/releases
Я не пользуюсь онлайн кошельками и кошельками-расширениями для браузера. Параноик, зато у меня никогда не пропало ни цента.
В данном мануале рассмотрим локальное использование кошелька Gnosis, и принцип работы мультиподписи.
Процесс установки не буду скринить и описывать. Все просто, заходите сюда: https://github.com/gnosis/MultiSigWallet/releases и качаете кошелек под свою систему. У меня Debian-based дистрибутив, поэтому я скачал deb-пакет. Установка прошла гладко и без сюрпризов.
Запускаем кошелек, видим главное окно, ставим галочки и нажимаем Continue:
В следующем окне я выбрал Light Wallet (если у вас есть Ledger или вы хотите подключится к конкретной ноде, тогда выберите соответствующие варианты):
Чтобы не играться с настоящими деньгами, можно выбрать тестовую сеть, что я и сделал. Тестовые ЕТН взял отсюда. Зашел в Settings и сменил в Ethereum Node на Remote Rinkeby и нажал Update Settings, после чего перезапустил кошелек:
***Примечание. Wallet factory contract --> Automatic
После перезапуска кошелька, идем в Accounts и создаем или импортируем аккаунт. У меня уже есть тестовые аккаунты, поэтому нажимаю на Import, выбираю keystore file и указываю его пароль:
Так как все кошельки установлены на одном компе, повторяю все эти шаги для каждого кошелька. В итоге, три кошелька – Покупателя (Buyer_wallet), Гаранта (Escrow_wallet) и Продавца (Seller_wallet):
Создание мультисиг-кошелька
Давайте представим самую простую ситуацию – ЕТН выступит в качестве платежного средства, Покупатель хочет купить товар у Продавца через Гаранта, используя мультисиг-кошелек.
Чтобы создать новый кошелек (не путать с Accounts), идем в Wallets и добавляем новый кошелек:
Выбираем Create new wallet:
* Name – имя кошелька (все стороны сделки могут назвать по своему);
* Required confirmations – сколько нужно подтверждений (подписей) чтобы произвести операцию с данным кошельком;
* Daily limit (ETH) – дневной лимит вывода ЕТН с данного кошелька;
* Owners – владельцы кошелька (общее количество владельцев);
Ок, с этим разобрались. На следующем скрине вы увидите мои параметры создания мультисиг-кошелька:
Количество подписей как видите 2, а общее количество подписантов – 3: My account (Гарант), Buyer_wallet (Покупатель), Seller_wallet (продавец). Значит, имеем схему 2-из-3. Нажимаем Deploy и потом Send transaction:
***Примечание. В аккаунте создающего мультисиг-кошелек должно быть немного ЕТН для оплаты газа.
Заходим в Wallets и видим наш Multisig_wallet:
Чтобы увидеть подробную информацию по кошельку, нажмите по его названию:
Кошелек пока что пустой (0.00 ЕТН).
В Owners мы видим всех кто управляет данным кошельком.
В Tokens можно добавлять токены.
***Важное примечание. В данном случае мультисиг кошелек создавал Гарант (Escrow). Теперь он (Гарант) должен «раздать» мультисиг-кошелек двум другим подписантам (владельцам) – Покупателю и Продавцу.
Не имеет значения кто создаст мультисиг-кошелек, главное:
- правильно указать адреса владельцев (другие владельцы должны внимательно проверить свои адреса, которые указал человек создающий мультсиг-кошелек);
- для создания/подписи нужно иметь ЕТН на балансе чтобы оплатить стоимость газа (мониторить можно здесь);
- после создания самого мультисиг кошелька, создающий обязательно должен поделиться им с другими владельцами, которым НЕ нужно по новой создавать мультисиг-кошелек, а всего лишь импортировать уже созданный
Делиться мультисиг-кошельком очень просто. Тот кто его создал должен зайти в Settings и выбрать Export Wallets. Код который увидите НЕ содержит приватных данных, и им можно открыто делиться с другими подписантами, которые соответственно должны зайти в Settings, выбрать Import Wallets, вставить полученный код от создателя мультисиг-кошелька и нажать Save. Сложно? Вряд ли.
Вот содержимое данного кошелька, которым Гарант делится с другими двумя сторонами сделки:
{"wallets":{"0x7D179E7d4793210bd9a3CA1CfbF916Fd4f1A763E":{"name":"Multisig_wallet","owners":{"0x3f14bea302d3fc4cb678bf42781b666418023cf6":"My account","0xd33b1c69810a9223ad8aa6a2ab76b841d9392083":"Buyer_wallet","0x437b8dfc954e96bc1518febfff08c371c487096b":"Seller_wallet"},"tokens":{}}}}
Продолжим…
Покупатель пополняет мультисиг-кошелек на 2 ЕТН:
Припустим что после пополнения мультисиг-кошелька Покупателем, Продавец исчез и не выходит на связь. Покупатель хочет вернуть ЕТН на свой личный адрес кошелька. Так как в данном случае схема 2-из-3, значит, кто то должен создать транзакцию, а кто то просто её подписать.
Не имеет значения кто будет создавать, а кто подписывать. Но логичнее будет, если Покупатель будет создавать транзакцию, так как ему нужно указать свой личный адрес кошелька.
Покупатель идет в Wallets, открывает подробную информацию о мультисиг-кошельке и нажимает на Send a multisig transaction now:
После чего указывает личный адрес кошелька, количество ЕТН и комментарий (опционально):
Все тот же покупатель открывает подробную информацию о мультисиг-кошельке и видит:
- Destination – на какой адрес уйдут ЕТН (при наведении мышкой вы увидите адрес кошелька ЕТН);
- Value – количество отправляемых ЕТН;
- Confirmations – кто на данный момент подписал транзакцию (в данном примере видно что Покупатель уже подписал транзакцию) а также кнопку Revoke confirmation для отмены подписи;
- Executed – была ли транзакция отправлена в сеть;
Ну что ж, Покупатель создал мультисиг-транзакцию, указал личный адрес кошелька, Гаранту осталось только подписать.
Гарант открывает свой кошелек, идет в Wallets, открывает мультисиг-кошелек, смотрит подробности и видит почти тоже самое, что и Покупатель (куда и сколько будет отправлено ЕТН). В Confirmations он видит что транзакция уже подписана Покупателем, а также видит кнопку Confirm, для подписания транзакции со своей стороны:
Вот как теперь выглядит мультисиг-кошелек со стороны Покупателя, Гаранта и Продавца:
Покупатель не получил товар/услугу со стороны продавца и вернул свои ЕТН. Продавец получил негативный отзыв.
Пользуйтесь мультиподписью, и берегите свои ЕТН.
Неплохой видео-мануал на английском.
Спасибо за внимание.
Если эта статья была вам полезна, поддержите написание следующей.
: 48asCffTPEMeqbxAf2XkP16qeuRTh7vxkQDhfXfbG5LgJ8YJeJEaUsrQ86dKyuyot2KfthhPuzFFRRq L7cFi2TCV1gBSLiF
: 1MRDrYQfE6Vy1rqrWL6aN3iVCKofvvNA3w
: https://tippin.me/@thefuzzstone
: 0x0c30f1De9B30C9872d920200BB03aA3b67b7E300