# 央行數位貨幣(CBDC)平台功能與特性
## zkSNARK Implementation on Ourchain 討論:
1. 此篇沒有說如何驗證私鑰於zero knowledge之下的方法
2. rust語言撰寫的ZoKrates https://github.com/Zokrates/ZoKratZoKratess 我們並不熟悉
## CBDC及其平台之功能
1. 普通銀行使用實體現金向央行購買CBDC(token)
2. 央行以央行名義簽發CBDC(token)
3. 節點提供服務來維持系統,挖礦獎勵為OurCoin,OurCoin可以找持有央行名義簽發CBDC(token)的地址兌換,央行有可以自行公告匯率,但其他使用者也可以彼此間以約定匯率私下兌換
4. 維運成本(挖礦獎勵)都是央行的債,央行可以透過調節匯率,在維運系統穩定與花費間做調控
5. 央行需要以新台幣現金擔保CBDC(token),央行可以自行決定CBDC(token)兌新台幣現金的匯率
6. 央行掌握3大權柄,[CBDC(token)兌新台幣現金的匯率, 簽發CBDC(token)的權利, 挖礦獎勵與CBDC(token)的公告匯率]
## CBDC及其平台應俱備之特性
### 管理面
1. 身份識別(央行,銀行,非銀行支付機構,一般使用者),依身份設定存取權限,這邊權限的定義與範圍我們還不清楚,且需要有確定公鑰與簽章屬於哪個身份的機制
2. 只有央行能發行CBDC,而關於銷毀CBDC的部份則由[CBDC(token)兌新台幣現金的匯率, 挖礦獎勵與CBDC(token)的公告匯率]來操作收回到央行手中的CBDC量
3. 使用者及銀行只能轉移自身持有之CBDC,對於只能讀取與自身相關之交易紀錄則需要zero knowledge來做隱私保護,且隱私與溯源有根本上的衝突
### 交易面
1. 安全性依賴於對於自己私鑰的保護,對於雙花問題兩輪之後無雙花,但兩輪內還是有分叉的可能,這點系統維運穩定由央行對於挖礦獎勵與CBDC(token)的公告匯率進行調控,獎勵匯率愈高則一般正常投入算力愈大,那麼雙花的風險就愈低,央行的匯率可以根據央行需求來調高,風險也會隨之降低
2. 不可竄改與不可撤銷問題兩輪之後則不會有,但兩輪內還是有可能
3. zero knowledge來做隱私保護與溯源性有根本上的衝突(現階段技術上)
4. 兩輪後才算是正式回應交易,此時也因為過了兩輪,在我們鏈的設計下已經保障最終性
5. 當前一輪需要2秒,每筆需要兩輪,因此需要4秒,但是這點應可改進
6. 分散式的區塊鏈系統本身就具有高韌性,任意兩節點失效時還是可以運作
## 二階段
1. 交易的隱密性可由zero knowledge保證,使用者可以向政府認証並建立對政府外匿名之身份,認証時政府可以依據需求要求被認証者提供充足的資訊來了解客戶,但是之後的交易在zero knowledge保證隱密性下難以溯源
2. 使用者的容量會受限於合約的資料存量大小,不過應可拆分成多個合約來處理,另外也受限於單個block的大小,但是block的大小是可以隨更新新版的程式來改
3. 對於平均1000tps以上沒問題,但對於單筆的回應時間需要兩輪,也就是說需要把單輪時間壓至0.5秒
4. 對於平台擴充性所提到的處理量,需要先定義清楚處理量指的是什麼