智能合约如何可信的与外部世界交互

区块链中的智能合约在与外部世界交互时面临共识和信任问题。共识问题源于节点间获取外部数据不一致,解决方案是让第三方将数据推送进区块链。受信任方问题则需依赖预言机,如Oraclize,提供数据的可信证明。预言机分为单一模型和多重模型,多重模型在高价值场景中提供更好的安全保障。智能合约通过预言机实现与外部数据源的可信交互,确保区块链应用的稳定性和安全性。
摘要由CSDN通过智能技术生成

区块链应用中,外部世界如何与智能合约交互往往是一个容易被忽视的问题,很多的智能合约应用场景是根据一些外部事件,输出相应的结果,而传统的IT数据交互方式实际上并不能投入真正的工作。例如,按照农产品价格情况来支付投保人赔款的农产品价格险保单。传统IT人员一般认为是如下的流程:智能合约会在预定的时间,从期货交易场所获取农产品价格,然后按照获取的数据采取预设的行动。听起来很简单,但却不可能实现。为什么呢?因为这里存在两个问题,一是共识问题,二是受信任方问题。

一、共识问题

区块链是基于共识的系统,只有在每个交易和区块处理过后,并且每个节点达到相同状态,智能合约才能正常运行,所有事情必须是精确一致。如果节点之间对数据状态有歧义,整个系统就无法可信稳定运行了。在上面的案例中,智能合约由链上的每个节点独立执行,因此如果智能合约从外部服务获取数据的话,这个数据获取过程是由各节点重复和独立完成的,假设这个区块链有100个节点,那么就会有100条获取数据的请求从每个节点发送到期货交易场所,但是因为这个数据来源于区块链外部,价格是实时波动的,由于网络延迟、节点处理速度等各种原因,每个节点获取的并不是同一时刻的价格,输入到智能合约的价格数据也就不同,因此对应的各节点智能合约输出也会不同,在这种情况下,整个区块链的信任基础就会崩溃,无法达成共识。

解决的方法其实很简单,不通过智能合约发出外部数据获取指令,而是由第三方发送一笔区块链交易,在交易中附加需要的数据,交易会将数据嵌入区块,并同步到每个节点,从而保证数据的完全一致,因此可以用于智能合约的计算中。总结就是由第三方将数据推送进区块链,而不是由智能合约将数据拉取进去。

同样的问题一样发生在智能合约调用外部世界事件的情况。还是上面的例子,很多人会想象价格到预定目标,智能合约去调用期货公司的API接口,实现卖出期货的功能,从而锁定保单风险,但是如果每个节点都独立执行智能合约,那么应该由哪个节点去调用这个API呢?如果选择某个节点去执行,但是如果该节点发生故障了,无论是不是故意的,怎么保证其可靠性呢?而选择全部节点去完成API调用的话,是否每个节点都可信,怎么保证API密码的安全呢?况且一个API同时被多节点高并发频繁调用也是不合适的。

解决方法参考上面的问题,智能合约不需要获取外部API,而是第三方实时监控区块链状态,然后做出相应的反馈。例如,合作的期货交易所实时监控区块链,然后根据链上的交易情况做对应的资金转移,这样就不会对区块链共识产生威胁。

二、受信任方问题

前文提到的解决共识问题方法核心就是区块链被动接收数据,与外部的交互依赖于第三方,这个时候就会引入第二个问题,第三方如何信任?第三方如果在数据传输过程中私自篡改数据怎么办?如何审计第三方是否从正确的地址获

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值