Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
25 июня 2014, 10:52:26 PM   # 1
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я ищу хороший способ, чтобы создать более одного P2SH адреса (адрес на основе хэша-скрипта), который обремененный тот же набор личных ключей.

"стандарт" multisig скрипт [PubKeys]

Так со следующей PubKeys:
котировка
02171f8058701e94efbbca609509b858f0ef1e32923d51991eac403ade22952421
03694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f60
036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a644488

Сценарий будет выглядеть так:
котировка
<"OP_PUSH_33"> <"OP_PUSH_33"> <"OP_PUSH_33">

В шестнадцатеричном:
котировка
522102171f8058701e94efbbca609509b858f0ef1e32923d51991eac403ade22952421210369441 1c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f6021036b033de166421921 6408262a9a32dfb801f09b0bfb53dd83f036fedf1a64448853ae

Base58 закодирован (0x05 префикс байт) HASH-160 хэш выше сценария является адресом 3KKVrgqN2AYAsLQoJQchT5GK2KnKQ3dAPL. Самый простой способ, чтобы получить новый адрес будет менять ключи, но позволяет сказать, что я хочу набор адресов, которые используют одни и те же ключи. Я мог бы сделать один из ключей поддельным и использовать его в качестве значения счетчика (очевидно, что это требует большего количества клавиш, т.е. для реального сценария 2-в-3 требует создания псевдо-2 из 4-скрипта).  

В качестве примера, в двух сценариях следующий ключ первый ключ является недействительным и используется только для создания уникального хэш-вывода, так что это эффективно сценарий 2-из-2, несмотря на то 2-в-3.
котировка
Сценарий: 5221020000000000000000000000000000000000000000000000000000e0000000000012103694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f6021036b033de 1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a64448853ae
Адрес: 3DmfeKGpHVsC7HHf2GumUE31NG14f4P8SM

котировка
Сценарий: 52210200000000000000000000000000000000000000000000000000000000000000022103694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f6021036b033de 1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a64448853ae
Адрес: 3AeD9PWp4nCi5x1BKFhyX4qHVkiejfTbq8

Адреса могут быть созданы по требованию путем приращения значения счетчика в псевдо-ключе и повторно вычислив scriptHash. Этот наивный подход, однако, довольно расточительно (и cludgy). Это требует 34 дополнительных байт, когда требуется всего несколько байт. Если предположить, 3 байт счетчика (>16 миллионов последовательных адресов), то это имеет 31 байт накладных расходов.

Любые идеи о более пространстве эффективный способ выполнения той же задачи? Я имею в виду, может быть, толкая в случайное слово стека, а затем с помощью OP_DROP?
котировка
<"OP_PUSH_3"> <0x010000> <"OP_PUSH_33"> <"OP_PUSH_33">

Любые другие идеи? Любой способ сделать это пройти IsStandard ()?

DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes


Как заработать Биткоины?
Без вложений. Не майнинг.


26 июня 2014, 9:34:49 AM   # 2
 
 
Сообщений: 38
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

Получил 1806 Биткоинов
Реальная история.





OP_DROP может не работать, как спецификация BIP16 определяет.

"Проверка не выполняется, если есть какие-либо другие, чем операции "толчок данных" операции в scriptSig."

Почему бы не использовать один из открытых ключей в качестве открытого ключа освоить вывод других ключей на основе индекса?
Алексей Richards сейчас офлайн Пожаловаться на Алексея Richards   Ответить с цитированием Мультицитирование сообщения от Алексей Richards Быстрый ответ на сообщение Алексей Richards

26 июня 2014, 9:51:54 AM   # 3
 
 
Сообщения: 2366
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

Тьфу. BIP32 существует, чтобы люди могли получить их партнеры адреса и сделать это в частном порядке по отношению к остальной части мира (и без добавления накладных расходов в сети).
gmaxwell сейчас офлайн Пожаловаться на gmaxwell   Ответить с цитированием Мультицитирование сообщения от gmaxwell Быстрый ответ на сообщение gmaxwell

26 июня 2014, 10:38:17 AM   # 4
 
 
Сообщения: 1260
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

котировка

котировка
Сценарий: 5221
020000000000000000000000000000000000000000000000000000000000000002
2103694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f60
21036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a64448853ae
Адрес: 3AeD9PWp4nCi5x1BKFhyX4qHVkiejfTbq8

Адреса могут быть созданы по требованию путем приращения значения счетчика в псевдо-ключе и повторно вычислив scriptHash. Этот наивный подход, однако, довольно расточительно (и cludgy). Это требует 34 дополнительных байт, когда требуется всего несколько байт.  


Если псевдо-ключ долго 33/65 байт? Я думаю, что в можно использовать меньший массив байтов
amaclin сейчас офлайн Пожаловаться на amaclin   Ответить с цитированием Мультицитирование сообщения от amaclin Быстрый ответ на сообщение amaclin

26 июня 2014, 2:22:04 PM   # 5
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

OP_DROP может не работать, как спецификация BIP16 определяет.

"Проверка не выполняется, если есть какие-либо другие, чем операции "толчок данных" операции в scriptSig."

Хороший улов. То есть удачливый сформулировано, и я понятия не имею, что это значит. Как пишет нет нет multisig P2SH сценарий не будет действительным.   это не "толчок данных" операция. Я буду стараться испытывать сценарий OP_DROP на testnet.
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

26 июня 2014, 2:26:30 PM   # 6
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

Тьфу. BIP32 существует, чтобы люди могли получить их партнеры адреса и сделать это в частном порядке по отношению к остальной части мира (и без добавления накладных расходов в сети).

Давай, чувак. Никто не получает их партнер адрес и, конечно, не для создания уникальных адресов P2SH. Вы бы действительно дать отправитель (тысячи потенциально начинающих пользователей) три мастера pubkeys и они создают правильный адрес P2SH? Я имею в виду не любая хорошая поддержка конечного пользователя кошелек для отправки к основе BIP32 Pay2PubKeyHash адрес гораздо меньше P2SH.

Если вы говорите, что приемник (мне) следует использовать BIP32 для создания ключей и уникальный P2SH, что, безусловно, будет работать. Тем не менее все три PubKeys в сценарии должны быть уникальными для поддержания конфиденциальности. Как только bitcoind поддерживает BIP32 я с удовольствием использовать. В промежутке времени, так как вы беспокоитесь о космосе, дайте мне знать, если вы можете думать о более пространствах эффективного способа для достижения поставленной цели в redeemScript.
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

26 июня 2014, 2:36:33 PM   # 7
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

Если псевдо-ключ долго 33/65 байт? Я думаю, что в можно использовать меньший массив байтов

Да это было бы возможно, я своим родом предположил, что Публичные недействительную длиной будет недействительными, но похоже, что он не является (только нестандартным)

Код:
decodescript 52210200000000000000000000000000000000000000000000000000000000000000012103694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f6021036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a64448853ae

{
"как м" : "2 020000000000000000000000000000000000000000000000000000000000000001 03694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f60 ​​036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a644488 3 OP_CHECKMULTISIG",
"reqSigs" : 2,
"тип" : "multisig",
"адреса" : [
"1MRxjnjFDhZfjtjgpxBNczsMGVEtYqfFyS",
"155RH27o1NPWbQCyoEUC9ojR7HQepBmhoT",
"1DD1kbNw9XtG2JWYa8kg6p89DqgCpb91oG"
],
"p2sh" : "3DmfeKGpHVsC7HHf2GumUE31NG14f4P8SM"
}

decodescript 52030100002103694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f6021036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a64448853ae
{
"как м" : "2 1 03694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f60 ​​036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a644488 3 OP_CHECKMULTISIG",
"тип" : "нестандартный",
"p2sh" : "32S6ymyH4XbZFQuvAVfcxRR2bxCenXc16o"
}

И, казалось бы работать (читающий вместе всегда делать свои собственные обширные испытания на testnet). Размер redeemScript в первом составляет 105 байт, а во втором составляет 70 байт. Таким образом, используя нестандартную KeySize делает вторые 30 байт короче, но это также делает его нестандартным. Если ограничиваются нестандартными опциями, которые я предпочел бы не использовать псевдо-ключ, если это возможно. К сожалению, так мало сценариев являются стандартными. Было бы хорошо, если бы это была ослаблена специально для p2sh.


DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

26 июня 2014, 3:18:24 PM   # 8
 
 
Сообщения: 1848
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

Так со следующей PubKeys:
котировка
02171f8058701e94efbbca609509b858f0ef1e32923d51991eac403ade22952421
03694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f60
036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a644488

[...]

Base58 закодирован (0x05 префикс байт) HASH-160 хэш выше сценария является адресом 3KKVrgqN2AYAsLQoJQchT5GK2KnKQ3dAPL.

Переставляя pubkeys даст другой хэш, таким образом другой адрес. Использование м-в-5 позволяет генерировать до 120 адресов. Но тот факт, что никто не указал этот очевидный способ сделать это заставляет меня думать, что я должен быть что-то отсутствует.
dserrano5 сейчас офлайн Пожаловаться на dserrano5   Ответить с цитированием Мультицитирование сообщения от dserrano5 Быстрый ответ на сообщение dserrano5

26 июня 2014, 3:43:12 PM   # 9
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

Так со следующей PubKeys:
котировка
02171f8058701e94efbbca609509b858f0ef1e32923d51991eac403ade22952421
03694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f60
036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a644488

[...]

Base58 закодирован (0x05 префикс байт) HASH-160 хэш выше сценария является адресом 3KKVrgqN2AYAsLQoJQchT5GK2KnKQ3dAPL.

Переставляя pubkeys даст другой хэш, таким образом другой адрес. Использование м-в-5 позволяет генерировать до 120 адресов. Но тот факт, что никто не указал этот очевидный способ сделать это заставляет меня думать, что я должен быть что-то отсутствует.

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

Если вы пошли по этому пути вы можете увеличить перестановки с помощью несжатых версий одного и того же секретного ключа, а также (т.е. 02ABCD32823BA8BE625AEF4BEDFB812641F2DB2A05AB72BBC0E90B44AD0ABA7222 и 04ABCD32823BA8BE625AEF4BEDFB812641F2DB2A05AB72BBC0E90B44AD0ABA722253CC1EA3ABF0E 3BA8959203ADA5B85E55587BD5CD475438FB371FCB52797C342 оба могут быть созданы из того же самого необработанного закрытого ключа).
DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes

26 июня 2014, 4:02:48 PM   # 10
 
 
Сообщения: 2366
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

Тьфу. BIP32 существует, чтобы люди могли получить их партнеры адреса и сделать это в частном порядке по отношению к остальной части мира (и без добавления накладных расходов в сети).
Давай, чувак. Никто не получает их партнер адрес и, конечно, не для создания уникальных адресов P2SH. Вы бы действительно дать отправитель (тысячи потенциально начинающих пользователей) три мастера pubkeys и они создают правильный адрес P2SH? Я имею в виду не любая хорошая поддержка конечного пользователя кошелек для отправки к основе BIP32 Pay2PubKeyHash адрес гораздо меньше P2SH.

Если вы говорите, что приемник (мне) следует использовать BIP32 для создания ключей и уникальный P2SH, что, безусловно, будет работать. Тем не менее все три PubKeys в сценарии должны быть уникальными для поддержания конфиденциальности. Как только bitcoind поддерживает BIP32 я с удовольствием использовать. В промежутке времени, так как вы беспокоитесь о космосе, дайте мне знать, если вы можете думать о более пространствах эффективного способа для достижения поставленной цели в redeemScript.
От "партнеры" Я имею в виду различных multisig подписантов не отправитель, это позволяет им все продолжает генерировать последовательность адресов параллельно без дальнейшей координации. Отправитель не должен ничего менять они дали (и приемник никогда не должен принимать сценарий в одностороннем порядке изменил отправитель, если каким-то образом они замечают это вообще), и никто не указал кодировку адресов, которая изменяет вещи для них.

Bitcoind не поддерживает ни один из других альтернатив здесь- это не будет генерировать "подбитый" p2sh, он не выкупит их, так что я не следуя вашей озабоченности поддержки. Только пространство эффективный способ сделать это состоит в использовании энтропии Thats уже есть, и изменить один (или все) из pubkeys.

Существует по крайней мере один веб-кошелек, который делает это и http://ms-brainwallet.org/#bip32  так что это не полный единорог.
gmaxwell сейчас офлайн Пожаловаться на gmaxwell   Ответить с цитированием Мультицитирование сообщения от gmaxwell Быстрый ответ на сообщение gmaxwell

26 июня 2014, 4:20:37 PM   # 11
 
 
Сообщения: 1218
Цитировать по имени
цитировать ответ
по умолчанию Re: Как изменить «стандарт» multisig скрипт для создания нескольких адресов P2SH?

котировка
От "партнеры" Я имею в виду различные multisig подписантов не является отправителем

Это имеет смысл. Партнеры в этом случае являются холодными хранителями хранения в пределах одного предприятия. Сервер должен быть в состоянии детерминировано генерировать последовательность P2SH адресов, используя ключ (или ключи), принадлежащие хранителями по мере необходимости. Я предпочитаю делать это самым легким способом. bitcoind делает это возможным со статическими ключами, но не поддерживает BIP32.  

Bitcoind не поддерживает ни один из других альтернатив здесь- это не будет генерировать "подбитый" p2sh, он не выкупит их, так что я не следуя вашей озабоченности поддержки.

Я могу использовать RPC вызовы, чтобы создать мягкий multisig адрес. Было бы довольно просто.

Код:
createmultisig 2 «["020000000000000000000000000000000000000000000000000000000000000001","03694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f60","036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a644488"]»
{
"адрес" : "3DmfeKGpHVsC7HHf2GumUE31NG14f4P8SM",
"redeemScript" : "52210200000000000000000000000000000000000000000000000000000000000000012103694411c22d04a72ced42e79d584de695e322e67b9f2bafc1f2805146dda20f6021036b033de1664219216408262a9a32dfb801f09b0bfb53dd83f036fedf1a64448853ae"
}

Первый ключ в массиве будет 0x02 сцеплены со счетчиком в качестве 256 битовых шестнадцатеричной строки в. Я понимаю, что это хак, и я был бы рад рассмотреть альтернативные варианты. Я не могу использовать bitcoind для генерации генерации последовательности BIP32 адресов из семени, и я не хочу, чтобы использовать другой бумажник / клиент, как, несмотря на ограничения, у меня есть доверие к bitcoind.

Может быть, это поможет, если я объясню, что я делаю. В настоящее время служба принимает средства от пользователей с помощью уникального (Pay2PubKeyHash) адреса. "депозиты" уносятся к P2SH multisig холодного хранения. Я предпочел бы вместо того, чтобы иметь пользователей внести непосредственно в холодильниках. Проблема заключается в том, что bitcoind обеспечивает очень плохую поддержку P2SH и никакой поддержки для BIP32. Хорошая ссылка Я проверю это.

Я предполагаю, что в автономном хак будет использовать BIP32 "генератор" загрузить требуемую необходимые ключи в подписи форума кошельки (bitcoind). Сервер может использовать три BIP32 мастера открытых ключей и счетчик для генерации три уникальных Публичных и создавать детерминированные адреса P2SH по требованию. Одна головная боль в искуплении будет "обнаружение" все холодное хранение неизрасходованные выводит "выкупать" их. Это достаточно плохо, с одним адресом P2SH, но с тысячами? Было бы неплохо, это bitcoind поддерживает вызов RPC, который будет возвращать набор неизрасходованных выходов для произвольного адреса. Однако я не думаю, что есть какой-нибудь способ сделать это правильно?

DeathAndTaxes сейчас офлайн Пожаловаться на DeathAndTaxes   Ответить с цитированием Мультицитирование сообщения от DeathAndTaxes Быстрый ответ на сообщение DeathAndTaxes



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW