hashじゃなくmerkleProofである背景
  • Hash <== Hash(r) だと任意のhash-preimage対でtrueが返る
  • Tornado Cashがverifyの前にisKnownRoot(root) で過去に存在したツリーに対してのみzkverifyを許可している理由がこれ
  • 存在しないrootに対するzkverifyがtrueになったとしても、そのrは過去のeligibleな(国民登録されたor入金した)参加者でない。
  • eligibilityがない人のroot, proof, index, rに対して引き出し許可をしてはならない。
  • (1)で登録されたhashのみtrueにするためmerkle treeが必要
  • つまり proof(pub root, merkle proof, r) ということ