The Bitcoin Blockchain is openly verifiable, anyone without the need for any kind of permission can look at it.
A simple way that requires nothing more than an Internet connection is to query some API.
Blockstream explorer, for example, offers a nice set of API that you can use over Tor with an onion service (recommended).
Example API request over onion service: http://explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion/api/address/bc1qa24tsgchvuxsaccp8vrnkfd85hrcpafg20kmjw
Or if you don't want to use Tor.
Example API request over https: https://blockstream.info/api/address/bc1qa24tsgchvuxsaccp8vrnkfd85hrcpafg20kmjw
Blockstream API documentation: https://github.com/Blockstream/esplora/blob/master/API.md
There are many different Blockchain explorers that offer API, pick the one that works best for you.
Another way of getting the data is to use your own full node.
Useful links:
- https://bitcoin.org/en/developer-reference#bitcoin-core-apis
- https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
- https://github.com/nopara73/WasabiVsSamourai
- https://github.com/nopara73/WasabiCjEfficiency
- https://github.com/jgmontoya/wasabi-cj-stats
A Bitcoin transaction is counted as a Wasabi "CoinJoin round" if it satisfies the following criteria:
- Number of equal value outputs >2, only the most frequent equal value output denomination is counted
- The most frequent equal value output denomination has to be between
0.0899 and 0.1101or between0.1798 and 0.2202 - All the inputs and outputs have to be bech32 addresses (Starting with "bc1")
- One of the output has to be lower than
0.05(Coordinator fee) - Number of inputs >= Number of equal value outputs, only the most frequent equal value output denomination is counted
Keep in mind that if you use different criteria, you may end up with different results.
Once you have the data you are interested in, you can work on it using your favorite programming language. Here there is the complete list of stats used and their exact calculation. If you find any error, or something doesn't add up, please let me know so I can fix it.
- CoinJoin per day
- Partecipants per CoinJoin
- Average input size per CoinJoin
- Total volume
- Total number of addresses
- Percentage remixers per CoinJoin
- Total percentage remixers
- Percentage address reuse per CoinJoin
- Total percentage address reuse
- Total number equal outputs
- Percentage equal outputs reused per CoinJoin
- Total percentage equal outputs reused
- Coordinator fees per CoinJoin (Removed since #3035)
- Total coordinator fees (Removed since #3035)
The green line is the number of CoinJoin per day.
The blue line is the average number of CoinJoin per day.
The green dots are the distribution of the number of partecipants per each CoinJoin. The number of partecipants is equal to the number of equal value outputs, only the most frequent equal value output denomination is counted.
The blu line is the average of the distribution.
The green dots are the distribution of the average input sizes for each CoinJoin.
Average input size per CoinJoin = sum(CoinJoin inputs) / number(CoinJoin inputs)
The blue line is the average of the distribution.
Example:
inputs > amounts
A > 1
B > 2
C > 3
D > 4
E > 5
average per CoinJoin = (1+2+3+4+5)/5 = 3
average overall = 3/1 = 3
inputs > amounts
F > 2
G > 5
H > 6
I > 8
J > 1
average per CoinJoin = (2+5+6+8+1) / 5 = 4.4
average overall = (3+4.4)/2 = 3.7
The green line is the total input volume.
The blue line is the total equal output volume.
Example:
inputs > amounts | | amounts
A > 1 | | 1
B > 2 | | 1
C > 3 | | 1
D > 4 | | 1
E > 5 | | 1
| 2
| 2
| change
| change
| ...
total input volume = 1+2+3+4+5 = 15
total mixed volume = 1+1+1+1+1+2+2 = 9
The green line is the total number of addresses that partecipate as input in a CoinJoin.
The blue line is the total number of inputs.
Ideally, green and blue should be equal, each input should be a separate address. In practice people reuse addresses multiple times.
The light blue line is the total number of remixers. An input address is counted as a remixer if it spends a previous equal value output and if it appears as input not more than once and as equal value output not more than once (either in the same CoinJoin or in different ones).
The orange line is the total number of addresses reused. An input address is counted as reused if it appears as input in a CoinJoin more than once (either in the same CoinJoin or in different ones).
The red line is the total number of inputs that belong to reused addresses.
Example:
inputs > amounts | | amounts > outputs
A > 1 | | 1 > Z
B > 2 | | 1 > Y
C > 3 | | 1 > X
| change
| ...
total number input addresses = A,B,C = 3
total number inputs = A,B,C = 3
total number remixers = 0
total number input addresses reused = 0
total number inputs reused = 0
inputs > amounts | | amounts > outputs
A > 1 | | 1 > W
Z > 1 | | 1 > V
E > 3 | | 1 > U
| change
| ...
total number input addresses = A,B,C,Z,E = 5
total number inputs = A,B,C,A,Z,E = 6
total number remixers = Z = 1
total number input addresses reused = A = 1
total number inputs reused = A,A = 2
The green dots are the distribution of the remixers percentage for each CoinJoin. An input address is counted as a remixer if it spends a previous equal value output and if it appears as input not more than once and as equal value output not more than once (either in the same CoinJoin or in different ones).
remixers percentage per CoinJoin = number(CoinJoin remixers) / number(CoinJoin inputs)
The blue line is the average of the distribution.
Example:
inputs > amounts | | amounts > outputs
A > 1 | | 1 > Z
B > 2 | | 1 > Y
C > 3 | | 1 > X
| change
| ...
remixers percentage per CoinJoin = 0%
average percentage = 0%
inputs > amounts | | amounts > outputs
A > 1 | | 1 > W
Z > 1 | | 1 > V
E > 3 | | 1 > U
| change
| ...
remixers percentage per CoinJoin = 1/3 = 33%
average percentage = (0+33)/2 = 16.5%
The green line is the percentage of remixers on the total number of addresses that partecipated as input in a CoinJoin. An input address is counted as a remixer if it spends a previous equal value output and if it appears as input not more than once and as equal value output not more than once (either in the same CoinJoin or in different ones).
percentage input addresses = number(total remixers) / number(total input addresses)
The blue line is the percentage of remixers on the total number of inputs.
percentage inputs = number(total remixers) / number(total inputs)
Example:
inputs > amounts | | amounts > outputs
A > 1 | | 1 > Z
B > 2 | | 1 > Y
C > 3 | | 1 > X
| change
| ...
percentage input addresses = 0%
percentage inputs = 0%
inputs > amounts | | amounts > outputs
A > 1 | | 1 > W
Z > 1 | | 1 > V
E > 3 | | 1 > U
| change
| ...
percentage input addresses = (Z)/(A,B,C,Z,E) = 1/5 = 20%
percentage inputs = (Z)/(A,B,C,A,Z,E) = 1/6 = 16%
The orange dots are the distribution of the percentage of addresses reused for each CoinJoin. An input address is counted as reused if it appears as input in a CoinJoin more than once (either in the same CoinJoin or in different ones).
percentage input addresses reuse per CoinJoin = number(CoinJoin input addresses reused) / number(CoinJoin input addresses)
The red dots are the distribution of the percentage of inputs that belong to reused addresses.
percentage inputs reused per CoinJoin = number(CoinJoin inputs reused) / number(CoinJoin inputs)
The red and orange lines are the average of the respective distribution.
Example:
inputs
A,A,B,B,C,D,E
n° input addresses reused = A,B = 2
n° inputs reused = A,A,B,B = 4
tot n° input addresses = A,B,C,D,E = 5
tot n° inputs = A,A,B,B,C,D,E = 7
percentage input addresses reused per CoinJoin = n° input addresses reused / n° input addresses = 2/5 = 40%
percentage inputs reused per CoinJoin = n° inputs reused / n° inputs = 4/7 = 57%
average % input address reused per CoinJoin = 40/1 = 40%
average % inputs reused per CoinJoin = 57/1 = 57%
inputs
F,C,G,H,I,I
n° input addresses reused = C,I = 2
n° inputs reused = C,I,I = 3
tot n° input addresses = F,C,G,H,I = 5
tot n° inputs = F,C,G,H,I,I = 6
percentage input addresses reused per CoinJoin = n° input addresses reused / n° input addresses = 2/5 = 40%
percentage inputs reused per CoinJoin = n° inputs reused / n° inputs = 3/6 = 50%
average % input addresses reused per CoinJoin = (40+40)/2 = 40%
average % inputs reused per CoinJoin = (57+50)/2 = 53.5%
The orange line is the percentage of address reuse on the total number of addresses that partecipated as input in a CoinJoin. An input address is counted as reused if it appears as input in a CoinJoin more than once (either in the same CoinJoin or in different ones).
percentage input addresses reused = number(total input addresses reused) / number(total input addresses)
The red line is the percentage of inputs that belong to reused addresses on the total number of inputs.
percentage inputs reused = number(total inputs reused) / number(total inputs)
Example:
inputs
A,A,B,B,C,D,E
n° input addresses reused = A,B = 2
n° inputs reused = A,A,B,B = 4
tot n° input addresses = A,B,C,D,E = 5
tot n° inputs = A,A,B,B,C,D,E = 7
percentage input addresses reused = n° input addresses reused / tot n° input addresses = 2/5 = 40%
percentage inputs reused = n° inputs reused / tot n° inputs = 4/7 = 57%
inputs
F,C,G,H,I,I
n° input addresses reused = A,B,C,I = 4
n° inputs reused = A,A,B,B,C,C,I,I = 8
tot n° input addresses = A,B,C,D,E,F,G,H,I = 9
tot n° inputs = A,A,B,B,C,D,E,F,C,G,H,I,I = 13
percentage input addresses reused = n° input addresses reused / tot n° input addresses = 4/9 = 44%
percentage inputs reused = n° inputs reused / tot n° inputs = 8/13 = 61%
The green line is the total number of equal value outputs addresses.
The blue line is the total number of equal value outputs.
Ideally, green and blue should be the same, each equal value output should be a separate address. In practice some addresses are reused multiple times. This is either intentional or a bug (more here and here).
The orange line is the total number of equal value outputs addresses reused. An equal value output address is counted as reused if it appears as equal value output in a CoinJoin more than once (either in the same CoinJoin or in different ones).
The red line is the total number of equal value outputs that belong to equal value outputs addresses reused.
The red dots are the distribution of the percentage of equal value outputs that belong to output addresses reused for each CoinJoin. An equal value output address is counted as reused if it appears as equal value output in a CoinJoin more than once (either in the same CoinJoin or in different ones).
percentage equal value outputs reused per CoinJoin = number(CoinJoin equal outputs reused) / number(CoinJoin equal outputs)
The red line is the average of the distribution.
Example:
inputs > amounts | | amounts > outputs
A > 1 | | 1 > Z
B > 2 | | 1 > Y
C > 3 | | 1 > X
| change
| ...
percentage outputs reused per CoinJoin = 0%
average percentage = 0%
inputs > amounts | | amounts > outputs
D > 1 | | 1 > Z
E > 1 | | 1 > W
F > 3 | | 1 > V
| change
| ...
percentage outputs reused per CoinJoin = (Z)/(Z,W,V) = 1/3 = 33%
average percentage = (0+33)/2 = 16.5%
The orange line is the percentage of equal value outputs addresses reused on the total number of equal value outputs addresses. An equal value output address is counted as reused if it appears as equal value output in a CoinJoin more than once (either in the same CoinJoin or in different ones).
The red line is the percentage of equal value outputs that belong to equal value outputs addresses reused on the total number of equal value outputs.
Example:
inputs > amounts | | amounts > outputs
A > 1 | | 1 > Z
B > 2 | | 1 > Y
C > 3 | | 1 > X
| change
| ...
percentage equal value outputs addresses reused = 0%
percentage equal value outputs reused = 0%
inputs > amounts | | amounts > outputs
D > 1 | | 1 > Z
E > 1 | | 1 > W
F > 3 | | 1 > V
| change
| ...
percentage equal value outputs addresses reused = (Z)/(Z,Y,X,W,V) = 1/5 = 20%
percentage equal value outputs reused = (Z,Z)/(Z,Y,X,Z,W,V) = 2/6 = 33%
The green dots are the distribution of the coordinator fees for each CoinJoin, the fees are calculate based on the values of the Coordinator address outputs.
The blue line is the average of the distribution.
The green line is the comulative sum of the coordinator fees, the fees are calculate based on the values of the Coordinator address outputs.