Cardano引入燃烧证明协议:PoB解决方案详解

燃烧证明(PoB)协议:Cardano生态系统新解决方案

近期,一个针对Charles Hoskinson提出的挑战的解决方案已经出现。该方案为Cardano生态系统引入了燃烧证明(PoB)协议。本文将介绍这一新开发的解决方案,内容包括:

  1. 燃烧证明机制及其应用概述
  2. 该PoB解决方案在Cardano网络上的智能合约实现和运作机制
  3. 智能合约的部署和测试(在测试网上)
  4. 通过向"黑洞"地址发送代币来执行PoB协议

1. 燃烧证明及其应用

代币燃烧(销毁)是一种常见做法,实质上是将代币发送到一个无法访问的"黑洞"地址。这个地址没有任何私钥可以取回被销毁的代币。公众可以验证销毁确实发生了,但只知道一个"秘密"承诺值。这种机制的设计是为了确保被销毁的资金不会被中间人审查。

燃烧机制有多种用途,可以增加剩余代币的价值,或作为区块链协议的承诺证明。大规模燃烧代币可能会造成通缩压力,因为它减少了流通中的代币总量。虽然燃烧交易很常见,但仍需要矿工接受。尽管这些机制有好处,但也有人反对燃烧代币。有鉴于此,一些团队致力于引入一种无法审查的代币燃烧协议。这种特殊操作引起了Charles Hoskinson的关注。

燃烧证明的安全性与代币转账交易的安全性基于相同的机制 - 加密哈希函数。这些函数易于计算,但很难逆向计算。本质上,它之所以难以逆向计算,是因为输入的单个位变化会导致输出的每个位都随机改变。这意味着,从加密哈希函数的输出开始逆向计算会耗费极长时间。简而言之,翻转加密哈希函数最低有效位可以创建一个黑洞地址。发送到该地址的任何内容都将变得难以或无法恢复。

加密交易的安全性完全基于公钥密码学和加密哈希函数:"每次发送资金时,都会创建一个新的未花费交易输出(UTxO)。"这个UTxO记录了资金数量和接收者公钥的加密哈希。如果接收者想使用这笔资金,必须用同一公钥签署一个新的支出交易。

为什么要翻转哈希函数输出的最低有效位,而不直接使用0x0的哈希?原因是使用已知值会使燃烧立即可见。然而,该协议的设想是先燃烧资金,然后(在单独的步骤中)证明它已被燃烧。为了实现这一点,需要首先从创建承诺值的哈希开始。随后,承诺值表明已创建了一个黑洞地址。

2. Cardano网络上的燃烧证明(PoB)智能合约

本节将解释Cardano智能合约中的燃烧证明机制。Cardano智能合约是在Cardano网络上运行的程序,允许合约开发者根据特定规则执行(金融)交易。智能合约旨在在不同交易方之间建立透明和可验证的交易。近期,去中心化金融服务和去中心化组织的兴起推动了智能合约应用的指数级增长。

传统的以太坊式智能合约由账本上记录的状态和异步调用该状态的程序组成。由于账本上的状态属于智能合约,它只能通过程序更改,所有允许的状态操作都可以从程序代码中推导出来并记录在区块链上。

Cardano生态系统采用了不同的结构,允许用户在自己的钱包中模拟每笔交易,使(网络)攻击更加困难。由此产生的变化通过区块链节点验证,然后记录下来。为此,Cardano智能合约有三个组成部分:

  • 赎回者脚本:允许或禁止花费eUTxOs
  • 钱包脚本:代表用户运行,以赎回资金和创建新的eUTxOs
  • eUTxOs:每个eUTxO持有资金和一个数据点(datum),赎回者用它来确定这些资金在什么条件下可以再次使用

这意味着Cardano智能合约在账本上没有中心化状态。每个eUTxO都有一个独立的状态(datum),与其资金不可分割。这导致以下四种可能的操作:

  • 燃烧:将资金发送到具有秘密哈希承诺值的黑洞地址
  • 被销毁:验证特定承诺值的燃烧确实发生了
  • 锁定:将资金发送到有密钥的地址
  • 赎回:赎回之前锁定的资金

需要注意的是,端点在用户钱包中运行。端点脚本在钱包中完成运行后,生成的交易会移至区块链。在我们的案例中,这个交易会将资金移至赎回者脚本。该脚本验证资金只能被拥有哈希值的目标地址访问。

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

注意:flipCommitment只翻转哈希值的最低有效位(LSB)。

接受交易的中间人无法知道这是燃烧还是锁定交易。通过使用这个脚本,中间人无法选择性地审查任何燃烧交易。燃烧和锁定使用相同的赎回者格式,只有交易发起者知道这是燃烧还是锁定。燃烧值可以通过使用给定承诺值的被销毁端点来验证。在承诺值公布之前,没有人知道被销毁的资金数量。如果您对代码感兴趣,代码库将在下一节中详细介绍。

3. 智能合约的部署(在测试网上)

要启动带有钱包的测试网节点,需要助记词和随机密码。可以通过执行以下步骤部署智能合约:

1. 安装Haskell工具链

2. 构建Plutus脚本

3. 启动连接Cardano节点和Cardano钱包的容器

4. 恢复钱包并输出钱包ID(后续步骤需要),运行以下代码(生成用于测试的随机助记词)

5. 运行燃烧代币

6. 运行,验证燃烧

通过运行上述步骤,外部无法知道这是燃烧还是锁定交易。然而,发布此脚本后,人们可能会尝试编译拒绝赎回者,对应其提议的赎回者脚本的哈希。这需要付出巨大努力,但可能导致某些燃烧被审查。为防止这种情况发生,并使违规行为更难发生,下一节将讨论如何使该解决方案更安全。

4. 从智能合约到钱包脚本

利用大多数智能合约操作发生在用户钱包中这一事实,创建只使用钱包执行的方案可能会使智能合约变得不必要。然而,这种方法可能有一个实际优势,即不可能有选择地阻止对应燃烧的智能合约交易。但是,想要阻止所有燃烧的审查者可以通过阻止所有脚本来实现目的。只使用钱包,审查燃烧的唯一方法就是审查所有Cardano交易。这对审查来说是一种终极抵抗。

要实现这一点,我们需要用承诺值的哈希替换公钥的哈希,并翻转承诺值的最低有效位。但这还不够。Cardano通过检查结构和CRC代码来防止地址中的输入错误。因此,从承诺生成地址的最简单方法是使用以下脚本和Cardano API库。

要查看其工作原理,您可以使用以下代码生成燃烧地址:

然后,您可以使用以下代码将交易提交到Cardano区块链:

要验证燃烧,您需要使用以下代码查看发送到燃烧地址的交易:

结语

本文将燃烧证明协议的实现分为智能合约或钱包交易两种方式。然而,Alonzo智能合约目前缺乏必要的基础设施,如PAB库。因此,我们建议使用钱包脚本。无论如何,PAB库将在不久的将来实施基于Cardano的应用程序开发,结合钱包脚本,一个复杂的智能合约解决方案可能更可行,以创建一个能抵御潜在审查的环境。如果您想深入了解这个解决方案,可以在GitHub上查看所有相关信息。

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 分享
评论
0/400
MetaMiseryvip
· 11小时前
ada能涨了吧
回复0
MetaMask Mechanicvip
· 11小时前
挖哦 这也太烧了吧
回复0
老韭当家vip
· 11小时前
就燃烧呗,能跌到几毛钱
回复0
FalseProfitProphetvip
· 12小时前
就这燃烧力度 能有啥效果啊?
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)