Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
1 ноября 2011, 4:17:40 AM   # 1
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

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


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

Все Нестандартный скрипты в текстовый файл по сути!

Теперь на мои вопросы:
  • (1) Что происходит с первой полудюжины Coinbase-TxOut сценариев, которые, как правило, просто быть открытым ключом? Там в нормальный 0x04 байт в начале (как если бы это был открытый ключ), и OP_CHECKSIG в конце, но есть 70 байт данных между ними, вместо обычных 64. Следующие 6 байт то, что следует за 0x04:   "00 а0 34 20 00 44", В моем коде, я толкаю все 71 байт в стек, но мой код не признает его в качестве открытого ключа. На самом деле, я пытался смотреть на последовательных 32/32 куски байт, но ни один из них не соответствуют точке на кривой secp256k1. (Ни один из них не были потрачены, так что я полагаю, это может быть unspendable скрипты TxOut)
  • (2) я достиг их, исследуя blockchain файл, созданный клиентом 0.4.0 при запуске в testnet режиме. Затем, правильно ли считать, что все эти сценарии на самом деле действует, и мой код должен быть в состоянии оценить все из них правда? Я нахожусь под впечатлением, что Сатоши клиент делает все проверки проверки на каждом блоке / TX, который принимается, и, таким образом, недействительные сценарии не превратить его в blk0001.dat. 
  • (3) Я знаю, что есть ошибка с OP_CHECKMULTISIG, что приводит к его попу слишком много элементов из стека. Похоже, мы работаем наш путь вокруг этой ошибки в предстоящем мульти-сиг ТХ isStandard. Существуют ли какие-либо другие аномалии в скриптовый движок, что я должен знать? Похоже, поведение Сатоши-клиент "правда" и, таким образом, я должен соответствовать, даже если он не совсем соответствует предполагаемой конструкции.

Просто для удовольствия, вот два захватывающих сценариев из testnet - первый является TxOut, то второй является TxIn, который проводит TxOut:

TxOut сценарий:
Код:
   3
   OP_ROLL
   OP_DUP
   2
   OP_GREATERTHANOREQUAL
   OP_VERIFY
   3
   OP_ROLL
   OP_SIZE
   OP_NOT
   OP_OVER
   OP_HASH160
   [PUSHDATA - 20 байтам:]
   80677c5392220db736455533477d0bc2fba65502
   OP_EQUAL
   OP_BOOLOR
   OP_VERIFY
   3
   OP_ROLL
   OP_SIZE
   OP_NOT
   OP_OVER
   OP_HASH160
   [PUSHDATA - 20 байтам:]
   02d7aa2e76d9066fb2b3c41ff8839a5c81bdca19
   OP_EQUAL
   OP_BOOLOR
   OP_VERIFY
   3
   OP_ROLL
   OP_SIZE
   OP_NOT
   OP_OVER
   OP_HASH160
   [PUSHDATA - 20 байтам:]
   10039ce4fdb5d4ee56148fe3935b9bfbbe4ecc89
   OP_EQUAL
   OP_BOOLOR
   OP_VERIFY
   3
   OP_CHECKMULTISIG

TxIn сценарий:
Код:
   OP_0
   [PUSHDATA - 73 БАЙТ:]
   3046022100d73f633f114e0e0b324d87d38d34f22966a03b072803afa99c9408201f6d6dc6022100900e85be52ad2278d24e7edbb7269367f5f2d6f1bd338d017ca460008776614401
   [PUSHDATA - 71 Б]
   3044022071fef8ac0aa6318817dbd242bf51fb5b75be312aa31ecb44a0afe7b49fcf840302204c223179a383bb6fcb80312ac66e473345065f7d9136f9662d867acf96c12a4201
   2
   [PUSHDATA - 65 БАЙТ:]
   048c006ff0d2cfde86455086af5a25b88c2b81858aab67f6a3132c885a2cb9ec38e700576fd46c7d72d7d22555eee3a14e2876c643cd70b1b0a77fbf46e62331ac
   [PUSHDATA - 65 БАЙТ:]
   04b68ef7d8f24d45e1771101e269c0aacf8d3ed7ebe12b65521712bba768ef53e1e84fff3afbee360acea0d1f461c013557f71d426ac17a293c5eebf06e468253e
   OP_0
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi


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


1 ноября 2011, 5:55:21 PM   # 2
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

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





1. TxOut скрипты не вычисляются, пока они не spent-- те, вероятно, unspendable TxOuts.

2. Входы должны быть действительными (вы смотрите на coinbase txns без каких-либо входов, хотя). Опять же, TxOuts не вычисляется, пока они не используются в качестве входных данных в другой транзакции; до тех пор, как они десериализации правильно они будут приняты.

3. Я не знаю, каких-либо других ошибок в скриптах опс, но я не знаю, что кто-нибудь написал тщательные модульных тестов для них (кто ищет хороший Get-ваш-ноги-мокрая проекта, который может быть хорошим один для решения, уже есть модульные тесты для CHECKMULTISIG в repostitory ....).
Гэвин Андресен сейчас офлайн Пожаловаться на Гэвин Андресен   Ответить с цитированием Мультицитирование сообщения от Gavin Andresen Быстрый ответ на сообщение Гэвин Андресен

1 ноября 2011, 7:32:53 PM   # 3
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

1. TxOut скрипты не вычисляются, пока они не spent-- те, вероятно, unspendable TxOuts.
Справедливо ... Мне было интересно, если есть основания полагать, что они были расходуемого, и, таким образом, мне нужно что-то добавить к моему скриптовый код для размещения. Я действительно просто ищу для проверки вменяемости. Похоже, что нет никакого действия здесь .. по крайней мере, пока кто-то показывает, что они являются расходуемыми и моим код будет уже не удался.

2. Входы должны быть действительными (вы смотрите на coinbase txns без каких-либо входов, хотя). Опять же, TxOuts не вычисляется, пока они не используются в качестве входных данных в другой транзакции; до тех пор, как они десериализации правильно они будут приняты.
Оглядываясь назад, я вижу, что сделки coinbase, но сценарии Нестандартный находятся в TxOuts - это означает, что они могли бы были поставлены на какой-либо сделки, не относящиеся к coinbase. Так что мой ответ такой же здесь, как и в # 1 - я просто предположить, что они являются unspendable и что мне не нужно, чтобы вместить ничего нового в скриптового движка. Вы делаете хороший пункт, что TxOut скрипты могут быть что угодно, так что я просто буду всегда считать, что они unspendable, пока я не вижу доказательств иначе.

3. Я не знаю, каких-либо других ошибок в скриптах опс, но я не знаю, что кто-нибудь написал тщательные модульных тестов для них (кто ищет хороший Get-ваш-ноги-мокрая проекта, который может быть хорошим один для решения, уже есть модульные тесты для CHECKMULTISIG в repostitory ....).
Похоже, что произвольные сценарии были успешно запустить через клиентское программное обеспечение в прошлом (например, как эти testnet скрипты), но там не было каких-либо строгих усилий, чтобы проверить, что это надежный и т.д. Я бы добровольно, но я не знаю, как изолировать реф клиент скриптовый движок, а потом еще бросать в такие вещи, как OP_CHECKSIG оценок, которые требуют больше, чем просто сам скрипт (например, весь ПРД и методов проверки ECDSA).
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

1 ноября 2011, 9:37:32 PM   # 4
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

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

См SRC / тест / script_test.cpp в мерзавца HEAD.
Или другие примеры операций тестирования сценариев, модульные тесты я писал здесь:
  https://github.com/gavinandresen/bitcoin-git/blob/op_eval/src/test/script_op_eval_tests.cpp
  https://github.com/gavinandresen/bitcoin-git/blob/op_eval/src/test/multisig_tests.cpp
Гэвин Андресен сейчас офлайн Пожаловаться на Гэвин Андресен   Ответить с цитированием Мультицитирование сообщения от Gavin Andresen Быстрый ответ на сообщение Гэвин Андресен

1 ноября 2011, 11:07:26 PM   # 5
 
 
Сообщения: 389
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!


некоторые мои ... смотрите:


Входные данные транзакции Нестандартные:
http://blockexplorer.com/testnet/t/6ttfeb55B1

Проведенное по:
http://blockexplorer.com/testnet/t/AFdRB1CHS3


Они просто вставить текст ("боб" в шестнадцатеричном я думаю, то падение его).
Они, однако, расходуемые.

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

Но так как ВЕ можно просто посмотреть, чтобы увидеть, если есть действительная сделка, которая провела этот вывод очень трудно обмануть его.

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

2 ноября 2011, 6:30:49 PM   # 6
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

Хорошо, я сейчас борюсь с OP_CHECKMULTISIG примером в моей должности. Я думал, что точка OP_CHECKMULTISIG должна была быть простой и не требует двух десятков других оп-коды, чтобы получить сделку М-о-N. Мне кажется, что это является просто, если у вас есть открытый ключ каждого, но если у вас есть свой адрес. Действительно ли это самый простой способ сделать М-из-N с 3-мя адресами? (См верхнего поста)

Во-вторых, я немного запутался о самом скрипте. Я сбой при попытке HASH160 в OP_0 байт, но я не могу понять, что мой скриптовый код сделал неправильно. Возможно, кто-то с опытом написания сценариев может указать мне на мою ошибку. Это точное состояние моего стека после каждого OP_CODE:

Код:
TxIn сценарий:
   OP_0: 0
   OP_PUSH: 0 иммуноглобулин
   OP_PUSH: 0 иммуноглобулин СИГБ
   OP_2: 0 иммуноглобулин СИГБ 2
   OP_PUSH: 0 иммуноглобулин СИГБ 2 PubKeyA
   OP_PUSH: 0 иммуноглобулин СИГБ 2 PubKeyA PubKeyB
   OP_0: 0 иммуноглобулин СИГБ 2 PubKeyA PubKeyB 0

TxOut Script (со стеком из TxIn):
   OP_3: 0 SIGA СИГБ 2 PubKeyA PubKeyB 0 3
   OP_ROLL: 0 иммуноглобулин СИГБ PubKeyA PubKeyB 0 2
   OP_DUP: 0 иммуноглобулин СИГБ PubKeyA PubKeyB 0 2 2
   OP_2: 0 иммуноглобулин СИГБ PubKeyA PubKeyB 0 2 2 2
   OP_>=: 0 SIGA СИГБ PubKeyA PubKeyB 0 2 1
   OP_VERIFY: 0 иммуноглобулин СИГБ PubKeyA PubKeyB 0 2
   OP_3: 0 SIGA СИГБ PubKeyA PubKeyB 0 2 3
   OP_ROLL: 0 иммуноглобулин СИГБ PubKeyB 0 2 PubKeyA
   OP_SIZE: 0 SIGA СИГБ PubKeyB 0 2 PubKeyA 65
   OP_NOT: 0 иммуноглобулин СИГБ PubKeyB 0 2 0 PubKeyA
   OP_OVER: 0 иммуноглобулин СИГБ PubKeyB 0 2 0 PubKeyA PubKeyA
   OP_HASH: 0 иммуноглобулин СИГБ PubKeyB 0 2 0 PubKeyA PubAHash
   OP_PUSH: 0 иммуноглобулин СИГБ PubKeyB 0 2 0 PubKeyA PubAHash PubAHash
   OP_EQUAL: 0 SIGA СИГБ PubKeyB 0 2 0 1 PubKeyA
   OP_BOOLOR: 0 SIGA СИГБ PubKeyB 0 2 1 PubKeyA
   OP_VERIFY: 0 иммуноглобулин СИГБ PubKeyB 0 2 PubKeyA
   OP_3: 0 SIGA СИГБ PubKeyB 0 2 3 PubKeyA
   OP_ROLL: 0 иммуноглобулин СИГБ 0 2 PubKeyA PubKeyB
   OP_SIZE: 0 SIGA СИГБ 0 2 PubKeyA PubKeyB 65
   OP_NOT: 0 иммуноглобулин СИГБ 0 2 PubKeyA PubKeyB 0
   OP_OVER: 0 иммуноглобулин СИГБ 0 2 PubKeyA PubKeyB 0 PubKeyB
   OP_HASH: 0 иммуноглобулин СИГБ 0 2 PubKeyA PubKeyB 0 PubBHash
   OP_PUSH: 0 иммуноглобулин СИГБ 0 2 PubKeyA PubKeyB 0 PubBHash PubBHash
   OP_EQUAL: 0 SIGA СИГБ 0 2 PubKeyA PubKeyB 0 1
   OP_BOOLOR: 0 SIGA СИГБ 0 2 PubKeyA PubKeyB 1
   OP_VERIFY: 0 иммуноглобулин СИГБ 0 2 PubKeyA PubKeyB
   OP_3: 0 SIGA СИГБ 0 2 3 PubKeyA PubKeyB
   OP_ROLL: 0 иммуноглобулин СИГБ 2 PubKeyA PubKeyB 0
   OP_SIZE: 0 SIGA СИГБ 2 PubKeyA PubKeyB 0 1
   OP_NOT: 0 иммуноглобулин СИГБ 2 PubKeyA PubKeyB 0 0
   OP_OVER: 0 иммуноглобулин СИГБ 2 PubKeyA PubKeyB 0 0 0
   OP_HASH160:  <ОШИБКА>

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

2 ноября 2011, 7:22:09 PM   # 7
 
 
Сообщения: 416
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

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

я полагаю, что "сбой при попытке HASH160 в OP_0 байт" является то, что ваш код скриптовый сделал неправильно.

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

2 ноября 2011, 8:29:41 PM   # 8
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

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

я полагаю, что "сбой при попытке HASH160 в OP_0 байт" является то, что ваш код скриптовый сделал неправильно.

ByteCoin

Г! Это было глупо. 

Я предположил, что HASH160 должны всегда работать на струнах, и, таким образом, должно быть, я сделал что-то неправильно вверх по течению, чтобы в конечном итоге с HASH160 (OP_0). При ближайшем рассмотрении, я вижу, что ноль на самом деле является заполнителем для третьего открытого ключа, который не входит. Мне просто нужно "определять" HASH160 (OP_0), чтобы вернуться ... ничего.

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

2 ноября 2011, 8:45:07 PM   # 9
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

OP_0 толкает пустой массив байтов в стек, так что вы должны ripemd160 (SHA256 ([])).

(Благодарность genjix для установки прямо мне, я думал OP_0 толкнул 0x00 в стек, и это не так. Скриптовый движок знает, что пустой массив «False», и стандарты FIPS убедитесь, что хэширования пустые строки / массивы хорошо определены ...)
Гэвин Андресен сейчас офлайн Пожаловаться на Гэвин Андресен   Ответить с цитированием Мультицитирование сообщения от Gavin Andresen Быстрый ответ на сообщение Гэвин Андресен

2 ноября 2011, 8:53:04 PM   # 10
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

Наиболее интересно. Если бы я не собирался сесть на самолет прямо сейчас, я бы уточнить, что на вики Bitcoin сценариев ...

Есть все коды OP_X вытолкнуть пустую строку в стек? Или просто OP_0? Безопасно ли предположить, что это является ошибка, если я как-то в конечном итоге с HASH160 (OP_3)?

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

2 ноября 2011, 8:57:26 PM   # 11
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: Волосатый нестандартных сценариев!

OP_1 через OP_16 нажать одиночные байты (0x01 через 0x10) в стек.

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW