Tornado Cashの非中央集権性
コントラクトのイミュータブル性
Tornado Cashのコントラクトはイミュータブルな設計になっており、変更もアップグレードもされません。
そもそもEthereumではデプロイされたコントラクトのバイトコードは通常変更不可能です。コントラクトの挙動を変更する方法は大きく分けて3つあります。
CREATE2
オペコードでコントラクトをデプロイし、SELFDESTRUCT
オペコードでコントラクトを破壊して、再度別のコントラクトをデプロイする。- プロトコルのパラメーターの変更機能を予めつけてパラメーターの変更をする。
- プロキシコントラクトを利用して擬似的にアップグレードを実現する。
そのようなデプロイした後に何かしらコントラクトの挙動を変更するには、デプロイする前のコントラクトのバイトコードにその機能を含む必要があります。Tornado Cashの主要コントラクト(特にプールコントラクト)において、これらがどうなっているかというと、まず1つ目のCREATE2
オペコードを使用する方法は、SELFDESTRUCT
オペコードができるように設計されていないためできません。2つ目の方法については、以前はプロトコルパラメーターの変更機能があり可能でしたが、現在は変更できなくなっています。これは変更権限を持つアカウントを誰の所有物でもないゼロアドレスに設定したからです。3つ目の方法については、そもそもプロキシを利用していないのでアップグレードすることは不可能です。
ガバナンス
2021年12月までは、Tornado Cashのプールに暗号資産をデポジットすることで、ガバナンストークンであるTORNを獲得できました。このマイニングをAnonymity Miningと呼びます。
他のガバナンスシステムと同様、TORNによって、Tornado Cashのプロトコルパラメーターの変更やTORNの配布などは、ガバナンスによって管理されています。いわゆるDecentralized Autonomous Organization (DAO)として運用されています。