7

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 1

9

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
5
  • 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
    Commented 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
  • 1
    Maybe 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
  • 1
    For the record, starting at 0.18 the command generate is deprecated and in 0.19 it will be completely removed. Use generatetoaddress instead.
    – thalisk
    Commented Apr 6, 2019 at 18:22

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.