如何使用 Ergoscript 创建智能合约 | Ergo 平台
2024年2月20日

智能合约是去中心化金融(DeFi)的支柱,并且一直是区块链技术的主要实用工具之一。在我们讨论 Ergo 上智能合约的几个方面之前,让我们先谈谈什么是智能合约。
什么是智能合约?
智能合约是一段自我执行的代码,通常存在于区块链上。当特定条件满足时,智能合约会自动执行预定义的合同条款。它在没有中介的情况下运行,并使用代码透明且无信任地执行特定操作。这些操作可能包括购买 NFT、转移硬币和代币,或借贷资产。
Ergo 的智能合约是其与其他加密货币区分开来的众多特性之一。让我们看看 Ergo 的智能合约为何如此特别。
理解 ErgoScript
Ergo 使用基于 Scala 的编程语言 ErgoScript。Ergo 文档 表示 ErgoScript 是 Scala 的简化形式,作为一种高级语言被翻译成 ErgoTree,而 ErgoTree 又是一种在执行过程中进一步翻译成加密协议的低级语言。这种设计使 Ergo 能够支持多种加密协议,包括环签名和门限签名。与比特币不同,ErgoScript 通过引入自我复制来容纳复杂的金融合约,这允许在区块链上创建图灵完备的过程,同时保持比特币的安全性和隐私原则。实质上,ErgoScript 使得构建安全、复杂的去中心化应用程序变得更加容易,同时保持隐私能力。
创建智能合约的前提条件
由于 Ergo 是一个 eUTXO 区块链并拥有自己的编程语言,新开发者需要先熟悉 Ergo 的一些特性,然后才能创建智能合约。其中一个特性是 “盒子” 的概念。在 Ergoscript 中,'盒子' 是 UTXO 的可适应版本。它不仅作为与地址相关联的加密货币的持有者,还包含用于额外数据的 '寄存器'。这些数据可以从基本值到复杂结构不等,可用于交易和智能合约执行。这一区别使 Ergo 的盒子与典型的 UTXO 区分开来,后者仅表示与特定地址相关联的未花费加密货币金额。在基于 UTXO 的加密货币中,交易使用现有的 UTXO 作为输入,并生成新的 UTXO 作为输出,未花费的输出代表未来交易中可支配的硬币。
新开发者需要了解的另一个重要方面是对 ErgoScript 语言描述 的一般理解。这个链接将帮助新开发者入门。下面是一些 Ergoscript 方面的图片,用户可以熟悉。

我如何使用 ErgoScript 创建智能合约?
学习如何在 Ergo 上编写智能合约的第一步是熟悉 ErgoScript。需要再次注意的是,Ergo 使用的 UTXO 模型与传统的账户模型有很大不同。eUTXO 模型与智能合约的结合的一个很好的例子可以在 Ergo 文档 这里 找到。例如,具体到 eUTXO,创建智能合约涉及将交易输出指定为合约。例如,如果温度达到 90 华氏度,您可能想要支付 10 个数字硬币给您的朋友。这被表示为数字储蓄罐中的一堆,附加了一个指定支出条件的脚本。如果条件满足,您的朋友可以凭借满足条件的证明来支出这笔钱。否则,资金将保留在所有参与者可见的堆中。
智能合约对于初学者和高级开发者来说都可能复杂且令人不知所措。幸运的是,Ergo 生态系统拥有大量资源,展示了如何学习 Ergoscript 以及如何编写智能合约。这个资源 特别引导用户进入 “Ergo Playground”,在这里他们可以尝试不同难度的智能合约。罗伯特·科尔纳基(Robert Kornacki)制作的 这个视频 带您了解创建带有 PIN 锁合约的智能合约的初始阶段。

科尔纳基 表示:“这是一个简单的智能合约,它在一个 PIN 号码下锁定存入的资金。当用户最初提供 PIN 号码时,它会在链下进行哈希处理,哈希本身存储在链上。
当用户希望提取他/她的资金(支出被此合约锁定的 UTXO)时,他/她在输出 UTXO 的寄存器中提交一个 withdrawTransaction,实际的 PIN 号码。合约随后执行并检查,当新提供的 PIN 号码被哈希时,它是否等于存储在合约锁定的盒子寄存器中的原始哈希。如果它们相等,则合约验证,交易被接受为有效并添加到区块链历史中。
请注意,此合约仅作为教育示例使用。它完全不安全,绝不应在链上使用。恶意行为者可以扫描内存池以找到在 withdrawTransaction 发布时的 PIN 号码,然后通过发布带有更高交易费用 + 相同 PIN 号码的交易来抢先,从而窃取您的锁定资金。也就是说,这是一个很好的简单合约,可以让您在 Ergo 开发的初始阶段进行尝试。这可以帮助新开发者习惯使用 Ergoscript。新开发者可以使用这个 链接 直接进入 Ergo Playground,代码已经为他们导入。再次强调,这段代码不安全,仅应用于教育目的。
智能合约的未来
智能合约的未来代表着颠覆传统金融系统并用无信任和透明的假设取而代之的无尽可能性。智能合约减少了法律文书、律师和可信交易的需求。智能合约也是即时的,效率更高,这将使公司、企业和企业家能够在更短的时间内完成更多工作。智能合约的一些潜在缺点是它们通常是不可逆的,并且可能存在潜在的代码漏洞,这可能导致用户资金的损失。这就是为什么在创建智能合约时安全代码如此重要。这也是 ErgoScript 如此强大的原因之一。它是一种在正确执行时极其安全的编码语言。
结论
ErgoScript 最终是一种编码语言,由于它允许在 Ergo 上创建动态和安全的智能合约而脱颖而出。它使开发者能够创建复杂和精密的去中心化应用程序,同时比许多其他编码语言更容易构建。Ergo 的开源特性也简化了开发者构建他们愿景和创造特别事物的过程。
对于希望在 ErgoScript 和智能合约中入门或渴望更高级智能合约知识的开发者,请参考下面的文档。Ergo Discord 也有一个 #development 部分,志同道合的开发者可以在这里互动并更深入地了解 ErgoScript。
有用链接
Share post




















