Mina Protocol上に zkTLS(Reclaim Protocol)を使ったアプリケーションをデプロイする
この記事は、ハッカソンプラットフォーム AKINDO 上で開催されている Mina Protocol の WaveHack 向けに執筆したものです。
私が追っている zkTLS プロトコルである Reclaim Protocol が Mina Protocol にも対応しているということで、今回は実際にコントラクトをデプロイしてみようと思います。
zkTLS とは
zkTLS については、以下の記事で詳しく解説しています。
Mina Protocol が 2025年に取り組む zkTLS などのユースケース
Mina Protocol が公式ブログで 2025年における zkTLS を含む新しいユースケースについて言及している記事があります。興味のある方はぜひ以下をご覧ください。
これらの新しいユースケースには、Minaの標準的なブロックチェーンアプリケーションサポートが含まれます。トークンブリッジ、ステートブリッジ、モバイルサポート、複数のDEX(分散型取引所)などです。さらに、zkVot や Punkpoll によるプライベート投票、Mirae による私的な実世界資産(RWA)の所有権証明、zkUSD などのプライベート金融、zkPassport、zkKYC、zkTLS、zkEmail など、多くのプライベートデータソースを含む新規の機能を持つ zk(ゼロ知識)対応アプリケーションも含まれます。これらのプロジェクトのほとんどは近々立ち上げが予定されており、以下は一部のプロジェクトですが、2025年初頭、多くは1月に立ち上げが予定されています。
このように、Mina Protocol では zkTLS を含む多様なユースケースが活発に模索されている状況です。今回は、Reclaim Protocol が公開しているチュートリアルを参考に Mina 上での zkTLS(Reclaim Protocol)のコントラクトデプロイ を試してみます。
1. チュートリアルを参考にする
今回のデプロイ作業は、以下の Reclaim Protocol 公式ドキュメントを参考に進めます。
Reclaim Protocol ドキュメント: Mina Quickstart
2. Auro Wallet の準備
Mina Protocol のアプリケーションを扱う際に一般的なのが Auro Wallet です。
Auro Wallet
Auro Wallet をダウンロード・インストールし、アカウントを作成します。

3. Faucet でトークンを取得
デプロイやトランザクションの送信には Mina トークンが必要です。
Mina Faucet からテスト用トークンを取得しましょう。

4. コントラクトのデプロイ
4.1 公式コントラクトについて
すでに Reclaim Protocol 公式のコントラクト が Devnet にデプロイされています。これを利用すればプローフ(Proof)の検証が可能です。
ただし、今回は学習目的として 自分でコントラクトをデプロイ して理解を深めたいと思います。
4.2 検証プロセスの概要
Reclaim Protocol が提供するスマートコントラクトの Verification プロセスは、Proof を検証するときに以下のステップを実行します。
-
署名の検証
プルーフに有効な署名が含まれていることを確認する。 -
ハッシュ比較
提供されたClaimInfo(クレーム情報)をハッシュし、クレームに含まれるidentifierFieldと比較して整合性を確保する。 -
証人の検証
署名済みの証人(witness)を、チェーン上に保存されている Merkle ルートに対して正しく検証する。 -
重複防止
証人間に重複する署名が存在しないことを確認する。
5. レポジトリのクローンと立ち上げ
5.1 Mina SDK のレポジトリをクローン
まずは、Reclaim Protocol チームが GitLab 上に公開している Mina 対応の SDK レポジトリをクローンします。
git clone https://gitlab.reclaimprotocol.org/integrations/onchain/mina-sdk.git
cd mina-sdk
5.2 Mina zkApp CLI のインストール
npm install -g zkapp-cli
5.3 Mina zkApp の初期化設定
zk config


実行すると publicKey と privateKey が生成されるので、表示された publicKey に Faucet からトークンを再度送金(Fund)しておきます。
5.4 zkApp のデプロイ
zk deploy


コントラクトが Devnet にデプロイできました!!
6. フロントエンドの立ち上げ
続いて、Reclaim Protocol のコントラクトに接続するフロントエンドを動かしてみましょう。
6.1 Reclaim Example のクローン
git clone https://gitlab.reclaimprotocol.org/starterpacks/reclaim-mina-example.git
クローンしたディレクトリに移動し、先ほどデプロイしたコントラクトアドレス に差し替えます。
// app/page.tsx
const ZKAPP_ADDRESS = "REPLACE_WITH_YOUR_CONTRACT_ADDRESS";
6.2 フロントエンドの起動
npm i
npm run dev
ブラウザで http://localhost:3000(ポート番号はプロジェクトにより異なります)にアクセスすると、フロントエンドが表示されます。

7. 動作確認
-
ウォレットを接続
Auro Wallet などを使ってフロントエンドに接続します。 -
QRコードを表示
「Reclaim Protocol」の証明作成画面がモバイルなどで開けるよう、QRコードが提示されるので、スマートフォンなどで読み込みましょう。 -
Verify Proof ボタンを押す
証明が作成できたら「Verify Proof」ボタンで検証を実行します。


7.1 エラーが出る場合
チュートリアルどおりに進めても、先ほどデプロイしたコントラクトアドレスだとエラーになる場合があります。原因としては、公式コントラクトの検証ロジックやフロントエンド側の実装が完全には一致していないこと、あるいは Devnet の環境が最新状態ではないことなど、複数の要因が考えられます。
必要に応じて、Reclaim Protocol の公式 Discord や Mina コミュニティで質問してみましょう。

まとめ
本記事では、Mina Protocol 上に Reclaim Protocol(zkTLS)を使ったコントラクトをデプロイ する流れを紹介しました。Mina Protocol はブロックチェーン自体が zkSNARK を活用しており、非常に軽量かつプライバシーに配慮した 仕組みを提供しています。
zkTLS(Reclaim Protocol)も同様にゼロ知識証明を活用しており、セキュアかつプライバシー保護に優れた通信・検証が可能となります。
今後さらに Mina Protocol のエコシステムが充実することで、より多くの zk アプリケーションが登場することが期待できます。ぜひ皆さんも興味があれば、実際に触ってみてください。
Discussion