Я хотел бы создать скрипт Python, который прослушивает сеть биткойнов и отслеживает некоторые адреса, хранящиеся в базе данных mysql. Как только транслируется транзакция с одним из этих адресов в качестве вывода, скрипт должен запустить функцию.
Мне не нужно хранить весь блокчейн, да я и не хочу. Закрытые ключи также не находятся на той же машине из соображений безопасности. На этой машине нет кошелька, просто список адресов в БД.
На данный момент я реализовал это с помощью веб-хуков из blockchain.info, а также протестировал с помощью blocktrail. Это работает, но недостаточно быстро для достижения моих целей, эти решения слишком медленные, чтобы быть практичными. Мне нужно, чтобы меня немедленно уведомили.
Я рассмотрел несколько вариантов, но ни один из них не подходит в качестве хорошей отправной точки. (БиткойнJ кажется самым близким, но он на Java). Я не могу поверить, что такой вещи не существует, я просто не мог ее найти.
Итак, вы можете направить меня в правильном направлении?
Если вы просто прослушиваете транзакции в сети, не имея собственного проверяющего узла, у вас не будет абсолютно никакой возможности узнать, законны они или нет. У вас должен быть полностью проверяющий узел локально, в противном случае транзакции могут быть сфабрикованы без каких-либо затрат, чтобы потратить любую сумму денег где угодно. Если вы ошиблись, у вас нет выхода, именно поэтому никто не реализовал какую-либо проверку в Python, на Github есть различные биты протокола p2p , но он выполняет ровно нулевую проверку консенсуса для данных, которые он получает .
Текущая master
версия Bitcoin Core (и готовящаяся к выпуску в конце года версия 0.12) содержат интерфейс ZMQ, который дает вам доступ к подтвержденным транзакциям в режиме реального времени. Полный узел (урезанный) может работать всего на 2 ГБ и не требует больших ресурсов для тех, кто занимается бизнесом. Пример кода для этого доступен на github как zmq_sub.py , который должен помочь вам начать работу, просто имейте в виду, что ZMQ не имеет гарантии доставки, некоторые сообщения могут быть скрыто удалены, если есть проблемы с подключением.
Важно иметь в виду, что неподтвержденная транзакция не имеет гарантии подтверждения и может быть признана недействительной в любой момент времени. Принимать нулевые подтверждения крайне рискованно, хотя обновление пользовательского интерфейса списком неподтвержденных транзакций вполне разумно.
В итоге я выбрал The websocket API от Blockchain в сочетании с клиентом websocket на python от Hiroki Ohtani . Этот механизм действительно мгновенный и кажется стабильным и удобным в использовании. Тем не менее, у меня все еще есть опасения по поводу необходимости класть яйца в одну корзину. Итак, я дважды проверяю, а также использую API веб-хуков Blocktrail .
Эта система по-прежнему не дает мне 100% надежной защиты, но я могу жить с этой настройкой, пока не появится лучшая система или я не смогу сделать что-то лучше.
Спасибо всем за помощь, и я надеюсь, что этот ответ может послужить идеей/основой для ваших собственных биткойн-проектов!
Если у вас есть необработанная копия транзакции, вы можете повторно публиковать ее снова и снова, пока она не будет подтверждена. Даже при очень низкой комиссии за транзакцию в конце концов она должна быть подтверждена (но это может занять много времени).
Dдекоен
Кларис
Dдекоен
Dдекоен
Кларис