Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
6 апреля 2013, 8:30:59 PM   # 1
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

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


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

Я пытаюсь вникать в некоторые технические аспекты Bitcoin, и есть еще много, что везде от расплывчатой ​​совершенно неясно. Я учусь, так что, если мои вопросы уже спросили (и ответил), прежде чем, кажется, глупо, или не имеет никакого смысла для вас, пожалуйста, просветить и медведь со мной.

1) Как интеграция аппаратного ускорения (как например, FPGA или ASIC устройства) в поле "процессе добычи" Работа ? Как стать клиентом добычи "знать" такого аппаратного ускорения? Другими словами, какого рода "механизм" будет устройство аппаратного ускорения необходимо обеспечить, чтобы быть признанным горнодобывающим клиентом?

2) Какие функциональные возможности (с учетом алгоритма Bitcoin) делать такие устройства аппаратного ускорения обычно обеспечивают? Есть ли они только ускорить вычисление двойного SHA256, или же они (должны) осуществлять другие действия в алгоритме Bitcoin, а? Если да, то какие? (Само собой разумеется, что только такая функциональность должна быть сделано в аппаратных средствах, которые, как предполагается, никогда не изменит.)

3) Какие факторы влияют на спрос памяти алгоритма Bitcoin? Есть ли, например, непрерывно растет размер blockchain оказывают влияние на объем памяти (RAM, а не на диске), который требуется для запуска алгоритма Bitcoin? Можно ли вычислить (или по крайней мере глазков) максимальный объем памяти (т.е. верхний пороговой), который никогда не будет превышен при выполнении алгоритма Bitcoin?

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


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


6 апреля 2013, 8:41:26 PM   # 2
 
 
Сообщения: 1526
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

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





Добыча СБИСА / ПВМ обрабатывать только двойную SHA256 (и несколько других вещей, как увеличивающийся нонс поэтому у них есть данные для хеширования). Горные инструменты написаны специально говорить протокол СИС блоки ожидают.

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

6 апреля 2013, 10:30:15 PM   # 3
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

Большое спасибо, это очень интересная информация.

1) Что касается "Горные инструменты написаны специально говорить протокол СИС единицы ожидают", Как бы что "как правило" быть сделано?

Поскольку многие горнодобывающие клиентов по всей видимости, написаны в Phython (ну, это мое личное впечатление), давайте придерживаться это в качестве примера. Давайте также предположим, что мы имеем СИС, который "говорит" УАПП (или I2C или SPI, или ...) протокол, и сконструирован таким образом, что все это делает считываются с 512-битовым блоком-заголовком, текущей целью, и временное значением от А "загрузка регистра", Делает его "двойной SHA256 магии", Сравнивает результат (вычисленный хэш) против текущей цели. Если результат > текущая цель, то одноразовое значение увеличивается на 1, и дважды SHA256 магия делается снова. Если результат < текущая цель, результат записывается в "магазин регистр" и СИС сигналы какой-то флаг успеха.

В данном примере, я вправе предположить, что было бы достаточно, чтобы улучшить код горнорудной клиенты так, что он может взаимодействовать с СИСОМ с использованием указанного (/ SPI I2C) протокол UART? Если да, то это тривиальная задача, так как это может быть легко сделано, например, с pyserial (или обертка MPSSE в случае I2C / SPI).

Это свелось бы к чему-то вроде:
* Добыча клиент получает блок от сети (getwork или getblocktemplate)
* Добыча клиент полоса заголовка блока и целей из блока (плюс некоторые Litte / большой Endian материала)
* Горно-клиент записывает блок-заголовок, цель и желаемое начальное значение одноразового номера в регистр загрузки СИС в
* Горно-клиент сигнализирует о ASIC, чтобы начать обработку
* Добыча клиент ожидает интегральная схема сигнализировать успеха
* Добыча клиент считывает результат магазина реестра СИС, и отправляет его в сеть

Хорошо, я оставил некоторую обработку исключений вещи, как несвежие обработки блоков и такие, но в принципе ...

Моя проблема: мне трудно поверить, что это действительно так просто, так что вопрос, где я не прав, и что мне не хватает?

2) полная проверка по сравнению с упрощенной проверки

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

Хорошо, я правильно понимаю: это достаточно, чтобы один экземпляр бумажника в оперативной памяти - это не требуется, чтобы экземпляр бумажника в RAM _per_SHA256_worker_thread_ - это правильно? Если да, то это не должно быть проблемой вообще, так как вы получаете гигабайты памяти с десяток гривенник (ну, почти)

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

6 апреля 2013, 11:13:16 PM   # 4
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

Это на самом деле проще, чем это. Ваше программное обеспечение будет просто:

* Получить данные и цель с getwork
* Загрузить его на ASIC по SPI
* Ждать прерывания
* Зачитать над SPI временного значения
* Вернуть его с submitblock

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

6 апреля 2013, 11:57:18 PM   # 5
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

Еще раз спасибо,

Я действительно отчасти сбит с толку - если это действительно так просто ...

Во всяком случае, еще один вопрос:

> * Получить данные и цель с getwork
> * Загрузить его на ASIC по SPI

Не было бы необходимости (или, по крайней мере, хорошая идея), чтобы отправить также одноразовый номер в ASIC? Я имею в виду, в параллельной архитектуре вы не хотели бы, чтобы все СИС начать свою работу с тем же начальным значением нонса, но вы бы скорее хотели расколоть "адресное пространство" (Ну, вроде, в отсутствие лучшего термина) нонса в столько же ломтиков, как у вас есть СБИС в вашей системе, и сказать каждому СИС, чтобы работать на определенном адресном пространстве.

Или я ошибаюсь?
25563673 сейчас офлайн Пожаловаться на 25563673   Ответить с цитированием Мультицитирование сообщения от 25563673 Быстрый ответ на сообщение 25563673

7 апреля 2013, 12:15:25 AM   # 6
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

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

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

7 апреля 2013, 11:13:59 AM   # 7
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

Опять же, спасибо!

> Это достаточно большое пространство, что вы вряд ли столкнуться с самим собой

Это именно та часть, где я до сих пор не понимаю - извините, может быть, я не вижу леса за деревьями, но ...

... в конце концов, Nonce только 32-битное целое число без знака, то есть наибольшее значение он может взять на себя это (разл) 4294967295. В массивно параллельной архитектуре, это адресное пространство становится легко разбивается на части, которые не смотрят, что пугающим вообще. Но даже в достаточно производительной без параллельной архитектуры, она не выглядит такой большой.

В моем понимании (что может быть не так, и, вероятно, не так), значения полей, которые могут изменить (кроме нонса) являются метка времени, то coinbase транзакции, а также список transacations, входящих в блок. Тем не менее, эти поля обычно не обновляются в то время как все еще работают на тот же блок (заголовок) данных (то есть, не новый запрос getwork в это время). Таким образом, единственная переменная в расчете во время работы на одном заголовке блока является одноразовое значение, в то время как значения всех остальных полей можно рассматривать как статические. Это верно?

Может быть, я должен добавить, что я до сих пор не до конца понимаю части о extraNonce. Насколько мне известно, нет такого понятия, как "extraNonce" поле, так, что роль / влияние extraNonce в то время как устройство хеширования прочь через адресное пространство Нонс в? Некоторые образования на том, что было бы весьма приветствовать

Теперь, давайте предположим, что мы имеем хеширование устройство с истинной производительностью хеширования 400 MH / с, то есть тот, который фактически делает 400 миллионов полных расчетов дважды SHA256 хэша (включая незначительные вещи, как приращение случайного слова, сравнивая хэш от цели и т.д. ) в аппаратной _every_second_. Поскольку данные в заголовке блока не изменится, то максимальное количество расчетов, которые должны быть выполнены, остается прежним: 4294967295, потому что это максимальное количество возможностей в адресном пространстве Нонс в. (Более статистического языка: часть заголовка блока ввода не изменяет количество возможных перестановок, так что общее число перестановок целого ввода такого же, как число перестановок нонса.) Следовательно, это устройство будет иметь возможность рассчитать результаты всех 4,294,967,295 возможных перестановок в чуть более 10 секунд.

И это выглядит так себе совершенно неправильно для меня ... это просто не может быть! Поскольку 400 MH / s нет ничего особенного, даже существующие шахтеры GPU обеспечивают эту производительность довольно легко.

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

7 апреля 2013, 2:13:15 PM   # 8
 
 
Сообщения: 1526
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

ExtraNonce представляет собой фрагмент данных на входе в coinbase сделки (это та область, где можно набить произвольные данные). Когда заголовок одноразовое значение зашкаливает, то extranonce увеличивается. Это приводит к изменению хеш транзакции coinbase, которая, в свою очередь изменяет корень Merkle, который находится в заголовке, и, таким образом, хэш заголовка также изменяется. Теперь вы можете сканировать то же нонс пространство снова и получить различные хэш. Coinbase вывод содержит открытый ключ шахтера, таким образом, coinbase хэш всегда будет отличаться для разных шахтеров.
Майк Хирн сейчас офлайн Пожаловаться на Mike Хирн   Ответить с цитированием Мультицитирование сообщения от Mike Хирн Быстрый ответ на сообщение Mike Хирн

7 апреля 2013, 3:44:37 PM   # 9
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

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

То, что я хотел бы знать:

> Coinbase вывод содержит открытый ключ шахтера, таким образом, coinbase хэш всегда будет отличаться для разных шахтеров.

Правильно ли я предположить, что "шахтер" вы имеете в виду запущенный экземпляр горного клиента (который будет, возможно, в большинстве случаев только один один)? ("пример" == образом приложения добычи в памяти, в отличие от резьбы, порожденного приложением интеллектуального анализа данных.) Это означает, что в параллельной архитектуре системы, где каждый (аппаратное обеспечение) трубопровод исполнения будет присвоен отдельным шахтер нить (ну, это как я бы это сделать), все исполняющие трубопроводы будут по-прежнему имеют одну общую coinbase хэш, следовательно, тот же extraNonce.

> Когда заголовок одноразовое значение зашкаливает, то extranonce увеличивается.

Это одна из частей, где я потерял. Если я начинаю хэширование на заголовок блока х (который остается неизменным, пока новый запрос getwork не выдается) с одноразовым номером 0, и держать хеширования заголовка блока х, пока одноразовое значение не достигнет своего максимального значения (2 ** 21 - 1), то данный случай никогда не будет пролонгировать ... или это? (Если да, то когда, и почему?)

Подставляя это и часть о extraNonce вместе, то это означало бы, что в параллельной архитектуре системы, extraNonce никогда не изменится без явного нового запроса getwork. Однако, это было бы оставить все адресное пространство, которое открывало путем введения extraNonce, неиспользуемое этим одним конкретным клиентом шахтер.

С другой стороны, в такой архитектуре системы, явные меры должны быть приняты в коде, чтобы обеспечить опрокидывание нонса.

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

7 апреля 2013, 10:54:54 PM   # 10
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

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

Моя ошибка была предположить, что решение (в виде хэша < мишень) обязательно должна существовать в пределах адресного пространства, натянутого путем перебора всех возможных значений нонса в заголовке блока. Конечно, это вполне возможно (и даже вероятно), что никакое решение не будет существовать в пределах этого адресного пространства, так что другие части заголовка блока должны быть изменены.

Вопрос: есть математическое доказательство того, что дважды SHA256 (block_header) будет выводить все возможные значения в 2 ** 256 хэш адресного пространства для каждого возможного значения входного заголовка 2 ** 640 блок?

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

9 апреля 2013, 9:15:31 AM   # 11
 
 
Сообщения: 728
Цитировать по имени
цитировать ответ
по умолчанию Re: Q: аппаратное ускорение, Demand памяти

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

Моя ошибка была предположить, что решение (в виде хэша < мишень) обязательно должна существовать в пределах адресного пространства, натянутого путем перебора всех возможных значений нонса в заголовке блока. Конечно, это вполне возможно (и даже вероятно), что никакое решение не будет существовать в пределах этого адресного пространства, так что другие части заголовка блока должны быть изменены.

Верный. После того, как вы вышли из одноразового номера вы ударять extranonce, сгенерировать новый входной хэш, и кормить его шахтер.

котировка
Вопрос: есть математическое доказательство того, что дважды SHA256 (block_header) будет выводить все возможные значения в 2 ** 256 хэш адресного пространства для каждого возможного значения входного заголовка 2 ** 640 блок?

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

Термин вы ищете:  https://en.wikipedia.org/wiki/Random_oracle
Много больше о том, что, включая некоторые комментарии на SHA256 в частности: http://crypto.stackexchange.com/questions/879/what-is-the-random-oracle-model-and-why-is-it-controversial
Revalin сейчас офлайн Пожаловаться на Revalin   Ответить с цитированием Мультицитирование сообщения от Revalin Быстрый ответ на сообщение Revalin



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW