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):允许或禁止eUTxOs的花费;
  • 钱包脚本(wallet scripts):代表用户运行,以赎回资金和创建新的eUTxOs;
  • eUTxOs:每个eUTxO持有资金和一个数据点(datum),用以赎回者确认在何种情况下这些资金可以被再次使用。

这意味着Cardano智能合约在账簿上没有中心状态。每个eUTxO拥有一个独立的状态(数据),这个eUTxO与其资金是无法分割的。这就会产生以下四种可能的操作:

  • 燃烧(burn):发送资金到拥有保密的哈希承诺值的一个黑洞地址;
  • 被销毁(burned):验证某承诺值的燃烧确实发生;
  • 锁定(lock):发送资金到有密钥的某地址;
  • 赎回(redeem):赎回被上一步锁定(lock)的资金;

需要注意端点在用户钱包中运行。端点脚本在钱包中完成运行后,由此产生的交易会移至区块链。在我们的案例中,这个交易会将资金移至赎回者脚本(Redeemerscript)。这个脚本核实资金仅对它持有哈希值的目标地址可访问。


锁定中,哈希值可能是我们自己的地址。在燃烧中,哈希值指向的是一个黑洞地址。我们通过赋予哈希一个秘密的承诺值,然后翻转它来实现这一点。因为我们使用了加密哈希函数,因此几乎不可能找到其结果对应的匹配哈希值。


注意: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 D.P. 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