Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
6 июля 2015, 12:43:49 AM   # 1
 
 
Сообщения: 2
Цитировать по имени
цитировать ответ
по умолчанию Re: Base 58 адрес и открытый ключ хэша

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


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

Я знаю, что базовый адрес 58 в основном 25-байтовая обертка для 20-байтового двойного хэша открытого ключа (с версией префиксом и проверить суффикс суммы), кодируется по адресу в 17 байт. Я знаю, что хэш-ключ общественности также является частью scriptPubKey, но вот где возникают мои вопросы.

В качестве примера, на testnet (блок 487805), я имел Bitcoins, посланный на базу 58 адреса mjj4MR1aeTjWSRqHuixfoCGRDRwabbK3zv

Сырец сделка

010000000105287a343ffb315b10c03574975535badbe801cf6ffdf73c79ac22da215d095b01000 0006a4730440220670ef406032cc1c20c284da8ccc2a40d5b135776dac672ce04e8cbb9036fec15 022011e6f589e5ca946f974b3ff69523497d06262a7e75be38ae99a85e493940ea8401210278072 1cc016aaf0434878f95bce130147ccdc4bd88478222bcba2018294e99d4ffffffff02c09e0a0000 0000001976a9142e2a8d353ea825de6bc2b081324f412764e53e5788ac85351931100000001976a914c73c92961d27fb399e1d408c94f1dade2860394588ac00000000

Если жирный шрифт проступает, вы можете увидеть эти байты, которые я считаю, являются scriptPubKey:

76a9142e2a8d353ea825de6bc2b081324f412764e53e5788ac

Когда я расшифровывать сделку я вижу этот вывод:

        {
            "стоимость" : 0.00696000,
            "N" : 0,
            "scriptPubKey" : {
                "как м" : "OP_DUP OP_HASH160 2e2a8d353ea825de6bc2b081324f412764e53e57 OP_EQUALVERIFY OP_CHECKSIG",
                "наговор" : "76a9142e2a8d353ea825de6bc2b081324f412764e53e5788ac",
                "reqSigs" : 1,
                "тип" : "pubkeyhash",
                "адреса" : [
                    "mjj4MR1aeTjWSRqHuixfoCGRDRwabbK3zv"
                ]
            }
        },

Там в базовый адрес 58 раз, вместе со сценарием в шестнадцатеричном формате. Поскольку базовый адрес 58 не является частью сырой сделки, и так как шестнадцатеричное сценарий 25 байт, я предположил, что если я закодирован сценарий, я бы получить адрес базы 58, и если я декодируюсь базовый адрес 58, Я хотел бы получить сценарий. Но это не работает (по крайней мере, с использованием класса Base58 из bitcoinj).

Так что отношения между сценарием и базовый адресом 58? Как сеть даже знать об адресе базы 58, когда она не является частью сырой сделки? А что такое значение ASM, которая выглядит как фактический сценарий, но с еще одним набором байтов?

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


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


6 июля 2015, 1:49:55 AM   # 2
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: Base 58 адрес и открытый ключ хэша

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





Шестигранная часть, отформатированная на самом деле ASM закодирован в шестнадцатеричном формате. OP_DUP является 0x76, OP_HASH160 является 0xa9, OP_EQUALVERIFY является 0x88 и OP_CHECKSIG является 0xac. Сразу после OP_HASH160 шестнадцатеричных из RIPEMD-160 хэша SHA-256 хэша открытого ключа. Таким образом, фактическая открытый ключ часть 2e2a8d353ea825de6bc2b081324f412764e53e57 найдено сразу после a9 и непосредственно перед 88. Вы выполнять кодирование base58 на этом хэше.
achow101 сейчас офлайн Пожаловаться на achow101   Ответить с цитированием Мультицитирование сообщения от achow101 Быстрый ответ на сообщение achow101

6 июля 2015, 3:11:19 AM   # 3
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: Base 58 адрес и открытый ключ хэша

- чик -
Сырец сделка

010000000105287a343ffb315b10c03574975535badbe801cf6ffdf73c79ac22da215d095b01000 0006a4730440220670ef406032cc1c20c284da8ccc2a40d5b135776dac672ce04e8cbb9036fec15 022011e6f589e5ca946f974b3ff69523497d06262a7e75be38ae99a85e493940ea8401210278072 1cc016aaf0434878f95bce130147ccdc4bd88478222bcba2018294e99d4ffffffff02c09e0a0000 0000001976a9142e2a8d353ea825de6bc2b081324f412764e53e5788ac85351931100000001976a 914c73c92961d27fb399e1d408c94f1dade2860394588ac00000000

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

4 байта Номер версии: 01000000
1 байт количество входов транзакций: 01
32 байт хэш транзакции, которая подается значение используется на входе: 05287a343ffb315b10c03574975535badbe801cf6ffdf73c79ac22da215d095b
Индекс 4 байта, указывающий, какой выход из этой транзакции используются в качестве входных данных в этой транзакции: 01000000
1 байтовое значение, указывающее длину scriptSig: 6а

6о в десятичной системе равно 106. В этом случае ScriptSig состоит из 73 байт подписи с последующей 33 байт сжатого открытым ключом в оба, связанном с выходом в предыдущей операции, которая поставляется значение для этой транзакции.

1 значение байта, указывающее количество байтов, чтобы толкать в стек при обработке ScriptSig: 47

47 в десятичной системе счисления является 71, поэтому 71 байт помещаются в стек. Эти 71 байт состоит из 70 байт DER закодированные сигнатуры а и 1 байт OP_SIGHASHALL:

70 байт DER закодированные подписи:
Последовательность 1 байт: 30
длина 1 байт сигнатуры X & Y координаты: 44
1 индикация байт, что следующее значение предназначено быть целым числом: 02
1 индикация байт длины X-координата подписи: 20
32 байта координата Х: 670ef406032cc1c20c284da8ccc2a40d5b135776dac672ce04e8cbb9036fec15
1 индикация байт, что следующее значение предназначено быть целым числом: 02
1 индикация байт длины X-координата подписи: 20
32 байта Y координат: 11e6f589e5ca946f974b3ff69523497d06262a7e75be38ae99a85e493940ea84

Тогда мы имеем 1 байт OP_SIGHASHALL: 01

1 байтовое значение, указывающее длину открытого ключа: 21

21 в десятичной системе счисления является 33, поэтому открытый ключ длиной 33 байта:

33 байта сжатого открытый ключ: 02 780721cc016aaf0434878f95bce130147ccdc4bd88478222bcba2018294e99d4
4 байта порядковый номер: FFFFFFFF

1 байт количество входов транзакций: 02

8 байт количество satoshis в выходном сигнале, представляющего 0.000696 BTC: c09e0a0000000000
1 байтовое значение, указывающее длину scriptPubKey: 19

19 в десятичной системе равно 25. В этом случае scriptPubKey состоит из:

1 байт OP_DUP: 76
1 байт OP_HASH160: а9
1 байтовое значение, указывающее длину pubKeyHash: 14

14 в десятичной системе равно 20. Поэтому следующие 20 байт 160 битого pubKeyHash, которые могут быть получены из адреса.

pubKeyHash: 2e2a8d353ea825de6bc2b081324f412764e53e57

1 байт OP_EQUALVERIFY: 88
1 байт OP_CHECKSIG: ас


8 байт количество satoshis в выходном сигнале, представляющего 695.43212421 BTC: 8535193110000000
1 байтовое значение, указывающее длину scriptPubKey: 19

19 в десятичной системе равно 25. В этом случае scriptPubKey состоит из:

1 байт OP_DUP: 76
1 байт OP_HASH160: а9
1 байтовое значение, указывающее длину pubKeyHash: 14

14 в десятичной системе равно 20. Поэтому следующие 20 байт 160 битого pubKeyHash, которые могут быть получены из адреса.

pubKeyHash: c73c92961d27fb399e1d408c94f1dade28603945

1 байт OP_EQUALVERIFY: 88
1 байт OP_CHECKSIG: ас

4 байта Locktime: 00000000

Если взять pubKeyHash (2e2a8d353ea825de6bc2b081324f412764e53e57), а затем добавить соответствующую контрольную сумму и номер версии к нему, и, наконец, конвертировать из base16 в base58, результат должен быть в Bitcoin адрес (mjj4MR1aeTjWSRqHuixfoCGRDRwabbK3zv).

Реверсивный, что, если вы начинаете с адресом Bitcoin (mjj4MR1aeTjWSRqHuixfoCGRDRwabbK3zv), а затем преобразовать из base58 в основании 16, и, наконец, скинет номер версии и контрольную сумму, результат должен стать pubKeyHash (2e2a8d353ea825de6bc2b081324f412764e53e57)


EDIT: Я вернулся и нарушил ScriptSig вниз в его составные части.
DannyHamilton сейчас офлайн Пожаловаться на DannyHamilton   Ответить с цитированием Мультицитирование сообщения от DannyHamilton Быстрый ответ на сообщение DannyHamilton

6 июля 2015, 4:46:36 AM   # 4
 
 
Сообщения: 2
Цитировать по имени
цитировать ответ
по умолчанию Re: Base 58 адрес и открытый ключ хэша

О людях, я не могу сказать вам, сколько документов я зачитывался, пытаясь понять это. Я никогда не получил его. , , до сих пор. В частности, я не получил, что ФОС добавляются в качестве фактических байтов в pubKeyHash, чтобы сформировать scriptPubKey. Это очищает все это.

Я надеюсь, что это начинает показывать в поиске Google по Bitcoin RAW СДЕЛКИ ОБЪЯСНЕНИЯ.

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

6 июля 2015, 3:56:08 PM   # 5
 
 
Сообщения: 412
Цитировать по имени
цитировать ответ
по умолчанию Re: Base 58 адрес и открытый ключ хэша

Просто добавить - разные адресные префиксы сказать клиентам, чтобы сформировать скрипт из хэша определенным образом.

0x0 означает использовать следующий хэш в сценарии с оплатой по-Публичным-хэш.
0x5 означает использовать следующий хэш в сценарии с оплатой в-скрипт-хэш.

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW