Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
23 июля 2013, 12:53:59 PM   # 1
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Со вчерашнего дня было как несколько передатчиков, совершенных в blockchain, которые ИМО буквально сломанных.
Это сломало мой клиент BTW, но я установил это уже, и я знаю, что это не может быть отменено больше, так что я только интересно ..

Из того, что я понимаю, используя SIGHASH_SINGLE, который имеет больше выходов, чем входов не имеет никакого смысла - так что код даже печатает ошибку, то:
Код:
неподписанных INT ноут = NIN;                                           
если (ноут >= TxTmp.vout.size ())                                     
{                                                                   
    Е ("ОШИБКА: SignatureHash (): Nout =% d вне диапазона \ п", Nout);
    возвращает 1;                                                       
}                                                                   
Обычно, когда есть ошибка где-то при выполнении сценария, он просто не может - но здесь, несмотря на печати ошибки, она по-прежнему принимает транзакцию, используя хэш-значение 1, а затем проверки подписи для такого хэша.

Так что с ним?
Является ли это как кто-то просто игнорировать этот кусок кода - или это "ошибка => хэш = 1" по дизайну?

РЕДАКТИРОВАТЬ:
Если вы не знаете, что я имею в виду, проверяет эти три Txs:
Код:
315ac7d4c26d69668129cc352851d9389b4a6868f1509c6c8b66bead11e2619f
dbf38261224ebff0c455c405e2435cfc69adb6b8a42d7b10674d9a4eb0464dca
de744408e4198c0a39310c8106d1830206e8d8a5392bcf715c9b5ec97d784edd
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n


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


23 июля 2013, 1:03:39 PM   # 2
 
 
Сообщения: 225
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

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





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

23 июля 2013, 1:06:12 PM   # 3
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

Сломанный?

Почему SIGHASH_SINGLE требует NIN == ноут?
Я неправильно понял
Это требуется только NIN<= ноут
jackjack сейчас офлайн Пожаловаться на jackjack   Ответить с цитированием Мультицитирование сообщения от jackjack Быстрый ответ на сообщение jackjack

23 июля 2013, 1:10:43 PM   # 4
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?


Спасибо.
И извините за двойной пост.


Это требуется только NIN<= ноут
Это верно.
Но что, если Нины = 2 и ноут = 1 - как здесь?
Ну, теперь я знаю: использовать хэш-значение 1, но не смею потерпеть неудачу сценария!
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

23 июля 2013, 1:21:05 PM   # 5
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?


Спасибо.
И извините за двойной пост.


Это требуется только NIN<= ноут
Это верно.
Но что, если Нины = 2 и ноут = 1 - как здесь?
Ну, теперь я знаю: использовать хэш-значение 1, но не смею потерпеть неудачу сценария!

Ничего себе я не знаю ...
Является ли это разрешено Bitcoin-QT? Да (я думал Retep говорил о webbtc в его OP)
По протоколу?
jackjack сейчас офлайн Пожаловаться на jackjack   Ответить с цитированием Мультицитирование сообщения от jackjack Быстрый ответ на сообщение jackjack

23 июля 2013, 1:22:45 PM   # 6
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?


Спасибо.
И извините за двойной пост.


Это требуется только NIN<= ноут
Это верно.
Но что, если Нины = 2 и ноут = 1 - как здесь?
Ну, теперь я знаю: использовать хэш-значение 1, но не смею потерпеть неудачу сценария!

Ничего себе я не знаю ...
Является ли это разрешено Bitcoin-QT? По протоколу?
Я не нашел ничего в связанном потоке
Эти три транзакций я упомянул мой OP заминированы, поэтому очевидно, что это разрешено.
И теперь все мы должны жить с ним - это еще один аргумент, почему документация, кроме кода Satoshi бесполезен
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

23 июля 2013, 1:25:57 PM   # 7
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?


Спасибо.
И извините за двойной пост.


Это требуется только NIN<= ноут
Это верно.
Но что, если Нины = 2 и ноут = 1 - как здесь?
Ну, теперь я знаю: использовать хэш-значение 1, но не смею потерпеть неудачу сценария!

Ничего себе я не знаю ...
Является ли это разрешено Bitcoin-QT? По протоколу?
Я не нашел ничего в связанном потоке
Эти три транзакций я упомянул мой OP заминированы, поэтому очевидно, что это разрешено.
И теперь все мы должны жить с ней.

Жить с ним хорошо, но мы должны знать, что такое хорошее поведение для будущих реализаций!
Разве это не выглядит как сумасшедшая халтура / ошибка?

Только часть протокола мы имеем следующее:
котировка
Процедура HashType SIGHASH_SINGLE

    Выход txCopy изменяется до размеров текущего индекса ввода + 1.
    Все другие выходы txCopy в сторону от выхода, который является таким же, как индекс текущего входного устанавливаются на пустой сценарий и значением (длинный) -1.
    Все остальные входы txCopy в сторону от текущего входа установлены, чтобы иметь индекс nSequence, равный нулю.
Это требует не добавляя пустые выходы до тех пор, лена = индекс + 1, то обработка
Это то, что Bitcoin-кварта делает?


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

23 июля 2013, 1:28:28 PM   # 8
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

Жить с ним хорошо, но мы должны знать, что такое хорошее поведение!
Разве это не выглядит как сумасшедшая халтура / ошибка?
Таким образом, мой вопрос.

Для меня это, кажется, как будто кто-то забыл его в какой-то момент; "вернуться 1" Предполагалось, что указывает на ошибку, но это было как-то упускается из виду, и теперь он неявно получает приведение к (uint256) 1, который является довольно допустимым значением хэш, поэтому компилятор C ++ не жалуется и поэтому никто не заметил ..

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

23 июля 2013, 2:00:32 PM   # 9
 
 
Сообщения: 1526
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

Я считаю, что Петр создал эти операции, и я думаю, что это хорошая идея. Go Питер!

Говоря всем читателям этой теме (конкретно не piotr_n) - если ваша реализация сломал из-за этих сделок, две вещи, чтобы рассмотреть:

1) Ваша реализация почти наверняка содержит другие цепи расщепления ошибок за пределами этого.

2) Вы должны использовать blocktester Мэтта, который показал бы этот вопрос, как и Мэтт обнаружил эту ошибку >1 год назад, когда он сделал режим bitcoinj полной проверки.

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

23 июля 2013, 2:04:59 PM   # 10
 
 
Сообщения: 1484
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

Жить с ним хорошо, но мы должны знать, что такое хорошее поведение!
Разве это не выглядит как сумасшедшая халтура / ошибка?
Таким образом, мой вопрос.

Для меня это, кажется, как будто кто-то забыл его в какой-то момент; "вернуться 1" Предполагалось, что указывает на ошибку, но это было как-то упускается из виду, и теперь он неявно получает приведение к (uint256) 1, который является довольно допустимым значением хэш, поэтому компилятор C ++ не жалуется и поэтому никто не заметил ..

У вас не такая же проблема в Оружейной?
Я не могу себе представить, воспроизводя такое же поведение в Python, просто повторяя такую ​​ошибку.

Это было замечено давно. Он только сейчас вновь заметили другие

Я обнаружил, что это больше года назад переписывая все в Python:

https://github.com/jgarzik/python-bitcoinlib/
https://github.com/jgarzik/python-bitcoinlib/blob/master/bitcoin/scripteval.py

Вы можете определить проблему? 

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

23 июля 2013, 2:05:43 PM   # 11
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

Я считаю, что Петр создал эти операции, и я думаю, что это хорошая идея. Go Питер!
Да.
Столько, сколько я не получаю вместе с ним в целом, спасибо @Peter для привлечения этих передатчиков к сети!

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

23 июля 2013, 2:08:13 PM   # 12
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

Жить с ним хорошо, но мы должны знать, что такое хорошее поведение!
Разве это не выглядит как сумасшедшая халтура / ошибка?
Таким образом, мой вопрос.

Для меня это, кажется, как будто кто-то забыл его в какой-то момент; "вернуться 1" Предполагалось, что указывает на ошибку, но это было как-то упускается из виду, и теперь он неявно получает приведение к (uint256) 1, который является довольно допустимым значением хэш, поэтому компилятор C ++ не жалуется и поэтому никто не заметил ..

У вас не такая же проблема в Оружейной?
Я не могу себе представить, воспроизводя такое же поведение в Python, просто повторяя такую ​​ошибку.

Это было замечено давно. Он только сейчас вновь заметили другие

Я обнаружил, что это больше года назад переписывая все в Python:

https://github.com/jgarzik/python-bitcoinlib/
https://github.com/jgarzik/python-bitcoinlib/blob/master/bitcoin/scripteval.py

Вы можете определить проблему? 
Человек, вы должны поставить его на вики, то, по крайней мере, как некоторые комментарии в исходном коде.
Если ваша цель не является, чтобы убедиться, что клиенты вы разрабатываете сохранить монополию.
Тогда его, вероятно, хорошая стратегия, чтобы не сделать такую ​​информацию общественности.
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

23 июля 2013, 3:53:20 PM   # 13
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

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

Как они говорят это: знание это сила.
И знание о том, как вы можете атаковать 1 + млрд долларов США на сумму в валюте власти стоит эксплуатировать.
Так что если вы честные люди, и я думаю, что вы, пожалуйста, не утаивать такую ​​важную информацию, а рекламировать его столько, сколько вы можете - встраивание тестовых случаев в блоке цепи является идеальным окончательным решением.
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

23 июля 2013, 9:13:57 PM   # 14
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

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


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

23 июля 2013, 9:24:55 PM   # 15
 
 
Сообщения: 1106
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

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

Мы делаем это уже. Этот вопрос с SIGHASH_SINGLE был задокументирован в UnitTests здесь: https://github.com/bitcoin/bitcoin/blob/master/src/test/data/tx_valid.json#L39 (Я не нашел его первым)

Другой основной источник тестов является блок-тестером Matt Corallo в: https://github.com/TheBlueMatt/test-scripts

Вы всегда можете пройти через эти тестов и суммировать более тонкие из них, но, честно говоря, я не вижу смысла: любое изменение, независимо от того, как мало, вызывает тяжелую вилку. Идеальное соблюдение этих испытаний является необходимым, но далеко не достаточным требованием.
Peter Todd сейчас офлайн Пожаловаться на Питер Тодд   Ответить с цитированием Мультицитирование сообщения от Peter Todd Быстрый ответ на сообщение Peter Todd

24 июля 2013, 5:17:28 PM   # 16
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

Мы делаем это уже. Этот вопрос с SIGHASH_SINGLE был задокументирован в UnitTests здесь: https://github.com/bitcoin/bitcoin/blob/master/src/test/data/tx_valid.json#L39 (Я не нашел его первым)

Другой основной источник тестов является блок-тестером Matt Corallo в: https://github.com/TheBlueMatt/test-scripts
Благодаря! Векторы из файла JSon сегодня мне очень помог. И tx_invalid.json также оказался полезным.
Кто бы мог подумать, что отрезав подпись из сообщения, которое получает хешировано такая сложная операция (речь идет о префиксе длины здесь).

Хотя, блок тестере Мэтта - я даже не пытался построить его, не говоря уже слишком выяснить, как использовать его .. Может быть, когда-нибудь.

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


Кстати, было бы неплохо иметь к тестовому ОМУ, который запускает этот код:
Код:
// В случае конкатенации два сценария заканчивается с двумя codeseparators,             
// или дополнительный один в конце концов, это предотвращает все эти возможные несовместимости.
scriptCode.FindAndDelete (CScript (OP_CODESEPARATOR));
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

24 июля 2013, 5:53:27 PM   # 17
 
 
Сообщения: 1106
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

Кстати, было бы неплохо иметь к тестовому ОМУ, который запускает этот код:
Код:
// В случае конкатенации два сценария заканчивается с двумя codeseparators,             
// или дополнительный один в конце концов, это предотвращает все эти возможные несовместимости.
scriptCode.FindAndDelete (CScript (OP_CODESEPARATOR));

Работаю над этим.


FWIW я предлагаю вам рассмотреть возможность удаления оценки сценариев из вашей библиотеки целиком на данный момент. Держите остальную часть кода сценариев - вам это нужно, чтобы создать сделки после того, как все - но сделать это ясно, что единственный способ, которым Вы знаете, что сделка действительна, если шахтер рудниках. Это больше, рядный с гарантиями клиентов SPV может обеспечить в любом случае, и поможет вам сэкономить огромное количество работы, которое, вероятно, потраченного впустую, пока у нас нет лучшего тестирования инфраструктуры для клиентов третьих лиц использовать.
Peter Todd сейчас офлайн Пожаловаться на Питер Тодд   Ответить с цитированием Мультицитирование сообщения от Peter Todd Быстрый ответ на сообщение Peter Todd

24 июля 2013, 6:01:48 PM   # 18
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

FWIW я предлагаю вам рассмотреть возможность удаления оценки сценариев из вашей библиотеки целиком на данный момент. Держите остальную часть кода сценариев - вам это нужно, чтобы создать сделки после того, как все - но сделать это ясно, что единственный способ, которым Вы знаете, что сделка действительна, если шахтер рудниках. Это больше, рядный с гарантиями клиентов SPV может обеспечить в любом случае, и поможет вам сэкономить огромное количество работы, которое, вероятно, потраченного впустую, пока у нас нет лучшего тестирования инфраструктуры для клиентов третьих лиц использовать.
О нет!
Спасибо за советовании, чтобы сделать мою жизнь легкой, но выключив проверку, после того, как я потратил столько усилий на проверке в передатчиках, это как признать, что я был не на самой важной части.
Я знаю, что есть еще вещи, которые сделают мой код не получится, в конце концов, где-то в будущем, но пока именно там, где мне нужно людям, как вы, которые пытаются разорвать его сейчас, в то время как я, кажется, единственный пользователь, таким образом, с не большие последствия.
Поэтому, пожалуйста, сохранить хорошую работу, и позвольте мне справиться с любой вы нарушите
piotr_n сейчас офлайн Пожаловаться на piotr_n   Ответить с цитированием Мультицитирование сообщения от piotr_n Быстрый ответ на сообщение piotr_n

24 июля 2013, 7:13:44 PM   # 19
 
 
Сообщения: 1232
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

да, это возвращает один, но ТХ остается в силе в blockchain. я знаю, что это большой WTF.

фактический хэш выглядит как 00 00 00 ... 00 01 (последний байт 0x01, но все остальное 0x00).
genjix сейчас офлайн Пожаловаться на genjix   Ответить с цитированием Мультицитирование сообщения от genjix Быстрый ответ на сообщение genjix

24 июля 2013, 7:25:37 PM   # 20
 
 
Сообщения: 1106
Цитировать по имени
цитировать ответ
по умолчанию Re: Что с этим SIGHASH_SINGLE и ноут вне диапазона?

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

Успешные люди готовы сократить свои потери и переориентировать свои усилия. Вы всегда можете получить код из истории управления версиями позже, когда улучшает тестирование инфраструктуры; без хороших возможностей тестирования вы тратите свое время.

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW