21 сентября 2014, 4:18:19 PM   # 1
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

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


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


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


21 сентября 2014, 4:49:35 PM   # 2
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

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





Глянь сюда:
https://en.bitcoin.it/w/images/en/7/70/Bitcoin_OpCheckSig_InDetail.png
DannyHamilton сейчас офлайн Пожаловаться на DannyHamilton   Ответить с цитированием Мультицитирование сообщения от DannyHamilton Быстрый ответ на сообщение DannyHamilton

21 сентября 2014, 6:21:55 PM   # 3
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

Спасибо. Таким образом, хэш не рассчитываются с подписью и открытым ключом в поле SigScript, но есть Pkscript из utxo он относится. После вычисления хэш-подпись вставляется в соответствующей области. Поэтому, когда кто-то получить сделку, что он должен проверить, что он создает новую копию транзакции, которая имеет в sigscript поля в Pkscript часть utxo, а затем проверить подпись ..
Это верно?
smemo92 сейчас офлайн Пожаловаться на smemo92   Ответить с цитированием Мультицитирование сообщения от smemo92 Быстрый ответ на сообщение smemo92

21 сентября 2014, 8:03:12 PM   # 4
 
 
Сообщения: 1064
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

Спасибо. Таким образом, хэш не рассчитываются с подписью и открытым ключом в поле SigScript, но есть Pkscript из utxo он относится. После вычисления хэш-подпись вставляется в соответствующей области. Поэтому, когда кто-то получить сделку, что он должен проверить, что он создает новую копию транзакции, которая имеет в sigscript поля в Pkscript часть utxo, а затем проверить подпись ..
Это верно?

Я нашел, что это будет полезным справочником, когда я узнавал о деталях байт уровня Bitcoin передатчиков: http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html

Похоже, что вы находитесь на правильном пути. Помните также, что многие Txs будет содержать несколько входов. Каждый вход подписывается индивидуально. Очень грубо говоря, если бы я хотел подписать вход # 2 на ТХ, который вы передали мне (например, как часть coinjoin TX), я бы на месте scriptPubKey (правило для расходов этого вывода) для ввода # 2 в "сценарий сиг" слот, ноль в Sigs сценария для каждого другого входа, добавьте 4-байтовый хэш-код к TX, а затем хэш полученной строке байт дважды с SHA256, чтобы получить 32-байты дайджеста, который должен быть подписан. Обратите внимание, что из-за способа, что только вход подписываемого имеет свою scriptPubKey заполняется при хеширования (остальные входы имеют пустые Sigs сценария), то 32-байтный дайджест, который на самом деле получает подписанный различен для каждого входа в транзакции.  

Чтобы продолжить работу, я хотел бы подписать полученный дайджест с моим секретным ключом, DER кодирования этой подписью, добавьте sighash спецификатор байт и добавьте Публичный. Эта подпись / Публичных пар затем заменяет scriptPubKey в "сценарий сиг" слот для этого входа. Если все остальные входы в этом TX подписываются (правильно), то сеть должна принять TX, когда я пытаюсь нажать ее.  

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

21 сентября 2014, 9:55:41 PM   # 5
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

Спасибо. Таким образом, хэш не рассчитываются с подписью и открытым ключом в поле SigScript, но есть Pkscript из utxo он относится. После вычисления хэш-подпись вставляется в соответствующей области. Поэтому, когда кто-то получить сделку, что он должен проверить, что он создает новую копию транзакции, которая имеет в sigscript поля в Pkscript часть utxo, а затем проверить подпись ..
Это верно?

Я нашел, что это будет полезным справочником, когда я узнавал о деталях байт уровня Bitcoin передатчиков: http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html

Похоже, что вы находитесь на правильном пути. Помните также, что многие Txs будет содержать несколько входов. Каждый вход подписывается индивидуально. Очень грубо говоря, если бы я хотел подписать вход # 2 на ТХ, который вы передали мне (например, как часть coinjoin TX), я бы на месте scriptPubKey (правило для расходов этого вывода) для ввода # 2 в "сценарий сиг" слот, ноль в Sigs сценария для каждого другого входа, добавьте 4-байтовый хэш-код к TX, а затем хэш полученной строке байт дважды с SHA256, чтобы получить 32-байты дайджеста, который должен быть подписан. Обратите внимание, что из-за способа, что только вход подписываемого имеет свою scriptPubKey заполняется при хеширования (остальные входы имеют пустые Sigs сценария), то 32-байтный дайджест, который на самом деле получает подписанный различен для каждого входа в транзакции.  

Чтобы продолжить работу, я хотел бы подписать полученный дайджест с моим секретным ключом, DER кодирования этой подписью, добавьте sighash спецификатор байт и добавьте Публичный. Эта подпись / Публичных пар затем заменяет scriptPubKey в "сценарий сиг" слот для этого входа. Если все остальные входы в этом TX подписываются (правильно), то сеть должна принять TX, когда я пытаюсь нажать ее.  

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

Большое спасибо за вашу помощь, я делаю университетскую работу и поэтому мне нужно, чтобы узнать о деталях на уровне байт. Я также читал, что каждый вход подписан по отдельности, но это заставляет меня путать о том, как предыдущие выходной хэш-полевых работ. Это означает, что хэш в этой области относится к отдельному входному хэш, а не на хэш транзакции? Я использовал blockexplorer видеть некоторые блоки и транзакцию, и я понял, что это поле относится к хэш транзакции и индекс поле обозначает, какой вход рассматривается.

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

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

21 сентября 2014, 10:03:18 PM   # 6
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

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

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

21 сентября 2014, 10:18:12 PM   # 7
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

Хорошо, спасибо. Поэтому я полагаю, что вся хеш-транзакции рассчитывается для всех входов sigscript поля, заполненного своей собственной подписи.
У меня последний вопрос, я искал, где utxo хранится, но я не нашел четкий ответ. Они хранятся в базе данных? O они организованы в той или иной структуре? Я только совершенно уверен, что они индексируются их транзакция хэш, но это не ясно, каким образом организованы и обновляются в сеть после того, что некоторые из них провели.
smemo92 сейчас офлайн Пожаловаться на smemo92   Ответить с цитированием Мультицитирование сообщения от smemo92 Быстрый ответ на сообщение smemo92

21 сентября 2014, 11:18:59 PM   # 8
 
 
Сообщения: 1064
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

Хорошо, спасибо. Поэтому я полагаю, что вся хеш-транзакции рассчитывается для всех входов sigscript поля, заполненного своей собственной подписи.
У меня последний вопрос, я искал, где utxo хранится, но я не нашел четкий ответ. Они хранятся в базе данных? O они организованы в той или иной структуре? Я только совершенно уверен, что они индексируются их транзакция хэш, но это не ясно, каким образом организованы и обновляются в сеть после того, что некоторые из них провели.

Ха-ха. Это напоминает мне о том, как я путать о "где находится Merkle дерево для каждого блока хранится?"  

Большинство узлов использует эталонный клиент (Bitcoin ядра) и множество UTXO сохраняется для быстрой привязки в локальной базе данных.

Но обратите внимание, что нет специально сохраненную UTXO установлен на уровне протокола / blockchain - все есть это blockchain. Это, наверное, проще всего понять, если представить себе, в результате чего новый узел в Интернете. Узел начинается с блока жестко закодированы генеза, а затем разбирает блок 1, блок 2, ... Блок N.  Каждый блок обновляет свою базу данных UTXO на основе новой информации в более высоком блоке. Таким образом, никто не говорит, что это множество UTXO есть. Узловые цифры это для себя на основе правил протокола и информации, хранящейся в blockchain (что он скачивает со стороны коллег или от службы начальной загрузки). Кроме того, множество UTXO в вашем узле может быть несколько иным, чем UTXO, установленным в моем узле, потому что я могу знать о сделках или новых блоках, которые вы не знаете о том же, и наоборот.  

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

22 сентября 2014, 11:44:51 AM   # 9
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

Ok еще раз спасибо
Я воспользоваться вашей добротой, чтобы спросить вас, если я понял, как Merkle дерево / корень работ. Я понял, как Merkle корень вычисляется, и что он находится в заголовке блока, который легко. Потом я прочитал, что если у меня есть SPV клиент, у меня только блок заголовка, и поэтому только Merkle корень, поэтому для того, чтобы проверить, если сделка входит в блок мне нужна Merkle ветвь ("некоторый промежуточный хеш дерева") Для того, чтобы вычислить корень Merkle и увидеть, если она соответствует Merkle корню заголовка. Это правильно? Я читал, что Merkle филиал обеспечивается полным узлом, поэтому SPV клиент должен попросить эти ветви, но внутри блока я вижу только список операций с их собственным хэшем, так Merkle ветви (так "промежуточный" хэш дерева), где хранятся? Они динамически вычисляются полным узлом и отправлены в SPV? (Я не думаю, что это так, то не было бы хорошей идеей)

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

22 сентября 2014, 9:40:07 PM   # 10
 
 
Сообщения: 1064
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

Ok еще раз спасибо
Я воспользоваться вашей добротой, чтобы спросить вас, если я понял, как Merkle дерево / корень работ. Я понял, как Merkle корень вычисляется, и что он находится в заголовке блока, который легко. Потом я прочитал, что если у меня есть SPV клиент, у меня только блок заголовка, и поэтому только Merkle корень, поэтому для того, чтобы проверить, если сделка входит в блок мне нужна Merkle ветвь ("некоторый промежуточный хеш дерева") Для того, чтобы вычислить корень Merkle и увидеть, если она соответствует Merkle корню заголовка. Это правильно?

Да, это правильно. Вот TX с фиктивной ветви Merkle. Клиент SPV будет вычислить корень хэш от TX и показанных внутренних хэш, и сравните это с корнем Merkle в blockheader.



котировка
Я читал, что Merkle филиал обеспечивается полным узлом, поэтому SPV клиент должен попросить эти ветви, но внутри блока я вижу только список операций с их собственным хэшем, так Merkle ветви (так "промежуточный" хэш дерева), где хранятся? Они динамически вычисляются полным узлом и отправлены в SPV? (Я не думаю, что это так, то не было бы хорошей идеей)

Я извиняюсь, если этот вопрос не связан с названием темы в

SPV клиенты получают филиал Меркла для конкретного TX от полных узлов. Вот еще информация:



Полные узлы должны строить дерево Merkle каждый раз, когда они проверяют новый блок в любом случае. Корень Merkle они вычисляют для себя должен соответствовать корню Меркла в blockheader для того, чтобы блок будет считаться действительным. Хотя я никогда не проверял, я бы предположить, что после построения дерева, клиент сохраняет ссылку на него в базе данных, так что она может эффективно реагировать на запросы клиентов SPV. Но я не уверен, что протокол выглядит для получения ветви Меркла из полного узла. Мне было бы интересно узнать, тоже.  
Peter R сейчас офлайн Пожаловаться на Peter R   Ответить с цитированием Мультицитирование сообщения от Peter R Быстрый ответ на сообщение Peter R

23 сентября 2014, 9:20:55 AM   # 11
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Sigscript и хэширования вопрос

Полные узлы должны строить дерево Merkle каждый раз, когда они проверяют новый блок в любом случае. Корень Merkle они вычисляют для себя должен соответствовать корню Меркла в blockheader для того, чтобы блок будет считаться действительным. Хотя я никогда не проверял, я бы предположить, что после построения дерева, клиент сохраняет ссылку на него в базе данных, так что она может эффективно реагировать на запросы клиентов SPV. Но я не уверен, что протокол выглядит для получения ветви Меркла из полного узла. Мне было бы интересно узнать, тоже.  

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW