-
Notifications
You must be signed in to change notification settings - Fork 119
Sending payments with CoinJoin
sendpayment.py and patientsendpayment.py are bots which do CoinJoins to send payments to other addresses. They can send from the JoinMarket internal wallet or a Bitcoin Core wallet accessed with json-rpc.
The number of other parties in the CoinJoin can be configured with the -N command line flag. The mixing depth to spend from is controlled by -m.
You can also choose which orders to pick. By default, sendpayment.py chooses orders randomly (weighted) which increases privacy. The other options are to pick the orders by cheapest (-C) or to pick manually (-P). Manual picking only works when not sweeping.
Use --help on the command line for a complete list of parameters.
python sendpayment.py wallet.json 500000 mprGzBA9rQk82Ly41TsmpQGa8UPpZb2w8c
Sends 500000 satoshi (0.005btc) to the address mprGzBA9rQk82Ly41TsmpQGa8UPpZb2w8c with the default two other bots from the default zeroth mixing depth from the wallet contained in the file wallet.json
python sendpayment.py -N 5 -m 1 wallet.json 500000 mprGzBA9rQk82Ly41TsmpQGa8UPpZb2w8c
Sends the same amount as before from the first mixing mixing with five other parties.
Setting the amount to zero will cause the bot to sweep. Meaning it will empty that mixing depth, calculating the coinjoin fee so that no coins are left.
python sendpayment.py -N 1 wallet.json 0 mprGzBA9rQk82Ly41TsmpQGa8UPpZb2w8c
Very similar to sendpayment.py but will act as a market maker for a given amount of time. If another bot starts a coinjoin, patientsendpayment.py will put the desired address as the destination. After the time limit is up, the bot will cancel its order and start a coinjoin with other market makers.
The -w or --wait-time parameter controls how much the bot will wait for orders to arrive. A longer wait time is useful if any liquidity providers are using a lower-latency network like Tor or I2P.
Requires the blockchain source to be Bitcoin Core with json-rpc. The bot will use RPC commands like listunspent
, dumpprivkey
and getrawchangeaddress
to access the required information.
Use the --rpcwallet command line flag. The wallet file
parameter becomes fromaddress
as in the sendfrom RPC function.
python sendpayment.py --rpcwallet "" 1000000 mjeYBCV8ZNmx5fkDe5f9z4fnroV3FCXgBt
Sends 1000000 satoshi (0.01btc) to the address mjeYBCV8ZNmx5fkDe5f9z4fnroV3FCXgBt. It sends from the account "" in the Bitcoin Core wallet. You can modify the number of coinjoin participants with the -N flag. The -m flag is not used as Bitcoin Core wallet does not have the mixing depths concept.