Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
9 марта 2014, 3:38:19 AM   # 1
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я хочу, чтобы генерировать свои собственные адреса многоплатформенного Sig используя мои открытые ключи. Как я могу это сделать? Просто ходить мне через то, что нужно для создания многоплатформенного значи адреса из открытых ключей и п требует значения.

Честно говоря, мне просто нужно знать, как вставить п требуемое значение в адрес? Я могу создавать их с помощью версии байт 0x05.
gweedo сейчас офлайн Пожаловаться на gweedo   Ответить с цитированием Мультицитирование сообщения от gweedo Быстрый ответ на сообщение gweedo


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


9 марта 2014, 3:57:13 AM   # 2
 
 
Сообщения: 1736
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

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





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

9 марта 2014, 4:00:32 AM   # 3
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Вот учебник.

Я знаю, как создавать их на Bitcoin-кварт, но я ищу для процесса их генерации. Я хочу, чтобы написать свою собственную программу, которая может генерировать их, так что я ищу больше шаг за шагом хэширования функции и какие данные нужно поместить в те хэш, чтобы создать адрес многоплатформенный значи. Я знаю, что вам нужны открытые ключи несжатых и требуемое значение п, и я знаю, что версия байт 0x05.
gweedo сейчас офлайн Пожаловаться на gweedo   Ответить с цитированием Мультицитирование сообщения от gweedo Быстрый ответ на сообщение gweedo

9 марта 2014, 6:30:53 AM   # 4
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Вот учебник.

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

В Bitcoin сценарии довольно проста, но убедившись, что вы делаете правильно может быть сложным - например, вы можете создать несколько значи скрипт для получения денег, но большинство инструментов не отображаются и проверить сценарий правильно. Вы должны убедиться, что вы делаете, что часть правильно, тоже. К счастью, если вы сделаете это неправильно, то сеть, скорее всего, не передавайте его (просто не мое это самостоятельно!).

Если вы хотите использовать P2SH, вы хэширования выходной сценарий и построить адресную строку, используя 0x05 вместо 0x00, как для нормального адреса. Но это не имеет значения, если вы вручную создавать транзакции, поскольку сеть никогда не видит, что префикс байт - это только идентификатор для адресных строк, которые передаются вокруг между людьми, но не включены в реальных сценариях, вставленных в blockchain.  

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

Наконец, я рекомендую вам сделать все ваши испытания на testnet. Все идентично, за исключением того, если вы используете P2SH, используйте следующие префиксы байт для генерации адреса строки:

   Постоянные адреса = '\ x6f'
   P2SH Адреса = '\ XC4'



Onto забавной части - все это может быть сделано с armoryengine. И последняя версия armoryengine также распознает и отображает P2SH адрес (на "тестирование" филиал), хотя это не совсем знает, что делать с multisig сценариев. Тем не менее, вы можете вручную собрать части с помощью https://bitcoinarmory.com/developers/python-scripting/ в качестве руководства.

Если бы я собирался сделать это, я хотел бы использовать регулярные multisig: я бы, вероятно, использовать Оружейной GUI для создания транзакции отправки X монеты в обычный адрес, но не отправить его еще, создать неподписанную транзакцию. Затем идет шестигранные нырять в эту сделку и заменить скрипт TxOut (и var_int его предшествующим) с multisig сценарием. На самом деле, вы можете создать сценарий с моей непроверенной функцией pubkeylist_to_multisig_script (pubKeyList, MREQ).  Хотя, это очень простой скрипт:

Код:
OP_2 PubKeyA PubKeyB PubKeyC OP_3 OP_CHECKMULTISIG

Если вы делаете 2-из-3, получить три открытых ключей, и поставить двоичный формы их в список, что-то вроде:
Код:
pubkeys = [ ''] * 3
pubkeys [0] = hex_to_binary ( '0438c80fa100871bc8115311d ...')
pubkeys [1] = hex_to_binary ( '047613d073ff18301aab45df1 ...')
pubkeys [2] = hex_to_binary ( '040f83e3d9983aba4246fe3aa ...')
msScript = pubkeylist_to_multisig_script (pubkeys, 2)
msScript = script_to_p2sh_script (msScript) # НЕОБЯЗАТЕЛЬНО, если вы хотите P2SH
scriptSizeVarint = packVarInt (Len (сценарий)) [0]

Теперь удалите var_int и сценарий от получателя txout (не связывайтесь с выходом изменения!), И поставить этот varInt и сценарий там. Если я не пропустил что-то, это должно быть действительной сделкой. Вы должны быть в состоянии подписать и транслировать его (вы можете даже быть в состоянии сделать это с Оружейной, как если бы это была автономная транзакция, хотя она также может подавиться форме receipient "адрес" -- дай мне знать!).  

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

Код:
OP_0 SigAOrEmptyString SigBOrEmptyString SigCOrEmptyString

Вам нужен код Вот для получения хэша, который должен быть подписан OP_CHECKSIG / OP_CHECKMULTSIG. Вы подпишете этот хэш с каждым из 2-х из 3-х закрытых ключей и положить пустую строку (OP_0?) В другом месте (они должны быть в том же порядке, что и ключи в сценарии TxOut). Это должно быть действительным сценарием израсходует.

Конечно, я, вероятно, пропустил всякие мелкие детали, но уже поздно, так что мне придется отложить обсуждение этих деталей до позже. Будем надеяться, что, по крайней мере достаточно, чтобы вы начали.
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

10 марта 2014, 7:23:06 PM   # 5
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Да это не работает для меня. Я постоянно генерируя адрес, который далек от того, генерируемой в Bitcoin-кварт и даже когда я запускаю его в питон она дает мне другой адрес.

Я просто продолжать использовать Bitcoin-Qt для его создания.

Код:
createmultisig 2 «["03d7133580d6fb5e6c3b006d05cd44b60a84248afb1faae23a56c24e043bdef8d1","022c170c543cc9ee2b4ee97302d4cce4cfcf4db2e8d0f5c172d2238895c49f60f4","03cfff1686632906ecdf12d00cda0f90823f881a01e8bc8511d99288ca0d6dabfd"]»

Код:
{
"адрес" : "2Mxp2qwtpHCYxy7AEhtdzcX6JymvnjP7iEB",
"redeemScript" : "522103d7133580d6fb5e6c3b006d05cd44b60a84248afb1faae23a56c24e043bdef8d121022c170c543cc9ee2b4ee97302d4cce4cfcf4db2e8d0f5c172d2238895c49f60f42103cfff1686632906ecdf12d00cda0f90823f881a01e8bc8511d99288ca0d6dabfd53ae"
}

Я пытаюсь сделать это в PHP, так что, возможно, мой первый вопрос, но если бы я мог просто генерировать, что redeemscript было бы тривиально, чтобы создать адрес мульти-значи.
gweedo сейчас офлайн Пожаловаться на gweedo   Ответить с цитированием Мультицитирование сообщения от gweedo Быстрый ответ на сообщение gweedo

11 марта 2014, 11:58:48 AM   # 6
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

вопросы заказа.

Выполнить все 6 перестановок, чтобы увидеть, если один совпадает. (Я всегда сортировать мои.)
kjj сейчас офлайн Пожаловаться на kjj   Ответить с цитированием Мультицитирование сообщения от kjj Быстрый ответ на сообщение kjj

11 марта 2014, 6:12:30 PM   # 7
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

вопросы заказа.

Выполнить все 6 перестановок, чтобы увидеть, если один совпадает. (Я всегда сортировать мои.)

Как сортировать ваши? Я просто использую лексикографически по коду etothepi в.
gweedo сейчас офлайн Пожаловаться на gweedo   Ответить с цитированием Мультицитирование сообщения от gweedo Быстрый ответ на сообщение gweedo

11 марта 2014, 9:25:54 PM   # 8
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Код:
{
"адрес" : "2Mxp2qwtpHCYxy7AEhtdzcX6JymvnjP7iEB",
"redeemScript" : "522103d7133580d6fb5e6c3b006d05cd44b60a84248afb1faae23a56c24e043bdef8d121022c170c543cc9ee2b4ee97302d4cce4cfcf4db2e8d0f5c172d2238895c49f60f42103cfff1686632906ecdf12d00cda0f90823f881a01e8bc8511d99288ca0d6dabfd53ae"
}

Я пытаюсь сделать это в PHP, так что, возможно, мой первый вопрос, но если бы я мог просто генерировать, что redeemscript было бы тривиально, чтобы создать адрес мульти-значи.
redeemScript довольно много прямо вперед:

* Нажать количество подписей, необходимых, чтобы провести (это обычно один байт кода операции: значение = 0x50 + номер)
Код:
52

* Нажать открытый ключ - и делать это N раз, один раз для каждого ключа
Код:
21: 03d7133580d6fb5e6c3b006d05cd44b60a84248afb1faae23a56c24e043bdef8d1
21: 022c170c543cc9ee2b4ee97302d4cce4cfcf4db2e8d0f5c172d2238895c49f60f4
21: 03cfff1686632906ecdf12d00cda0f90823f881a01e8bc8511d99288ca0d6dabfd

* Толчок N (обычно один байт: 0x50 + N)
Код:
53

* Append опкод 0xae (независимо от того, что делает - на этом этапе никто не заботится)
Код:
ае

чтобы адрес из такого сценария, только хеш весь redeemScript с rimpd160 (sha256 (скрипт)) - это даст вам 20 байт.
создать фактический текст адреса использовать обычный Bitcoin в 20-байт base58 адрес "перевод"С 4-х контрольных сумм байт.
версия байты отличаются -I считают, что 5 для реальной сети (в отличие от 0 для обычных адресов)

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

11 марта 2014, 9:52:30 PM   # 9
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Код:
{
"адрес" : "2Mxp2qwtpHCYxy7AEhtdzcX6JymvnjP7iEB",
"redeemScript" : "522103d7133580d6fb5e6c3b006d05cd44b60a84248afb1faae23a56c24e043bdef8d121022c170c543cc9ee2b4ee97302d4cce4cfcf4db2e8d0f5c172d2238895c49f60f42103cfff1686632906ecdf12d00cda0f90823f881a01e8bc8511d99288ca0d6dabfd53ae"
}

Я пытаюсь сделать это в PHP, так что, возможно, мой первый вопрос, но если бы я мог просто генерировать, что redeemscript было бы тривиально, чтобы создать адрес мульти-значи.
redeemScript довольно много прямо вперед:

* Нажать количество подписей, необходимых, чтобы провести (это обычно один байт кода операции: значение = 0x50 + номер)
Код:
52

* Нажать открытый ключ - и делать это N раз, один раз для каждого ключа
Код:
21: 03d7133580d6fb5e6c3b006d05cd44b60a84248afb1faae23a56c24e043bdef8d1
21: 022c170c543cc9ee2b4ee97302d4cce4cfcf4db2e8d0f5c172d2238895c49f60f4
21: 03cfff1686632906ecdf12d00cda0f90823f881a01e8bc8511d99288ca0d6dabfd

* Толчок N (обычно один байт: 0x50 + N)
Код:
53

* Append опкод 0xae (независимо от того, что делает - на этом этапе никто не заботится)
Код:
ае

чтобы адрес из такого сценария, только хеш весь redeemScript с rimpd160 (sha256 (скрипт)) - это даст вам 20 байт.
создать фактический текст адреса использовать обычный Bitcoin в 20-байт base58 адрес "перевод"С 4-х контрольных сумм байт.
версия байты отличаются -I считают, что 5 для реальной сети (в отличие от 0 для обычных адресов)

Теперь, эта часть (генерируя multisig адрес) - это очень просто.
но когда вы тратить монеты из него - то начинается самое интересное
кто придумал эту систему должен был мазохистом

Именно то, что я искал это работало отлично! Только один вопрос: где же 21 перед каждым адресом взялся? Кроме того, я собираюсь сделать тестирование на их тратить, но я буду использовать Bitcoin-QT делать расходы, поэтому я не слишком беспокоился.
gweedo сейчас офлайн Пожаловаться на gweedo   Ответить с цитированием Мультицитирование сообщения от gweedo Быстрый ответ на сообщение gweedo

11 марта 2014, 10:18:07 PM   # 10
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Только один вопрос: где же 21 перед каждым адресом взялся?
Это опкод из сценария - значит "раздвинуть следующие 0x21 байт в стеке, как новый верхний элемент",
https://en.bitcoin.it/wiki/Script#Constants
Если бы вы распакованы открытый ключ (например, от какого-то старого кошелька) - это было бы 0x41

Кроме того, я собираюсь сделать тестирование на их тратить, но я буду использовать Bitcoin-QT делать расходы, поэтому я не слишком беспокоился.
Боюсь, он все равно будет просить вас за ценности, которые нужны для обеспечения вы найдете довольно смешно, по поводу того, это должно было быть функция бумажника ... как: секретный ключ

Это на самом деле может быть только кошельком когда-либо созданный, который должен быть снабжен закрытым ключом снаружи для того, чтобы подписать сделку - что делает его чрезвычайно умную идею
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

12 марта 2014, 1:53:29 PM   # 11
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

вопросы заказа.

Выполнить все 6 перестановок, чтобы увидеть, если один совпадает. (Я всегда сортировать мои.)

Как сортировать ваши? Я просто использую лексикографически по коду etothepi в.

Наименьший к наибольшему.

Дело в том, что АВС дает различные redeemscript (и, следовательно, различный хеш), чем А, или любому из других 4 перестановок. Я думаю, что я предположил, что команда RPC для создания multisig p2sh адреса должен сортировать ключи (с дополнительным флагом в не сортировать их), но я не знаю, если это было сделано когда-либо или нет.

Но если вы проверяете свой код от адреса, созданного bitcoind, вы должны соответствовать любому заказу bitcoind используют, или вы можете получить различный (но, возможно, полностью действительный и полезный) адрес.

Только один вопрос: где же 21 перед каждым адресом взялся?
Это опкод из сценария - значит "раздвинуть следующие 0x21 байт в стеке, как новый верхний элемент",
https://en.bitcoin.it/wiki/Script#Constants

Есть куча опкодов, означающих "толкать новый объект стека, выполненный из этого буквального числа байт, которые непосредственно следует",

В этом случае объект стека закодированный открытый ключ. Открытые ключи кодируются следующим образом:

0х02 (1 байт) - {pubkey.x} (32 байта) (у значение подразумевается и имеет четность)
0x03 (1 байт) - {pubkey.x} (32 байта) (значение у подразумевается и имеет нечетность)
0x04 (1 байт) - {pubkey.x} (32 байта) - {pubkey.y} (32 байта) *

1 байт + 32 байт = 33 байт, что в шестнадцатеричном 0x21, а также отображение кода операции была создана таким образом, что 0x21 является опкод, что означает толчок 0x21 байт.

Если вы всегда используете сжатый pubkeys, вы, вероятно, можете уйти только с помощью буквального 0x21 здесь, но для более расширяемого сценария, вероятно, вы должны написать обобщенную функцию cscript_pushobject, которая является надежной.

* Пожалуйста, никогда не используйте это.
kjj сейчас офлайн Пожаловаться на kjj   Ответить с цитированием Мультицитирование сообщения от kjj Быстрый ответ на сообщение kjj

12 марта 2014, 7:00:01 PM   # 12
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

в любом случае, если вы когда-нибудь на самом деле тратить монеты из multisig адресов, вот что вы хотели бы знать.

* При использовании "signrawtransaction" API, не беспокойтесь о TXID + Vout парах - функция требует, чтобы указать его, но положить туда все, что вы хотите, и она будет работать
* К сожалению (по крайней мере, для multisig) эта функция требует указывать фактическое подписание секретного ключа (который также должен быть в вашем бумажнике, BTW). по крайней мере, мне не удалось использовать его, не давая ему закрытый ключ, вместе с запросом.

и абстрагируясь от Bitcoin-Qt:
* В фактической подписанной сделки, в начале каждого sigscript должно быть OP_FALSE опкод, который, предположительно, обходной путь для какой-то ошибки
* Порядок фактических подписей должны совпадать (следовать) порядок открытых ключей от сценария p2sh. если изменить их порядок, он не будет проверять.

кроме этих нескольких деталей он на самом деле, кажется, работает очень хорошо.
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

13 марта 2014, 2:42:01 AM   # 13
 
 
Сообщения: 412
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Позаботьтесь при создании redeemscript использовать правильный varint в случае, если вы дали несжатый ключ.

Код:
Функция create_redeem_script ($ м, $ public_keys = массив ()) {
если (количество ($ public_keys) == 0)
возвращать FALSE;
если ($ м == 0)
возвращать FALSE;

$ RedeemScript = DecHex (0x50 + $ м);
Foreach ($ public_keys как $ public_key) {
$ RedeemScript = DecHex (STRLEN ($ public_key) / 2) $ public_key..;
}
$ RedeemScript = DecHex (0x50 + (COUNT ($ public_keys))) ае '..;
возвращение $ redeemScript;
}

общественная функция decode_redeem_script ($ redeem_script, $ данных = массив ()) {
// Если нет больше работы, чтобы сделать (сценарий полностью разобран,
// возвращает массив)
если (STRLEN ($ redeem_script) == 0)
вернуть $ данные;

// нормально, если redeem_script имеет нечетное количество символов.
если (STRLEN ($ redeem_script)% 2! == 0)
возвращать FALSE;

// Первый шаг, чтобы получить м, необходимое количество подписей
если (! Исеть ($ данных [ 'т']) || Количество ($ данных) == 0) {
$ данных [ 'т'] = gmp_strval (gmp_sub (gmp_init (зиЬзЬг ($ redeem_script, 0, 2), 16), gmp_init ( '50', 16)), 10);
$ данных [ 'ключи'] = массив ();
$ Redeem_script = зиЬзЬги ($ redeem_script, 2);

} Еще если (COUNT ($ данных [ 'ключи']) == 0 && ! Исеть ($ данных [ 'next_key_charlen'])) {
// Далее следует выяснить длину следующего открытого ключа.
$ Гекс = зиЬзЬги ($ redeem_script, 0, 2);
// Устанавливает длину следующего ключа.
$ данных [ 'next_key_charlen'] = gmp_strval (gmp_mul (gmp_init ( '2', 10), gmp_init ($ шестигранные, 16)), 10);
$ Redeem_script = зиЬзЬги ($ redeem_script, 2);

} Еще если (Исеть ($ данных [ 'next_key_charlen'])) {
// Извлечь ключ, и работать на следующий шаг для кода.
$ данных [ 'клавиши'] [] = зиЬзЬги ($ redeem_script, 0, $ данных [ 'next_key_charlen']);
$ Next_op = SUBSTR ($ redeem_script, $ данных [ 'next_key_charlen'], 2);
$ Redeem_script = зиЬзЬги ($ redeem_script, ($ данных [ 'next_key_charlen'] + 2));
переменные не установлены ($ данные [ 'next_key_charlen']);

// Если 1 <= $ Next_op >= 4b
если (in_array (gmp_cmp (gmp_init ($ next_op, 16), gmp_init ( '1', 16)), массив ( '0', '1'))
&& in_array (gmp_cmp (gmp_init ($ next_op, 16), gmp_init ( '4b', 16)), массив ( '- 1', '0'))) {
// Установить следующую длину ключа символов
$ данных [ 'next_key_charlen'] = gmp_strval (gmp_mul (gmp_init ( '2', 10), gmp_init ($ next_op, 16)), 10);

// Если 52 <= $ Next_op >= 60
} Иначе, если (in_array (gmp_cmp (gmp_init ($ next_op, 16), gmp_init ( '52', 16)), массив ( '0', '1'))
&& in_array (gmp_cmp (gmp_init ($ next_op, 16), gmp_init ('60' , 16)), массив ( '- 1', '0'))) {
// Закончить сценарий.
$ данных [ 'п'] = gmp_strval (gmp_sub (gmp_init ($ next_op, 16), gmp_init ( '50', 16)), 10);
$ Redeem_script = '';
} Еще {
// Что-то странное, уродливы redeemScript.
возвращать FALSE;
}
}
Самовозврат :: decode_redeem_script ($ redeem_script, $ данных);
}

Edit: Добавлена ​​рекурсивная функция для декодирования redeemscript.
fbueller сейчас офлайн Пожаловаться на fbueller   Ответить с цитированием Мультицитирование сообщения от fbueller Быстрый ответ на сообщение fbueller

13 марта 2014, 3:09:08 AM   # 14
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Позаботьтесь при создании redeemscript использовать правильный varint в случае, если вы отводился несжатый ключ:

Функция redeem_script ($ п, $ public_keys = массив ()) {
  $ RedeemScript = (0x50 + $ п);
  Foreach ($ public_keys как $ public_key) {
    $ RedeemScript = DecHex (STRLEN ($ public_key) / 2) $ public_key..;
  }
  $ RedeemScript = (0x50 + (количество ($ public_keys))) 'ае'..;
  возвращение $ redeemScript;
}


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

13 марта 2014, 4:08:16 AM   # 15
 
 
Сообщения: 114
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Так это правда, необходимо использовать несжатых ключи? Я также пытаюсь воспроизвести то, что bitcoind-х multisig реализации делает, и я получаю другой адрес вывода, используя сжатые ключи.

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

13 марта 2014, 9:27:43 AM   # 16
 
 
Сообщений: 80
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Так это правда, необходимо использовать несжатых ключи? Я также пытаюсь воспроизвести то, что bitcoind-х multisig реализации делает, и я получаю другой адрес вывода, используя сжатые ключи.

Как и другие сказали, проверить порядок ключей. Это имеет значение - различные выходные заказ будет другой адрес.
Bitalo_Maciej сейчас офлайн Пожаловаться на Bitalo_Maciej   Ответить с цитированием Мультицитирование сообщения от Bitalo_Maciej Быстрый ответ на сообщение Bitalo_Maciej

13 марта 2014, 1:47:49 PM   # 17
 
 
Сообщения: 114
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Я делаю простые 2-из-2, пытавшихся обе перестановки. 

Для того, чтобы убедиться, что я не понимаю, предыдущие 50 учебных пособий, которые я читал, вот шестигранные байт Я хэширования:

RIPEMD-160 (sha256 ("22"))

Я довольно уверен, что это шаг, который лентяйничать его, все остальное аналогично стандартным адресам.
instagibbs сейчас офлайн Пожаловаться на instagibbs   Ответить с цитированием Мультицитирование сообщения от instagibbs Быстрый ответ на сообщение instagibbs

13 марта 2014, 6:59:38 PM   # 18
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Сделайте пару фиктивной privkeys, используйте bitcoind для генерации адреса 2-на-2, и использовать скрипт для создания его. Дать ключи, в redeemscripts (оба из них) и два полученных p2sh адреса.
kjj сейчас офлайн Пожаловаться на kjj   Ответить с цитированием Мультицитирование сообщения от kjj Быстрый ответ на сообщение kjj

13 марта 2014, 8:14:16 PM   # 19
 
 
Сообщения: 114
Цитировать по имени
цитировать ответ
по умолчанию Re: Кто-нибудь знает структуру адреса многоплатформенный сиг?

Сделайте пару фиктивной privkeys, используйте bitcoind для генерации адреса 2-на-2, и использовать скрипт для создания его. Дать ключи, в redeemscripts (оба из них) и два полученных p2sh адреса.

Pubkey1:
0287f9169e265380a87cfd717ec543683f572db8b5a6d06231ff59c43429063ae4
Pubkey2:
0343947d178f20b8267488e488442650c27e1e9956c824077f646d6ce13a285d84

Ответ Bitcoind в:
"адрес" : "36m2bHwsUnkpGsZgVAEmeJRf2CeViDm6RV",
"redeemScript" : "52210287f9169e265380a87cfd717ec543683f572db8b5a6d06231ff59c43429063ae4210343947 d178f20b8267488e488442650c27e1e9956c824077f646d6ce13a285d8452ae"

Мой расчет:
"адрес" : "35vpjKamX1LnkgjZ2aauj1XQWPRCkqRjsE",
"redeemScript"   "52210287f9169e265380a87cfd717ec543683f572db8b5a6d06231ff59c43429063ae4210343947 d178f20b8267488e488442650c27e1e9956c824077f646d6ce13a285d8452ae"


Nevermind я получил его. Я не понимаю, что "2" на самом деле означает, "0x52" в опкодах, и т.д. Петр любови к вам для вашего объяснения.
instagibbs сейчас офлайн Пожаловаться на instagibbs   Ответить с цитированием Мультицитирование сообщения от instagibbs Быстрый ответ на сообщение instagibbs



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW