8

Suppose, I've dynamically -- via the command line/RPC -- created an address or payment_query in Electrum. And saved its details in a database along with the amount of bitcoins I expect to receive.

How can then check/poll if that amount of bitcoins has arrived to that address? Also via the command line/RPC.

I don't want to be notified by Electrum, rather I want to poll Electrum daemon myself. Hence an http request-callback which Electrum can send to a URL isn't an option I'm looking for. Also, at the moment, I don't have a blockchain locally. Maybe later I'll add it, though.

1
  • I'd like to know this too. If you get something please update this thread.
    – Jirico
    Commented Aug 31, 2017 at 1:04

3 Answers 3

2

There are several ways depending on what you are using. If you are wanting to query the daemon - one must assume you are running a Linux box or VPS

You do not want or need an " address balance " - you need YOUR wallet balance

This question has already been partially answered here => How would one monitor an address for a transaction and 1 confirmation in PHP?

The best way however is to use what the Electrum docs recommend - a curl call like this => curl --data-binary '{"id":"curltext","method":"getbalance","params":{"funded":true}}' http://127.0.0.1:7777

If you are using PHP - it would look something like this:

$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);

You could make this inside a try-catch and trigger it by a cron job running at whatever interval you want to check

What comes back is a JSON-RPC file which you can decode into an array

$result =  json_decode($response, true);

and plug that into another variable for the single thing or things you want to work on from there

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

any of the parameters can be passed as a variable to the curl call

for instance to add a request it would go like this:

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

You just need to run a "getbalance " - or any - command see what it returns and adjust your code to pull the returned value from "result" - you just test for a greater than " 0 " and then empty the wallet by sending it to another wallet and wait for the next payment

You could then use that data to trigger a "do something" like the email example in the above link from the middle example there.

0
1

Just found out how to look for an address balance using Electrum RPC:

{"id":"myquery","method":"getaddressbalance","params":["14vuRY354EaxDu4WrgjtvoDEwntDNwMVbx"]}
1
  • Hi, I have an electrum server (electrs by blockstream) running with this parameter --cookie=mynode:mypassword would it be possible to share the curl command, adding also this cookie auth to send the request? Would be awesome.
    – firepol
    Commented Jul 23, 2020 at 22:29
1

Jirico's answer is the right one. Gotta make sure you put the address you're querying in params.

If you need more depth than just a balance, you can also getaddresshistory

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

You can find a list of commands here: An Introduction to the Electrum Python Console

1
  • I just tried it and I got: {"result": [], "id": "curltext", "error": null} since I tried it on an empty address. What version of Electrum are you using? Commented Oct 18, 2018 at 19:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.