Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
18 июня 2011, 2:16:01 PM   # 1
 
 
Сообщения: 198
Цитировать по имени
цитировать ответ
по умолчанию Re: Когда операции окончательные (в случае временной блокировки)?

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
main.h: CTransaction :: IsFinal () решает, когда сделка считается окончательным.  

Теперь, похоже, nLockTime на самом деле не используется в настоящее время, так что если это линия

если (nLockTime == 0) возвращает истину;

которая обычно делает свою работу здесь.  

Чуть ниже в коде есть эта маленькая штучка:  

если ((int64) nLockTime < (nLockTime < 500000000? (Int64) nBlockHeight: nBlockTime)) возвращает истину;

который лично я ожидал бы быть  

   если ((int64) nLockTime < nBlockTime) возвращает истину;

Какова цель сравнения с BlockHeight в случае nLockTime меньше, чем 500 000 000 500 000 000, безусловно, в прошлом?  

Как nLockTime сравнивается с GetAdjustedTime () ранее в коде, это абсолютное время Unix эпохи. 500 000 000 5 ноября 1985, 1:53:20 в моем часовом поясе. Что идея сравнить с этой датой в прошлом?!? Более того: если nLockTime < 500000000 то почти наверняка также nLockTime < nBlockHeight так это раньше тест не имеет смысла?!?

Я был бы признателен за любые идеи, проливают некоторый свет на эту строку кода.

И, в то же время в этой части кода, немного ниже в IsFinal () мы находим:

   BOOST_FOREACH (Const CTxIn& txin, Vin), если) возвращает ложь (txin.IsFinal (!);

Логика очевидна: Если вход в сделку не является окончательным, то сделка при рассмотрении не является окончательной. Но ... гм ... не должно ли это быть очень первое, что нужно проверить? Существуют различные случаи, ранее в функции, которая позволяет системе решить, что сделка является окончательным - не сделав эту проверку.
При р сейчас офлайн Пожаловаться на При р   Ответить с цитированием Мультицитирование сообщения от При р Быстрый ответ на сообщение При р


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


18 июня 2011, 3:28:41 PM   # 2
RIX
 
 
Сообщения: 328
Цитировать по имени
цитировать ответ
по умолчанию Re: Когда операции окончательные (в случае временной блокировки)?

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





Я не понимаю как. Может быть, 500000000 только некоторое число вставлено, чтобы показать возможную функциональность для nLockTime, или, может быть, для возвращения того же результата, как 0, когда люди думают nLockTime это номер блока вместо метки времени UNIX.
RIX сейчас офлайн Пожаловаться на RIX   Ответить с цитированием Мультицитирование сообщения от RIX Быстрый ответ на сообщение RIX

18 июня 2011, 9:13:42 PM   # 3
 
 
Сообщения: 112
Цитировать по имени
цитировать ответ
по умолчанию Re: Когда операции окончательные (в случае временной блокировки)?

Это Locktime хранится в каждой транзакции может быть использован для двух различных целей, из вики:
"Номер блока или временная метка, в которой эта сделка закрыта, или 0, если транзакция всегда заблокирована. Не-заперта сделка не должно быть включена в блоках, и он может быть изменен путем показа новой версии до того, как истекло время (замена в настоящее время отключена в Bitcoin, однако, так что это бесполезно). "

Это является причиной того, почему эта 500 000 000 находится в состоянии: если nLockTime меньше, чем предполагается, быть номер блока, в противном случае он считается отметка времени.

Если это не так, и nLockTime это на некоторое время в будущем, например, каждый вход от этой сделки будет проверен, что делает это:
Код:
BOOL IsFinal () Const
{
    возврата (nSequence == UINT_MAX);
}

Если порядковый номер каждого входа равно UINT_MAX, то эта сделка считается окончательной, даже несмотря на то, nLockTime относится к будущему времени блока /.

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

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW