The current tornado UI uses number of deposits as a metric for how much privacy a pool provides. The real answer is very complicated but I wanted to looks at other simple proxies.
Unspent notes is one such metric ( total deposits - total withdrawals ). If for example, a pool at some point had 5000 deposits and all of them were spent. We can eliminate the possibility that any future withdraws are sourced from the first 5000, effectively reducing the anonymity set by 5000
I also wanted to visualize how the different pools across networks are being utilized. For this, I divided the pools into 4 levels based on the dollar value of the deposits
import pandas as pd
mainnet = pd.read_json('daily-events.json')
matic = pd.read_json('daily-events-matic.json')
bsc = pd.read_json('daily-events-bsc.json')
arbitrum = pd.read_json('daily-events-arbitrum.json')
gnosis = pd.read_json('daily-events-gnosis.json')
avalanche = pd.read_json('daily-events-avalanche.json')
df = pd.concat([mainnet,matic,bsc,arbitrum,gnosis,avalanche],axis=1).fillna(method='ffill')
theme = {
'daiD':'#1c9426b3',
'daiW':'#1c94264d',
'maticD':'#871fa1b3',
'maticW':'#871fa14d',
'ethD':'#1f1f1fb3',
'ethW':'#1f1f1f4d',
'bnbD':'#f5dd27b3',
'bnbW':'#f5dd274d',
'wbtcD':'#ff9717b3',
'wbtcW':'#ff97174d',
'xdaiD':'#1ae8bfb3',
'xdaiW':'#1ae8bf4d',
'avaxD':'#de1d3db3',
'avaxW':'#de1d3d4d',
'cdaiD':'#9cde31b3',
'cdaiW':'#9cde314d',
'arbD':'#0569ffb3',
'arbW':'#0569ff4d',
'usdcD':'#5578adb3',
'usdcW':'#5578ad4d',
}
%matplotlib notebook
df[[
'eth-0.1-D',
'eth-0.1-W',
'bnb-01-D',
'bnb-01-W',
'matic-100-D',
'matic-100-W',
'eth_arb-01-D',
'eth_arb-01-W',
'xdai-100-D',
'xdai-100-W',
'dai-100-D',
'dai-100-W',
'usdc-100-D',
'usdc-100-W',
'cdai-5000-D',
'cdai-5000-W',
]].plot(color=[
theme['ethD'],
theme['ethW'],
theme['bnbD'],
theme['bnbW'],
theme['maticD'],
theme['maticW'],
theme['arbD'],
theme['arbW'],
theme['xdaiD'],
theme['xdaiW'],
theme['daiD'],
theme['daiW'],
theme['usdcD'],
theme['usdcW'],
theme['cdaiD'],
theme['cdaiW'],
])
<AxesSubplot:>
%matplotlib notebook
df[[
'eth_arb-01-D',
'eth_arb-01-W',
'xdai-100-D',
'xdai-100-W',
'dai-100-D',
'dai-100-W',
'usdc-100-D',
'usdc-100-W',
'cdai-5000-D',
'cdai-5000-W',
]].plot(color=[
theme['arbD'],
theme['arbW'],
theme['xdaiD'],
theme['xdaiW'],
theme['daiD'],
theme['daiW'],
theme['usdcD'],
theme['usdcW'],
theme['cdaiD'],
theme['cdaiW'],
])
<AxesSubplot:>
%matplotlib notebook
df[[
'eth-1-D',
'eth-1-W',
'bnb-1-D',
'bnb-1-W',
'matic-1000-D',
'matic-1000-W',
'avax-10-D',
'avax-10-W',
'eth_arb-1-D',
'eth_arb-1-W',
'dai-1000-D',
'dai-1000-W',
'usdc-1000-D',
'usdc-1000-W',
'xdai-1000-D',
'xdai-1000-W',
'wbtc-0.1-D',
'wbtc-0.1-W',
'cdai-50000-D',
'cdai-50000-W',
]].plot(color=[
theme['ethD'],
theme['ethW'],
theme['bnbD'],
theme['bnbW'],
theme['maticD'],
theme['maticW'],
theme['avaxD'],
theme['avaxW'],
theme['arbD'],
theme['arbW'],
theme['daiD'],
theme['daiW'],
theme['usdcD'],
theme['usdcW'],
theme['xdaiD'],
theme['xdaiW'],
theme['wbtcD'],
theme['wbtcW'],
theme['cdaiD'],
theme['cdaiW'],
])
<AxesSubplot:>
%matplotlib notebook
df[[
'matic-1000-D',
'matic-1000-W',
'avax-10-D',
'avax-10-W',
'eth_arb-1-D',
'eth_arb-1-W',
'dai-1000-D',
'dai-1000-W',
'usdc-1000-D',
'usdc-1000-W',
'xdai-1000-D',
'xdai-1000-W',
'wbtc-0.1-D',
'wbtc-0.1-W',
'cdai-50000-D',
'cdai-50000-W',
]].plot(color=[
theme['maticD'],
theme['maticW'],
theme['avaxD'],
theme['avaxW'],
theme['arbD'],
theme['arbW'],
theme['daiD'],
theme['daiW'],
theme['usdcD'],
theme['usdcW'],
theme['xdaiD'],
theme['xdaiW'],
theme['wbtcD'],
theme['wbtcW'],
theme['cdaiD'],
theme['cdaiW'],
])
<AxesSubplot:>
df[[
'eth-10-D',
'eth-10-W',
'bnb-10-D',
'bnb-10-W',
'dai-10000-D',
'dai-10000-W',
'avax-100-D',
'avax-100-W',
'wbtc-1-D',
'wbtc-1-W',
'matic-10000-D',
'matic-10000-W',
'eth_arb-10-D',
'eth_arb-10-W',
'xdai-10000-D',
'xdai-10000-W',
'cdai-500000-D',
'cdai-500000-W',
]].plot(color=[
theme['ethD'],
theme['ethW'],
theme['bnbD'],
theme['bnbW'],
theme['daiD'],
theme['daiW'],
theme['avaxD'],
theme['avaxW'],
theme['wbtcD'],
theme['wbtcW'],
theme['maticD'],
theme['maticW'],
theme['arbD'],
theme['arbW'],
theme['usdcD'],
theme['usdcW'],
theme['xdaiD'],
theme['xdaiW'],
theme['cdaiD'],
theme['cdaiW'],
])
<AxesSubplot:>
ax = df[[
'dai-10000-D',
'dai-10000-W',
'avax-100-D',
'avax-100-W',
'wbtc-1-D',
'wbtc-1-W',
'matic-10000-D',
'matic-10000-W',
'eth_arb-10-D',
'eth_arb-10-W',
'xdai-10000-D',
'xdai-10000-W',
'cdai-500000-D',
'cdai-500000-W',
]].plot(color=[
theme['daiD'],
theme['daiW'],
theme['avaxD'],
theme['avaxW'],
theme['wbtcD'],
theme['wbtcW'],
theme['maticD'],
theme['maticW'],
theme['arbD'],
theme['arbW'],
theme['xdaiD'],
theme['xdaiW'],
theme['cdaiD'],
theme['cdaiW'],
])
ax.set_xlim(pd.Timestamp('2021-04-1'), pd.Timestamp('2022-04-15'))
(18718.0, 19097.0)
df[[
'eth-100-D',
'eth-100-W',
'bnb-100-D',
'bnb-100-W',
'dai-100000-D',
'dai-100000-W',
'wbtc-10-D',
'wbtc-10-W',
'avax-500-D',
'avax-500-W',
'cdai-5000000-D',
'cdai-5000000-W',
'matic-100000-D',
'matic-100000-W',
'eth_arb-100-D',
'eth_arb-100-W',
'xdai-100000-D',
'xdai-100000-W',
]].plot(color=[
theme['ethD'],
theme['ethW'],
theme['bnbD'],
theme['bnbW'],
theme['daiD'],
theme['daiW'],
theme['wbtcD'],
theme['wbtcW'],
theme['avaxD'],
theme['avaxW'],
theme['cdaiD'],
theme['cdaiW'],
theme['maticD'],
theme['maticW'],
theme['arbD'],
theme['arbW'],
theme['xdaiD'],
theme['xdaiW'],
])
<AxesSubplot:>
ax = df[[
'dai-100000-D',
'dai-100000-W',
'wbtc-10-D',
'wbtc-10-W',
'avax-500-D',
'avax-500-W',
'cdai-5000000-D',
'cdai-5000000-W',
'matic-100000-D',
'matic-100000-W',
'eth_arb-100-D',
'eth_arb-100-W',
'xdai-100000-D',
'xdai-100000-W',
]].plot(color=[
theme['daiD'],
theme['daiW'],
theme['wbtcD'],
theme['wbtcW'],
theme['avaxD'],
theme['avaxW'],
theme['cdaiD'],
theme['cdaiW'],
theme['maticD'],
theme['maticW'],
theme['arbD'],
theme['arbW'],
theme['xdaiD'],
theme['xdaiW'],
])
ax.set_xlim(pd.Timestamp('2021-04-1'), pd.Timestamp('2022-04-15'))