I am working on a app in which my project communicates with the bitcoin server to get the details of a transaction with transaction id as the parameter. I have bitcoind, bitcoin-cli and bitcoin-qt installed on my system. When I run the bitcoin-qt in regtest mode, I am able to create test transactions in which I can send money to an address and get the transaction id for the same. I use this transaction id in my app, I am able to get the transaction details from bitcoin-qt. The problem is, now my testing is limited to only outward transactions wherein I transfer bitcoins to another account. How can I create some test transactions wherein bitcoins are credited to my wallet?
You probably want to run multiple bitcoind
instances in regtest
to simulate multiple nodes.
Thats pretty easy. You can run a second instance by starting bitcoind with a clean data directory and a different RPC and P2P port.
For that, you could create a 2nd data directory (example: /tmp/datadir2
). Create /tmp/datadir2/bitcoin.conf
.
Use something similar than:
regtest=1
rpcuser=rt
rpcuser=rt
port=12340
rpcport=10340
discover=0
Now you need to connect your first node with your 2nd node by sending a addnode
over the RPC interface.
bitcoin-cli addnode 127.0.0.1:10340 onetry
You can than distinct between both nodes with the -datadir
argument while calling bitcoin-cli
.
bitcoin-cli -datadir=/tmp/datadir2/ getinfo
Some examples:
generate coins in first node (50 BTC available)
bitcoin-cli generate 101
get address from 2nd node
bitcoin-cli -datadir=/tmp/datadir2/ getnewaddress
send coins to 2nd node
bitcoin-cli sendtoaddress <address> 10.0
-
Thanks for the reply. I had done the exact same thing and got it running. I was setting the datadir on my host system to a separate directory when starting bitcoin-qt. This was somehow preventing my app from talking with bitcoin-qt. – plbit Aug 20 '15 at 9:28
-
After doing the above, when I do
getmempoolinfo
for the node that receives the transaction, it still shows 0. How do I send the transaction over. – thenakulchawla Aug 6 '18 at 18:38 -
1Maybe the received funds are not yet confirmed,... call a generate(1) again or try to list unconfirmed balance – Jonas Schnelli Aug 9 '18 at 10:39
-
I am trying to use the same above script but its adding the following error to the log 2019-01-10T12:35:51Z Binding RPC on address ::1 port 18443 failed. 2019-01-10T12:35:51Z Binding RPC on address 127.0.0.1 port 18443 failed. 2019-01-10T12:35:51Z Unable to bind any endpoint for RPC server 2019-01-10T12:35:51Z Error: Unable to start HTTP server. See debug log for details. 2019-01-10T12:35:51Z Shutdown: In progress... – Pankaj Kumar Jan 10 '19 at 12:37
-
1For the record, starting at 0.18 the command
generate
is deprecated and in 0.19 it will be completely removed. Usegeneratetoaddress
instead. – Thalis K. Apr 6 '19 at 18:22