К сожалению, этого не достаточно.
pynode это "полный узел" реализация. Она полностью проверяет все данные Bitcoin blockchain, включая сценарии и подписи ECDSA.
pynode использует OpenSSL / hashlib для всех шифровании и ECDSA, которые, конечно, С-модули на основе Python обертки.
Процессор профилирование pynode указывает на то, что подавляющее большинство процессорного времени - значительное, заметное замедление - происходит в простой структуры данных Python копирования. Bitcoin-х
SignatureHash Функция требует копирования всего CTransaction, изменяя его немного, то хэширование сериализованного результата.
Вы смотрели в использовании «» .join () или StringIO / FileIO вместо создания строки с простой конкатенации? Python намного лучше избегать п ^ 2 наивные неизменны конкатенации замедление, чем раньше быть - г + = Foo, например, обрабатывается как Append в месте большую часть времени - но, учитывая, что код сериализации в pynode является создание строки с кодом распространяются через множество функций и модулей вы можете быть побеждая, что оптимизация. В частности, я взял быстрый взгляд на 2,7 внутренностей и в то время как я могу быть недоразумением вещи, кажется, что если строка создается в другом модуле оптимизации изменения размера на месте отключена по какой-то причине.
Мое другое предложение было бы посмотреть в использовании
Cython. Грубо говоря, это Python компилятор, однако на самом деле вы должны написать Cython код, а не чисто-Python, чтобы получить преимущество. Компилятор выводит C-код, нацеленный на API Python C. Если вы знаете, что вы делаете это может быть каждый бит так же быстро, как чистый C-кода в то же время записывается в Python. Кроме того регулярный код Python можно использовать Cython скомпилированного модуля так же, как и любой другой чисто Python модуль так совместимость не является проблемой. Даже просто пишу часть Pynode в Cython бы вполне практично. Окна хорошо поддерживается BTW; научный питон проект SciPy использует Cython широко.
Кроме того, пока синтаксис довольно некрасиво Cython даже поддерживает способ декоратора на основе написания Cython. Таким образом, когда Cython установки не доступно, то вы можете использовать при условии чистого Python модуля заглушки, который просто игнорирует декоратор, позволяя запускать код без Cython доступен. Я не воспользовался этим себя - как я говорю синтаксис некрасиво - но я слышал, в некоторых случаях это может быть весьма полезным.