txCast

Randomised Bitcoin transaction broadcasting to break timing analysis (configured for testnet, further testing needed).

Implemented in

Python

Javascript

Motivation

CoinJoin tools enable Bitcoin users to disassociate the past & future history of their bitcoin UTXOs (through a process called mixing). Users move their mixed coins to a secondary wallet for more secure storage (e.g. a Cold Wallet / Hardware wallet) and are potentially vulnerable to a timing attack whereby blockchain analysts cluster UTXO’s using timing information (if users move multiple mixed coins in a short time period).

Overview

txCast enables Bitcoin users to introduce a random and automated time delay between signed transaction broadcasts.

Use:

Users copy signed transactions from their wallet of choice and paste them into txCast. They are prompted to enter the time delay which they are able to wait.

Signed transactions are broadcast using the blockstream.info API over tor.

Setup:

Javascript [New]

Work In Progress - TOR circuit DOES NOT CHANGE between broadcasts.

Install tor. These are the instructions for linux:

sudo apt install tor to install tor sudo service tor start to start tor npm install electron -g to install electron git clone https://github.com/6102bitcoin/txCast to get the files cd txCast/JS to move into the JS directory npm install to install the dependencies npm start to start the tool

JS Screenshot

Python

TOR circuit changes between broadcasts.

Install tor. These are the instructions for linux:

sudo apt install tor sudo service tor start tor --hash-password test <- Don’t use test for mainnet edit /etc/tor/torrc & uncomment ControlPort 9051 HashedControlPassword 16:00000 <- Change this number to the output of step 3 sudo service tor stop sudo service tor start Set password to the password you entered in Step 3 on line 12 of the code ( password = "test" ) Download the python script Install following python packages: requests to use the blockstream API to push transactions

Stem to use tor Run the script with python3 txCast.py

Python Screenshot

Issues:

How to refresh the tor connection after broadcasting (JS Version)?

Configured for testnet (Must remove /testnet from blockstream url for mainnet

Future Work: