Skip to content

ミキサープロトコルの全体構成と準備

ミキサープロトコルの全体構成とコントラクトを開発の流れについて説明します。

コントラクト構成

コントラクト 説明
TornadoCats.sol プールを管理するコントラクト。入出金のインターフェース。
MerkleTreeWithHistory.sol ルート履歴を保持するMiMC Merkleツリーのコントラクト。
Verifier.sol ゼロ知識証明の検証を行うコントラクト。ペアリングライブラリも定義。

回路構成

回路 説明
merkleTree.circom MiMC Merkleツリーの回路
withdraw.circom 出金回路

コントラクト開発の流れ

プールコントラクトの実装をしていく前に、コントラクトを開発するための知識を説明します。この資料では、次の流れでコントラクト開発をしていきます。

  1. srcディレクトリにコントラクトを実装する。
  2. テスト(forge test)を実行する。
  3. エラーが出ていれば1に戻る。

テストは既に実装してあるので、テストを全てパスするようなコントラクトを実装するのがゴールです。

Solidityについて

Solidityの知識について不安のある人はSolidityドキュメント(日本語)を参照しながら進めてください。(minaminaoを中心に翻訳を行っています。まだ翻訳されていない部分がありますが、この資料で扱う内容はカバーされています。)

Foundryについて

Foundryについての知識は特に必要ないようにしてありますが、もし困ったことがあれば公式ドキュメントを参照してください。