---
# System prepended metadata

title: Hw4

---

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
]