Предположим, я динамически — через командную строку/RPC — создал адрес или payment_query в Electrum. И сохранил его данные в базе данных вместе с количеством биткойнов, которые я ожидаю получить.
Как тогда проверить/опросить, поступило ли такое количество биткойнов на этот адрес? Также через командную строку/RPC.
Я не хочу получать уведомления от Electrum, я хочу сам опросить демона Electrum. Следовательно, обратный вызов HTTP-запроса, который Electrum может отправить на URL-адрес, не является вариантом, который я ищу. Кроме того, на данный момент у меня нет локального блокчейна. Хотя, может, позже добавлю.
Есть несколько способов, в зависимости от того, что вы используете. Если вы хотите запросить демон - нужно предположить, что вы используете 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», а затем очищаете кошелек, отправляя его. на другой кошелек и ждать следующего платежа
Затем вы можете использовать эти данные, чтобы инициировать «сделать что-нибудь», как в примере с электронной почтой в приведенной выше ссылке из среднего примера.
Только что узнал, как искать баланс адресов с помощью Electrum RPC:
{"id":"myquery","method":"getaddressbalance","params":["14vuRY354EaxDu4WrgjtvoDEwntDNwMVbx"]}
--cookie=mynode:mypassword
, можно ли поделиться командой curl, добавив также этот файл cookie для отправки запроса? Было бы здорово.Ответ Джирико правильный. Должен убедиться, что вы указали адрес, который вы запрашиваете, в параметрах.
Если вам нужна более подробная информация, чем просто баланс, вы также можете получить историю адресов.
{"id":"myquery","method":"getaddresshistory","params":["14vuRY354EaxDu4WrgjtvoDEwntDNwMVbx"]}
Вы можете найти список команд здесь: Введение в консоль Electrum Python.
Джирико