Я выпускаю свой Python / C ++ / SWIG код в дикой природе под GNU Affero General Public License:
PyBtcEngine на Github по etotheipi
если вы в Linux / Ubuntu, вы можете легко скомпилировать и выполнить (Windows можно тоже, но это очень много работы, чтобы получить его компиляции):
РВЕ блок-исследователь демо.
В двух словах:
PyBtcEngine представляет собой вычислительный бэкенд, который можно было бы использовать в качестве отправной точки для Python на основе BTC инструменты & программного обеспечения. Она не включает в себя Любые сетевой код на всех, но имеет достаточно полный набор всего остального, не связанного с сетями. Большинство компонентов библиотеки сильно блок-тестирования, так что должна быть достаточная степень грубости встроенной.
Эта библиотека позволяет читать, сканировать и организовать весь blockchain, выполнять все операции ECDSA, оценить большинство сценариев, обнаружить Нестандартные скрипты, собрать остатки и списки Tx для кошельков / адресов, обнаружение / ручкой blockchain реорганизации изящно, и даже может быть используется для проверки ваших blk0001.dat для битовых ошибок. И это может сделать все это до смешного быстро! (См тайминги ниже). В своем нынешнем состоянии он идеально подходит для автономного BlockExplorer (в процессе), но может быть легко расширен на другие инструменты, или использовать для внутреннего интерфейса альтернативного клиента. Ниже более-полный перечень реализованных функций.
Ниже я скопировал "ПОЛОЖЕНИЕ ДЕЛ" раздел README, который показывает текущие возможности в каждом языке (которые объединены в SWIG):
Код:
************************************************** ******************************
* Статус: Последнее обновление - 28 октября 2011
* Условные обозначения:
* _ не реализована
*. реализован, но не тестировалось
* + Реализованы и частично протестированы
* X реализованы и протестированы
*
* C ++ Python SWIG
* ------------------------------------------------- --------------
* (01) Ser / Unser Блок Объекты Х Х Х
* (02) Hash160 / Hash256 X X X
* (03) Сложность Calcs X X X
* (04) Адрес Generation X X
* (05) Адрес Проверка / Manip X X
* ------------------------------------------------- --------------
* (06) BlkHeaders чтения / сканирования / орг Х Х Х
* (07) BlkHeaders X X реорганизации;
* (08) Blockchain чтения / сканирования / орг X X
* (09) Blockchain X X реорганизации;
* (10) Blockchain проверить целостность X X
* ------------------------------------------------- --------------
* (11) NonStd Ого Обнаружение + +
* (12) Сценарий pprint X X X
* (13) Сценарий OP_CHECKSIG X X
* (14 *) Произвольный сценарий Eval X X
* (15) ECDSA Вход / Проверка X X X
* ------------------------------------------------- --------------
* (16) Адрес / Wallet отслеживания X X X
* (17) Сканирование blkchain для Tx X X
* (18) Сканирование blkchain для NonStd X X
* (19) Reorg ж / двойной потратить X X
* (20) Добавить новый blockdata в реальное время X X
* ------------------------------------------------- --------------
* (20) SelectCoins для TX X X
* (21) Тх конструкт дали входы X X
* (22+) Distr Предложения для мульти-сига +
* (23) Те вещания
* (24) Tx плата обнаружения / расч / ручка X X
* (25) Blockchain скачать
+ см https://gist.github.com/1321518
* Все сценарии были реализованы, большинство из них проходит.
OP_IF / NOTIF / ELSE / ENDIF являются только коды еще не реализованы.
************************************************** ******************************
* Статус: Последнее обновление - 28 октября 2011
* Условные обозначения:
* _ не реализована
*. реализован, но не тестировалось
* + Реализованы и частично протестированы
* X реализованы и протестированы
*
* C ++ Python SWIG
* ------------------------------------------------- --------------
* (01) Ser / Unser Блок Объекты Х Х Х
* (02) Hash160 / Hash256 X X X
* (03) Сложность Calcs X X X
* (04) Адрес Generation X X
* (05) Адрес Проверка / Manip X X
* ------------------------------------------------- --------------
* (06) BlkHeaders чтения / сканирования / орг Х Х Х
* (07) BlkHeaders X X реорганизации;
* (08) Blockchain чтения / сканирования / орг X X
* (09) Blockchain X X реорганизации;
* (10) Blockchain проверить целостность X X
* ------------------------------------------------- --------------
* (11) NonStd Ого Обнаружение + +
* (12) Сценарий pprint X X X
* (13) Сценарий OP_CHECKSIG X X
* (14 *) Произвольный сценарий Eval X X
* (15) ECDSA Вход / Проверка X X X
* ------------------------------------------------- --------------
* (16) Адрес / Wallet отслеживания X X X
* (17) Сканирование blkchain для Tx X X
* (18) Сканирование blkchain для NonStd X X
* (19) Reorg ж / двойной потратить X X
* (20) Добавить новый blockdata в реальное время X X
* ------------------------------------------------- --------------
* (20) SelectCoins для TX X X
* (21) Тх конструкт дали входы X X
* (22+) Distr Предложения для мульти-сига +
* (23) Те вещания
* (24) Tx плата обнаружения / расч / ручка X X
* (25) Blockchain скачать
+ см https://gist.github.com/1321518
* Все сценарии были реализованы, большинство из них проходит.
OP_IF / NOTIF / ELSE / ENDIF являются только коды еще не реализованы.
************************************************** ******************************
Тайминги:
Текущая реализация держит все в памяти, и поэтому она занимает около 1,2 Гб оперативной памяти прямо сейчас. Я планирую улучшить это в будущем, но мой компьютер имеет 8 Гб, так что я не тороплюсь, чтобы сделать его более легким. С другой стороны, из-за этого, а также мой кропотливо-тщательное управление памятью, библиотека очень быстро. Вот тайминги, измеренные на одной нити с AMD Phenom X4 840 процессор с 8 Гб 1333 МГц DDR3.
- Читать полностью blockchain в памяти: 5s
- Сканирование всего blockchain, собирать заголовки / Txs: 10s
- Организация и найти самую длинную цепочку: 0.5с
- Проверьте целостность blkfile: 2.5s
- Получить весы / гроссбух для набора адресов / кошельков, с нуля: ~ 0.75s / бумажник
Да, вы можете загрузить, организовывать и просматривать все 600 МБ blockchain и найти сделки для данного кошелька в менее 20-х годов. Мое тщательное управление памятью гарантирует, что нет практически никаких посторонних операций копирования на любом этапе. Таким образом, часть кода немного сложнее, но никто не может сказать, что это не является быстро! Большая часть кода C ++ документирована в базовом каталоге, в файле, Using_PyBtcEngine.README. Существует также тонна пример / модульного тестирования кода, который будет иметь решающее значение для тех, кто хочет использовать его. В частности, три файла содержит примеры почти каждый доступный метод:
- (C ++) BlockUtilsTest.cpp
- (Python) unittest.py
- (Вместе) testswig.py
Последние обновления (08 Dec, 2011):
Разработка была раздвоена на оружейный который будет использоваться для клиента будет все виды новых, инновационных функций. Если вы ищете чисто питона инструменты / код для Bitcoin, держать после PyBtcEngine, но в противном случае перейти к оружейной. Я должен иметь развитие готового GUI и иметь альфа-клиент выпущен в конце года! (Несколько зашифрованных кошельков, адрес импорт, наблюдая только для кошельков, мульти-сиг ОГО и даже больше!)
Последние обновления (16 Nov, 2011):
- Добавлено множество функций нового C ++: обеспечить двоичную обработку данных, шифрование AES, подписание ECDSA и время-и-память переплетом функцию ключа деривации! Кошелек с помощью этой библиотеки теперь можно установить время целевой вычислительной и память для функции ключ-вывод для расшифровки секретных ключей (клиент Satoshi имеет только время переплете KDF)
- Добавлено сложное SelectCoins алгоритм, который на самом деле работает очень хорошо! Создано оценщик SelectCoins-решение, а затем бросил в несколько простых, несколько сложных алгоритмов выбора монет. И некоторые из них случайных. Оценщик SelectCoins дает каждому из них последовательность баллов, веса баллов по предпочтениям пользователя (значение по умолчанию), а затем выбирает наилучшее решение. Идея заключается в том, чтобы бросить в тонну решений, каждое из которых может быть лучше для начального стартового состояния. Какой бы ни один лучше на данный момент будет использоваться
- Started безопасного формата бумажник и сериализации. Буду ли с помощью простого двоичного формата для кошельков, со всеми данными зашифрованных с помощью AES-256, а также с помощью функции ключа деривации, который номинально занимает 0,5с вычислений и 8 МБ оперативной памяти на компьютере пользователя. Калибровка времени затрудняет грубую силу решения, и требование к памяти полностью обезоруживает графические процессоры от того, чтобы помочь с таким поиском.
- созданный BIP 0010 проактивно выяснить, как клиенты могут иметь дело с несколькими фирменными сделок. Концепция ядра "Tx Распределение предложения." Таким образом, я реализовал TxDPs и фактически сделал их основу для всех операций по сделке, даже для одного подписчиков сделок. Если закрытый ключ на вашем компьютере, он будет подписан и транслировать сразу. Если нет, то это даст вам TxDP, который может быть подписан на автономном компьютере без необходимости доступа к blockchain. Если несколько подписей требуется, TxDPs легко копируются ASCII блоки, которые включают в себя, чтобы быть встроенный в электронную почту или в виде вложений, и легко комбинируются при получении несколько подписей.
Я сделал все возможное, чтобы сделать этот код "годный к употреблению," то есть хорошо отформатированный код и много комментариев. К сожалению, Bitcoin является сложным, и поэтому только так можно сделать, чтобы сделать проще код, чтобы понять. Вы можете предложить рекомендации по улучшению его - но это много кода, поэтому каких-либо серьезных реорганизаций, вероятно, не произойдет, если вы не добровольно.
Лицензия:
GNU Affero General Public License v3 (AGPL) для этого проекта. Лицензия была выбрана, чтобы позволить пользователям использовать его бесплатно, если они планируют создать больше OSS, но требуют двойного лицензирования переговоров, если кто-то хочет использовать его с закрытыми исходными кодами. Пожалуйста, свяжитесь со мной, если вы заинтересованы.