Is there an existing issue for this?
- I have searched the existing issues
Current behaviour
When creating a large number of unconfirmed transactions (e.g. 500+) with bitcoin-cli by spending/sending from a wallet, sending/spending the 502nd time results in a nondescript error message. It may be the case that this is expected behavior (e.g. reaching a limit), and the error message could be made more descriptive/informative.
error code: -1
error message:
map::at
This was encountered when creating a test to populate the mempool with a high number of transactions for the v27.0 RC Testing Guide. This behavior was observed both on v26.0 and v27.0 rc1.
Confirming the transactions in a block allows the user to perform additional spending.
Expected behaviour
A more descriptive error message would be provided to the user. In this case, if a limit is being reached, the user could be informed and take appropriate action (e.g. wait until a block confirms transactions, etc.).
Steps to reproduce
Start a node on regtest with its own datadir/bitcoin.conf:
export DATA_DIR=/tmp/tmpdatadir
mkdir $DATA_DIR
export BINARY_PATH=/path/to/dir/containing/bitcoind
alias bitcoind-test="$BINARY_PATH/bitcoind -datadir=$DATA_DIR"
alias bcli="$BINARY_PATH/bitcoin-cli -datadir=$DATA_DIR"
echo "regtest=1" > $DATA_DIR/bitcoin.conf
bitcoind-test -daemon
Create a wallet, fund it with coinbase outputs, and send 501 times:
bcli createwallet test
export ADDRESS=$(bcli -rpcwallet=test getnewaddress)
bcli -rpcwallet=test -generate 701
for i in $(seq 1 499); do bcli -rpcwallet=test -named send outputs="{\"$ADDRESS\": 1}" fee_rate=10; done
bcli -rpcwallet=test getmempoolinfo
bcli -rpcwallet=test -named send outputs="{\"$ADDRESS\": 1}" fee_rate=10
bcli -rpcwallet=test getmempoolinfo
bcli -rpcwallet=test -named send outputs="{\"$ADDRESS\": 1}" fee_rate=10
bcli -rpcwallet=test getmempoolinfo
Induce the error on the 502nd send:
bcli -rpcwallet=test -named send outputs="{\"$ADDRESS\": 1}" fee_rate=10
error code: -1
error message:
map::at
Confirm transactions, then add a new transaction:
bcli -rpcwallet=test -generate 1
bcli -rpcwallet=test -named send outputs="{\"$ADDRESS\": 1}" fee_rate=10
bcli -rpcwallet=test getmempoolinfo
Relevant log output
Nothing relevant observed in debug.log at the time of the error received.
How did you obtain Bitcoin Core
Pre-built binaries
What version of Bitcoin Core are you using?
v26.0.0
Operating system and version
Ubuntu 22.04 LTS
Machine specifications
amd64