Привет Bitcointalk!
Я хотел бы спросить совета о том, как лучше контролировать и следить за Транзакции. Я уверен, что это было говорили о многом, прежде чем так что не стесняйтесь указывать мне другие потоки тоже.
Мы разрабатываем централизованную, "объединенный", Веб-кошелек-эск сервис. Централизованный, объединяли характер этой системы имеет решающее значение, поскольку это позволит вне blockchain сделки и, таким образом, может поддерживать микро-транзакции (не имея дело с относительно высоких сборов шахтерских для отдельных операций).
Нам нужно будет отслеживать входящие транзакции Bitcoin на основе каждого адреса (зачислить соответствующую учетную запись / пользователя). Кроме того, необходимо, чтобы иметь возможность отслеживать все исторические операции (в случае необходимости восстановить или проверить прошлое Bitcoin сделок.
Сейчас мы используем фондовый 0.9.x bitcoind как горячий бумажник с помощью простого JSON RPC вызовов осуществить это. В частности, мы регулярно опрашивает listtransactions RPC в "выгружаемый" Манера следить за новые входящие и подтвержденные сделки. Эти Bitcoin операции отражаются в другой базе данных, в результате чего счета зачисляются и списывается соответственно на основе изменений blockchain. Опрос является "умная" в том, что он принимает только действие на новых сделках он не видел раньше, и будет продвигаться только к следующему listtransactions "страница" если надо. Это попытка сохранить накладные расходы опроса как можно ниже и быть быстрым и быстрым. До сих пор это, кажется, работает достаточно хорошо, и код мал и легко следовать.
У нас есть планы по интеграции с walletnotify Команда для дальнейшего уменьшения нашего опроса на Dependance, но ядро listtransactions мониторинг, что будет по-прежнему использоваться, даже если walletnotify используется для запуска его.
Наш первоначальный подход должен был сделать все вручную. По существу, повторно реализовать бумажник с помощью getrawmempool, getrawtransaction, getblock, и т.д., и вручную отслеживать соответствующие UTXOs, частные хранения ключей и условное депонирование, генерацию транзакций и т.д. В то время как мы получили довольно близко мы обнаружили, что есть так много дел краев вокруг получения полной реализации бумажника правильных (действительный сделка / TxN скриптов, malleated txns, вильчатые /, подтверждения реорганизации; и т.д.), и мы столкнулись с проблемами производительности, имеющими разобрать весь blockchain над RPC вызовами. Ставки высоки (реальные люди с трудом заработанных денег), и не хотят, чтобы наша неопытность, чтобы положить, что в опасности. Мы сейчас думаем, что это быстрее и намного безопаснее для нас, чтобы полагаться на кошельке эталонного клиента, поскольку он уже обрабатывает все, что и хорошо протестирована и т.д.
Поэтому я хотел бы спросить: это разумный подход? Существуют ли большие нет нет с этим, что мы здесь делаем? Любые вопросы масштабируемости с какой-либо из этого? Мы надеемся, что в масштабе где-то между 10 000 до 100 000 пользователей, или так, используя один bitcoind экземпляр, который предполагает 50 000 до 500 000 Bitcoin адресов, возможно, несколько сотен тысяч транзакций и т.д. Являются ли эти цифры выполнимым со стандартным Bitcoind? Предположим, нам необходимо спроектировать более обычая, масштабируемую архитектуру (или, возможно, масштаб по горизонтали с помощью bitcoind) в будущем. Возможно, на основе Bitpay Insight или что-то вроде этого. Но, чтобы получить нашу идею функционирования и от земли, это делает это, кажется, как работоспособный, надежный, разумный и безопасный подход?
Мы очень обеспокоены безопасностью. Мы будем использовать зашифрованный кошелек для всего этого, но это, кажется, трудно защитить ключевую фразу достаточно хорошо в системе так, чтобы это не тривиально, чтобы взломать (предполагая, что злонамеренный пользователь имел доступ к серверу (ов)), делая что-то как проксировании bitcoind RPC трафик и уплетая разблокировать ключевую фразу только один пример. Мы будем использовать горячие / холодный бумажник сложенных резервов для смягчения вектор атаки горячей кошелек. Но есть что-нибудь еще, что может быть сделано? Имеет ли шифрование бумажника поддержки OTP или любая другая аутентификация вызова на основе? Любые другие советы в целом на том, как можно более безопасным с walletpassphrase RPC? Одна мысль у нас было иметь транзакции отправки bitcoind только. То есть bitcoind мониторинг TXN имеет syncrhonized бумажник (как-то), но он никогда не разблокирует его - система для отправки Bitcoin полностью отличается, специально построенный, и из-за того, что это векторы атаки может быть лучше контролируется. Но не уверен.
Мы не имеем тонну опыта с Bitcoin или Bitcoind так хотел привлечь вас прекрасные люди с нашей мысли процесса здесь.
Спасибо за любую помощь!