作者:启明星辰ADLab
公众号:https://mp.weixin.qq.com/s/W42B0oVm1NAR2FZpNaKPvw

2019年10月24日,中共中央政治局就区块链技术发展现状和趋势进行第十八次集体学习,会议强调:“区块链技术的集成应用在新的技术革新和产业变革中起着重要作用。我们要把区块链作为核心技术自主创新的重要突破口,明确主攻方向,加大投入力度,着力攻克一批关键核心技术,加快推动区块链技术和产业创新发展”。

近日,浙江大学教授、中国工程院院士陈纯就这个问题作了讲解,并谈发表意见和建议。可以预见,区块链技术和应用在我国的推进将会带来巨大的变革,显现在宏观和微观的各个方面。陈纯院士演讲的《联盟区块链关键技术与区块链的监管挑战》核心观点包括:

  • 联盟链底层平台的核心是性能、可用性和安全隐私;

  • 链上链下数据协同技术是未来发展的一个重要方向;

  • 区块链的监管技术是区块链健康和持续发展的关键。

启明星辰ADLab认为,区块链的系统的可用性问题是涉及功能实现性的问题,而实现性问题本质是朴素的安全性问题,并针对上述第二点“链上链下数据协同技术”进行持续研究。当前,链上链下数据协同技术并不完善,导致区块链无法形成闭环,是限制区块链应用场景的主要阻碍。

例如今年的双十一购物节,电商平台争先把区块链系统应用到商品的防伪和溯源中,但消费者仍然有问题:“商品上区块链就能避免假货吗?”、“区块链上的商品信息一定是真实上传的吗?”,我们给出的答案很可能是“否”,本文将从技术角度详细解读区块链链上链下数据协同的问题。

区块链能且仅能保证链上数据的完整性

区块链本质上是一个点对点网络上的分布式账本数据库。区块链系统最显著的特征是去中心化、不可篡改,其中不可篡改的特性依赖于密码学的单向算法,这里的单向算法即为哈希算法(hash),也称为摘要算法或随机散列算法。哈希函数具有三个特点:

  • 原像不可逆:知道输入值,计算出哈希函数是容易的;知道哈希值,没有办法计算原来的输入值;

  • 抗碰撞性:寻找两个能够输出同样哈希值的不同输入在计算上是不可行的;

  • 难题友好性:没有便捷的方法去产生一个满足要求的哈希值。

区块链有一串链接的数据区块,其中包含原始数据或交易记录,还包括数据的哈希函数值和时间戳。每一个区块包含上一个区块头的哈希,因而每一个区块保证上一个区块数据的完整性,从而形成链。

![](https://images.seebug.org/content/images/2019/11/dfae3416-fa7f-45c1-a7af-a0b6a367d388.png-w331s)

我们可以获得一条结论:区块链能够保证区块数据的完整性。

然而,区块链系统不可篡改的特性是通过哈希算法在链上作用于区块数据来保证的,因此可以得到一条非常重要的区块链的本质特性:区块链能且仅能保证链上数据的完整性

如此一来,要想把区块链系统运用到线下生活中,链上链下数据的一致性就变得非常重要。这里有一些比较普遍的错误认识,我们可以再举一些例子来论证这个问题:

“假如你买到了一个西瓜,在区块链技术下,你可以知道从果农的生产到流通环节的全过程。在这其中有政府的监管信息、有专业的检测数据、有企业的质量检测数据等。”

这是一个商品来源可追溯的问题。对于这样的一个系统,攻击方式可以包括:

  • 将不符合线下实际情况的数据写入区块链:果农声称西瓜不打农药,然后将“不打农药”的信息写入区块链,然后给西瓜打上农药。

  • 冒充区块链与线下实体对应的标识符:有西瓜A,区块链系统上的UID为A,经过了完整合规的生产到流通的全过程,并写入区块链;有任意来源的西瓜B,销售人员声称其UID为A,然后进行销售。

可以看到,区块链系统对链下实体的完整性无能为力。针对这个案例,一个可能的补救方法是全程录像,然后将录像文件的哈希值作为数据写入区块链,消费者在购买西瓜时,可以通过对比录像文件来确定这个西瓜是可追溯的健康西瓜。但需要注意的是,在这样的一个补救方案中,区块链也只是保证了录像文件的完整性,而有录像文件作为对应,消费者也并不太需要区块链就能追溯这个西瓜。

区块链的本质决定了这一软肋的存在。区块链的线下问题无法解决,是因为线下实体不能支持上传下载的操作,可以上传下载的只有数据;而在物联网的终端,数据上传下载的链路无法被区块链保护。

当前的解决方案:预言机

为了将区块链技术应用到线下,例如将飞机延误险、货币兑换等业务上链,区块链需要具有访问链下数据的能力,现有的解决方案被称为预言机(Oracle)。预言机是20世纪中叶数学家图灵提出的,预言机具备图灵机的一切功能,并额外拥有一种能力:可以不通过计算直接得到某些问题的答案,这个过程叫做Oracle。如果要解决的问题是怎样计算都无法得到结果的,那么这个情况下图灵机没有用处,只有预言机才能完成任务。

预言机在区块链上的典型代表就是以太坊公链上的Oraclize服务。Oraclize独立于区块链系统之外,是一个中心化的第三方,为区块链提供数据访问服务。Oraclize可以提供的数据访问服务包括随机数、URL访问、IPFS等。其架构如下图所示:

假如有用户通过区块链系统购买了飞机延误险,飞机延误后用户发出出险请求,Oraclize可以通过访问智能合约中约定的URL询问一个或若干权威机构,这个机构可能是一个网站的API接口,如果访问结果证明飞机确实延误,则Oraclize在智能合约触发出险赔偿的操作,并通过区块链进行支付。

Oraclize具有很明显的中心化特点,这体现在:

  • O- raclize在公链上是单一或若干节点,被认可的节点才会成为Oraclize节点;

  • Oraclize的工作状态不受区块链控制,区块链不能保证Oraclize的正确性,但Oraclize会影响区块链的数据;

  • 智能合约中约定Oraclize查询一个或若干由参与各方同意的权威机构,该机构返回的数据结果影响智能合约的执行结果。

上述中心化的特性使预言机的安全性问题更加突出。针对Oraclize的安全性问题,启明星辰ADLab在安全研究中挖掘出CVE漏洞并发现攻击事件,并在2018年发表的《以太坊智能合约多个攻击案例分析》详细介绍了这方面的内容。

另一方面,尽管预言机的中心化特性带来了各种问题,坚持对预言机去中心化也是不合乎现实的。从设计上来说,公链不应赋予其上每一个节点以可编程的网络访问的能力,否则由于网络延迟、节点处理速度等各种原因,会导致每个节点获取的数据不同,使区块链的共识机制失效;甚至,智能合约可以被当作发起DDoS的工具。

总结与畅想

区块链系统在链上链下数据协同的方面存在很多亟待解决的问题,影响了区块链系统的广泛应用。虽然如此,区块链系统仍适合一些特定场景的使用:

  • 适用于联盟链的情景。联盟链仅限于预选的特定成员参加,区块链上的读写权限、记账权限按照联盟规则制定。在“去中心化”特性有所妥协的情况下,预言机运行在联盟链或许是一个可接受的解决方法,这仍需要联盟链上的预言机安全、自主、可控。

  • 适用于法定货币上链的情景。如果法定货币被定义为链上的唯一核心资产,将大大减少了线下数据的维度,从而降低预言机的实现难度。当然,法定货币这一核心资产对安全方面显然有更高的要求。

总而言之,区块链的系统的可用性问题是涉及功能实现性的问题,而实现性问题本质是朴素的安全性问题。实现区块链链上链下数据协同是难点也是发展方向,自然也会伴随安全性问题。启明星辰ADLab将针对此问题保持持续关注,助力区块链产业发展。

启明星辰ADLab一直致力于区块链系统的研究,并取得了一定成果:

  • 《A Large-Scale Empirical Study on Control Flow Identification of Smart Contracts》Ting Chen, Zihao Li, Yufei zhang, Xiapu Luo, Ting Wang, Teng Hu, Xiuzhuo Xiao, Dong Wang(ADLab of Venuestech), Jin Huang(ADLab of Venustech), Xiaosong Zhang.

  • 《智能合约安全分析和审计指南》王艺卓,陈佳林,王鑫(ADLab of Venustech),何芷珊 电子工业出版社


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1076/