Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
16 августа 2010, 2:57:55 AM   # 1
 
 
Сообщения: 188
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] проверка автоблокировки

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


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

http://fushizen.net/~bd/blockverify.patch

или

http://github.com/bdonlan/bitcoin/commit/b205251959448ca99123f2bc95b088bf06d4ef3b

При первом запуске с этим патчем, все блоки будут проверены, и любые недействительные блоки, а также блоки, осиротевшие в результате удаления таких блоков, будет удалены из индекса блока. Версия печать
(BLOCK_VERIFY_TOKEN в db.cpp) будет затем записываются в БД; это приведет к тому, следующий запуск пропустить проверки пропуска. Любые будущие исправления проверки затем может просто врезаться BLOCK_VERIFY_TOKEN, чтобы заставить перепроверки блочной цепи.

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


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


16 августа 2010, 4:33:10 AM   # 2
 
 
Сообщения: 188
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] проверка автоблокировки

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





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

16 августа 2010, 3:25:54 PM   # 3
 
 
Сообщения: 364
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] проверка автоблокировки

Это сложный подход.

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

Это код, который редко когда-либо пройти тестирование, и довольно сложные, так что-то простое и безопасное лучше.

Вот что я имел в виду. (Я не проверял это еще) Он проверяет все блоки в основной цепи. Если он находит плохую, он устанавливает bnChainWork всей этой цепи до 0, поэтому он не может выиграть лучшую цепь снова, и это уменьшает лучшую работу цепи на вилок уровня, чтобы любой новый блок после развилки будет вызывать REORG. (Он не может изменить pindexBest фактически не делает REORG)

Это еще не идеально. Он по-прежнему необходимо получить один действительный блок для запуска REORG.  

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

Код:
BOOL CTxDB :: LoadBlockIndex ()
{
    ...

    // Проверка блоков в основной цепи
    вектор vChain;
    для (CBlockIndex * pindex = pindexBest; pindex && pindex->pprev; pindex = pindex->pprev)
    {
        vChain.push_back (pindex);
        CBlock блок;
        если (! block.ReadFromDisk (pindex))
            возвращать ошибку ("LoadBlockIndex (): block.ReadFromDisk не удалось");
        если (! block.CheckBlock ())
        {
            bnBestChainWork = pindex->pprev->bnChainWork;
            Еогеасп (CBlockIndex * pindex2, vChain)
                pindex2->bnChainWork = 0;
        }
    }

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

16 августа 2010, 5:08:02 PM   # 4
 
 
Сообщения: 364
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] проверка автоблокировки

Вероятно, было бы возможно начать AddToBlockIndex или реорганизовать после проверки, но это потребовало бы намного более пристального внимания. Я, вероятно, должен разразиться часть AddToBlockIndex, который устанавливает новый лучший блок. Я, вероятно, в конечном итоге делает, что вместо кода ниже.
Это то, что я в конечном итоге делает в SVN оборотов 139.

Вместо того, чтобы удалить плохую цепь, я добавил дополнительный CheckBlock к ConnectBlock так дефектные блокам не могу вернуться в лучшую цепь, как только они выгнали.
Satoshi сейчас офлайн Пожаловаться на Satoshi   Ответить с цитированием Мультицитирование сообщения от Satoshi Быстрый ответ на сообщение Satoshi



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW