一文读懂智能合约自动化:如何使用Chainlink Automation自动执行智能合约
智能合约应用一直在不断发展:最初,智能合约被用于发行并分配区块链通证的权益;后来,开发者开始利用去中心化的预言机网络打造混合型智能合约,将链上应用接入外部数据和链下计算资源,以建立DeFi、动态NFT和GameFi等全新的市场;而如今,我们的基础架构中又出现了一种新的工具,那就是keepers。这个工具的创新之处在于它可以将智能合约自动化。
本文将探讨智能合约自动化及其可能带来的各种机会。文章一开始会先为智能合约自动化做一个定义,详细解释keepers触发智能合约的机制,并探讨智能合约自动化所涉及的关键安全和成本考虑因素。然后,文章将聚焦Chainlink Automation的价值以及智能合约自动化将解锁的各种应用场景。
如果你是一名开发者,并希望了解详细代码和技术,请直接跳转至下方的入门教程或查看Chainlink Automation开发文档。
什么是智能合约自动化?
一开始,我们要先统一智能合约自动化的概念,也就是要搞清楚智能合约自动化可以帮开发者解决哪些问题。
问题:智能合约无法自动执行
智能合约是在区块链上运行的确定性程序。其代码逻辑是:“如果发生事件x,则执行任务y”。然而,智能合约无法自动执行,也就是说,合约必须要被一笔链上交易触发才能运行,并在链上发起状态变更。这笔外部交易的作用是“唤醒”智能合约,并触发合约逻辑。这就好像你得用鼠标点击桌面上的图标才能启动程序一样。
举个例子,你必须发起一笔链上交易,调用区块链借贷协议的清算功能,才能清算抵押率不足的贷款。一旦调用了这个功能,借贷协议的清算智能合约将会参考链上喂价,验证贷款是否存在抵押率不足。如果是,则用户的抵押品会被清算,以支付欠款;否则,交易会被撤回。
一些情况下,终端用户会直接通过自己的智能合约交互来调用链上功能。比如,如果一名用户想要在去中心化的货币市场贷款,可以发起一笔交易,通过抵押资产来贷入通证,这笔交易可以直接触发智能合约的贷款发放函数。这个函数将判断用户的贷款额度上限,然后将贷款金额发到用户地址。然而,很多时候智能合约为了保证协议能够健康运行,必须能够自动执行链上功能。
解决方案:通过Automation实现交易自动化
Keepers是外部账户(EOA),可以在一定经济激励下触发智能合约基于预定义的条件执行。开发团队、DAO或协议用户可以在任务中定义/提交触发条件以及完成keeper任务可以获得的奖励。智能合约通常会基于时间(比如每天在东部标准时间下午5点触发x函数)或事件(比如当资产价格超过某一阈值时触发y函数)自动执行。
Keepers是非常好用的智能合约自动化机器人,可以监控预定义的条件是否达成,一旦达成,则会自动发起交易。在这个过程中,Keeper会使用链下计算来执行与链上同样的智能合约函数。一旦函数返回值为true,则keepers会发起一笔链上交易,调用链上智能合约函数。当函数被调用后,协议的智能合约就会验证条件是否满足,然后会发起状态变更,以确保keeper是正确的。因此,智能合约只有当需要时才会根据定义清晰的条件在区块链上运行。
虽然keepers的作用相对比较简单易懂,但更重要的是在实现keeper的过程中考虑一些关键的技术问题,以更好地理解Chainlink Automation在设计方面的独特优势。
智能合约自动执行需要考虑的安全和成本因素
以下是在自动执行智能合约时必须考虑的安全和成本因素。
手动完成DevOps任务以及使用中心化的服务器
有一种keeper是在中心化的服务器上运行一个脚本,或让开发团队监控触发合约的条件是否达成,并手动发起链上交易。在这类方案中,keeper存在单点失效风险,无法保障第一时间执行智能合约函数(注:比如keeper下线或延迟)。如果智能合约无法及时执行,就可能出现由于信息不对称而导致的操纵行为,或导致用户错失一些机会,最常见的包括交易滑点、协议资金枯竭以及用户资金损失。
靠开发者手动完成DevOps任务还会占用项目有限的开发时间和资源,而这些资源本来可以用来开发核心产品以及扩大生态规模。随着时间推移,项目会想要通过将智能合约自动化来简化用户体验,并添加更多高级的功能。因此,手动完成DevOps任务会显得越来越麻烦。最终,智能合约需要实现去中心化,而负责触发合约执行的链下keeper基础架构也需要实现去中心化。
赏金机制成本高昂且无法预测
另一类keeper采用的方式是悬赏奖金。当触发条件满足时,第一个调用链上函数的keeper会获得一笔奖金。虽然这个方案基于中心化的keeper模式得到了不断改善,但仍然在成本效益、中心化水平以及不可预测性方面存在挑战。
赏金机制最大的问题在于,keeper节点最后会形成“赢者通吃”的直接竞争,这会引发优先gas拍卖(PGA)的价格战。Keepers之间互相竞争,将不断推高gas价格。因此keepers不得不支付越来越高的gas费来让矿工优先处理他们的交易。由于条件满足后只能调用一次智能合约函数,因此只有最先调用函数的keeper可以成功获得酬劳。所有其他keeper都会无功而返,因为发起的交易失败而白白承担gas费损失。大多数keeper任务的成本都包含基础费用以及一笔gas费,因此PGA会导致终端用户成本上涨,因为gas费上涨最终会转嫁到终端用户头上。
采用公开悬赏机制的keeper还会导致其他意想不到的问题。比如,PGA会加剧区块链上的拥堵,进一步推高keeper以及网络其他用户的gas费用。另外,竞争还会导致keeper数量逐渐减少,最后只有少数资本雄厚的keeper才有实力参与gas价格战。中心化的keeper网络中,负责监控和提交交易的keeper数量会相对较少,因此在可靠性方面会打折扣。
公开赏金机制还有一个危险之处,那就是keeper无法直接对智能合约做出承诺,保障服务的及时性。这在一定程度上导致了不确定性,特别是在市场严重波动和网络拥堵的情况下,而在这些情况下往往是最需要keeper效力的。比如,如果一小群互相竞争的keeper由于gas价格太高、gas余额不足或没时间等原因而不能及时触发链上合约,那么借贷协议可能就无法及时清算,最后导致合约违约。
从上述这些keeper方案中我们可以总结出一个经验教训,那就是keeper网络在自动触发智能合约时需要保障成本效益、防篡改以及可用性。
Chainlink Automation:去中心化,成本低,并且能可靠地自动执行智能合约
项目与其采用中心化的keeper模式或冒险采用公开悬赏机制,不如使用Chainlink Automation实现智能合约自动化。Chainlink Automation是一个去中心化的交易自动化服务,其可靠性和激励机制都得到了实战的检验。Chainlink Automation已经在以太坊和Polygon上运行,未来还会接入更多区块链。
Chainlink Automation拥有以下优势:
- 经济激励机制——Chainlink Automation为用户提供了一个简单的框架,用户可明确定义去中心化Chainlink节点的任务和奖励,并创建可预测的经济激励机制。
- 运行稳定——Chainlink Automation沿用了Chainlink Price Feeds专业的DevOps团队运行节点,这些DevOps团队在极端地网络拥堵和市场波动期间也能可靠地运行Chainlink Price Feeds。Chainlink Automation节点已经在各个Chainlink服务(如:Price Feeds)中为智能合约保障了800多亿美元的价值
- 成本低——Chainlink Automation网络拥有多个gas费优化功能,可以降低dApp自动化的成本;并建立了轮转机制筛选节点,避免PGA价格战并稳定用户成本。
- 执行去中心化——Chainlink建立了去中心化且透明的Automation池,可以更安全、及时地执行智能合约,为团队节省大量时间,并降低了人为干预或中心化服务器存在的风险。
- 功能更强——Chainlink Automation可以执行高级的链下计算并生成智能合约可验证的calldata,因此可以为开发者可实现前所未有的高级功能,并且不需要额外的信任假设。
- 无缝集成——Chainlink Automation可以在几个小时内就集成至智能合约。开发者可以查阅简单易懂的开发文档并获得详细的指导。
Chainlink Automation将为许多项目进一步拓展智能合约的功能并提升用户体验。
Chainlink Automation自动执行智能合约的用例
下面我们会跟大家分享几个Chainlink Automation的具体用例。我们在这里只是抛砖引玉,希望能够启发广大开发者打造出更多创新的应用场景。
自动聚合收益并偿还贷款
Alchemix 是一个自动还贷的借贷协议。其集成了Chainlink Automation,每天聚合用户抵押资产所产生的收益。聚合的收益用来偿还一部分贷款,整个过程中无需任何人为干预。
以去中心化的方式rebase弹性供应通证
COTI 正使用Chainlink Automation锚定加密货币波动指数(CVI)来调整通证供应量,UTC时间每天半夜12点会rebase一次。这样做可以更好地保障通证以完全去中心化的方式锚定CVI指数。
以最佳方式重新平衡流动性供给
Visor Finance 是针对Uniswap v3流动性提供方(LP)的管理协议,其目的是优化收益回报率。Visor Finance集成了Chainlink Automation,当达到预定义阈值时将收益和资产重新投资到活跃的流动性持仓和单一资产限价单。因此,LP可以高效及时地配置资产,并维持较高的资产利用率。
当特定事件发生时铸造限量版NFT
Curse NFT 是一个动态NFT艺术品项目,项目基于以太坊价格走势展示出模特Krystal Schott脸部五种不同的3D渲染模式。Curse NFT集成了Chainlink Automation,当以太币价格达到2万美元时将触发NFT展示最终的完整形态。
如何使用Chainlink Automation创建自动化的dApp
如果你想立刻着手开发混合型智能合约应用,并需要接入链下数据或计算资源,请查看我们的开发者文档,你也可以通过Discord询问技术问题或与Chainlink专家安排电话沟通。
想要了解更多,请访问chain.link,订阅Chainlink新闻,并在Twitter、YouTube和Reddit上关注Chainlink。