![ZKWordle](https://prd-akindo-private.s3.us-west-1.amazonaws.com/products/icons/93MEOxmB3hQ9E8ZEe_medium.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAUVKHMQQTNVUORXQP%2F20240907%2Fus-west-1%2Fs3%2Faws4_request&X-Amz-Date=20240907T235631Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEBAaCXVzLXdlc3QtMSJIMEYCIQDMBXxihiKi4%2FJeWuPsy5f0aJb3Aplh3hEdXckuFrvPWwIhAODKSd17nZ3WPIxBro%2BEozgzhlht3A8mpkhY%2BVmJbTmrKusDCDkQARoMMzIwNjYxNjUyNTE4Igx6mYkwzxE5LRRbzL8qyAOrCxTjT%2Fnwbhdo7OhPC8IRqnOUnE7jfnussGcN3V2A%2BFsQn3xUHRWjeYucb338WpHh9VYobjtLkipjx6DqqqT%2Ba3LOra4F5NUIEydgLUaNnMSqvrwwlNI%2Bg38YL0Ubl%2FIRWgRN7HYBqA21wkKFxpCC8SF5qTpweVQbXi4%2BDqzXHk62Mk2rEOzC0QmwGnApExUVmL3PppxU4f1u%2FqK%2FjtzG%2FzgjQ1tZylxQLrz41jz6O%2FnZS5OyD4W3HZ20m6cjr45YwpsM1TBkTVe6Bh%2F0kHij4Yp7cChPNwt0gGiAAyF4gU78gAbasAjgBK%2BQ%2BWOcXyVnWv7Lp99758bFuYUMPCtHnxk0IR%2BnYQcXohiWMABp546Swk2PCa7pKrovXHIXia1rIkyyMNBuGqfSKr5167zsRVh7c0H2j5Y9jU%2BBUC2mDwrJD7IzkFU7C64Qqqe7u%2BlDQzTptb0LLI2qWJBpHiE1n6%2FVEsV73UjjZz8TkbkrWDK4rq5ddtFJDhMK65dlv0srDPukxKs%2B5M7RLlVIxj9yGMFsJjx7NqV0N9isVtwI0XdYwKBI6HlfAw9Cw116wKcmvoPXBKZcri%2FC2MaIFtj4GHa%2BVOHM%2BL8w1s%2FztgY6pAFHS8Icsh8zU1wqkIlGx5N0aMrlutSzILg3%2FXJFMDv8eFfSECgWteVQ2BecrgqTN8AnwoehMgqq6tCjHHg93rZNJ3obZNdU6uX8J%2FsaeTN4YFuqCcMQC4ruEh9b6%2FpFHX8pf4kyCLTcoNZH9ryCTRYRRSenCk2d4L6ak8q7621uROA%2Bvck6XmlSgYMcpRcdbbXfsqUDuZ%2FupXDaa2R%2B5NMWj6sClw%3D%3D&X-Amz-Signature=7b0b2a170846316ef2d0dba3e920bb00525c85af438cd1806d2f888681c9f26f&X-Amz-SignedHeaders=host&x-id=GetObject)
ZKWordle
![ZKWordle](https://res.cloudinary.com/travary/image/upload/c_fill,h_400,w_400/v1/prd-akindo-public/communities/icon/Z4oE8w1LkT3LMjEl.png)
![ZKWordle](https://res.cloudinary.com/travary/image/upload/c_fill,h_400,w_400/v1/prd-akindo-public/communities/icon/Z4oE8w1LkT3LMjEl.png)
何をするのか
フルオンチェーンのWordleです。Wordleは5文字の単語をヒントを得ながら当てるゲームです。ZKPを使って、回答を明かすことなく、回答を知っていることを証明します。
最速で正解するとかっこいいフルオンチェーンのNFTを取得することができます。
ぶつかった課題
・ZKPの回路がデカすぎて、コンパイルだけでめちゃくちゃ時間がかかった
・最新技術すぎてHow toがない
使用した技術
・Zokrates(ZKP): ZKPの回路の開発設計やテスト、Verifyのためのコントラクトの生成
・Cloudflare Workes: CDNを利用しエッジでヒントAPIを返すことで、全世界で共通のレスポンスタイムになるように
・Superflare: Wokers用のフレームワーク
・Remix: Reactのフレームワーク
どのように作ったか
・4人のチームで作りました
・serinuntius#3314: ZKP周り、全体設計、動画、スライド
・jhcoder(y_orita)#9353: フロント
・Soma#0714: フルオンチェーンNFT周り、API
・kobayashi#1195: ZKP周り、フロント
私たちが学んだこと
・ZKPのノウハウ(テスト高速化、public/private inputの使い分け、solidityの変数の変換、回路開発、回路をコンパクトにする方法)
・SuperflareやWokers周り
次をどうするか?
・Hint ZKP有効化
・他所のチェーンでも動くように、drandとLitで乱数オラクル作成
・作問自動化Bot
デモ
・動くのですが、ゲームの仕様上誰かが回答すると、運営が作問コントラクトを叩く必要があります(もし動いてなさそうであれば、連絡ください)
ツッコまれそうなところ
・Q. 総当たりで解けるよね? A. PoC優先で、コア機能じゃないので対策に時間をかけなかったですが、総当たりできないように変更することは可能です。
・Q. ZKP遅くね? A. Hash関数を最適化し、もう少し早くもできそうです。
・Q. マスターデータ公開していいの? A. ハッカソンだから公開してます、本来は公開しません。
コントラクトとか
・https://testnets.opensea.io/ja/collection/zkwordlenft-1
・ lib deployed to: https://goerli.etherscan.io/address/0x54cF2B9f899202D32B773edE959894C3126ec1fd
・ zkWordleNFT deployed to: https://goerli.etherscan.io/address/0xe7850330229ab5304a7Bb74b6af1e06BAAc55467
・ zkWordle deployed to: https://goerli.etherscan.io/address/0xEF7AaeCE5d11e0BE9a3065a67bD8Ede62F8a783d