Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
5 сентября 2012, 5:16:00 AM   # 1
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: по индексации случайных данных

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


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

Я имею в виду дерева структуры списков. Он должен иметь очень хорошую производительность даже в самом худшем случае, и быть очень безопасными при неудачах IO.

На практике это коллекция 4К куски. Каждый блок начинается с заголовком, каким-то, вероятно, очень простым. Как минимум, каждый кусок должен указать, какой тип кусок это и кусок ID сделает его очень легко держать журнал (см. Ниже) 4k был выбран потому, что он является родным размером блока современных жестких дисков. Это также родной размер страницы виртуальной памяти в большом количестве процессоров. Память отображается файл ввод-вывод должен быть быстрым, не считая синхронизируется.

Первый кусок будет дерево кусок. После заголовка, он имеет 64 указателей, каждый из 32 бит в длину. Эти указатели на номера куска внутри индексного файла. Первый указатель для самой левой ветви двоичного дерева, что соответствует 000000, второй 000001, третьему 000010 и т.д. подстановочным очень быстро, просто изолировать 6 бит, которые имеют важное значение, необходимо умножить на 4 и добавить заголовок размер. Это также может быть другой тип ломтика, "корневой кусок" с дополнительными метаданными, но будет в основном действовать как дерево кусок.

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

Если указатель на список кусок, что кусок имеет список не более чем 62 или 63 указателей (это зависит от размера заголовка) в полном составе блока, каждый указатель имеет длину 64 бита, только смещение байта. Списки не обязательно сортируют, но к тому времени, когда вы там, это всего лишь вопрос нескольких десятков сравнений.

Каждый раз, когда вставка может вызвать список кусок ударить высокую оценку воды, это вызывает REORG. 64 новые список ломтей и новое дерево кусок написаны и элементы из старого списка куска распределены среди новых списков. После того, как те сделаны и синхронизируются, родительское дерево фрагмент будет перезаписан с указателем на новое дереве блок. Тогда старый кусок помечается доступен. Так как куски все тот же размер, структура не будет фрагментировать. В худшем случае это сбой как раз перед обновлением старого куска, который оставил бы 65 детей-сирот. Сбор мусора должен быть тривиальным, хотя и свободный список куска прост в обслуживание.

Для дополнительной безопасности, пишет может быть сделано с журнальным куском или два, например, запас кусок # 2 в качестве постоянного журнала, и в любое время вы должны писать, писать там первым, а затем записать реальный кусок. Для повышения производительности, вы, вероятно, хотите десятки или сотни журнальных кусков. Если у них есть идентификаторы, в любое время открыть файл, вы можете просто повторить, что вы найдете там. Нулевой весь журнал, когда вы сделали с ним, так что будущие записи могут просто начать в начале журнала и перейти в (записи) порядке.

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

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


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


5 сентября 2012, 12:48:55 PM   # 2
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: по индексации случайных данных

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





Я понял, что прошлой ночью части этого были выключены на 8. Некоторые из чисел я ставлю в были в блоках по 512 байт вместо 4k. Это не помогло, что 512 байт составляет 4096 бит. В частности, дерево кусок имеет место для 512 указателей, а не 64. Они могут охватывать 9 бит индексного пространства вместо 6. Список ломтей до сих пор около 64 записей, это зависит немного от того, сколько метаданных вы хотите прикрепить к ним и если вы заботитесь о выравнивании.

Кроме того, когда список ломоть получает полный и превращаются в дереве кусок, не нужно создавать все 512 новые списки ломтей. Вы можете использовать ноль в качестве особого значения, чтобы указать пустой список, а не создавать пустой блок.

Если используется в качестве индекса блока цепи (который будет иметь большее число начальных нулевых битов) в течение долгого времени, корень кусок может хранить указатели на начальной нулевой деревьев, позволяя системе быстро перейти туда, где он должен начать. Указатели на нулевой бит глубины 18, 27, 36, 45, 54 и 63 должны держать нас счастливыми в течение многих лет, чтобы прийти в обмен на менее чем 2% от мертвого пространства в корневой блок.
kjj сейчас офлайн Пожаловаться на kjj   Ответить с цитированием Мультицитирование сообщения от kjj Быстрый ответ на сообщение kjj

7 сентября 2012, 8:59:53 PM   # 3
 
 
Сообщения: 389
Цитировать по имени
цитировать ответ
по умолчанию Re: по индексации случайных данных

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

7 сентября 2012, 9:51:53 PM   # 4
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: по индексации случайных данных

Почему бы не обратить номер 1-го до индексации. Таким образом, вы перемещаете все нули к другому концу, и дерево будет балансировать отлично.

Ебена мать! Это чертовски хорошая идея.

Ох, как об этом, хотя? Просто возьмите биты в правильном порядке от дальнего конца.

Таким образом, то поиск дерево просто
Код:
nextChunkID = ((игла >> (Глубина * 9)) & 0x1F) * 4;
kjj сейчас офлайн Пожаловаться на kjj   Ответить с цитированием Мультицитирование сообщения от kjj Быстрый ответ на сообщение kjj



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW