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) ということ