<p>You can use the <code>importaddress</code> functionality to make the Bitcoin Core wallet (bitcoind or bitcoin-qt) treat certain addresses as its own, even though it does not have the key for them.</p>

<p>This will make them appear in the outputs of RPCs like <code>listtransactions</code>, <code>getreceivedbyaddress</code>, <code>listunspent</code> and <code>getbalance</code>. It will also trigger notifications through <code>-walletnotify</code> and the recently added ZMQ mechanism.</p>

CC BY-SA 3.0
2016-05-03T07:10:37.070Z
2016-05-03T07:10:37.070Z
Pieter Wuille
<p>I think that using Bitcoin Core <code>importaddress</code> may be good solution. </p>

<p>However if you don't want to sync whole blockchain you may use Electrum and it's JSONRPC interface: <a href="http://docs.electrum.org/en/latest/merchant.html#jsonrpc-interface" rel="nofollow noreferrer">http://docs.electrum.org/en/latest/merchant.html#jsonrpc-interface</a> </p>

CC BY-SA 3.0
2018-02-16T12:34:31.690Z
2018-02-16T12:34:31.690Z
Jaro
<p>I use <a href="https://block.io" rel="nofollow">block.io API</a> to detect zero confirmation incoming transactions on <a href="https://libertymusicstore.net" rel="nofollow">Liberty  Music Store</a>. block.io can monitor transactions for your own wallet or you can subscribe to arbitrary bitcoin addresses.</p>

<p>The trade off is between easy and fast confirmations - block.io has robust webhooks, distributed bitcoin nodes and easy API allowing detecting transactions faster than running a single node yourself. A single node is safer in the point of view you cannot trust third parties with your transactions. Furthermore running a full node is resource intensive as blockchain data is several gigabytes and mempool too.</p>

CC BY-SA 3.0
2015-12-05T03:54:16.407Z
2015-12-05T03:54:16.407Z
Mikko Ohtamaa
<p>The main purpose is to have "payment done" confirmation as fast as possible, within  some seconds.</p>

<p>First option is to implement it myself. Now I have the following implementation based on querying Bitoin-qt from .NET API:
I receive all new transaction IDs using <em>getrawmempool</em> and then iterate through each of them to get details using <em>getrawtransaction</em> to find transactions with addresses I want to monitor.</p>

<p>2 years ago it used to work well, but now I see it performs slower and slower.
So, I think bitcoin-qt + .NET API is not the approach which can increase monitor time.</p>

<p>Another option is to use third-party services, like blockchain.info, which can be used in my (commercial) application.</p>

CC BY-SA 3.0
2015-12-04T16:52:45.300Z
Remember that zero-confirmation is dangerous and it does NOT mean "payment done". Checking transactions using your own node is better than using third parties, as you don't need to trust anyone. ( Using bitcoind running in the background instead of bitcoin-qt GUI might make more sense.) On the other hand, you might want to ALSO use third parties to try to make use of their multiple nodes located in different places around the world and hope that you can detect any double spends that way. But even then: zero-confirmation IS dangerous!
Jannes
CC BY-SA 4.0
2018-08-04T14:22:57.677Z
Yes be very carful with zero-confirmations. I'd recommend a third-party service for this, I've personally used both https://www.blockchainwebhooks.com/ and https://www.blockcypher.com/ - Blockcypher has more detail, but BlockchainWebHooks is much more affordable (although both have free plans)
sizzlecookie
<bitcoin-core><raw-transaction>
What is the best way to monitor non-wallet addresses for new transactions
Alex
# What is the best way to monitor non-wallet addresses for new transactions

(Asked by: username_0 on 2015-12-04)

The main purpose is to have "payment done" confirmation as fast as possible, within some seconds.

First option is to implement it myself. Now I have the following implementation based on querying Bitoin-qt from .NET API:
I receive all new transaction IDs using *getrawmempool* and then iterate through each of them to get details using *getrawtransaction* to find transactions with addresses I want to monitor.

2 years ago it used to work well, but now I see it performs slower and slower.
So, I think bitcoin-qt + .NET API is not the approach which can increase monitor time.

Another option is to use third-party services, like blockchain.info, which can be used in my (commercial) application.

**Tags:** bitcoin-core, raw-transaction

> **Comments:**
> **username_1**: Remember that zero-confirmation is dangerous and it does NOT mean "payment done". Checking transactions using your own node is better than using third parties, as you don't need to trust anyone. ( Using bitcoind running in the background instead of bitcoin-qt GUI might make more sense.) On the other hand, you might want to ALSO use third parties to try to make use of their multiple nodes located in different places around the world and hope that you can detect any double spends that way. But even then: zero-confirmation IS dangerous!  
> **username_2**: Yes be very carful with zero-confirmations. I'd recommend a third-party service for this, I've personally used both https://www.blockchainwebhooks.com/ and https://www.blockcypher.com/ - Blockcypher has more detail, but BlockchainWebHooks is much more affordable (although both have free plans)  

---

## 3 answers

### Answer by username_3 on 2016-05-03. Score: 3

You can use the `importaddress` functionality to make the Bitcoin Core wallet (bitcoind or bitcoin-qt) treat certain addresses as its own, even though it does not have the key for them.

This will make them appear in the outputs of RPCs like `listtransactions`, `getreceivedbyaddress`, `listunspent` and `getbalance`. It will also trigger notifications through `-walletnotify` and the recently added ZMQ mechanism.


---

### Answer by username_4 on 2018-02-16. Score: 0

I think that using Bitcoin Core `importaddress` may be good solution.

However if you don't want to sync whole blockchain you may use Electrum and it's JSONRPC interface: <http://docs.electrum.org/en/latest/merchant.html#jsonrpc-interface>


---

### Answer by username_5 on 2015-12-05. Score: 0

I use [block.io API](https://block.io) to detect zero confirmation incoming transactions on [Liberty Music Store](https://libertymusicstore.net). block.io can monitor transactions for your own wallet or you can subscribe to arbitrary bitcoin addresses.

The trade off is between easy and fast confirmations - block.io has robust webhooks, distributed bitcoin nodes and easy API allowing detecting transactions faster than running a single node yourself. A single node is safer in the point of view you cannot trust third parties with your transactions. Furthermore running a full node is resource intensive as blockchain data is several gigabytes and mempool too.


---

