Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
8 октября 2014, 3:30:49 PM   # 1
 
 
Сообщения: 156
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

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


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

Моя идея заключается в том, чтобы раскошелиться текущим Bitcoin сердечник бумажника. Вилка будет иметь функцию для проверки blockchain на локальном GPU, чтобы разгрузить работу по проверке блоков на CPU. Это то, что шахтеры делают, хотя они пытаются найти хеши, я хочу проверить.

Эта идея возникла после просмотра моего сидячую процессора на 100% в течение нескольких часов после выполнения новой установки бумажника ядра на новый рабочий стол и ожидая blockchain проверить.

Мои вопросы,

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

Будет ли это полезно? Я хотел бы считать, пока цепь загружается достаточно быстро, чтобы обеспечить GPU с работой было бы. Я думаю, что для тестирования я просто скопировать blockchain файл данных нового ядра бумажника установить и посмотреть, если мое программное обеспечение или оригинальные проверы быстрее, чтобы доказать эту идею.  

Любые общие идеи или проблемы?

EDIT: У меня была другая идея. Я думаю, что это было бы намного проще просто написать цепи верификатор автономный ... Дайте ему путь к файлу цепи вы хотите проверить, установить некоторые параметры GPU, и пусть это рип через него.

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


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


8 октября 2014, 3:49:15 PM   # 2
 
 
Сообщения: 170
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

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





Привет Скитер,


Я играл с распараллеливания проверки (хотя и не как часть Bitcoin Ядра), и один раз мимо 100k блоков я могу придавить все восемь ядер моего процессора постоянно. Так что, безусловно, благо для параллельной проверки с помощью довольно большого количества ядер. Есть несколько осложнений, хотя. Вот мои мысли:

Сделки относятся к выходам ранее заключенных сделок, так что трудно проверить, испорченный, если вы не можете сделать быстрый поиск (так ПСП собирается развалина ваша производительность). Кроме того, в пределах блока, транзакции могут ссылаться на выходы ранее заключенных сделок, но не наоборот. Таким образом, чтобы достичь консенсуса, правильно вам нужно проверить их в порядке. Вы можете решить эту проблему, выполнив два прохода: один, чтобы убедиться, что все ссылки сделок действительны (это может быть сделано в течение примерно 30 минут на моем CPU с моим дерьмовым кодом Rust), а другие на самом деле делать подписные проверки. Тем не менее, это на самом деле то, что Bitcoin ядро ​​уже делает для большинства цепи (полной проверки подписи может занять несколько дней), так что вы не набираете ничего против поведения Bitcoin Core.

Одна вещь, которую вы могли бы сделать (и что я делаю в моем собственном коде), чтобы нарушить консенсус-совместимость и проверять все операции в каждом блоке параллельно. Для блоков с сотнями или тысячами сделок есть большая выгода здесь. Способ сделать это:
1. Сканирование блока и вслепую добавить все выходы транзакции на выход, установленном в линейном проходе. Это гарантирует, что обратные_связи будет работать, но и разрешить ссылки. (Это произошло со мной, пока печатал это, что это легко маркировать выходы с индексом в блок, так что вы можете легко обнаружить вперед реф. К сожалению, я исправлю свой код, чтобы сделать это.)
2. Разделить все операции в блоке в блоки N_TRANSACTIONS / N_CORES сделок, и передать каждый на новую нить для проверки. Каждый поток должен будет иметь возможность для поиска старых выходов, так что вам нужно будет убедиться, что ваш выходной набор неизменен во время этой фазы.
3. Сканирование блока и удалить все затраченные выходы из вашего выхода, установленного в линейном проходе.

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

Андрей
andytoshi сейчас офлайн Пожаловаться на andytoshi   Ответить с цитированием Мультицитирование сообщения от andytoshi Быстрый ответ на сообщение andytoshi

8 октября 2014, 4:04:08 PM   # 3
 
 
Сообщения: 156
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Андрей,

Я думаю, что гораздо лучше вопрос сейчас у меня есть. Какие шаги, участвующие в проверке блока цепи?

1. Проверка каждой транзакции (высоко распараллеливаемой?)
2. Проверьте каждый блок хэша .. ~ 300k хэши, можно было бы сделать в последовательный
3. ...?

Поэтому большой проблемой вы столкнулись в том, что транзакции много блоков далеко друг от друга, что ссылаться друг на друга означают разбивку в параллелизуемости? (Что является удивительным слово) Потому что, если вы хотите проверить, один блок, который вы, возможно, придется смотреть далеко вверх или вниз по цепочке, чтобы найти, если что конкретный адрес действительно есть х БТД отправить на другой адрес в текущем блоке?
skeeterskeeter сейчас офлайн Пожаловаться на skeeterskeeter   Ответить с цитированием Мультицитирование сообщения от skeeterskeeter Быстрый ответ на сообщение skeeterskeeter

8 октября 2014, 5:07:03 PM   # 4
 
 
Сообщения: 170
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Это не так много, что они находятся далеко друг от друга (хотя они есть), это тот факт, что они возможно что болеет параллелизуемость, потому что вы должны иметь доступ к большому количеству данных. Способ справиться с этим, чтобы поддерживать "выходной набор" всех неизрасходованных выходов; Вы добавляете каждый выход для каждой транзакции и удалить весь вывод, на который ссылается в каждой сделке. Поддержание этой структуры данных (что требует случайной вставки / удаление доступа в примерно равных и огромных размерах, что является неприятной проблемой структуры данных ... не уверен, что вы можете сделать лучше, чем HashMap) почему вы должны пройти через песни и танец Я описал.

Для того, чтобы увидеть, что участие в проверке blockchain, вы должны проверить мой Обзор высокого уровня а также проверить страницы Bitcoin Wiki на операции а также скрипт. Это усложнится.
andytoshi сейчас офлайн Пожаловаться на andytoshi   Ответить с цитированием Мультицитирование сообщения от andytoshi Быстрый ответ на сообщение andytoshi

8 октября 2014, 5:55:00 PM   # 5
 
 
Сообщения: 156
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Это не так много, что они находятся далеко друг от друга (хотя они есть), это тот факт, что они возможно что болеет параллелизуемость, потому что вы должны иметь доступ к большому количеству данных. Способ справиться с этим, чтобы поддерживать "выходной набор" всех неизрасходованных выходов; Вы добавляете каждый выход для каждой транзакции и удалить весь вывод, на который ссылается в каждой сделке. Поддержание этой структуры данных (что требует случайной вставки / удаление доступа в примерно равных и огромных размерах, что является неприятной проблемой структуры данных ... не уверен, что вы можете сделать лучше, чем HashMap) почему вы должны пройти через песни и танец Я описал.

Для того, чтобы увидеть, что участие в проверке blockchain, вы должны проверить мой Обзор высокого уровня а также проверить страницы Bitcoin Wiki на операции а также скрипт. Это усложнится.


А, понятно. Так что я мог бы запустить ядро, чтобы проверить блок. Я бы передать блок данных, вместе с указателем на массив неизрасходованных монет в памяти устройства, так что он может сделать это реферирование "[Так в оригинале] вверх и вниз" цепь. Вопрос заключается в том, что, хотя пропускная способность RW в память устройства будет массовой. Вы должны сделать поиск по нему один раз за уникальный адрес в blockchain, потому что в какой-то момент все монеты неизрасходованные.? (Это правильно логика).

Чтобы обойти эту проблему вы предлагаете, чтобы проверить все блоки параллельно, и писать любые неизрасходованные монеты для каждого блока в память. Затем сделайте второй проход и проверять для каждой неиспользованной монеты, что она имеет некоторую связь в blockchain? Затем удалите эту неизрасходованную монету из списка, и если список пуст после прогонов алгоритма, то цепь проверяется?

// Я читаю много вики в прошлом, мне нужно, чтобы вернуться к нему. Спасибо за напоминание!

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

8 октября 2014, 11:36:47 PM   # 6
 
 
Сообщения: 100
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Очень интересную беседу! Я буду следить.
r3c4ll сейчас офлайн Пожаловаться на r3c4ll   Ответить с цитированием Мультицитирование сообщения от r3c4ll Быстрый ответ на сообщение r3c4ll

9 октября 2014, 12:58:11 AM   # 7
 
 
Сообщения: 2464
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Заинтересованы в этом также. Может быть, начать смотреть на то, как параллелизуем СИП libsecp265k1? ... которая в основном крипта проверка двигателя.

https://github.com/bitcoin/secp256k1
marcus_of_augustus сейчас офлайн Пожаловаться на marcus_of_augustus   Ответить с цитированием Мультицитирование сообщения от marcus_of_augustus Быстрый ответ на сообщение marcus_of_augustus

9 октября 2014, 1:29:22 AM   # 8
 
 
Сообщения: 1736
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

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

9 октября 2014, 2:10:16 AM   # 9
 
 
Сообщения: 170
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Заинтересованы в этом также. Может быть, начать смотреть на то, как параллелизуем СИП libsecp265k1? ... которая в основном крипта проверка двигателя.

https://github.com/bitcoin/secp256k1

Вы должны использовать libsecp256k1, если вы делаете проверку. Это тривиально параллелизуемое в том смысле, что вы можете проверить много подписей сразу ... однако, это не делает пакетную проверку (это не очевидно, что это возможно даже для ECDSA, так как есть знак двусмысленность в значении к). Есть некоторые приезжающие улучшения, но даже сегодня это что-то вроде ой быстрее, чем OpenSSL.
andytoshi сейчас офлайн Пожаловаться на andytoshi   Ответить с цитированием Мультицитирование сообщения от andytoshi Быстрый ответ на сообщение andytoshi

9 октября 2014, 5:45:35 AM   # 10
 
 
Сообщения: 2366
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

проверка Bitcoin сердечника уже параллельно. Но там не так много параллелизма, чтобы извлечь как можно догадаться, не без серьезных архитектурных изменений (например конвейерных нескольких блоков и приема частично проверенных единиц). Вы не должны, однако, были видеть его, используя только один процессор ... на самом деле пользователей окон часто жаловались, что он должен быть разорван, потому что это было использовать все их ядер в течение минут, в то время.
gmaxwell сейчас офлайн Пожаловаться на gmaxwell   Ответить с цитированием Мультицитирование сообщения от gmaxwell Быстрый ответ на сообщение gmaxwell

9 октября 2014, 7:36:16 AM   # 11
 
 
Сообщения: 156
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

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


Не могли бы вы перефразировать это немного? Я не уверен, что если вы имеете в виду это будет работать или,

Там нет скорости до над тем, что уже реализовано? или,
Bitcoin Ядро уже крадется код на GPU, и уже в полном объеме? или,
GPU будет иметь никаких преимуществ, наиболее параллельно он может стать может быть побежал на 2+ ядра CPU настолько быстро, насколько это возможно (высокий шаг сложности в целом)?
skeeterskeeter сейчас офлайн Пожаловаться на skeeterskeeter   Ответить с цитированием Мультицитирование сообщения от skeeterskeeter Быстрый ответ на сообщение skeeterskeeter

9 октября 2014, 3:56:55 PM   # 12
 
 
Сообщения: 2366
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Не могли бы вы перефразировать это немного? Я не уверен, что если вы имеете в виду это будет работать или,

Там нет скорости до над тем, что уже реализовано? или,
Bitcoin Ядро уже крадется код на GPU, и уже в полном объеме? или,
GPU будет иметь никаких преимуществ, наиболее параллельно он может стать может быть побежал на 2+ ядра CPU настолько быстро, насколько это возможно (высокий шаг сложности в целом)?
Это уже параллельно, он не использует GPU. Эффективное использование GPU будет сложно, потому что не то, что имеется много параллелизма, если вы не проверяемые несколько блоков одновременно, и общения с GPU имеет огромные латентности. Конкурировать с состоянием коды искусства центрального процессора будет принимать состояние коды искусства GPU (мой собственный код vanitygen на процессоре примерно так же быстро, как опубликованный GPU vanitygen).

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

12 октября 2014, 4:38:21 AM   # 13
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Есть ли у вас рекомендации?

Мое текущее мышление является то, что лучшим ударом для доллара является parallalizing двух умножений групп (от G и Q).
Они используют поле удвоение и умножение, которые были оптимизированы на ассемблере, и они должны быть поставлены на устройстве.
В остальном, что использует GMP не очень много. Это модульная обратное и несколько мульта / добавить. Он едва регистрирует в моем профиле исполнения.

благодаря
hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

13 октября 2014, 6:43:45 AM   # 14
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Я сделал версию OpenCL из secp256k1 библиотеки СИПА. Это на GitHub, если кто-то заинтересован. Она выполняется быстрее, но только после того, как вы бросите сто тысяч подписей для проверки.
На испытания образца
# Из Sigs = 262144

Времена в мс на фазе.

подготовить -> 2518
вычислить -> 15201
проверить -> 35
Всего -> 17755
           0.067733

Фаза 1 & 3 находятся на CPU. Фаза 2 находится на GPU. 0.067733 мс на проверку.
У меня есть GTX 560 Ti.
hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

14 октября 2014, 1:04:56 AM   # 15
 
 
Сообщения: 2464
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

котировка
Я сделал версию OpenCL из secp256k1 библиотеки СИПА. Это на GitHub, если кто-то заинтересован.

Ссылка?

AMD, вероятно, будет лучше, чем Nvidia, если есть много целых шагов.
marcus_of_augustus сейчас офлайн Пожаловаться на marcus_of_augustus   Ответить с цитированием Мультицитирование сообщения от marcus_of_augustus Быстрый ответ на сообщение marcus_of_augustus

14 октября 2014, 1:14:50 AM   # 16
 
 
Сообщения: 2366
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Фаза 1 & 3 находятся на CPU. Фаза 2 находится на GPU. 0.067733 мс на проверку.
У меня есть GTX 560 Ti.
Так вот 14763 в секунду? То не благоприятна по сравнению с работой на процессоре, но может быть много оптимизаций по-прежнему доступны для вас.
gmaxwell сейчас офлайн Пожаловаться на gmaxwell   Ответить с цитированием Мультицитирование сообщения от gmaxwell Быстрый ответ на сообщение gmaxwell

14 октября 2014, 8:54:55 AM   # 17
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

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

15 октября 2014, 9:57:20 AM   # 18
 
 
Сообщения: 173
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Но это не массивные параллельные вычисления именно то, что сеть Bitcoin в целом делает? Почему распараллеливание на местном уровне?
Джулио Приско сейчас офлайн Пожаловаться на Джулио Приско   Ответить с цитированием Мультицитирование сообщения от Джулио Приско Быстрый ответ на сообщение Джулио Приско

15 октября 2014, 10:22:28 AM   # 19
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

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

18 октября 2014, 4:15:51 PM   # 20
 
 
Сообщения: 1064
Цитировать по имени
цитировать ответ
по умолчанию Re: Глядя в разветвлении основного бумажника использовать параллельные вычисления для проверки блоков

Ссылка?

Я считаю, что это его:

https://github.com/hhanh00/secp256k1-cl
dexX7 сейчас офлайн Пожаловаться на dexX7   Ответить с цитированием Мультицитирование сообщения от dexX7 Быстрый ответ на сообщение dexX7



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW