跳到主要内容

智能合约自动化延迟消息

智能合约在其他区块链上继续运行的通常方式是依靠外部的、中心化的资源。这意味着在被链上交易触发之前,这些合约的代码不会运行并对区块链的状态进行更改。

外部交易作为一个“戳”来激活智能合约并启动其逻辑。例如,我们可以通过向拍卖合约发送一个消息来启动拍卖。当拍卖时间过去后,合约将需要处理拍卖结果。然而,这将不会发生,直到有人向合同发送适当的消息来触发这一行动。

Gear Protocol 通过引入延迟消息传递功能解决了这个问题。Gear 网络中的智能合约能够执行无限数量的区块,只要有足够的 gas 来执行。gas 预留可以保证这一点。因此,在 dApp 中包含中心化组件的需求被消除了,允许它们完全在链上运行

msg::send_delayed(program, payload, value, delay)
msg::send_bytes_delayed(program, payload, value, delay)

延迟消息将在指定的以块为单位的“延迟”之后执行。例如,在一个生成块时间为 2 秒的网络中,延迟 30 个块等于 1 分钟。

考虑到拍卖的例子,我们可以通过向拍卖合约发送消息来开始拍卖。在完成所有必要的逻辑后,拍卖合同将向自己发送一个延迟消息,这将在指定时间后解决拍卖问题。