📜 [專欄新文章] [ZKP 讀書會] Zkopru
✍️ NIC Lin
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Photo by Barth Bailey on Unsplash
Zkopru
Zkopru 這個名稱是由 zk-transaction + Optimistic Roll-Up 的字首組成,這個layer 2 的協議包含了使用零知識證明來保護交易的隱私( zk-transaction)、再搭配 Optimistic Rollup 來管理 layer 2 。
接下來會講到 Zk Rollup 和 Optimistic Rollup,如果讀者還不熟悉,可以先閱讀這篇ˊ指介紹。
它和 Zk Rollup 有什麼不同?
Zk Rollup 連同 layer 2 的鏈的 state transition 都是由零知識證明來處理,但缺點是目前零知識證明技術的成本較高,包含在鏈下產生證明和在鏈上驗證證明(鏈下產生證明耗費時間,鏈上驗證證明則耗費 gas)。
註:接下來提到的(零知識證明、circuit)的鏈下成本都是指時間多寡,而鏈上成本則都是指 gas 多寡)
另外目前的 Rollup 協議都是使用 merkle tree 來儲存當前的鏈的狀態(例如使用者的餘額、nonce 或是 UTXO) — 如果使用者要證明他有 $20,則他必須要提供 merkle proof ,而這個 merkle proof 的大小及 hash 次數也會因為選擇的 merkle tree 的高度而有不同。
而這個因素再搭配上 hash 的成本在 EVM 和 circuit 會有不同,導致協議如果使用在 EVM 成本較便宜的 hash function,則 circuit 的 hash 成本會較高;反之亦然。
目前還沒有安全的 hash function 是在 EVM 或 circuit 裡都是便宜的,所以協議設計者必須做出妥協。可想而知,Zk Rollup 便是使用在 circuit 便宜但是在 EVM 貴的 hash function,這導致當使用者要離開 layer 2 回到 layer 1 時(這個步驟在這裡稱作 withdraw),他成本會很高(因為要在 EVM 裡驗證他持有資產的擁有權,這可以是一個 merkle proof 或 zk proof)。
和 Optimistic Rollup 有什麼不同?
而這個成本相對的也反映了採用 Optimistic Rollup 的好處 — 只有在特殊情況下(例如協議裡的 Operator 作惡)才需要付出較高的成本,其他時間大家則享受極低成本的使用費。
但使用 Optimistic 的方式也有附帶的缺點: challenge period 。輕節點使用者需要等待 challenge period 來確保交易不會被推翻、withdraw 過程需要等待 challenge period(以下稱 withdraw period) 過了才能將錢提回到 layer 1。
所以使用哪種 Rollup 就要看協議設計者如何依照他們的使用需求去權衡。
那為什麼不使用 Optimistic Rollup 就好?
因為需要零知識證明來保護交易隱私!
前提
zkopru 使用和 Bitcoin 相同的 UTXO model
transfer 的付款方、收款方和金額都是被保護住、看不到的,但 zkopru 和其他隱私幣一樣,不需要付款方和收款方合作即可由付款方單獨完成 transfer。
但也和隱私幣一樣,收款方必須去監看鏈上每一筆交易並嘗試解密來得知是否有人 transfer 給自己
基本使用流程
Deposit
使用者將 ether 、ERC20 或 ERC721 代幣轉入 zkopru 位於 layer 1 的合約,觸發 event。協議的 Operator 會監看合約並搜集 deposit event,然後將這些 deposit 一起放入下一個(zkopru 的)區塊裡。
Transfer
如同 Bitcoin 的 UTXO,zkopru 裡使用者必須要證明其對某 UTXO 有擁有權才能花費該 UTXO。要被花費的 UTXO 會被放到 transaction 格式裡的 inputs 欄位, outputs 欄位的 UTXO 則是填入收款方的公鑰和收款金額(outputs 的 UTXO 就會是新產生的 UTXO)。
因為要保護交易的隱私,新的 UTXO 的資訊是不會洩露出去的,第三方只會看到該 UTXO 的 hash 值。那收款方要怎麼知道一個 UTXO 是不是他的呢?
sender 會利用自己的私鑰、收款方的公鑰及一個隨機值,透過密鑰交換協議來產生一個臨時的共享密鑰。 付款方用此共享密鑰加密收款方所需的資訊(包含 transfer 的代幣種類和金額),而收款方會監看每一筆交易並試著用自己的私鑰組出一個共享密鑰然後去解密,如果解密完的資料不是亂碼而是合理的,則可確認收到錢。
Withdraw使用者產生 withdraw 類別的交易,等待協議 Operator 收進區塊裡,然後再等待 withdraw period 過去,即可送出 merkle proof 來將錢提領回 layer 1。
註:提領回 layer 1 之後的收款方和金額都是公開透明的,隱私不再受保護。
零知識證明
zkopru 裡一共有三種類型的 merkle tree 來儲存所需的狀態,分別是 UTXO tree、Nullifier tree 以及 Withdrawal tree。
UTXO tree 紀錄所有產生過的 UTXO,包含新的和已經花掉的。
Nullifier tree 紀錄被花掉的 UTXO 的 nullifier 值。一個 UTXO 的 nullifer 由該 UTXO 的相關資訊算出,而且只能得出唯一一個 nullifier。這個 nullifier 能夠證明該 UTXO 已被花掉,但同時又不會洩露是哪個 UTXO 被花掉。聽起來很饒口,但這就是零知識證明的能力。
Withdrawal tree 紀錄 withdraw 類別的交易的資訊,使用者要提領回 layer 1 就需要這棵 merkle tree 的 merkle proof。也是就說,前面說的 Operator 會把 withdraw 交易放到這棵 merkle tree 裡,然後等待 withdrawal period 過後,再由使用者提供 merkle proof 來領走。
這裏以 transfer 為例來說明其中一部分的 circuit 在做什麼事
當使用者要產生一筆 transfer,他首先要證明 inputs 裡的 UTXO 都是合法的,這包含了證明:
他擁有這個 UTXO — 藉由提供簽章來證明
這個 UTXO 是真的存在的 — 藉由證明該 UTXO 的 hash 值存在 UTXO tree 裡
這個 UTXO 沒有被花過 — 藉由證明該 UTXO 的 nullifier 值不存在 Nullifier tree 裡
接者是 outputs,新產生的 UTXO 的 hash 值會被放進 UTXO tree 裡。
最後是比對 inputs 金額加總等於 outputs 金額加總再加上交易手續費。
而這些都在 circuit 裡完成,第三方沒辦法得知實際的 inputs、outputs 或 nullifiers 等等,第三方只能知道新的 UTXO 的 hash 值以及運算過程是正確的 — 也就是這些 tree 都被正確的更新了。
其他特色
Mass migration
原本每個使用者要把資產換到另外一個 layer 2 協議,他必須申請 withdraw 、等待 withdraw period ,然後把資產 deposit 到另外一個 layer 2 協議。
zkopru 支援使用者成批的搬移資產到另外一個 layer 2 協議 — 共享經濟。
Instant withdrawal
如果其他需要等待 withdraw period 的應用來說,withdraw period 是一個 UX 痛點。zkopru 的 instant withdrawal 提供急著 withdraw 的一方和不急著 withdraw 的一方一個管道能互惠。
急的一方提供一點手續費,對自己的 withdraw 交易做簽名並廣播出去。不急的一方在聽到這個簽名後,可以將這個簽名送到 zkopru 合約並附上 withdraw 金額(扣掉自己該收的手續費)。
這筆錢會直接轉給急的一方,然後急的一方的 withdraw 擁有權便會轉移到不急的一方手上,不急的一方再慢慢等到 withdraw period 過了再提領。
估計效能
目前在初版的效能估計中,一筆 transfer 平均耗費 8800 gas;而 TPS 則是 105。zkopru 還在積極更新迭代中,所以這個效能會在提升。
Reference:
https://ethresear.ch/t/zkopru-zk-optimistic-rollup-for-private-transactions/7717
https://docs.zkopru.network
https://www.chainnews.com/zh-hant/articles/443085023250.htm
[ZKP 讀書會] Zkopru was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有1部Youtube影片,追蹤數超過267萬的網紅阿滴英文,也在其Youtube影片中提到,哪天在國外要去銀行辦事情就不用怕用英文對話囉!如果剛好行員又是你的菜的話,有沒有? 阿滴英文《六週年特刊》蝦皮預購中:https://bit.ly/35cMIsI 本次也特別開放「單次購」寄往海外:https://bit.ly/3kPVeTZ 影片重點整理: 1. Open a bank acc...
transaction deposit 在 辣媽英文天后 林俐 Carol Facebook 的最佳貼文
呼!好忙的俐媽,
領完口罩,
也終於領了三倍振興券了!
之後要和孩子討論如何使用他們的振興券,
你們的券呢?
是可以自由運用,
還是被上級徵收了😂😂?
———————————————————
💰 俐媽英文教室—三倍振興券:
🏷 Triple Stimulus Vouchers 振興三倍券
🏷 voucher (n.) 抵用券
🏷 issue (v.) (正式)核發
🏷 pandemic (n.) 大規模傳染病
🏷 boost/revitalize the economy (v.) 振興經濟
🏷 recession (n.) 不景氣
🏷 influx (n.) 湧入
🏷 swarm to n. 蜂湧而至⋯
🏷 redeem (v.) 兌取/現
—> redemption (n.) 兌取/現
🏷 digital (a.) 數位的
🏷 subsidize (v.) 補助 —> subsidy (n.) 補助金
🏷 register (v.) 註冊
🏷 mobile payment (n.) 行動支付
🏷 stored value card (n.) 儲值卡
🏷 promotional campaign (n.) 促銷活動
🏷 consumption (n.) 消費
🏷 deposit (v.) 儲存
🏷 electronic ticket (n.) 電子票券
🏷 purchase (n.)(v.) 購買
🏷 eligible (a.) 有資格的(for N)
🏷 e-commerce = electronic commerce (n.) 電子商務
🏷 category (n.) 類型
🏷 screening and exclusion mechanism (n.) 篩檢及排除機制
🏷 rebate (n.) 回扣;折扣
🏷 physical store (n.) 實體店面
🏷 disadvantaged group (n.) 弱勢團體
🏷 goods (n.) 商品
🏷 charity (n.) 慈善
🏷 refund (n.)(v.) 退款
🏷 merchant (n.) 商人
🏷 be compatible with N 和⋯相容
🏷 allocate (v.) 分配
🏷 transaction (n.) 交易
🏷 platform (n.) 平台
🏷 be exempt from N 免除於⋯
🏷 scheme (n.) 計劃;方案
🏷 virtual (a.) 虛擬的
🏷
🧧 更多三倍券的英文版Q & A?
https://3000.gov.tw/EN/News_Toggle.aspx?n=40&sms=9068&page=2&PageSize=20
🗞 News:
https://krposts.com/level/details-of-triple-voucher-stimulus-scheme-unveiled-by-premier-su-tseng-chang/hax-2ZjK22qXlos
https://chinapost.nownews.com/20200630-1460030
🏪 各大超商三倍券利多:
https://newsnationglobal.com/convenience-stores-offer-incentives-alongside-triple-stimulus-vouchers/
—————————————————————
#俐媽英文教室
#俐媽英文教室振興三倍券篇
#俐媽英文教室經濟篇
#俐媽英文教室財務金融篇
#俐媽新聞英文新冠肺炎篇
#俐媽英文教室口罩篇
#明天EEC開課
#今天po文中的好多字明天剛好會教到
#你們期待嗎
#台大明明振興你的英文
transaction deposit 在 Taipei Ethereum Meetup Facebook 的最讚貼文
📜 [專欄新文章] Crosslink 2019 Taiwan|LibraBridge: 橋接 Libra 與 Ethereum
✍️ AndyLin
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
十月19–20日於台北矽谷會議中心舉行的 Crosslink 2019 Taiwan,由 Taipei Ethereum Meetup 合計共40多位志工協力舉辦,吸引了上百位來自全球的區塊鏈開發者社群齊聚。自從 Facebook 在今年六月公布 Libra 計劃之後,造成全球政府、金融機構以及區塊鏈產業的熱烈關注,其中也有許多區塊鏈開發者對於 Libra 的技術及應用產生很大的興趣。在19日上午其中一場演講由來自區塊鏈技術開發公司 AMIS 的軟體工程師 Bun Hsu,分享了其開發的專案「LibraBridge: 橋接 Libra 與 Ethereum」,透過實作 MVP 來實現 Libra 與 ETH 之間的 Swap 互換。
LibraBridge: 橋接 Libra 與 Ethereum — Bun Hsu(source: Crosslink 2019 Taiwan)
在演講的前半段,講者先介紹了在驗證 Libra 交易所需具備的基本知識;後半段則介紹其實作的 LibraBridge,並現場 demo。
一、驗證 Libra 交易
首先,先介紹驗證 Libra 交易需要具備的基本知識,包括 Merkle tree, transaction info 以及 transaction accumulator 等。區塊鏈網路中的 client node 分為 full node, light node, relay node,在這裡會著重在 light node 輕節點。輕節點不需擁有區塊鏈上所有的資料,只需透過 block header 中的 Merkle root 即可驗證交易。
接著介紹 Libra 的交易資訊,稱為 Transaction Information,主要分為 RawTransaction, SignedTransaction 以及 TransactionInfo 三部分,內容如下圖所示。
Libra Transaction Tree (source)
因為 Merkle root 的值在每次新節點加進來後都會改變,導致 Merkle tree 會不斷變大,因此,Libra 中的 transaction tree 被稱為 transaction accumulator。
Data stricture in the Libra protocol(source)
接著,講者以一個範例來說明上述內容。
從 gRPC client 收到交易後會顯示以下內容:
version: 44767signed_transaction { signed_txn: "..."}proof { ledger_info_to_transaction_info_proof { bitmap: 45055 non_default_siblings: "..." non_default_siblings: "..." non_default_siblings: "..." ... } transaction_info { signed_transaction_hash: "..." state_root_hash: "..." event_root_hash: "..." major_status: 4001 }}events { ...}
Version
每一個交易都有其唯一的版本號碼,也就是在 transaction accumulator 中 leaf node 的位置。以下圖為例,藍色節點的交易 version 為 4,二進制表示為 100,其中 0 表示向左,1 表示向右,因此我們可以從 root 出發,向右一次、向左兩次後找到此交易。此概念和 Plasma Cash 相似。
Transaction version(source)
bitmap & non_default_siblings
bitmap 表示哪個 siblings 為 default,1 表示 non-default;0 為 default。因為 transaction accumulator 會一直變大,大多數時間都不會是 full binary tree,因此,需要 default(placeholder) 來維持樹的結構。
bitmap & non_default_siblings(source)
transaction_info
交易的細節。其中,major_status: 4001 表示交易已被節點執行。而因為目前 Libra 不會消耗 gas,因此 gas_used 為 0 而未顯示。
在前半段演講結束前,講者也展示了用 Solidity 語言來驗證 Libra transaction Merkle proof 的程式碼。
Solidity snippet
而在後半段演講,講者先介紹了 LibraBridge 的應用場景。
二、透過可信任的第三方來執行 LIB-ETH 交換
目前要進行 Libra token 和 ETH 的交換,必須透過可信任的第三方來確保交易執行。舉例來說,假設參與方(使用者)擁有 Libra token,而託管方(MAX 交易所)有賣 ETH,參與方想要和託管方進行幣幣交換的方法為從 MAX 交易所入金 Libra 並與之交換 ETH,但前提是相信 MAX 交易所會如期出金,不會作惡。
但此時會有個問題產生:是否可在不完全信任託管方(MAX 交易所)的情況下來實現 LIB-ETH 的幣幣交換呢?
三、LibraBridge — Trustless custodian between Libra and Ethereum
在 LibraBridge 的實作中,藉由兩個 function 來實現無需託管信任的 LIB-ETH 幣幣交換:
Deposit:託管方傳送較多的 ETH 至合約中作為保證金。
Challenge:參與方可以質疑託管方是否實現承諾(在合約中驗證 Libra transaction Merkle proof)
以下分別討論正常情況及違約挑戰的情況:
Case 1: 正常情況
在正常的情況下,首先託管方會在合約中存入保證金,同時被鎖定直到一定時間後才能被託管方取回。而當使用者(參與方)想與託管方進行幣幣交換時,會先查詢合約上是否有足夠的保證金,若驗證通過,使用者將 Libra 代幣存入託管方,而當託管方確認後,則會傳送等值的 ETH 給使用者。
Case 1(source)
Case 2: 託管方違約
若託管方收到 Libra 後卻沒轉送 ETH 給使用者,則託管方即違約,使用者可以透過合約中的 Challenge 功能來執行違約挑戰,使用者可以出示 Libra 轉帳證明作為憑據,在驗證過 Libra transaction Merkle proof 後,合約上的押金(保證金)會被削減以歸還給使用者作為補償。
Case 2(source)
Demo
在演講的最後,講者也現場 demo 了 LibraBridge 的實作,有興趣的讀者也可以參考其官方錄製的 demo 影片。
而這場演講裡提到的內容,讀者也可參考 AMIS 的 Medium 文章及 github。
Crosslink 2019 Taiwan|LibraBridge: 橋接 Libra 與 Ethereum was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
transaction deposit 在 阿滴英文 Youtube 的最佳解答
哪天在國外要去銀行辦事情就不用怕用英文對話囉!如果剛好行員又是你的菜的話,有沒有?
阿滴英文《六週年特刊》蝦皮預購中:https://bit.ly/35cMIsI
本次也特別開放「單次購」寄往海外:https://bit.ly/3kPVeTZ
影片重點整理:
1. Open a bank account.
(開立新帳戶)
2. Make a transaction.
(匯款)
3. Withdraw some money.
(領錢)
4. Make a deposit.
(存款)
5. Get a credit card.
(申辦信用卡)
6. Deposit a check.
(兌換支票)
7. Apply for a personal loan.
(申請信用貸款)
8. I lost my debit card.
(我的金融卡不見了)
9. I forgot my PIN number.
(我忘記卡片密碼了)
10. What is the exchange rate?
(匯率是多少?)
10句常用英文節目播放清單:https://goo.gl/mBYyQd
每週一四晚上9點更新,請記得開啟YouTube🔔通知!
上一部影片 嚇死哥哥了! 阿滴第一次看滴妹MV的反應是...?https://www.youtube.com/watch?v=CpPbXm4KMvw
下一部影片 熊還可以這樣用! Bear 原來有這個意思!【2分鐘英語教室】https://www.youtube.com/watch?v=xhiQzqQ5dY8
阿滴英文的人氣影片:
■ 最有效背英文單字方法 https://youtu.be/gkVpNq4-wqs
■ 挑戰誰能先讓老師說出XXX! https://youtu.be/-wuBXIclVUo
■ 這些常唸錯的品牌到底怎麼發音? https://youtu.be/8-kgAqtuqNM
■ 三個訣竅講出流利英文 https://youtu.be/6JeTQb3YKYY
■ 這群人超瞎翻唱翻譯解析 https://youtu.be/uT4V2fbWFC4
■ 英雄聯盟打LoL必懂單字 https://youtu.be/VG_njlfMXhk
■ 挑戰15分鐘完成學測考題 https://youtu.be/l95ey_v5XTg
■ 阿滴滴妹參賽世大運 https://youtu.be/JHDF-SFvLFQ
其他連結:
http://facebook.com/rayduenglish
http://instagram.com/rayduenglish
http://pressplay.cc/rayduenglish
合作邀約:rayduenglish@gmail.com
transaction deposit 在 Transaction deposit 的相關結果
In the United States, transaction deposit is a term used by the Federal Reserve for checkable deposits and other accounts that can be used directly as cash ... ... <看更多>
transaction deposit 在 What Is a Transaction Deposit? 的相關結果
A transaction deposit is a deposit made in a transaction account that can be withdrawn without delay or penalty. ... <看更多>
transaction deposit 在 Transaction: What it Means, How it Works, Example 的相關結果
A transaction deposit is a bank deposit that has immediate and full liquidity, with no delays or waiting periods. ... <看更多>