Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
25 сентября 2011, 5:27:22 AM   # 1
 
 
Сообщения: 784
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

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


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

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

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

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


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


25 сентября 2011, 5:32:25 AM   # 2
 
 
Сообщения: 2352
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

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





Я хотел бы написать что-то, что делает такие же вещи, как blockexplorer

 - http://bitcointalk.org/index.php?topic=22785.0
 - http://github.com/jtobey/bitcoin-abe
Стивен Gornick сейчас офлайн Пожаловаться на Stephen Gornick   Ответить с цитированием Мультицитирование сообщения от Stephen Gornick Быстрый ответ на сообщение Стивен Gornick

25 сентября 2011, 5:45:20 AM   # 3
 
 
Сообщения: 784
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

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

25 сентября 2011, 9:51:58 AM   # 4
 
 
Сообщения: 784
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

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

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

26 сентября 2011, 2:58:06 PM   # 5
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

Забавно, что ты поднимаешь это. Я только что получил мою реализацию Python / C ++ / глоток blockchain сканирования на месте, вчера. Вы можете получить доступ к нему Вот.

Он успешно читает весь blockchain в ОЗУ (в то время как blockchain еще достаточно мало, чтобы поместиться там), населяет карты blockheaders / хэш и передатчики / хэш, и даже сделать свежее сканирование всего бумажника найти весь txouts / txins и вычисление остатков. Библиотека питона имеет подписи, проверку и адресные расчеты ECDSA, но не очень хорошо в сканировании blockchain именно поэтому я сделал это в C ++ и потянул его в питон с SWIG. Я только что закончил некоторые испытания прошлой ночью: Я могу сделать все сканирование, blockchain организацию, индексирование и противовесов бумажника / unspenttxouts с нуля в около 30-х годов (который довольно хорошо, учитывая blockchain в настоящее время 600MB +).

EDIT: Я не оговорился, когда я сказал, "бумажник": Я не говорю об официальных кошельке файлах BTC, я говорю о создании объекта C ++ BtcWallet наполняющего его с 20-байтным хэшируются-ОткрытыйКлюч адреса.

Все инструменты есть и в основном проходят. В настоящее время, существует "unittest.py" файл, который должен продемонстрировать большую часть кода питона, который есть, BlockUtilsTest.cpp, чтобы увидеть, как использовать C ++ код и testswig.py для примеров на смешивание двух. Makefile имеет "делать" для создания C ++ кода, и "сделать большой глоток" запустить глотнул и компилировать общий объект. Это все в Linux, но я побежал и тестирование кода C ++ (в одиночку) в Windows XP с МСВС 2010.

Это то, что я искал 2 месяца назад, и решил сделать это сам. Святой ад это был образовательный!    

-Eto

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

26 сентября 2011, 6:05:58 PM   # 6
 
 
Сообщения: 784
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

Это звучит довольно удивительно. Я буду смотреть на него. Как это ручка, когда блок цепь слишком большая для оперативной памяти? Будет ли она работать с малым объемом памяти в настоящее время или в том, что в будущем улучшения. Использование Abe мне потребовалось несколько часов, чтобы читать в sqlite3 и занимает около 1,5 ГБ на диске. Я еще не исследовал, как я могу использовать эту sqlite3 БД.

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

26 сентября 2011, 6:36:41 PM   # 7
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

Да очень доволен его производительность. Он использует около 1,2 ГБ оперативной памяти, чтобы держать все, и это скорость происходит от идеи копирования всего blockchain в ОЗУ в одной операции копирования (120MB / s для моего жесткого диска), а затем, используя только ссылку и указатели на места в этом фрагменте данные для всего остального - устраняет необходимость внешних операций копирования.

На данный момент, эта реализация FullRAM был самый простой способ для меня, чтобы сделать все (и самый быстрый), и совершенно нормально, по крайней мере год (на данный момент, это для собственного использования, и у меня есть 8 ГБ оперативной памяти). Таким образом, я реализовал его с объектами BlockObjRef ссылаться на оперативную память, но позже может быть обновлен для ссылки местоположения файлов вместо ОЗУ. Тогда, когда blockchain слишком большой, я могу сделать мое первоначальное сканирование на куски и оставить большую часть данных на диске, извлекая его по требованию. Карты заголовков и ТХ хэши / рефов не будет вписываться в оперативной памяти без проблем в течение очень долгого времени.

Имейте в виду, что есть некоторая кривая обучения на пути я организовал вещи. Но я не знаю ни одного полного BTC реализации, что бы избежать этого (BTC осложнено ...). Все проходит в картах указателей / ссылок - вы Можно получить от какой-либо одной части информации к другому, он просто может занять несколько прыжков через память. К счастью, SWIG обрабатывает указатели / ссылки очень хорошо. Я не играл с ним слишком много (только что получил это работает вчера), но до сих пор я не нашел каких-либо проблем с ней.

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


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

26 сентября 2011, 7:18:50 PM   # 8
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

Очень круто etotheipi.

Вы пробовали с помощью ММАПА () на страницу blockchain файла в оперативную память, а не копировать его в явном виде? Операционные системы, как правило, очень хорошо оптимизированы для доступа к ММАПУ () 'эд файлов.
Гэвин Андресен сейчас офлайн Пожаловаться на Гэвин Андресен   Ответить с цитированием Мультицитирование сообщения от Gavin Andresen Быстрый ответ на сообщение Гэвин Андресен

26 сентября 2011, 7:52:19 PM   # 9
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

Gavin, что это очень хорошая идея. Я никогда даже не слышал о ттаре (), но это звучит как очень полезный инструмент. На самом деле, у меня были некоторые проекты на работе, где это возможно, было очень полезно. Почему ты не сказал мне об этом раньше ?! (И, видимо, он работает для межпроцессного общения? И полезно!)

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

26 сентября 2011, 11:01:39 PM   # 10
 
 
Сообщения: 574
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

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

27 сентября 2011, 5:37:40 AM   # 11
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

BkkCoins,

Я думал о том, что вы сказали, что вы хотели библиотеку. Я понял, что я не есть хороший способ, чтобы найти отправителя данного входа: отправитель не всегда идентифицируется в TxIn, так что вы должны использовать BlockDataManager пойти найти TxOut. В любом случае, я раздавил ошибку и добавили некоторые методы, чтобы сделать это намного проще, безусловно, стоит обновление, если вы уже проверили его. (И если вы предпочитаете этот инструмент над genjix ... Я уверен, что его база данных SQL будет легко получить доступ в питоне, тоже).

Вот некоторые примеры кода Python, чтобы вы начали с моим кодом, если вы планируете использовать его (это разбросано по всему testswig.py, но я извлек важные детали).

Код:
от пути импорта SYS
path.append ( «..») # Я бегу это из каталога cppForSwig
от pybtcengine импорта *
от даты и времени импорта DateTime
от BlockUtils импорта *

# Создание BlockDataManager, сканирование цепи, организовать заголовки блоков
БДМ = BlockDataManager_FullRAM.GetInstance ()
bdm.readBlkFile_FromScratch ( '../ blk0001.dat') # точка это ваш blkfile !!!
bdm.organizeChain ();

# В этот момент все blockheaders и TXS загружаются в память.
# Можно получить доступ мгновенно хэша или по высоте
# Получить блок 100,014, потому что у него есть 6 разнообразно Tx
someBlk = bdm.getHeaderByHeight (100014)

# Вспомогательный метод для преобразования времени заголовка в довольно формат
Защиту unixTimeToFormatStr (UnixTime, formatStr = '% Y-% b-% d% I:% M% р'):
   dtobj = datetime.fromtimestamp (UnixTime)
   dtstr = dtobj.strftime (formatStr)
   вернуться dtstr [: - 2] + dtstr. [-2:] ниже ()

# Другой помощник для преобразования значения сырого, 20-байтовых адресов в Base58
Защиту hash160ToAddr (hash160):
   б = PyBtcAddress (). createFromPublicKeyHash160 (hash160)
   вернуться b.getAddrStr ()

# Переход к печати отправителей, получателей
печать 'TxList для блока #', someBlk.getBlockHeight ()
topTxPtrList = someBlk.getTxRefPtrList ()
печать 'NumTx:', длина (topTxPtrList)
для txptr в topTxPtrList:

   # Печатает тупоконечник, потому что мы хотели, чтобы иметь возможность поместить его в BlockExplorer проверить
   печать '\ NTX:', binary_to_hex (txptr.getThisHash () ToString (), BIGENDIAN.) [: 16],

   # Каждый Tx имеет указатель на заголовок блока он включен в
   blkHead = txptr.getHeaderPtr ()
   печать 'Blk:', blkHead.getBlockHeight (),
   печать 'Отметка:', unixTimeToFormatStr (blkHead.getTimestamp ())

   # Печать TxIns
   для я в диапазоне (NIN):
      txin = txptr.getTxInRef (я)
      если txin.isCoinbase ():
         печать '\ tSender:', '».center (34),
         печать 'Значение: 50 [вероятно]';
      еще:
         печать '\ tSender:', hash160ToAddr (bdm.getSenderAddr20 (txin) .ToString ()),
         печать 'Value:', coin2str (bdm.getSentValue (txin))
        
   # Печать TxOuts
   для я в диапазоне (Нут):
      txout = txptr.getTxOutRef (я)
      печать '\ tRecip:', hash160ToAddr (txout.getRecipientAddr () ToString ().),
      печать 'Value:', coin2str (txout.getValue ())



Вы, наверное, можно построить свои полотна BTC довольно легко комбинируя звонки сверху. Если у вас есть проблемы, убедитесь, что вы передаете двоичные формы, а не гекс, и превращали ли вы к или от объекта BinaryData. Все методы требуют питона двоичный питон строки. Все методы C ++ / SWIG требуют объекты BinaryData (создание с BinaryData (pyBinaryStr) и обратно через bindata.toString ()).

-Eto

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

1 октября 2011, 6:31:46 PM   # 12
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Как создать блок инструмент запроса (питон / C ++)?

FYI: Я официально выпустила свой код под v3 AGPL. Моя нить об этом здесь:  

В примере кода показано, как сделать все, что вы хотели (@BkkCoins), для обновления файла blockchain в режиме реального времени, за исключением. Однако, это занимает около 20 лет, чтобы перезарядить и пересканировать blockchain, так что вы можете установить свой код для вызова BlockDataManager.Reset () затем BDM.readBlkFile_FromScratch () снова, периодически.



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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW