Проверка/опрос баланса адреса в Electrum через командную строку/RPC

Предположим, я динамически — через командную строку/RPC — создал адрес или payment_query в Electrum. И сохранил его данные в базе данных вместе с количеством биткойнов, которые я ожидаю получить.

Как тогда проверить/опросить, поступило ли такое количество биткойнов на этот адрес? Также через командную строку/RPC.

Я не хочу получать уведомления от Electrum, я хочу сам опросить демона Electrum. Следовательно, обратный вызов HTTP-запроса, который Electrum может отправить на URL-адрес, не является вариантом, который я ищу. Кроме того, на данный момент у меня нет локального блокчейна. Хотя, может, позже добавлю.

Я тоже хотел бы это знать. Если вы что-то получили, пожалуйста, обновите эту тему.

Ответы (3)

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

Вы не хотите и не нуждаетесь в "адресном балансе" - вам нужен баланс ВАШЕГО кошелька

На этот вопрос уже частично ответили здесь => Как можно отслеживать адрес для транзакции и 1 подтверждение в PHP?

Однако лучший способ - использовать то, что рекомендуют документы Electrum - такой вызов curl =>curl --data-binary '{"id":"curltext","method":"getbalance","params":{"funded":true}}' http://127.0.0.1:7777

Если вы используете PHP, это будет выглядеть примерно так:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1:7777");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"id\":\"curltext\",\"method\":\"getbalance\",\"params\":{\"funded\":true}}");
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

Вы можете сделать это внутри try-catch и запустить его с помощью задания cron, работающего с любым интервалом, который вы хотите проверить.

Что возвращается, так это файл JSON-RPC, который вы можете декодировать в массив

$result =  json_decode($response, true);

и подключите это к другой переменной для одной вещи или вещей, над которыми вы хотите работать оттуда

$wanted = $result["result"]["xxxxxxxxx"];

любой из параметров может быть передан как переменная вызову curl

например, чтобы добавить запрос, это будет выглядеть так:

curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"id\":\"curltext\",\"method\":\"addrequest\",\"params\":{\"amount\":\"$how_much\",\"memo\":\"$your_memo->some_data_field\"}}");

Вам просто нужно запустить команду «getbalance» — или любую другую — посмотреть, что она возвращает, и настроить свой код, чтобы получить возвращаемое значение из «результата» — вы просто проверяете значение больше «0», а затем очищаете кошелек, отправляя его. на другой кошелек и ждать следующего платежа

Затем вы можете использовать эти данные, чтобы инициировать «сделать что-нибудь», как в примере с электронной почтой в приведенной выше ссылке из среднего примера.

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

Только что узнал, как искать баланс адресов с помощью Electrum RPC:

{"id":"myquery","method":"getaddressbalance","params":["14vuRY354EaxDu4WrgjtvoDEwntDNwMVbx"]}
Привет, у меня есть сервер электрум (электры по блочному потоку), работающий с этим параметром --cookie=mynode:mypassword, можно ли поделиться командой curl, добавив также этот файл cookie для отправки запроса? Было бы здорово.

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

Если вам нужна более подробная информация, чем просто баланс, вы также можете получить историю адресов.

{"id":"myquery","method":"getaddresshistory","params":["14vuRY354EaxDu4WrgjtvoDEwntDNwMVbx"]}

Вы можете найти список команд здесь: Введение в консоль Electrum Python.

Я только что попробовал и получил: {"result": [], "id": "curltext", "error": null}, так как пробовал по пустому адресу. Какую версию Электрума вы используете?