📢 Gate广场 #MBG任务挑战# 发帖赢大奖活动火热开启!
想要瓜分1,000枚MBG?现在就来参与,展示你的洞察与实操,成为MBG推广达人!
💰️ 本期将评选出20位优质发帖用户,每人可轻松获得50枚MBG!
如何参与:
1️⃣ 调研MBG项目
对MBG的基本面、社区治理、发展目标、代币经济模型等方面进行研究,分享你对项目的深度研究。
2️⃣ 参与并分享真实体验
参与MBG相关活动(包括CandyDrop、Launchpool或现货交易),并晒出你的参与截图、收益图或实用教程。可以是收益展示、简明易懂的新手攻略、小窍门,也可以是现货行情点位分析,内容详实优先。
3️⃣ 鼓励带新互动
如果你的帖子吸引到他人参与活动,或者有好友评论“已参与/已交易”,将大幅提升你的获奖概率!
MBG热门活动(帖文需附下列活动链接):
Gate第287期Launchpool:MBG — 质押ETH、MBG即可免费瓜分112,500 MBG,每小时领取奖励!参与攻略见公告:https://www.gate.com/announcements/article/46230
Gate CandyDrop第55期:CandyDrop x MBG — 通过首次交易、交易MBG、邀请好友注册交易即可分187,500 MBG!参与攻略见公告:https://www.gate.com/announcements
Iagon团队成功开发Cardano生态燃烧证明协议
Iagon推出Cardano生态燃烧证明协议
Iagon近期完成了Charles Hoskinson提出的挑战,开发出适用于Cardano生态的燃烧证明(PoB)协议。本文将介绍Iagon团队的解决方案,主要包括以下几个方面:
燃烧证明及其应用
目前,加密代币的燃烧(销毁)已被广泛采用,本质上是将代币发送到一个无法访问的"黑洞"地址。这个地址无法访问,也无法重新获取被销毁的代币。公众可以验证销毁确实发生,但只知道一个"秘密"承诺值。这种机制的目的是确保被销毁的资金不会被中间人审查。
燃烧机制有多种用途,可以增加剩余代币的价值,也可以作为区块链协议的承诺证明。大规模燃烧代币可能会引发通缩压力,因为它减少了流通中的代币总量。尽管燃烧是常见的区块链交易,但仍需要矿工接受。虽然这些机制有好处,但也有人反对燃烧代币。针对这个问题,Iagon致力于引入一种无法审查的代币燃烧协议。这种特殊的无审查操作引起了Charles Hoskinson的关注。
燃烧证明的安全性基于与代币转账交易相同的机制,即"加密哈希函数"。这些函数易于计算,但非常难以反向计算。本质上,它之所以难以反向计算,是因为输入的单个位变化会导致输出的每个位随机变化。这意味着,从一个加密哈希函数的输出开始反向计算会耗费极长时间。简而言之,翻转加密哈希函数最低位可以创建一个黑洞地址,发送到该地址的任何内容都将难以或无法恢复。
这展示了加密交易的安全性完全基于公钥密码学和加密哈希函数:"每次发送资金时,都会创建一个新的未花费交易输出(UTxO)。"UTxO记录资金数量和接收者公钥的加密哈希。如果接收者想使用这笔资金,必须用同样的公钥签署一个新的支出交易。
使用翻转哈希函数输出最低位而不是直接使用0x0的哈希函数的原因是,使用已知值会使燃烧立即可见。然而,该协议的设想是先燃烧资金,然后(在独立步骤中)证明它已被燃烧。为此,需要先创建一个承诺值的哈希函数,然后承诺值显示已创建一个黑洞地址。
Cardano网络上的燃烧证明智能合约
Cardano智能合约是在Cardano网络上运行的程序,允许合约开发者根据特定规则执行(金融)交易。智能合约旨在在不同交易方之间建立透明且可验证的交易。近期,去中心化金融服务和去中心化组织推动了其应用的快速增长。
与传统以太坊智能合约不同,Cardano采用了不同的结构,允许用户在自己的钱包中模拟每笔交易,使网络攻击更加困难。由此产生的变化通过区块链节点验证后被记录。Cardano智能合约有三个组成部分:
这意味着Cardano智能合约在账本上没有中心化状态。每个eUTxO拥有独立的状态(数据),无法与其资金分离。这会产生四种可能的操作:
需要注意,端点在用户钱包中运行。端点脚本在钱包中完成运行后,生成的交易会移至区块链。在本例中,这个交易会将资金移至赎回者脚本。该脚本验证资金只能被持有哈希值的目标地址访问。
在锁定中,哈希值可能是我们自己的地址。在燃烧中,哈希值指向一个黑洞地址。我们通过给哈希一个秘密的承诺值,然后翻转它来实现这一点。由于使用了加密哈希函数,几乎不可能找到其结果对应的匹配哈希值。
需要注意,flipCommitment只翻转哈希值的最低有效位(LSB)。
接收交易的中间人无法知道这是燃烧还是锁定交易。通过使用这个脚本,中间人无法选择性地审查任何燃烧交易。燃烧和锁定使用相同的赎回者格式,只有交易发起者知道这是燃烧还是锁定。燃烧值可以通过使用给定承诺值的被销毁端点来验证。在承诺值公布之前,没有人知道被销毁的资金数量。
智能合约在测试网上的部署
要使用钱包启动测试网节点,需要助记词和随机密码。可以通过以下步骤部署智能合约:
安装Haskell工具链
构建Plutus脚本
启动连接Cardano节点和钱包的容器
恢复钱包并输出钱包ID(后续步骤需要),运行以下代码生成用于测试的随机助记词
运行燃烧代币
运行并验证燃烧
通过执行上述步骤,外界无法知道这是燃烧还是锁定交易。然而,发布该脚本后,人们可能会尝试编译拒绝与提议的赎回者脚本哈希对应的赎回者。这需要付出巨大努力,但可能导致某些燃烧被审查。为防止这种情况发生并使违规行为更加困难,Iagon致力于使该解决方案更安全,将在下一部分详细说明。
从智能合约到钱包脚本
利用大多数智能合约操作发生在用户钱包中这一事实,创建仅使用钱包的执行方案可能使智能合约变得不再必要。然而,这种做法可能有一个实际意义,即不可能有选择地阻止对应燃烧的智能合约交易。但是,想要阻止所有燃烧的审查者可以阻止所有脚本来达到目的。只使用钱包,审查燃烧的唯一方法就是审查所有Cardano交易。这对审查而言是一种终极抵抗。
要实现这一点,我们需要用承诺值的哈希替换其公钥的哈希,并翻转承诺值的最低位。但这还不够。Cardano通过检查结构和CRC代码来防止地址中的输入错误。因此,从承诺生成地址的最简单方法是使用以下脚本和Cardano API库。
要查看其工作原理,可以使用以下代码生成燃烧地址:
然后,可以使用以下代码将交易提交到Cardano区块链:
要验证燃烧,需要使用以下代码查看发送到燃烧地址的交易:
结语
本文将燃烧证明协议的实现分为智能合约或钱包交易两种方式。然而,Alonzo智能合约目前缺乏必要的基础设施,如PAB库。因此,我们建议使用钱包脚本。无论如何,PAB库将在不久的将来实施基于Cardano的应用程序开发,结合钱包脚本,复杂的智能合约解决方案可能更具可行性,以创建一个能抵抗潜在审查的环境。如果想深入了解这个解决方案,可以在Github上查看所有相关信息。