Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: nuggetbram on September 23, 2014, 01:55:30 AM



Title: Identifying when new block is found on network
Post by: nuggetbram on September 23, 2014, 01:55:30 AM
I'm looking into controlling and/or reading the rpc-json output of bitcoin as a learning exercise. Is there a way to be notified of a new network block in the same way that cg or sgminer would output? I don't mind what language, as I've been using command line curl so far, but there obviously isn't a 'notifymeofanewblockinstantly' api call :)

A basic example to point me in the right direction would be excellent

thanks,

nuggetbram


Title: Re: Identifying when new block is found on network
Post by: -ck on September 23, 2014, 02:09:45 AM
See bitcoind's -blocknotify option.


Title: Re: Identifying when new block is found on network
Post by: TheFootMan on September 28, 2014, 09:38:40 PM
See bitcoind's -blocknotify option.

Yes, this is correct.

Assuming you use linux, run bitcoind, then in the configuration file (~/.bitcoin/bitcoin.conf) you could input something like:

blocknotify=/usr/myuser/scripts/block.sh %s

Then input whatever commands you want run in the script. The '%s' simply is the blockhash. So, every time your bitcoin daemon receives a new block, block.sh is run. Based on the blockhash, you could do all kinds of interesting stuff by using API-calls. Check this list: https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list

You can also use -walletnotify or walletnotify=/path/script %s in config file to run a command whenever you receive a transaction. I think it gets triggered for 0 and 1 conf for a tx. %s here being the txid.

Remember if you want to play around with this, that you do it on the testnet. Run bitcoind with -testnet switch. You could also use -addnode to add a testnet node. Google to find some active testnet nodes.

There are testnet faucets that will give you some testnet coins to play around with. You should use testnet because if you do something wrong, you do not lose money, and in addition you do not clutter the main chain with uncessary data. Imagine if every developer tested on the main chain..