ミキサープロトコルの全体構成と準備
ミキサープロトコルの全体構成とコントラクトを開発の流れについて説明します。
コントラクト構成
コントラクト | 説明 |
---|---|
TornadoCats.sol |
プールを管理するコントラクト。入出金のインターフェース。 |
MerkleTreeWithHistory.sol |
ルート履歴を保持するMiMC Merkleツリーのコントラクト。 |
Verifier.sol |
ゼロ知識証明の検証を行うコントラクト。ペアリングライブラリも定義。 |
回路構成
回路 | 説明 |
---|---|
merkleTree.circom |
MiMC Merkleツリーの回路 |
withdraw.circom |
出金回路 |
コントラクト開発の流れ
プールコントラクトの実装をしていく前に、コントラクトを開発するための知識を説明します。この資料では、次の流れでコントラクト開発をしていきます。
src
ディレクトリにコントラクトを実装する。- テスト(
forge test
)を実行する。 - エラーが出ていれば1に戻る。
テストは既に実装してあるので、テストを全てパスするようなコントラクトを実装するのがゴールです。
Solidityについて
Solidityの知識について不安のある人はSolidityドキュメント(日本語)を参照しながら進めてください。(minaminaoを中心に翻訳を行っています。まだ翻訳されていない部分がありますが、この資料で扱う内容はカバーされています。)
Foundryについて
Foundryについての知識は特に必要ないようにしてありますが、もし困ったことがあれば公式ドキュメントを参照してください。