Bitcoin Forum
December 19, 2018, 02:45:43 AM *
News: Latest Bitcoin Core release: 0.17.0 [Torrent].
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Пару слов о Electrum и мультиподписи  (Read 678 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
TheFuzzStone
Hero Member
*****
Offline Offline

Activity: 910
Merit: 644


PGP: 0x9ADC3EA7


View Profile WWW
April 12, 2018, 11:59:51 AM
Merited by vizito (3), esmanthra (2), diks (1), xandry (1), johhnyUA (1), xenon131 (1), Xal0lex (1), chimk (1)
 #1

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

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

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

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

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

Также, держа по отдельности master public key (xpub) и master private key (xprv) их можно использовать в кошельках Electrum или Armory, для полностью автономного хранилища, в котором один компьютер (в автономном режиме) знает приватный ключ (xprv), а второй (подсоединен к интернету) знает только публичный ключ (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 и запустите кошелек:



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

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




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

 

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

 


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

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

 


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

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

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

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




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

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




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

 


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

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




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



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




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

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

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


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

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

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



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




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

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

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

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




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

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


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

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

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

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

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

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




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




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

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

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



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

Code:
010000000137f1921d1909ea4b60d473e5becde7c8c8014a52b4423a2dfec69b6424e7976d00000000fd52010001ff47304402207ee1ebb0069bd21080b67a1422a1dd854fc3feff204121dbdc94bd97186bfcbf02207744d6d166aaaa3827af9134fadf619ca8fbd802f324161dba3cc7a653d2bda10101ff4d0201524c53ff0488b21e000000000000000000a99db2f694f2786327827290aebe8165bb89c6e374f69757f86f1d388dfa743602d181eea96c9a70bbca7d05e592b85511491abeaaface65d2d46a1fb8f4b79aa7000000004c53ff0488b21e000000000000000000db3e12dbc85740d9bb9046858cb73be9557adcbda6e8f0a74d474f6eb93630e9020821d6550d44d5bf01ea3c3efff302f209f734c57fdc35ccc5dc1d86a9d8f87f000000004c53ff0488b21e0000000000000000008bb34a163ee3fbf426111eb26d21e57ae0b98f0a95907fcb9afd51d88b3e90340313964abd62c145ad99e1c2c83fb1edf70e696b032f699bce913aa52fce70ad000000000053aefdffffff011f8b0600000000001976a9145a2bb3c2dd6eb177bdec8f55cca26e286285ce7f88accde60700


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

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

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

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




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

 


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









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





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

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

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

Добро пожаловать в русскоязычное сообщество   Monero  (XMR): форум: XMR.RU | Telegram: @XMR_RU
[НОВАЯ УСЛУГА]    [OTC-торговля] Прием ваших OTC-заявок
🔑Мануалы по мультиподписи: BTC (Electrum)    |   ⧫ (GNOSIS)    |   ɱ (CLI)    🔑
Pages: [1]
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!