Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
6 октября 2015, 3:01:39 PM   # 1
 
 
Сообщений: 30
Цитировать по имени
цитировать ответ
по умолчанию Re: OP_CHECKLOCKTIMEVERIFY исходный код осветления

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
от SRC / interpreter.cpp - Я ищу пояснить, почему OP_CHECKLOCKTIMEVERIFY потерпит неудачу, если текущий номер последовательности txin установлен в MaxInt. Комментарии в коде говорят, что это будет "обойдены", Но это мое понимание того, что если скрипт не проверяет с SCRIPT_ERR_UNSATISFIED_LOCKTIME, то сделка не будет идти в mempool, и, таким образом, не будет выбрана для добычи полезных ископаемых в блок.

Код:
...
случай OP_CHECKLOCKTIMEVERIFY:
{
    ...
    // На самом деле сравнивать указанное время блокировки с транзакцией.
    если (! checker.CheckLockTime (nLockTime))
        вернуть set_error (serror, SCRIPT_ERR_UNSATISFIED_LOCKTIME);

    ломать;
}
...

BOOL TransactionSignatureChecker :: CheckLockTime (Const CScriptNum& nLockTime) сопзЬ
{
    ...

    // Наконец, функция nLockTime может быть отключена, и, таким образом,
    // CHECKLOCKTIMEVERIFY обойдены, если каждый txin было
    // завершена установка nSequence к MaxInt.
    // сделка будет допускаться в blockchain, что делает
    // опкод неэффективна.
    //
    // Проверка, если это Vin не является окончательным достаточно
    // предотвратить это состояние. В качестве альтернативы мы могли проверить все
    // входы, но тестирование только этот вход минимизирует данные
    // требовалось доказать правильность выполнения CHECKLOCKTIMEVERIFY.
    если (txTo->Vin [NIN] .IsFinal ())
        вернуться ложным;

    возвращает истину;
}

Для начала я не понимаю, почему только текущий txin тестируется. А во-вторых, я бы подумал, что если бы все порядковые номера txin были установлены MaxInt тогда он должен вернуть истинный, а не ложь. Может быть, если оператор имеет ошибку, и должны быть сведены на нет там?

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


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


6 октября 2015, 9:04:33 PM   # 2
 
 
Сообщения: 2366
Цитировать по имени
цитировать ответ
по умолчанию Re: OP_CHECKLOCKTIMEVERIFY исходный код осветления

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





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

7 октября 2015, 2:22:27 AM   # 3
 
 
Сообщений: 30
Цитировать по имени
цитировать ответ
по умолчанию Re: OP_CHECKLOCKTIMEVERIFY исходный код осветления

В этом есть смысл. Я предполагаю, что позволяет OP_CHECKLOCKTIMEVERIFY быть обойден подписывающего с использованием последовательности = MaxInt бы сделать OP_CHECKLOCKTIMEVERIFY не более полезным, чем поле Locktime, что уже существует в сделке, так что я могу понять, почему его настроить таким образом. Его просто не очевидно из комментариев, что это намеченная функциональность.

Я думаю, что я понимаю, почему только порядковый номер для txin содержащего OP_CHECKLOCKTIMEVERIFY тестируется, но она имеет странные последствия, если рассматривать в сочетании с IsFinalTx (). Как и сделка может быть "не является окончательным" (НУМС последовательности другого txin < MaxInt и Locktime в будущем), но этот сценарий будет еще проверить так долго, как это txin последовательность = MaxInt. Я не могу думать о каких-либо обстоятельствах, которые были бы проблемой, так как сделка не будет делать это в blockchain из-за провалив ограничение IsFinalTx (), но все же ... логика странно.
qrius1111 сейчас офлайн Пожаловаться на qrius1111   Ответить с цитированием Мультицитирование сообщения от qrius1111 Быстрый ответ на сообщение qrius1111



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW