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?
1 Answer
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.– plbitCommented Aug 20, 2015 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. Commented Aug 6, 2018 at 18:38 -
1Maybe the received funds are not yet confirmed,... call a generate(1) again or try to list unconfirmed balance Commented Aug 9, 2018 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... Commented Jan 10, 2019 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.– thaliskCommented Apr 6, 2019 at 18:22