YOUR NAME: 許晉瑋 YOUR ID: r12922158 ## question 1 answer <== 其實就是 === 再加上 <-- ,舉code裡面的例子: ``` c <== a * b; ``` 這就是 ``` c === a * b; c <-- a * b; ``` 這個 <== 不僅做到了把a*b的值賦予c,也做到了約束的效果,約束c確實是由a和b乘積的結果。 在zero knowledge概念中,大概就是:”使證明者能夠證明他們知道一些訊息,而不需透露出那些訊息具體是什麼“ ## question 2 answer 點了Plonk button後,他會生成這些文件 ![image.png](https://hackmd.io/_uploads/rJLkIlVQa.png) main.plonk.sol他是一個用solidity寫的智慧合約file,主要是在區塊鏈上面證明zero knowledge的有效性,就像上一題提到的,確保操作的人能夠證明某些資料的正確性,而不需要公開具體的資料內容,也能讓其他人信任這個證明的有效性。 ## question 3 answer zkey:這邊是一個文件,它包含了zero knowledge證明所需要的參數以及密鑰,用來生成還有驗證zero knowledge證明。 circuit:在zero knowledge證明中,他是一個數學模型的算術電路。用來計算只有證明者才知道的秘密輸入,確保計算的正確性,且不會透露出輸入的具體資訊。 ## question 4 answer 這題我先將有f的地方的code全部刪除掉,然後執行就可以拿到e了。且e === f,因此得到f= "17499677547561660273017699567908067415377678347145626859540034597523441084050" ## question 5 answer merkle tree如下: ``` -----hash3----- | | ---hash--- ---hash2--- | | | | a b c d ``` 所以a的merkle proof為b,以及hash2(hash2可以經由log(hash2.out)得知) 答案為: [77, 16849369192409107332756158295736271172359908253560919913964223668672656406138 ]