noplan-inc / entertainment-hackathon

2 stars 0 forks source link

ヒントAPI #7

Open serinuntius opened 1 year ago

serinuntius commented 1 year ago
  1. ユーザーはAPIサーバーに単語とゼロ知識証明の証明(Proof)を投げる
    • params:
      • nonceの署名(ユーザー認証の代わり)
      • ZKP
      • 単語
    • ZKPの内容は単語が単語帳の中にある単語であることを証明するやつ
    • ZKPは時間がかかるので、Dosや総当たり対策にもなる
    • APIサーバーがやる処理
      • ZKPのverify
      • 単語のヒント生成
    • APIサーバーは、どの文字があっていて、どの文字の場所が違うか返す(ヒント機能)
      • 本家の緑と黄色みたいな
serinuntius commented 1 year ago

https://zokrates.github.io/toolbox/zokrates_js.html#example

yukiorita1117 commented 1 year ago

apiの処理を切り出したので、 ZKPの機能だけがこいつのタスク。

FE: custom hooks内でZKPをなんか取得して、そいつをapiに回答するwordleとともに詰めてcallするイメージ

yukiorita1117 commented 1 year ago

FE:

initialize().then((zokratesProvider) => {
  const source = "def main(private field a) -> field { return a * a; }";

  // compilation
  const artifacts = zokratesProvider.compile(source);

  // computation
  const { witness, output } = zokratesProvider.computeWitness(artifacts, ["2"]);

  // run setup
  const keypair = zokratesProvider.setup(artifacts.program);

  // generate proof
  const proof = zokratesProvider.generateProof(
    artifacts.program,
    witness,
    keypair.pk
  );

});

BE:

  // export solidity verifier
  const verifier = zokratesProvider.exportSolidityVerifier(keypair.vk);

  // or verify off-chain
  const isVerified = zokratesProvider.verify(keypair.vk, proof);