智能合约Oracle如何与区块链外部环境链接
扫描二维码
随时随地手机看文章
智能合约的概念在区块链技术世界中已经使用了很长时间。比特币允许编写程序代码,强制各方遵守协议条件。实现更复杂的编程语言来编写合约是为了增加了它们的潜力和扩大它们的使用机会。以太坊本身可以被认为是这种智能合约应用的一个原始模型。
使用智能合约可以确保协议在达到一定条件后自动得到执行。但必须核实这些条件是否符合。如果交易只涉及区块链及其组件,则没有问题。不幸的是,区块链不存储关于离线世界的任何信息。因此,这种验证不能完全通过区块链和智能合约来实现。
智能合约存在缺陷
一些区块链解决方案允许编写智能合约,以便能够处理外部数据源。不幸的是,这涉及各种并发症和不可接受的后果。由于不同的地理位置、网络时滞、分布式服务等对计算机网络的破坏,同一个智能合约的两个实例经过计算可能会得到不同的结果。如果不同节点上的两个相似合约得出不同的结论,就会发生事务不一致。因此,事务可能永远不会被添加到块中,甚至可能导致分叉。此外,智能合约的主要概念有以下缺点:
· 合约以其区块链为适用范围;
· 正确的目标执行需要考虑存在变化的因素;
· 正确书写合约是困难的;
· 激活的合约不能更改或删除。
Oracle公司介绍
为了弥补访问限制,智能合约需要区块链与外部环境之间的链接。一种叫做“Oracle”的软件就扮演着这样的角色。简单地说,oracle是一个程序,它提供基于区块链的合约,可以访问外部信息。合约要求oracle提供有助于其做出决策的信息,oracle将相应地向合约提供这些信息。
Oracle可以被认为是一种特殊类型的智能合约。实际上,oracle代码必须放在一个完整的节点中。它与来自智能合约的请求进行交互,并按照严格的算法进行操作。另一方面,oracle本身不会对区块链内容进行任何更改。它只能向外部数据源发送请求,并将响应重新传输到智能合约。
需要注意的是,智能合约对于每个区块链都是不同的。这是由于应用了不同的编程语言。就比特币而言,它是一种脚本语言。以太坊智能合约是用几种语言编写的成熟程序。其他加密货币可能有完全不同的方法。合约的不同决定了神谕的多样性。尽管如此,Oracle在智能合约中所扮演的角色并没有根本区别。
后记
智能合约是小型的程序产品,包含在区块链中。每个完整节点所有者都拥有所有智能合约的完整副本。智能合约只能使用区块链内容来做决策。
oracle是放置在区块链边界上的程序代码,它可以与智能合约交换数据。oracle起着硬件或软件接口的作用。显然,区块链上唯一智能的oracle威胁到对对手方完全不信任的原则。为了解决这个问题,oracle使用了各种方法,包括硬件组件的验证。