WBTC 介紹

雖然專案稱作 WBTC,但在白皮書中,主要描述多個組織間管理代幣的框架,如何將資產代幣化,及避免單點風險的治理模式,以下內容取自白皮書的敘述:

A multi-institutional framework for tokenizing any asset


白皮書

由於 ERC20 Token 的易用與普遍性,ERC20 代幣成為重要的數位資產表示方式,並同時繼承來自區塊鏈與以太坊的優點,更佳的透明度與較快的交易時間。如果能將某個資產,打包成 ERC20 Token,某種程度像是在以太鏈上發行穩定貨幣,這裡的穩定貨幣意義不一定是指代幣與法幣價格上的 1:1,也可指數量上的 1:1,例如 1 BTC=1 ERC20 BTC Token。

創造穩定幣的做法通常有兩類:

  1. 算法型穩定幣 (ex: DAI, Basis, Carbon, NuBits)
  2. 中心化穩定幣 (ex: Tether, True USD, USDC, Digix, Globcoin)

在這份白皮書,採中心化穩定幣的方式,即儲備證明來產生穩定幣。代幣化的好處在於:

  1. 較快的交易速度
  2. 減少中間人摩擦
  3. 強化安全
  4. 即時的易用性
  5. 改善透明性

另外為什麼想要發行 ERC20 Token 的目的

  1. 促進分散式交易所或 DApp 上代幣的流通性
  2. ETH/Token 的交易對很多,但沒有 BTC/Token 的交易對,而 BTC 又是主流且常被交易的代幣
  3. DApp 上的工具較成熟,開發及使用相對容易
  4. 在節點管理上相對省力,無需管理多個不同類型的區塊鏈節點
  5. 若有法幣型穩定幣,也有助於電商用於交易收付

在發行代幣上,問題與挑戰為:

  1. 能支持較大的交易量
  2. 代幣發行的信任問題
  3. 由於採中心化的發幣方式,需要分散機構的風險
  4. 誰被授權持有該資產?
  5. 如何防止濫發幣?
  6. 保管方如何證明妥善保管資產?
  7. 如何監管?
  8. Custodian 必須有執照才能擔保與保管資產,且各地法律不同,Custodian 也必須提供證明,有足夠的擔保資產。針對 User,需要經過 KYC/AML 才能進行代幣交易/購買/贖回
  9. 聯盟的利益相關者如何治理?
  10. 由於系統有多個利益相關者,當代幣規則改變時,如何調整規則?

場景描述

關鍵角色, 如下圖:

  1. Custodian: 負責保管資產 (WBTC 中,角色為 BitGo )
  2. Merchant: 負責代幣的分配,鑄幣或燒幣 (WBTC 中是 Kyber Network 及 Republic protocol 來管理 )
  3. Minting (鑄造新代幣)
  4. Burning (燒毀代幣/減少總量)
  5. User: 持有代幣的使用者, 代幣可用於與他人交易
  6. WBTC DAO member: 當 Custodian, Merchant 的組織方有新加入或離開時,由這些組織會員一起投票管理 (多簽錢包)

Merchant 會維持一部分的水位, 當用戶想來換的時候才不需要重新 mint

Image for post
Implementation

系統設計

01. 託管錢包設定 (Custodian wallet setup)

託管錢包被設計於保管多個 Merchant 的資金池,而錢包則由 Custodian 的多簽錢包所控制,當 Custodian 對 Merchant 進行交易發送時,Merchant 的地址必須存在於錢包的白名單當中,此外鑄幣/燒幣的行為規定必須在 48 小時內完成。

02. 鑄幣 (Minting)

鑄幣必須由 Merchant 發起請求,由 Custodian 進行鑄幣來完成流程,整個過程牽涉多個交易行為,如下:

Image for post
  1. Merchant 在 ETH 鏈上發起一筆請求鑄幣的交易,授權 Custodian 進行鑄幣,並且記錄 Merchant 用於接收 BTC 的地址
  2. Merchant 傳送 BTC 給 Custodian
  3. Custodian 等待 BTC 入金 (6 個確認)
  4. Custodian 發起一筆鑄幣的交易,在 ETH 鏈上產生 WBTC 代幣

03. 接收 WBTC (receiving)

User 接收 WBTC 的流程

Image for post
  1. User 請求 Merchant 將 BTC 換成 WBTC (打包成 WBTC)
  2. 在發送代幣之前,Merchant 必須針對 User 通過 KYC/AML 的程序
  3. User 與 Merchant 執行原子交換或是可信任的交易方式
    – User 收到 Merchant 給的 WBTC
    – Merchant 收到用戶給的 BTC

04. 燒幣 (Burning )

燒幣事實上是將手上的 WBTC 贖回 BTC 的意思,只有 Merchant 能夠燒毀 WBTC,做法是由 Merchant 發起燒幣的交易,針對自己地址上的 WBTC 進行燒毀的動作。

Image for post
  1. Merchant 發起燒幣的交易,燒毀等量的 WBTC
  2. Custodian 等待燒幣完成 (25 個區塊確認)
  3. Custodian 將等量的 BTC 傳送到 Merchant 的 BTC 地址
  4. Custodian 在 ETH 鏈上發起燒幣完成的請求

05. 接收 BTC (receiving)

Image for post
  1. 用戶向 Merchant 發起贖回 BTC 的請求
  2. 在發送代幣之前,Merchant 必須針對用戶通過 KYC/AML 的程序
  3. 用戶與 Merchant 執行原子交換或是可信任的交易方式
  4. 用戶收到 Merchant 給的 BTC
  5. Merchant 收到用戶給的 WBTC

治理 (Governance)

關於智能合約的多簽錢包中,DAO 成員的加入與移除,需經由委員會的同意流程,M-of-N multisig wallet。

側鏈上交易

目前,WBTC 的發行與流通在 ETH 鏈上,由於主鏈上對於代幣的操作與開發環境相對友善,有錢包、瀏覽器與 DApp 等。雖然交易成本相對 BTC 便宜,但實際上操作仍需要手續費,當以太鏈壅塞時,未必能有較便宜的交易手續費。而這可以藉由 pegged sidechain 的幫助,由 DAO 成員運行既有的 parity-bridge 方案。該鏈將以 PoA 的方式運行,產塊的時間約每 4 秒一個,如此,WBTC 就能夠在主鏈與側鏈上達到較佳的擴展性。

原子交易 (Atomic Swap)

Atomic swap 會用於 Merchant 與 User 之間,為了要進行 WBTC 與 BTC 的交換。一旦 User 的 KYC 通過之後:

  1. User 產生一組 secret,並且以 off chain 的方式交給 Merchant 一個雜湊值 Hash(secret)
  2. User 與 Merchant 同意一組彼此用來交換的 ETH 與 BTC 地址
  3. User 產生一個 BTC HTLC (Hashed Time Lock Contract) 的交易,使用 Merchant 的 BTC 地址作為收款地址,退款地址為自己的 BTC 地址,其中包含用於鎖的 Hash(secret),與交易過期時間。P2SH 的地址
  4. 在確認 BTC 入金後,Merchant 以同樣的方式在 ETH 上建構 HTLC 合約,使用 User 的 ETH 地址作為收款地址,退款地址為 Merchant 的 ETH 地址,並包含用於鎖的 Hash(secret),與交易過期時間。Merchant 將 WBTC 轉送到 atomic swap contract。
  5. 用戶揭露 secret 並提領 WBTC 到用戶的 ETH 地址。
  6. Merchant 利用這個 secret 來提領 P2SH 上的 BTC。
  7. 如果 User 沒有揭露 secret 來提領 WBTC,則上述的過程將不會發生。

由於上述的動作,牽涉到交易,所以 User 必須支付手續費,當開始執行流程的時候。另外,上述的確認數目可以調降,根據信任的程度,來加速交易執行,畢竟整個流程牽涉許多 BTC 與 ETH 交易。

費用

  1. Custodian fee: 當 Merchant 鑄幣或燒幣時,由 Custodain 收走
  2. Merchant fee: 當 User 與 Merchant 交易時,由 Merchant 收走
  3. Sidechain transaction fee: 由運行 PoA 鏈的 DAO 成員收走,用於維護鏈

Trust and Transparency

所有的紀錄必須在鏈上,可定期被審查與保持透明性

Dashboard

舉例來說,下圖是一筆 mint 的交易,可以看到不同角色在鑄幣過程執行的動作,全程保持透明

Image for post

合作夥伴

Image for post

合約原始碼


本文由 AMIS Chang-Wu Chen 提供

原文連結

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料