Отправная точка для прослушивания сетевых транзакций биткойнов в Python

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

Мне не нужно хранить весь блокчейн, да я и не хочу. Закрытые ключи также не находятся на той же машине из соображений безопасности. На этой машине нет кошелька, просто список адресов в БД.

На данный момент я реализовал это с помощью веб-хуков из blockchain.info, а также протестировал с помощью blocktrail. Это работает, но недостаточно быстро для достижения моих целей, эти решения слишком медленные, чтобы быть практичными. Мне нужно, чтобы меня немедленно уведомили.

Я рассмотрел несколько вариантов, но ни один из них не подходит в качестве хорошей отправной точки. (БиткойнJ кажется самым близким, но он на Java). Я не могу поверить, что такой вещи не существует, я просто не мог ее найти.

Итак, вы можете направить меня в правильном направлении?

Ответы (3)

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

Текущая masterверсия Bitcoin Core (и готовящаяся к выпуску в конце года версия 0.12) содержат интерфейс ZMQ, который дает вам доступ к подтвержденным транзакциям в режиме реального времени. Полный узел (урезанный) может работать всего на 2 ГБ и не требует больших ресурсов для тех, кто занимается бизнесом. Пример кода для этого доступен на github как zmq_sub.py , который должен помочь вам начать работу, просто имейте в виду, что ZMQ не имеет гарантии доставки, некоторые сообщения могут быть скрыто удалены, если есть проблемы с подключением.

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

Я не смотрел на проблему таким образом. Это очень верно, что вы говорите. Мне нужны проверенные транзакции, и мне нужно больше нуля подтверждений, да. НО, чего я пытаюсь добиться, так это того, чтобы клиент мог заплатить мне в магазине в нашем POS. Я не могу сказать моему клиенту, подождите пару минут, пока я не получу x подтверждений. Он привык к мгновенной проверке своей дебетовой/кредитной карты. Я думаю, мне нужно будет реализовать уровни суммы по сравнению с подтверждениями, например, стоимость менее 10 долларов = 0 конф, 100 долларов = 1, ... и 10 000 долларов + = 6 конф.
Вы не можете безопасно сделать это с биткойном, он не предназначен для этого. Притворство в противном случае может оставить вам неограниченное количество денег из кармана, компании потеряли сотни тысяч долларов из-за очень простых атак против транзакций с нулевым подтверждением. Возможно, с каналами оплаты в будущем мгновенные транзакции с биткойнами могут быть вариантом, но не сегодня.
OT Danger: Я хочу помочь сделать крипто мейнстримом. Я основатель Ieper bitcoincity www.ieperbitcoinstad.be и участвую в аналогичном проекте в Кортрейке, оба в Бельгии. Для этого мы не можем использовать альткоин, который мог бы решить эти проблемы. Все люди знают, что сейчас это Биткойн. Они где-то об этом слышали. Мы информируем людей о наших инициативах. Чтобы сдвинуть дело с мертвой точки, я хотел предложить владельцам магазинов платформу для приема BTC и зачисления евро на их счета, такие как bitpay и bitkassa, только местные, бельгийские, надежные. Цель состоит в том, чтобы помочь переходу. Как они это делают тогда?
Долгосрочная цель моей платформы заключается в том, чтобы владельцы магазинов сказали: «Эй, мне больше не нужно конвертировать в евро, я могу платить своим поставщикам в BTC». Это может создать устойчивую экосистему. Я сравниваю BTC с интернетом в 93-м. Люди задавались вопросом, что означает этот http или @ и тому подобное. Теперь мы пионеры финансовой революции. Революции рискованны ;-) Я никогда не уклонялся от (просчитанных) рисков. Я не собираюсь банкротиться, но полная безопасность в любом случае — это иллюзия в бизнесе. Спасибо за ваш приветственный вклад, сэр, я очень ценю это.
Но благородство не решает технических проблем

В итоге я выбрал The websocket API от Blockchain в сочетании с клиентом websocket на python от Hiroki Ohtani . Этот механизм действительно мгновенный и кажется стабильным и удобным в использовании. Тем не менее, у меня все еще есть опасения по поводу необходимости класть яйца в одну корзину. Итак, я дважды проверяю, а также использую API веб-хуков Blocktrail .

Эта система по-прежнему не дает мне 100% надежной защиты, но я могу жить с этой настройкой, пока не появится лучшая система или я не смогу сделать что-то лучше.

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

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

Но как узнать, подтвердилось ли это? И, в связи с этим, если это не подтверждено, как вы узнаете, действительно ли это?