Принимать биткойн-платежи без полного блокчейна или сторонних API?

Я хочу создать базовую программу/скрипт, который использует биткойн-платежи, но у меня нет места для хранения для синхронизации со всей цепочкой блоков, и я не хочу зависеть от стороннего API, такого как предлагаемые цепочкой блоков. .info или block.io.

По сути, мне нужен кошелек со следующими тремя свойствами:

  • Легкий (т.е. не требует полного блокчейна)
  • Имеет интерфейс командной строки для генерации и возврата адреса получателя по команде
  • Имеет CLI для получения общего баланса кошелька

Я смутно знаком с тонкими клиентами, такими как Electrum, MultiBitи MultiBit HD, и я знаю, что у Electrum даже есть CLI, но в их документации, похоже, ничего не говорится о создании новых адресов:

https://docs.electrum.org/en/latest/cmdline.html

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

В общем, я расстроен. Конечно, есть способ сделать то, что я пытаюсь сделать, и если нет очевидного решения, то почему бы и нет? Кажется нелогичным, что мне приходится использовать централизованные сервисы и API для базовой функциональности кошелька только потому, что я не могу позволить себе арендовать сервер с 90+ ГБ места для хранения блокчейна.

Начиная с Bitcoin Core 0.12, вы можете работать в режиме обрезки, при котором вы по-прежнему синхронизируете, полностью проверяете и загружаете все транзакции, но на диске сохраняются только последние блоки. Это позволяет запустить полностью проверяющий узел со всеми функциями CLI (кроме повторного сканирования) с дисковым пространством ~2 ГБ.
@PieterWuille отличное предложение! Не могли бы вы опубликовать это как ответ?

Ответы (2)

Если вы не хотите запускать узел или использовать какие-либо сторонние API, вы можете использовать библиотеку, так как вы хотите только принимать платежи.

Используйте расширенный открытый ключ из одного из ваших кошельков и сгенерируйте новые адреса из HD xpub с помощью библиотеки. Когда пользователь платит, он отображается в кошельке вашего телефона/ПК.

Например, с библиотекой Bitcore это будет:

var bitcore = require("bitcore-lib");

var pub = new bitcore.HDPublicKey('xpubMyHDPublicKey');
var derivedHdPublicKey = pub.derive('m/0/1'); 
//increment up the keychain m/0/2, m/0/3, etc each order
var derivedPublicKey = derivedHdPublicKey.publicKey;
var address = new bitcore.Address(derivedPublicKey);
console.log(address);

Тогда просто отслеживайте заказы и адреса в базе данных вашего сервера.

Это ты! Во время зимних каникул я купил копию вашей книги «Создание биткойн-сайтов» и сегодня смотрел несколько ваших видеороликов на YouTube из серии руководств по биткойн-JSON-RPC. Я планировал просто использовать аналогичную настройку для этого проекта, но это решение кажется еще проще. Спасибо за ответ, и более того, спасибо за весь ваш интерес и работу, направленную на то, чтобы сделать Биткойн более доступным для среднего разработчика. Ты рок человек!
Кроме того, знаете ли вы какие-либо подобные библиотеки для выполнения на стороне сервера (т.е. без JavaScript?)
Спасибо за положительный отзыв Рик! Bitcore lib — это серверная библиотека с nodejs, другой может быть bitcoinjs-lib ( npmjs.com/package/bitcoinjs-lib ). Я слышал, что bit-wasp для PHP тоже будет работать, но сам не пробовал.
Так что это может быть нубский вопрос, но как мне найти свой расширенный открытый ключ из кошелька, такого как биткойн-ядро?
Мне это нравится, но есть ли способ также подписать транзакцию и передать ее в сеть, не запуская собственный узел?

Mycelium Gear , вероятно, самый практичный способ. Хотя технически это третья сторона, деньги не проходят через них, и, следовательно, без KYC/AML, без цензуры и без комиссии. Mycelium Gear просто уведомляет вас о входящих платежах на основе xpubkey вашего HD-кошелька.

Кроме того, вы можете установить их программное обеспечение с открытым исходным кодом самостоятельно.