订阅模式

上述订阅模式是典型的请求——响应模式,常见于客户端——服务器体系结构中。虽然这是一种有用的消息传递模式,允许应用程序进行双向对话,但它是一种相对简单的模式,在某些条件下可能不合适。例如,需要oracle提供利率的智能债券可能需要在请求-响应模式下每天请求数据,以确保利率始终是正确的。鉴于利率不经常变化,发布——订阅模式在这里可能更合适,尤其是考虑到以太坊的有限带宽。

发布——订阅是一种模式,其中发布者,这里是oracles,不直接向接收者发送消息,而是将发布的消息分到不同的类中。订阅者能够表达对一个或多个类的兴趣并仅检索那些感兴趣的消息。在这种模式下,oracle可以将利率写入其自己的内部存储,当且仅当它发生变化时。多个订阅的去中心化应用可以简单地从oracle合约中读取它,从而减少对网络带宽的影响,同时最大限度地降低存储成本。

在广播或多播模式中,oracle会将所有消息发布到一个频道,订阅合约将在各种订阅模式下收听该频道。例如,oracle可能会将消息发布到加密货币汇率通道。订阅智能合约如果需要时间序列,例如移动平均计算,则可以请求信道的全部内容; 另一个可能只需要最后一个价格来计算现货价格。在oracle不需要知道订阅合约的身份的情况下,广播模式是合适的。