PoB協議介紹

Introduction

Iagon於近日完成了該挑戰,並針對Charles Hoskinson先生提出[1]的問題,繼而推出適用於Cardano生態體系的燃燒證明(PoB)協議。本文將為大家介紹由Iagon團隊開發的解決方案,並按以下結構進行詳述:

1.燃燒證明機制及其應用的一般解釋;

2. Iagon燃燒證明解決方案在Cardano網絡上的智能合約執行和運行機制;

3.智能合約(在測試網絡上)的部署和測試;

4.通過發送代幣給“黑洞(black hole)”-(錢包交易)地址來執行燃燒證明協議。

1. 燃燒證明及其應用

當下,加密代幣的燃燒(銷毀)已被廣泛實施,本質上,就是發送代幣給一個“黑洞”-地址。這個地址不可訪問,亦無任何訪問密令可以重獲這些被銷毀的代幣。同時,公眾可以核實銷毀確實發生了,不過,只知道一個“秘密”,即承諾值。這個機制的推出是為了保證被銷毀的資金不被中間人所審查[2]

燃燒機制有多種功用,同時能幫剩下的代幣增值,亦或作為區塊鏈協議的承諾證明[3] 。燃燒巨額代幣可能會引發通縮壓力,因為它減少了流通中的代幣總量。儘管燃燒機制是常見的區塊鏈交易,但依然需要被礦工所接受。雖然這些機制有好處,但有些人依然站在燃燒代幣的反對面。針對此問題,Iagon致力於引入一種協議,能讓人們燃燒代幣,而無法對其進行審查。這樣沒有任何審查可能性的特別操作,引起了Charles Hoskinson [4]的注意。

燃燒證明的安全性與代幣轉賬交易的安全性所基於的機制相同,稱為“加密哈希函數( cryptographic hash functions ”。這些函數易於運算,但非常難以逆運算。本質上,它之所以難以逆運算,是因為輸入時的單個位變動,會導致輸出時每位結果都隨機改變。這意味著,當一個加密哈希函數輸出時的單個位變動,從輸出開始,其逆運算會耗費極長時間。簡言之,翻轉加密哈希函數最底位部分能夠創造一個黑洞地址。任何發送給此地址的東西都會變得難以或者無法恢復。

前者展示了加密交易的安全性,可以完全基於公鑰密碼學和加密哈希函數:“每每發送資金,都會創建一個新的未花費交易輸出( UTxO )。”這個UTxO記錄資金以及接收者公鑰的加密哈希。若接收者想要使用這筆資金,必須簽署一個新的花費交易使用同樣的公鑰。

但為何使用翻轉哈希函數輸出最低位而非直接使用0x0的哈希函數?其原因是,使用一個已知值會讓燃燒立即可見。然而,這個協議的構想是,第一步先燃燒資金,然後(在一個獨立步驟中)證明它已被燃燒。為了使之可行,需要先從創建一個承諾值的哈希函數。隨後,承諾值顯示,一個黑洞地址已創建。

2. 適用Cardano網絡的燃燒證明(PoB)智能合約

本小節,我們會解釋Cardano智能合約中的燃燒證明機制。 Cardano智能合約是在Cardano網絡上運行的程序,其允許合約開發者根據一定規則來執行(金融)交易。智能合約[5]旨在於不同交易方之間建立透明且可驗證的交易。而近期,其應用率呈拋物線式上漲的驅動因素為去中心化金融服務和去中心化組織[6]

傳統以太坊式智能合約由賬簿上記錄的狀態和應用異步調用此狀態的程序所組成。由於賬簿上的狀態屬於一個智能合約,其僅可通過程序來改變,所有被允許狀態操作都可從程序代碼推導並記錄在區塊鏈之上。

回到Cardano生態體系,它已實行一個不同的結構,它允許用戶現在自己錢包中模擬每一筆交易以使(網絡)攻擊更為困難。由此產生的改變通過區塊鏈節點驗證,這個改變隨後被記錄。出於這個目的,Cardano智能合約有三個組成部分:

  • 贖回者腳本 redeemer scripts ):允許或禁止eUTxO s的花費;
  • 錢包腳本( wallet scripts ):代表用戶運行,以贖回資金和創建新的eUTxO s;
  • eUTxOs :每個eUTxO持有資金和一個數據點(datum),用以贖回者確認在何種情況下這些資金可以被再次使用。

這意味著Cardano智能合約在賬簿上沒有中心狀態。每個eUTxO擁有一個獨立的狀態(數據),這個eUTxO與其資金是無法分割的。這就會產生以下四種可能的操作:

  • 燃燒(burn):發送資金到擁有保密的哈希承諾值的一個黑洞地址;
  • 被銷毀(burned):驗證某承諾值的燃燒確實發生;
  • 鎖定(lock):發送資金到有密鑰的某地址;
  • 贖回(redeem):贖回被上一步鎖定(lock)的資金;

需要注意端點在用戶錢包中運行。端點腳本在錢包中完成運行後,由此產生的交易會移至區塊鏈。在我們的案例中,這個交易會將資金移至贖回者腳本( Redeemer script )。這個腳本核實資金僅對它持有哈希值的目標地址可訪問。


鎖定中,哈希值可能是我們自己的地址。在燃燒中,哈希值指向的是一個黑洞地址。我們通過賦予哈希一個秘密的承諾值,然後翻轉它來實現這一點。因為我們使用了加密哈希函數,因此幾乎不可能找到其結果對應的匹配哈希值。


注意:flipCommitment僅翻轉一個哈希值的最低有效位(LSB):


承接交易的中間人無法獲知該筆為燃燒鎖定交易。通過利用這個腳本,中間人無法選擇性的審查任何燃燒交易。燃燒鎖定都使用了同樣的贖回者格式,僅交易發起者知道這個交易是燃燒還是鎖定。燃燒值可以通過用給定承諾值的被銷毀端點來檢驗。在承諾值公佈前,沒人知道被銷毀的資金多少。如果您對這個代碼感興趣,其代碼資源庫會在以下第三部分中詳述。

3. 智能合約(在測試網上)的部署[7]

使用錢包來激活測試網絡節點,需要一組助記詞和一個隨機密碼。智能合約可以通過執行以下步驟來部署:

To start a testnet node with a wallet, a mnemonic phrase and a random password is needed. The smart contract can be deployed be executing the following steps:

1.安裝Haskell工具鏈


2.建立Plutus腳本


3.開啟關聯Cardano節點和Cardano錢包的容器


4.要恢復錢包和輸出錢包ID(為以下步驟所必需),運行以下代碼(以生成用於測試的隨機助記詞)


5.通過運行燃燒代幣


6.運行,核實燃燒


通過運行上述步驟,外界無法知曉該為燃燒還是鎖定交易。然而,發布這個腳本之後,人們或許會嘗試編譯拒絕贖回者,對應其提議的贖回者腳本的哈希。這樣的操作需要付出巨大努力,但可能會導致某些燃燒被審查。為了防止這種情況發生,以及讓違規行為更難發生,Iagon通過以下第四部分,將闡述如何致力讓該解決方案更安全。

4. 從智能合約到錢包腳本

通過利用大部分智能合約操作發生在用戶的錢包中這一事實,創建執行僅使用錢包的方案可能導致智能合約變得不再必需。然而,這種做法可能會有一個實際意義,即不可能做到有選擇性的阻止對應燃燒的智能合約交易。但,一個想要阻止一切燃燒的審查員可以阻止所有腳本來達到阻止燃燒的目的[8] 。通過只使用錢包,審查燃燒的唯一方法便是審查所有Cardano交易。這對審查而言,是一種終極抵抗。

要實現這點,我們需要用承諾值的哈希替換其公鑰的哈希,並且翻轉承諾值的最低位。但這還沒結束。 Cardano會通過檢驗結構和CRC代碼來防止地址中的輸入錯誤。因此,從承諾中生成地址的最簡單的方式就是使用以下腳本和Cardano API庫:


要查看其如何運作,您可以使用以下代碼生成燃燒地址:


隨後,您可以使用以下代碼將交易提交至Cardano區塊鏈:


為了核實燃燒,您需要使用以下代碼來查看發送至燃燒地址的交易:

結語

本文將燃燒證明協議的實現分為智能合約或錢包交易。然而,Alonzo智能合約並沒有必需的基礎設施,比如PAB庫。就此原因,我們推薦使用錢包腳本。無論如何,PAB庫將在不久將來實施基於Cardano應用的開發,結合錢包腳本,一個複雜的智能合約解決方案或更具可行性,以創建一個經得住潛在審查的環境[9 ] 。若您想要深入了解這個解決方案,可在Github查看所有相關信息。

欲下載《 Iagon完成燃燒證明(PoB)挑戰促Cardano生態發展》PDF版本,請點擊此處

參考資料:

1. C. Hoskinson. “Proof of Burn Challenge”, IOHK. August 2021, https://youtu.be/KaLZJs5Y_rE.; K. Karantias, K. Aggelos & Z. Dionysis, “Proof-of-Burn”,In 523–40, 2020. https://doi.org/10.1007/978-3-030-51280- 4_28.

2. K. Karantias, K. Aggelos & Z. Dionysis, “Proof-of-Burn”,In 523–40, 2020. https://doi.org/10.1007/978-3-030-51280-4_28.

3. K. Karantias, K. Aggelos & Z. Dionysis, “Proof-of-Burn”,In 523–40, 2020. https://doi.org/10.1007/978-3-030-51280-4_28.

4. C. Hoskinson. “Proof of Burn Challenge”, IOHK. August 2021, https://youtu.be/KaLZJs5Y_rE.

5. Adams, Hayden, Noah Zinsmeister, and Dan Robinson. 2020. “Uniswap V2 Core.” Uniswap.org. 2020. https://uniswap.org/whitepaper.pdf. Ismail, Leila, and Huned Materwala. 2019. “A Review of Blockchain Architectureand Consensus Protocols: Use Cases, Challenges, and Solutions.” Symmetry 11 (10). https://doi.org/10.3390/sym11101198.

6. Y. El Faqir, A. Javier and H. Samer, “An Overview of Decentralized Autonomous Organizations on the Blockchain.” In Proceedingsof the 16th International Symposium on Open Collaboration, OpenSym 2020, New York, NY, USA, Association for Computing Machinery, https://doi.org/10.1145/3412569.3412579. ; K. Fanning and DP Centers, “Blockchain and Its Coming Impact on Financial Services.” Journal of Corporate Accounting & Finance 27 (5), 2016,53–57. https://doi.org/https://doi.org/10.1002/jcaf.22179.

7. The interface uses command line scripts. Once the PAB library is live, signing wallet transactions from web applications will be available.

8. Since each new GHC version generates slightly different Plutus code, it would require some effort by the means of static analysis or CI/CD setup that checks script hashes. But it is theoretically possible.

9. Cfr.: Infra