Перейти к публикации

Рекомендованные сообщения

 

Если вы знакомы с кошельком Electrum, тогда знаете, что он использует мнемоническую фразу (seed), обычно из 12-ти английских слов, для генерации master private key (xpriv), который используется для генерации бесконечной последовательности приватных ключей (private key) и, следовательно, открытых ключей (public key) и адресов (address).

 

Обычно, когда люди говорят “публичный адрес”, они думают что адрес кошелька и публичный ключ одно и тоже. Это не так. Адрес кошелька (address) --- это хэш публичного ключа (public key), и им можно делиться с другими, он не содержит в себе приватной информации.

 

Некоторые иерархически детерминированные кошельки HD-кошельки, для повышения безопасности, позволяют разделять создание master private key (xpriv) и публичного ключей. При такой схеме, кошелек может быть настроен зная только master public key (xpub).

 

Плюсы такого подхода:

 

  • кошелек может создавать столько адресов (address), сколько это необходимо;
  • если master public key (xpub) будет скомпрометирован, это не позволит злоумышленнику потратить ВТС из кошелька;

 

Также, держа по отдельности master public key (xpub) и master private key (xpriv) их можно использовать в кошельках Electrum или Armory, для полностью автономного хранилища, в котором один компьютер (в автономном режиме) знает приватный ключ (xpriv), а второй (подсоединен к интернету) знает только публичный ключ (xpub).

 

Master public key (xpub) может генерировать одну и ту же последовательность адресов (address) независимо от мнемонической фразы (seed). Таким образом, вы можете ввести master public key (xpub) в кошелек, и получить безопасный вариант только для приема средств (watch-only wallet).

 

Вы сможете видеть баланс кошелька, генерировать новые адреса, но не сможете отправить с него средства. ВТС отправленные на сгенерированные адреса, автоматически будут отображаться в вашем кошельке.

 

 

Пару слов о мультиподписи

 

Мультиподпись (транзакция с несколькими подписями --- multi-signature transaction) впервые появилась в кошельке BitGo в 2013 году.

 

В 2015-ом году кошелек Electrum обновился до версии 2.0, где была добавлена возможность создавать адреса с мультиподписью по схеме “2-из-3” (наиболее распространенный вариант). В последней версии возможны разные вариации вплоть до “15-из-15”.

 

На момент написания этого поста, последний релиз кошелька Electrum-3.1.2

 

Актуальную версию Electrum кошелька смотрите только на официальном сайте кошелька: https://electrum.org/#download

Никогда не качайте кошельки с непроверенных источников!


Мультиподпись позволяет:

 

  • Отправлять ВТС только с одновременного согласия нескольких сторон сделки / владельцев ключей (xpub), каждый из которых должен подписать транзакцию своим ключом;
  • Значительно повысить безопасность личного кошелька;

 

 

Создание мультисиг кошелька Electrum со стороны покупателя (2-из-3)

 

Скачайте последную версию Electrum: https://www.electrum.org/#download и запустите кошелек:

 

h_1523528704_1277570_66d7b1bb88.png

 

Задайте имя файлу кошелька (я задал buyer_wallet), или оставьте default_wallet и нажмите “Дальше”.

 

В следующем окне, вы должны выбрать какой тип кошелька хотите создать. Выберите Multi-signature wallet и нажмите “Дальше”:

 

h_1523528739_9414529_fab9b735a1.png

 

Далее нужно выбрать количество подписей, необходимых для отправки с этого кошелька. В нашем случае выбираем “2-из-3” и нажимаем “Дальше”:

 

h_1523528833_1911338_6d33ff5bc9.png

 

В следующем окне выбираем Create a new seed (Создать новую мнемоническую фразу):

 

h_1523528927_2460294_ef2cc8dc4e.png


Далее выбираем какой тип адресов будет поддерживать наш кошелек (я выбрал Standart), но вы можете договорится между собой о создании Segwit-кошелька.

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

 

h_1523529010_7295733_ba63b81caa.png


Далее кошелек выдаст вам сгенерированную мнемоническую фразу (seed) – фраза из 13 произвольных слов, необходимая для восстановления кошелька. Скопируйте ее и сохраните в безопасном месте. Google/Яндекс диски, DropBox, iCloud, черновики в электронной почте -- не являются безопасными местами. Если эта фраза попадет в чужие руки -- ваши ВТС украдут. Если вы её потеряете -- потеряете ВТС навсегда.

 

Хороший вариант, зашифровать мнемоническую фразу с помощью PGP. Вторую копию -- хранить на обыкновенной бумаге, третью -- поместить в зашифрованный контейнер, четвертую -- спрятать на “видном месте”, пятую -- можно даже здесь, все равно это будет лучшим вариантом чем облачные хранилища. Можно комбинировать все перечисленные варианты выше + добавить свои.

 

Помните, что безопасность ваших ВТС зависит только от вас. 

 

Далее кошелек попросит ввести мнемоническую фразу, чтобы убедиться что вы сохранили её. Введите свою мнемоническую фразу и нажмите “Дальше”.

 

h_1523529169_7745490_4fd5c111ba.png

 

Следующее что вы должны увидеть, это ваш master public key (xpub), которым нужно поделиться с гарантом сделки и продавцом. Все стороны сделки должны обменяться своими master public key (xpub) между собой.

 

Сохраните свой master public key (xpub) в текстовом редакторе и нажмите “Дальше”:

 

h_1523529241_4816146_7093251829.png


И последнее окно, где вам нужно выбрать способ добавления других подписантов (гаранта и продавца). В данном мануале я выберу Enter cosigner key (ввести ключ подписанта), то есть master public key (xpub):

 

h_1523529302_3790173_757f92450d.png

 

 

 

Чтобы добавить подписанта №2 и №3, мне нужны их master publickey (xpub), поэтому гарант и продавец должны сделать все тоже самое, что написано выше, то есть, создать мультисиг кошелек “2-из-3” и отправить мне свои master publickey (xpub), последовательность добавления подписантов не имеет значения.

 

Вставляем в кошелек полученный master publickey (xpub) от гаранта:

 

h_1523529361_7007427_0dc30ff9ac.png


Следующий шаг, master publickey (xpub) полученный от продавца:

 

h_1523529439_2336155_221805b4c9.png

 

После того как вы введете ключи подписантов master public key (xpub), кошелек попросит придумать пароль. Не пропускайте этот шаг, надежный пароль нужен, чтобы хранить средства в безопасности и осуществлять переводы.

 

h_1523529507_5971729_757ad6646b.png

 

Зашифрованный файл кошелька” --- если вы забудете пароль от кошелька, то сможете восстановить кошелек по мнемонической фразе. Но если ваш компьютер (или файл кошелька wallet.dat) попадет в руки злоумышленника, без вашего пароля он не может украсть ваши ВТС:

 

Чтобы не забывать пароли, пользуйтесь KeePassX.

 

В данном мануале все кошельки создавались на одном компьютере, так что вот названия кошельков, их seed-ы и master public key (xpub), можете потренироваться и восстановить их у себя:

 

Название кошелька: buyer_wallet
seed: faculty rail juice copper size camp unusual speed danger mass crystal high
xpub: xpub661MyMwAqRbcGj32Tppb7WXTo27f4ZUbD6Mo8xkkaWcKEmTjmXCN2YhYBd6Yc6RmT4GTypSC3UWWa7BhjygPED5UuHDiHBU37QFcmHSZNLd


Название кошелька: escrow_wallet
seed: minor regular avoid auto aisle window vintage intact deal stem coyote innocent
xpub: xpub661MyMwAqRbcGENw1uYVR8DNiZkvU3KJJVm8zuf7CXpCWBpMfHRGjJbneKTXwvsE3Gr6L6WW87fFWsPeQFqqGQpbZ43z9n6oPnUWWPAny6h

 

Название кошелька: seller_wallet
seed: goat diesel screen cluster doctor winter slush silly run diary express number
xpub: xpub661MyMwAqRbcFw6zcN2BNgpQn3hWb6oTBqeWQU7S9MTX7iNPHe95oKYxhBRtWoV94YfJrcjWRQHdgC777rr5TakKmdCJoVrHyzX3mWruRmm

 

 

Скрин созданных кошельков:

 

h_1523529642_1638886_c95cb21be8.png


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

 

Теперь покупателю нужно перевести необходимое количество ВТС на мультисиг адрес, в данном случае используем адрес: 38BU9oXBXgmjmAu8pWSyehxbYkW22BDqtF 

 

Помните, в данном мультисиг кошельке отправленные средства не могут быть возвращены без минимум двух подписей, из трех (“2-из-3”). 

 

Покупатель отправляет ВТС на мульсиг кошелек:

 

h_1523529731_8343654_268a537b9c.png


Когда продавец видит, что покупатель отправил ВТС на мультисиг кошелек (желательно дождаться трех подтверждений в сети), тогда он должен исполнить свою часть сделки --- отправить покупателю товар/предоставить услугу. Когда сделка между покупателем и продавцом проходит успешно, гарант может вообще не участвовать в отправки ВТС на личный адрес продавца. 

 

Продавец может создать транзакцию (где указывает свой личный кошелек, куда должны быть отправлены ВТС за предоставленный товар/услугу), подписывает транзакцию своим ключом и передает её покупателю, чтобы тот подписал своим ключом и транслировал в сеть. 


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

 

Так как все стороны сделки (покупатель, гарант и продавец) создали “один кошелек на троих”, но, чтобы потратить средства, нужно согласие большинства (в данном случае необходимо две подписи из трёх).

 

В таком случае, покупатель пишет гаранту сделки о проблеме (продавец не выходит на связь на протяжении нескольких дней), гарант пробует связаться с продавцом по указанным контактам, но ответа нет. Тогда покупатель создает транзакцию, в которой указывает свой личный адрес кошелька (куда должны вернуться ВТС), подписывает транзакцию своим ключом, после чего передает подписанную транзакцию гаранту сделки в виде файла, QR-кода, текста или с помощью TXID.

 

При получении подписанной транзакции со стороны покупателя, гарант перепроверяет адрес, куда будут отправлены ВТС, если покупатель подтверждает адрес для возврата средств, тогда гарант подписывает транзакцию своим ключом (получается “2-из-3”) и транслирует её в сеть. Таким образом ВТС вернулись на личный кошелек покупателя.   

 

Давайте посмотрим пару скринов, где покупатель хочет вернуть ВТС (так как товар/услугу от продавца он не получил) на адрес, с которого они пришли.

 

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

 

h_1523529874_6353747_9a2084b564.png

 

Покупатель видит что успешно подписал транзакцию:

 

h_1523530096_1052098_bd5da10b7e.png

 

 

Теперь транзакцию нужно передать гаранту, чтобы и он её подписал, и транслировал в сеть.

 

1. Статус подписи;      

 

2. “Копировать” -- копирует скрипт, который можно передать гаранту любым удобным способом. Проверить скрипт можно на сайте https://coinb.in, вкладка Verify:

 

h_1523530233_4127309_2e3458aa15.png

 

Вот скрипт, кому интересно самому проверить:

010000000137f1921d1909ea4b60d473e5becde7c8c8014a52b4423a2dfec69b6424e7976d00000000fd52010001ff47304402207ee1ebb0069bd21080b67a1422a1dd854fc3feff204121dbdc94bd97186bfcbf02207744d6d166aaaa3827af9134fadf619ca8fbd802f324161dba3cc7a653d2bda10101ff4d0201524c53ff0488b21e000000000000000000a99db2f694f2786327827290aebe8165bb89c6e374f69757f86f1d388dfa743602d181eea96c9a70bbca7d05e592b85511491abeaaface65d2d46a1fb8f4b79aa7000000004c53ff0488b21e000000000000000000db3e12dbc85740d9bb9046858cb73be9557adcbda6e8f0a74d474f6eb93630e9020821d6550d44d5bf01ea3c3efff302f209f734c57fdc35ccc5dc1d86a9d8f87f000000004c53ff0488b21e0000000000000000008bb34a163ee3fbf426111eb26d21e57ae0b98f0a95907fcb9afd51d88b3e90340313964abd62c145ad99e1c2c83fb1edf70e696b032f699bce913aa52fce70ad000000000053aefdffffff011f8b0600000000001976a9145a2bb3c2dd6eb177bdec8f55cca26e286285ce7f88accde60700

 

3. Значок QR-кода -- передать транзакцию с помощью QR-кода.

   

4. “Экспортировать” --- вы можете экспортировать этот же скрипт, который вы видели выше, только сразу в текстовый файл, который готов для импортирования в кошелек Electrum и последующей подписи.

 

Припустим покупатель решил передать транзакцию с помощью текста. Смотрим скрины со стороны кошелька гаранта:

 

Инструменты → Загрузить транзакцию → Из текста:

 

h_1523530278_6182441_0247fe8f8f.png

 

 

В появившееся окно гарант вставляет полученный скрипт от покупателя, и нажимает на кнопку “Загрузить транзакцию”:

 

h_1523530315_7377663_fc04d1f0c7.png

 

После чего видит такое же окно транзакции как и покупатель. Гарант сверяет адрес возврата, с адресом откуда изначально пришли ВТС на мультисиг адрес, если все в порядке, подписывает транзакцию своим ключом и транслирует в сеть:

 

h_1523530377_3078682_70863530b5.png

 

h_1523530399_1387146_a3fe4f429a.png

 

h_1523530428_4021348_fb1812c1e0.png

 

 

Финальный скрин мультивалютного кошелька со стороны покупателя, гаранта и продавца:

 

h_1523530446_3844634_af46253b02.png

 

ВТС были отправлены/возвращены на адрес с которого они пришли. Покупатель не получил товар/услугу со стороны продавца и вернул свои ВТС. Продавец получил негативный отзыв.

 

Пользуйтесь мультиподписью, и берегите свои ВТС.

 

Спасибо за внимание.  :bye:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за материал. Прочитал с интересом. Но правда не понял :)

Я думал что есть только приватный ключ и публичный ключ.

 

Может быть ещё пару ссылочек для тех, кому нужно для начала купирование хвоста?

Интересно - почему обычные адреса начинаются с 1, а мультисиг с 3. У адресов на 3 нет единого приватного ключа изначально, или как?..

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×