Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
1 июля 2013, 7:46:23 PM   # 1
 
 
Сообщений: 82
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

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


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

Я написал это в основном как инструмент обучения, чтобы я мог понять формат blockchain сам.

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

Друга в том, что некоторые блоки содержат меньше данных, чем указано на длину блока; Это означает, что после того, как все операции чтения в указатель файла не продвинулся так далеко, как «длина блока», который был указан. Я буду считать это нормальным и ожидаемым?

Этот фрагмент кода разбирает мою копию blockchain (9.2gb) примерно через 95 секунд; который я понял, было довольно хорошо; хотя я не знаю, что я должен сравнить.

Во всяком случае, если кто-то считает этот фрагмент кода полезным или просто хочет, чтобы лучше понять структуру данных о Bitcoin blockchain вы можете найти его здесь:

http://codesuppository.blogspot.com/2013/07/a-bitcoin-blockchain-parser-as-single.html

Обратная связь, исправления, предложения, все приветствуются.

Благодаря,

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


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


2 июля 2013, 5:16:45 PM   # 2
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

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





Я просто написал Bitcoin blockchain анализатор в крошечном фрагменте кода. Это реализуется, как только два исходных файлов, один заголовок и один CPP, без каких-либо внешних зависимостей. Этот фрагмент кода не использует выделения памяти, шаблоны, контейнеры, STL, Boost, или что-нибудь более сложное, чем «FOPEN, FREAD, fclose».

Я написал это в основном как инструмент обучения, чтобы я мог понять формат blockchain сам.

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

Друга в том, что некоторые блоки содержат меньше данных, чем указано на длину блока; Это означает, что после того, как все операции чтения в указатель файла не продвинулся так далеко, как «длина блока», который был указан. Я буду считать это нормальным и ожидаемым?

Этот фрагмент кода разбирает мою копию blockchain (9.2gb) примерно через 95 секунд; который я понял, было довольно хорошо; хотя я не знаю, что я должен сравнить.

Во всяком случае, если кто-то считает этот фрагмент кода полезным или просто хочет, чтобы лучше понять структуру данных о Bitcoin blockchain вы можете найти его здесь:

http://codesuppository.blogspot.com/2013/07/a-bitcoin-blockchain-parser-as-single.html

Обратная связь, исправления, предложения, все приветствуются.

Благодаря,

Джон



Будучи кто-то написал blockchain парсер с нуля (что делает Оружейная при каждой загрузке / ReScan), я могу вам сказать, что все о том, что это нормально (для второй точки, расположенной ниже, за исключением). И 95 секунд довольно хорошо. Это зависит от того, что еще вы делаете, когда вы сканирование. В моем случае, мой код сканирует в примерно 150-240 секунд в зависимости от кэширования HDD, но это также определение всех сценариев транзакций с целью поиска монет, которые связаны с бумажником (поэтому я дополнительно анализировать и идентифицировать отдельные сценарии, а затем сделать если поиск в наборе структура, чтобы увидеть, если это уместно).

  • Нули в конце файлов обусловлены предварительное выделение. Поскольку Bitcoin-Qt версии 0.8, теперь они всегда выделяют BLK * .dat файлов в куски 16 МБ для уменьшения диска ненужными. то есть, если вы храните добавление в файл снова и снова, операционная система вынуждена держать перераспределить это пространство, или фрагментировать его. По предварительному выделению с нулевым заполнением, количество дисков перераспределения вырублено резко
  • Я не уверен, что вызвало бы поле numBytes некорректным. Как часто вы его видите? Есть ли у вас пример?

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

2 июля 2013, 6:56:30 PM   # 3
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

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

3 июля 2013, 3:07:43 PM   # 4
 
 
Сообщений: 82
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Спасибо за отзыв, я согласен, это лучший способ узнать о blockchain.

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

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

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

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

Моя личная мотивация в этом является то, что я хочу способ отслеживать вложенную «значения» во всех незавершенных сделках Bitcoin пути сравнения стоимости монеты в долларах США в то время это был последней переведено. Я особенно заинтересован в больших количествах BTC, которые не двигались в течение многих лет, но вдруг «оживают».

Возможно, кто-то уже написал такой инструмент для анализа, но я не видел еще. 

Во всяком случае, я в основном делаю это, чтобы удовлетворить свое личное любопытство и если кто-то находит исходный код полезными и / или образовательный, это бонус.

Таким образом, я предполагаю, что мой последующий дополнительный вопрос заключается в следующем. Какая часть сценариев представляет фактическую сделку; т.е. 'Эта сумма от этого BTC адреса к этому BTC адреса. Это как на входе и выходе сценария? Должна ли я запустить полную криптографию, чтобы получить тот ответ, или это просто часть базовой информации, когда вы разбираете сценарий?

Благодаря,

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

3 июля 2013, 4:23:34 PM   # 5
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Я полагаю, что вопрос в том, я могу разобрать сделки без необходимости также делать полную проверку? Если я должен, то пусть так и будет, если нет, то это тоже хорошо.

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

Одна проблема заключается в том, что все блоки записываются на диск, когда подтверждено, так что вы можете иметь некоторые блоки из сиротских цепей на диске. Вы должны были бы исключить их из анализа.

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

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

3 июля 2013, 4:33:57 PM   # 6
 
 
Сообщения: 868
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

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

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



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

3 июля 2013, 4:39:11 PM   # 7
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Беспокоясь о проверке блока целый новый мир, который вы не хотите попасть. Сейчас вы можете просто использовать тот факт, что если блок находится в BLK * .dat файлов, которые он действителен вместе со всеми сделками в нем. Как бы сказал TierNolan, вы, вероятно, есть несколько сирот там, так что вам, вероятно, потребуется ваше сканирование кода либо вычислить самую длинную цепочку (что является хорошим упражнением в себе) или просто не предположить, что 100% блоков в этих файлах находятся в основной цепи.

Для первого упражнения, вам не нужен полный двигатель оценки сценария. Просто программа достаточно, чтобы распознать общий TxOut скрипты и игнорировать не - скрипты Std. Хотя с точки зрения вычислительных противовесов, это своего рода произвольное ... Вы можете хранить все TxOut в карте<Минуса, RawTxOut> и удалить их, как вы видите, что TxIns потратить их. Когда вы закончите, вы должны иметь карту, содержащую все неизрасходованный TxOuts в сети.

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

4 июля 2013, 3:01:50 AM   # 8
 
 
Сообщения: 280
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Я делал обработку цепной блок, а также в Java.

http://i.imagebanana.com/img/g11ev2ol/Selection_018email.png

эта диаграмма показывает известную операцию Хал Финни (блок # 170), который проводит выходной сигнал из блока # 9. Этот выход позже провел в блоке # 181, # 182 затем, а затем провел в обоих # 183 и # 221.

Я получаю мои данные из Bitcoind REST API, хотя, это немного медленнее, но после того, как первичный ETL будет сделано, то вам не придется беспокоиться об этом.

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


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

http://i.imagebanana.com/img/9e42925q/Selection_019.png
bluemeanie1 сейчас офлайн Пожаловаться на bluemeanie1   Ответить с цитированием Мультицитирование сообщения от bluemeanie1 Быстрый ответ на сообщение bluemeanie1

4 июля 2013, 2:35:50 PM   # 9
 
 
Сообщений: 82
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Кто-нибудь знает лучшего объяснения того, как сценарий обработки работает, чем я нашел в Интернете?

Или кто-то может опубликовать описание стиля псевдо-код здесь?

Мой вопрос заключается в следующем.

Есть (n1) входные сценарии и (n2) выходные сценарии.

Есть ли n1 всегда равна n2?

Соответствует ли каждый вход с каждым выходом?

Другими словами, в каком порядке выполняются сценарии и они одни и те же стек?

Например, делает входные значения нажимные один сценария на стеке, которые затем хлопнутые выходные сценарий один?

Это не совсем ясно, мне нужно от чтения электронной документации порядок выполнения и как стек распределяется между сценариями.

Благодаря,

Джон

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

4 июля 2013, 3:32:52 PM   # 10
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Есть (n1) входные сценарии и (n2) выходные сценарии.

Правильно

котировка
Есть ли n1 всегда равна n2?

нет

котировка
Соответствует ли каждый вход с каждым выходом?

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

котировка
Другими словами, в каком порядке выполняются сценарии и они одни и те же стек?

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

4 июля 2013, 3:56:53 PM   # 11
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

В TxIns и TxOuts независимы. Подумайте о сети, содержащая кучу плавающего [неизрасходованные монеты]. Каждый из этих неизрасходованных TxOuts походит на счет (например, $ 20 законопроекта). TxIn просто ссылка на конкретный счет с подписью удостоверяющего вы имеете право потратить. Если вы хотите отправить кому-10 BTC, вам нужно собрать достаточное количество счетов (скажем, 4 счета BTC / TxOut, в 2 счета BTC / TxOut, и BTC счет / TxOut 7). 10BTC выход и один выход отправка остаток обратно к себе (3 BTC).  

Вы можете думать о сделках, как есть неизрасходованный TxOuts, и производство нового TxOuts (и вы разрешаете расходы старых TxOuts подписей в TxIns). Сделка требует TxOuts некоторого владения, и преобразует их в TxOuts новой собственности. Вы можете разделить их или объединять их в любом количестве, до тех пор, пока у вас есть по крайней мере один TxIn (соответствует предыдущему TxOut поедание) и один новый TxOut.

Вот случайная картина, которую я сделал давно, что попытки проиллюстрировать это.  



Пунктирные линии для TxIns показывает, что они на самом деле вид "преходящий" данные. Они просто для работы в сеть, чтобы увидеть, что вы имели право перенести эти монеты, но в далеком будущем, старый отработанный TxOuts, и TxIns, которые перемещались их могут быть сокращены прочь.
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

5 июля 2013, 6:42:14 PM   # 12
 
 
Сообщений: 82
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Хорошо, я думаю, что я делаю прогресс в понимании этого; немного.

Теперь я понимаю, что каждый блок, как определенное количество сделок и каждую сделка имеет определенное количество входов и выходов (потенциально представляющие где БТД откуда и куда он собирается).

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

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

(2) Вся информация, необходимая для понимания blockchain (то есть увидеть такую ​​же информацию, показанную на blockchain.info) можно найти просто путем анализа blockchain файлов данных файлов (blkNNNNN.dat)?

(3) При взгляде на блок данных; есть отметка времени для блока; но я не вижу метку времени для отдельных операций. Это верно?

(4) При обработке ввода он определяет хэш ввода транзакции и номер индекса сделки; как можно перейти от этого хэша / индекса и выяснить конкретный выход транзакцию в предыдущем блоке?

(5) На BlockChain информации, если вы просто посмотрите на Блоке # 1 https://blockchain.info/block/00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048  Он определяет как хэш и предыдущий блок хэш. Я немного запутался по этому вопросу; нет «предыдущий» блок, блок # 1. Кроме того, нет никакого «хэша» поля на структуру данных, блок-цепи; только предыдущее хэш-поле.

(6) В той же блоке # 1 страницу, это показывает выходной адрес «12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX». Где это значение берется? Было ли это в сценарии? Я не вижу его где-нибудь в структурах данных? Кроме того, этот адрес не является шестнадцатеричным значением; есть некоторый опубликованный алгоритм, который преобразует двоичный хэш в этот формат ASCII строки?

Благодаря,

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

5 июля 2013, 6:53:37 PM   # 13
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

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

(2) Вся информация, необходимая для понимания blockchain (то есть увидеть такую ​​же информацию, показанную на blockchain.info) можно найти просто путем анализа blockchain файлов данных файлов (blkNNNNN.dat)?

Правильно

котировка
(3) При взгляде на блок данных; есть отметка времени для блока; но я не вижу метку времени для отдельных операций. Это верно?

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

Они имеют "Locktime", Сделки не могут быть добавлены в блок до этого времени не поступило (или что номер блока, если < 50000000 или около того).

котировка
(4) При обработке ввода он определяет хэш ввода транзакции и номер индекса сделки; как можно перейти от этого хэша / индекса и выяснить конкретный выход транзакцию в предыдущем блоке?

Вам нужно создать карту хэш (транзакция) -> сделка (возможно, файл указателя).

Вы, как представляется, в файле для хэширования всей транзакции. То есть sha256 (sha256 (транзакция)). Иногда люди получают тупоконечника / прямой порядок байтов неправильный путь вокруг.

котировка
(5) На BlockChain информации, если вы просто посмотрите на Блоке # 1 https://blockchain.info/block/00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048  Он определяет как хэш и предыдущий блок хэш. Я немного запутался по этому вопросу; нет «предыдущий» блок, блок # 1. Кроме того, нет никакого «хэша» поля на структуру данных, блок-цепи; только предыдущее хэш-поле.

Да есть, блоки начиная с блока 0, нет предыдущего блокировать ноль, хотя. 

Однако блок генезис предположительно не в файле, так как это жестко.

котировка
(6) В той же блоке # 1 страницу, это показывает выходной адрес «12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX». Где это значение берется? Было ли это в сценарии? Я не вижу его где-нибудь в структурах данных? Кроме того, этот адрес не является шестнадцатеричным значением; есть некоторый опубликованный алгоритм, который преобразует двоичный хэш в этот формат ASCII строки?

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

5 июля 2013, 6:53:44 PM   # 14
 
 
Сообщения: 868
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Хорошо, я думаю, что я делаю прогресс в понимании этого; немного.

(5) На BlockChain информации, если вы просто посмотрите на Блоке # 1 https://blockchain.info/block/00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048  Он определяет как хэш и предыдущий блок хэш. Я немного запутался по этому вопросу; нет «предыдущий» блок, блок # 1. Кроме того, нет никакого «хэша» поля на структуру данных, блок-цепи; только предыдущее хэш-поле.


Блок # 0 существует. Ваша ссылка имеет поле для "Предыдущий блок" на правой стороне.
ProfMac сейчас офлайн Пожаловаться на ProfMac   Ответить с цитированием Мультицитирование сообщения от ProfMac Быстрый ответ на сообщение ProfMac

5 июля 2013, 7:07:33 PM   # 15
 
 
Сообщения: 261
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Это очень здорово! Спасибо за это. Я буду проверять его на выходные.
Ксавье сейчас офлайн Пожаловаться на Ксавье   Ответить с цитированием Мультицитирование сообщения от Xavier Быстрый ответ на сообщение Ксавье

5 июля 2013, 7:20:14 PM   # 16
 
 
Сообщений: 82
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Хорошо, спасибо, что помогает совсем немного.

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

Таким образом, это звучит, как я не нужно разбирать скрипты, чтобы знать сделки, но если я хочу знать источник / назначение адрес открытых ключей я * * должно разобрать сценарии?

Я думаю, я еще немного запутался в этой точке. Я начал писать парсер сценарий, но сценарии я стараюсь работать против него все вроде неполными. Входные скрипты обычно просто передавать данные в стеке, но не имеют фактические указания «делать» что-нибудь.

Выходные сценарии, как правило, для выполнения инструкции, такие как «OP_CHECKSIG», который требует, чтобы два элемента в стеке, но когда я получаю здесь, как правило, только один элемент в стеке; и я на ясно, что должно было быть выполнено до него.

Я на самом деле не понимая, я думаю, как входные сценарии совпадают с выходными сценариев и как текущее состояние стека сохраняется; Я имею в виду вы любите работать входной скрипт; который толкает некоторые вещи в стеке для вывода сценария, или наоборот? И, если да, то как вы знаете, какие входные сценарии соответствуют которых выходные сценарии?

Например, выходной сценарий блок # 1 выталкивает 65 байт данных в стеке, а затем пытается выполнить OP_CHECKSIG, который сразу же терпит неудачу в моей виртуальной машине и код ссылки для Bitcoin-Qt, потому что она требует там быть по крайней мере два аргумента в стеке.  

Что касается моего другого вопроса о «открытом ключе» части Bitcoin адресов, я обнаружил, что он использует вещь этой «эллиптической кривую Алгоритм цифровой подписи». То, что я не могу найти ссылку на то, как один преобразует двоичные данные для ключа в представлении ASCII; это было бы полезно для отладки.

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

Кто-нибудь знает о C / C ++ программы кто-то уже написал, что делает то, что я пытаюсь сделать здесь; просто ходить по блочно-цепи и отслеживать транзакции? Все эта кода база имеет ооочень ... много зависимостей, которые вы погрузитесь в crytographic ад, пытаясь расшифровать их.

Благодаря,

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

5 июля 2013, 7:26:38 PM   # 17
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

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

Что касается кода C ++, посмотрите на Оружейной базу кода, который был код, который делает именно то, что вы ищете в каталоге cppForSWIG. BlockUtils cppForSWIG. Должна быть функция называется parseEntireBlockchain чего-то подобного.
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

5 июля 2013, 7:28:13 PM   # 18
 
 
Сообщения: 1778
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Я думаю, я еще немного запутался в этой точке. Я начал писать парсер сценарий, но сценарии я стараюсь работать против него все вроде неполными. Входные скрипты обычно просто передавать данные в стеке, но не имеют фактические указания «делать» что-нибудь.
Это то, что выходные сценарии.
Эти сценарии тратить вытаскивать эти данные из стека и проверить с подписями.

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

5 июля 2013, 7:32:43 PM   # 19
 
 
Сообщения: 1148
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

Я думаю, я еще немного запутался в этой точке. Я начал писать парсер сценарий, но сценарии я стараюсь работать против него все вроде неполными. Входные скрипты обычно просто передавать данные в стеке, но не имеют фактические указания «делать» что-нибудь.

Выходные сценарии, как правило, для выполнения инструкции, такие как «OP_CHECKSIG», который требует, чтобы два элемента в стеке, но когда я получаю здесь, как правило, только один элемент в стеке; и я на ясно, что должно было быть выполнено до него.

Это намеренно.

Каждая сделка имеет половину сценария.

Вы запустите скрипт для входа, а затем запустить сценарий для вывода.

Стандартные скрипты адреса являются:

Выход: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
Вход: scriptSig: <сиг> <Публичных>

Вход запуска, а затем выход.

Таким образом, вывод говорит "Любой, кто может настроить стек так, что этот скрипт проверяет, можно провести эту монету",

Полные instuctions являются

OP_DUP: Скопируйте вершину стека
OP_HASH160: Нанести RIPE-160 в верхней части стека
<паб-ключ-хэш>: Нажмите это значение в стек
OP_EQUALVERIFY: Убедитесь, что верхние 2 значения на стеке одинаковы (и поп-музыки, и другое)
OP_CHECKSIG: Проверить подпись

Если запустить вход, он толкает 2 значения в стек

<сиг> <открытый ключ>

Это создает успешный пробег на выходе

OP_DUP: <сиг> <открытый ключ> <открытый ключ>
OP_HASH160: <сиг> <открытый ключ> ЗРЕЛЫЙ-160 (<открытый ключ>)
<паб-ключ-хэш>: <сиг> <открытый ключ> ЗРЕЛЫЙ-160 (<открытый ключ>) <паб-ключ-хэш>
OP_EQUAL_VERIFY: <сиг> <открытый ключ>   (Также проверено ЗРЕЛЫЙ-160 (<открытый ключ>) Был равен <паб-ключ-хэш>)
OP_CHECKSIG: проверяет, что сиг является действительной подписью с помощью открытого ключа

котировка
Я на самом деле не понимая, я думаю, как входные сценарии совпадают с выходными сценариев и как текущее состояние стека сохраняется; Я имею в виду вы любите работать входной скрипт; который толкает некоторые вещи в стеке для вывода сценария, или наоборот? И, если да, то как вы знаете, какие входные сценарии соответствуют которых выходные сценарии?

Хорошо, каждый наполовину.

котировка
Что касается моего другого вопроса о «открытом ключе» части Bitcoin адресов, я обнаружил, что он использует вещь этой «эллиптической кривую Алгоритм цифровой подписи». То, что я не могу найти ссылку на то, как один преобразует двоичные данные для ключа в представлении ASCII; это было бы полезно для отладки.

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

5 июля 2013, 7:54:06 PM   # 20
 
 
Сообщений: 82
Цитировать по имени
цитировать ответ
по умолчанию Re: Bitcoin blockchain синтаксический анализатор в несколько (тысяч) линий C ++

>>Вы запустите скрипт для входа, а затем запустить сценарий для вывода.

Хорошо, я уже спросил в этой теме, как входные и выходные сценарии связаны друг с другом, и я не получил четкий ответ.


В заголовке транзакции есть (n1) входные сценарии и (n2) сценарии выдачи; как я знаю, какие входной скрипт для запуска на виртуальной машине до запуска конкретного вывода сценария?

Благодаря,

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW