在区块链应用中,大家往往希望业务逻辑可以尽可能在智能合约上自动执行,以降低信任成本,实现业务流程智能化和自动化。因此,智能合约需要将更多互联网世界的数据上链,以满足复杂多变的应用场景。由于区块链共识机制及虚拟机固有特性,智能合约无法访问链下数据,这极大限制了智能合约的应用范围。

为了解决这些问题,微众银行区块链在多年技术研究和应用实践的基础上,积极分析、总结行业需求,研发了一套联盟链可信预言机解决方案Truora。

Truora,取Trust(可信)的涵义命名,可读为 [tru ɔ:rə]。作为连接联盟链和互联网的桥梁,Truora致力于让互联网数据安全可信地上链。

为助力全行业伙伴低门槛地使用安全可信的预言机解决方案,进一步扩宽联盟链应用场景,促进联盟链生态繁荣,微众银行区块链秉持一贯开源开放的理念,将Truora面向社区和公众完全开源,诚邀各行业伙伴携手共建。

  认识预言机

中国人民银行发布的《区块链能做什么?不能做什么?》报告中,对预言机的定义是:

区块链外信息写入区块链内的机制,一般被称为预言机 (oracle mechanism)。

区块链只能访问区块链本身的数据,闭环地解决系统内信任问题。一旦涉及到获取链下数据,其功能就会受限。主要原因是,智能合约不管何时何地运行,都必须保持结果一致,因此虚拟机不能让智能合约进行网络调用,否则结果就是不确定的。

如何将区块链和互联网世界连接起来?预言机可以扮演连接器的角色。作为一个可信任的中间件,预言机能将互联网世界的数据输入到区块链上,为智能合约提供与互联网世界的连接性。

  Truora设计理念

预言机设计需考量诸多因素,如数据响应时效性、数据准确性、使用成本,以及服务安全性等。

中心化预言机一般成本较低,时效性更高;多中心化预言机安全性、数据准确性相对更高。不同的应用场景需求各不相同,用户需要对以上特性做相应取舍。

基于此,Truora的整体设计思路为:作为一整套中心化和多中心化技术方案的集合,用户可以根据不同的业务场景,以及对信任的要求度选择适合的技术方案。

为了给联盟链提供安全可信的数据,Truora从数据源和部署方式解决可信问题:

1)数据源可信:多数据源+引入可信数据源

确保链下数据源可信是数据可信的关键一环,用户在使用预言机时,需要确保所访问的数据源是安全可靠的。当用户访问到一个不安全数据源时,不安全数据很可能导致链上逻辑出现问题。

Truora在设计时,采用了多数据源+引入可信数据源的方式,解决数据源可信问题。

多数据源:通过使用多数据源访问数据,用户可以在一定程度上防止数据源作恶。对于需获取的数据,用户可以指定多个权威或可信的数据源获取结果,Truora可支持用户实现采集多数据源结果,并反馈给用户。

引入可信数据源:Truora可结合联盟链具体场景,制定数据提供商提供数据的规范,如数据格式规范、治理规范等,从源头上提高数据可信度。同时,Truora对数据提供商进行准入控制和认证管理,通过引入优质数据服务提供商,来提供优质可信可验证的数据服务。

2)预言机中心化部署

数据源的可信问题解决后,针对预言机中心化部署,我们需要解决一个核心问题:怎么保证预言机不在抓取数据和上链数据时作恶。

预言机中心化部署方案的特点是简单高效,适用于请求时延低的场景,可快速获取数据并上链。但随之而来的问题是,中心化预言机可能出现单点故障,或中心化机构中途篡改数据作恶。

针对单点故障问题,Truora支持集群部署,即多个Truora同时监听链上事件,共用同一个数据库和私钥。

针对中心化机构中途篡改数据作恶问题,如恶意伪造和篡改数据,Truora在设计时从软件和硬件两个维度来进行规避:

  • 硬件上:将预言机置于可信执行环境(可信硬件),预言机程序部署在安全TEE环境中,程序的完整性得到保障;屏蔽其他进程访问,可有效防止oracle 服务方作恶。然而,TEE的有效性依赖TEE硬件设备自身的安全性,需要依赖可信的第三方设备白名单认证服务,在跨机构实施时,可能会遇到一定的挑战,用户可以结合自己实际情况酌情使用。

  • 软件上:Truora基于安全传输层协议TLS(Transport Layer Security)进行优化,采用真实性证明,暴露TLS连接细节,保证数据确实由数据源发出。软件上解决中心化预言机作恶问题是Truora重点研究方向。

3) 预言机多中心化部署

对于信任要求等级较高的场景,如金融、政务等,Truora提供多中心化预言机部署方案。多中心化预言机部署核心是:分布式预言机服务需要对各自采集的数据做某种程度的"共识"。

Truora通过多预言机获取数据,进行数据聚合后反馈给用户合约。数据聚合分为链上聚合和链下聚合:

链上聚合:用户可以指定特定数量的预言机节点列表和结果聚合方式(取最大值、最小值、中位数、平均数等),预言机获取数据后,一旦有足够的公开结果响应,链上聚合合约则将各预言机结果聚合,回写到用户合约。

链下聚合:链上聚合需多次与链交互,为提高聚合效率、降低成本,Truora引入p2p网络及密码学套件,使用BLS门限签名技术,实现链下聚合功能。

此外,多中心化部署鼓励机构参与搭建预言机,涉及预言机服务商治理问题。联盟链治理委员会会审核预言机服务方的资质,并维护全局的注册中心合约,管理各个预言机服务。

  Truora应用场景

涉及到将链下数据上传到区块链上的各种应用场景,都可以考虑使用Truora。潜在场景列举如下:

场景1:快递

场景:用户通过某电商平台下单购买衣服,购买成功后,用户将资金存入智能合约。正常情况下,用户签收快递后,用自己的私钥签名并将签名信息上链,智能合约会自动将钱转给商家。

但如果快递中途丢失,用户如何申请赔付呢?

解决思路:可以通过 Truora 将快递状态信息传递到链上智能合约,如用户超过一定时间未收到快递,则用户发起赔付流程,智能合约根据预言机获取的快递状态判断是否将资金返还用户。

场景二:公正摇号

场景:部分城市在购房过程中,采取摇号方式以保证公平性,其公开透明和公平性成为很多人关注的焦点。然而,购房者对摇号过程知之甚少,只能默默等待摇号结果。

封闭状态的链上无法产生安全的随机数,如何在链上产生安全的随机数以实现摇号公平?

解决思路:地产公司可以部署一个摇号智能合约,链下核实客户购房资格后,将有购房资格的客户身份标识上链,通过Truora从公证处网站或随机数网站获取随机数,或使用Truora的VRF(可验证随机数)功能产生随机数。随机数产生后,智能合约根据事先编好的摇号逻辑决定中签者,购房者则可以在链上全流程查看摇号信息。

场景三:慈善公益

场景:利用区块链技术的不可篡改性和可追溯性,可以解决慈善中的资金流向问题,比如追溯善款去向。同时,利用智能合约可有效解决传统慈善公益项目中流程复杂的问题。我们希望智能合约能对符合条件的申请者进行善款自动划拨。

为保证申请者信息的真实性,慈善机构除了在链下简单验证申请者的信息之外,还需要通过智能合约验证申请者的个人相关信息,如病例信息、房产信息、工作信息等。如何让智能合约自动校验这些信息呢?

解决思路:指定查询申请者个人信息相关的链下网站,通过Truora将申请者个人信息上链,智能合约根据这些信息判断申请者是否有资格申请、是否符合善款自动划拨条件,如核验通过后则向申请者发起自动转账,不通过则将申请者记录至黑名单。

  即刻体验Truora

Truora提供容器化部署方式,帮助用户屏蔽安装环境的复杂性,目前提供两种安装方式:快速体验和独立部署。

快速体验

此部署方式会同时部署 Truora和相关依赖,相关依赖包括:4个FISCO BCOS节点,WeBASE-Front,MySQL,Nginx服务。

部署成功后,即可在WeBASE-Front的合约IDE中开发、调试预言机合约,适合想要快速体验Truora的开发者。

独立部署

此部署方式只部署Truora和MySQL(可选)服务,适合已有FISCO-BCOS节点和 WeBASE-Front的场景。

  开源地址

github代码库地址

后端代码库:

https://github.com/WeBankBlockchain/Truora-Service

前端代码库:

https://github.com/WeBankBlockchain/Truora-Web

gitee代码库地址

后端代码库: 

https://gitee.com/WeBankBlockchain/Truora-Service

前端代码库:

https://gitee.com/WeBankBlockchain/Truora-Web

文档地址:

https://truora.readthedocs.io/

欢迎参与Truora的社区建设:

  • 如项目对您有帮助,欢迎点亮我们的小星星(点击项目左上方Star按钮)。

  • 欢迎提交代码(Pull requests)。

  • 提问和提交BUG。

  • 如果发现代码存在安全漏洞,可通过https://security.webank.com/上报。

  • 如遇技术问题,可在公众号对话框回复【小助手】,进入微众银行区块链交流群咨询。

微众银行开源联盟链可信预言机Truora,搭建数据可信上链桥梁相关推荐

  1. 四年开放共创,微众银行助力区块链产业蓬勃发展

    12月10日,2021年金链盟会员大会暨生态大会在深圳成功举行.国内区块链领域的技术专家.产业先锋等众多嘉宾齐聚一堂,历数金链盟开源生态四年共创成果,探讨产业发展未来.大会还发布了新一代的FISCO ...

  2. 可信区块链推进计划互操作项目组成立,微众银行担任副组长单位

    上层应用与底层链对接切换难.不同区块链系统间互操作难.链上链下交互难等问题如何解决?中国信息通信研究院牵头启动的可信区块链推进计划给出了参考思路.7月8日,可信区块链推进计划正式成立互操作项目组,并发 ...

  3. 微众银行张开翔: FISCO BCOS - 开放的区块链实践之道 | 11月25日【区块链技术与实践】论坛...

    张开翔老师,微众银行区块链首席架构师. 张老师在互联网业和金融行业工作多年,有丰富的分布式系统和海量服务实践经历,于2015年专注投入区块链.隐私计算的技术和行业研究,主持微众银行区块链全栈技术体系设 ...

  4. 2022全球隐私计算专利排行榜发布,微众银行位居全球银行业第一

    近日,全球知识产权综合信息服务提供商IPRdaily与incoPat创新指数研究中心联合发布了"全球隐私计算技术发明专利排行榜(TOP100)".榜单显示,入榜前10名企业主要来自 ...

  5. 数据治理展示血缘关系的工具_Nebula Graph 在微众银行数据治理业务的实践

    本文为微众银行大数据平台:周可在 nMeetup 深圳场的演讲这里文字稿,演讲视频参见:B站 自我介绍下,我是微众银行大数据平台的工程师:周可,今天给大家分享一下 Nebula Graph 在微众银行 ...

  6. 微众银行:分布式架构之高可用

    作者:Noe来源:51CTO [51CTO.com原创稿件]导言 在互联网金融快速发展的当下,面对爆发式增长的数据量.高并发海量交易场景,传统集中式架构的性能瓶颈愈发凸显.基于此,越来越多的银行等金融 ...

  7. 微众银行的金融级消息服务平台建设实践和思考

    来自:阿里巴巴中间件 导读: 近年来,随着微服务架构的流行,分布式消息引擎在物联网.分布式事务.实时计算和大规模缓存同步等场景中的应用日益增多.本文将分享微众银行基于RocketMQ构建消息服务平台的 ...

  8. 宣布全面开源,微众银行正下一盘区块链商业的大棋

    7月26日,微众银行在深圳举办了首届FinTech Day(金融科技开放日),首次系统阐述了微众银行在金融科技领域的创新进展,正式宣布金融科技全面开源. 在区块链领域,微众银行首次对外披露了其区块链开 ...

  9. 微众银行马智涛:从0到10,000构建中国最大区块链联盟

    OpenNodes是由Tribe Accelerator领导,并得到新加坡信息通信媒体发展管理局(IMDA)及新加坡金融管理局(MAS)等政府机构支持的数字媒体和互动平台,旨在推动区块链生态体系中各个 ...

最新文章

  1. iphone微信美颜插件_iPhone、安卓微信自动更新,又有新功能?
  2. 【ArcGIS微课1000例】0014:ArcGIS中如何将kml(kmz)文件转shp,并进行投影转换?
  3. 访问修饰符(C# 编程指南)
  4. 数据结构之树与二叉树的应用:哈夫曼树(最优二叉树)
  5. java集合性能测试,关于Map和List的性能测试
  6. 流程一改,魔鬼变天使
  7. hbase 中文乱码 查询_如何在 HBase Shell 命令行正常查看十六进制编码的中文?哈哈~...
  8. python绘制曲线y=2x+5_使用python动态生成波形曲线的实现
  9. excel熵值法计算权重_如何用熵值法确定指标权重?
  10. Windows超级管理器简介
  11. 两种自动化测试工具AutoRunner与Selenium的对比
  12. 普通文档怎么换成php,腾讯在线文档如何转化为普通文档
  13. 机械硬盘 与 固态硬盘SSD
  14. pack与aligned的区别
  15. com.google.zxing jar下载
  16. Go : constant shifts恒定位移旋转(附完整源码)
  17. Android 开发 官方 论坛
  18. 激活函数(阶跃,sigmoid,relu,恒等,softmax)
  19. quill-editor的使用和自定义
  20. 你好,C++(29)脚踏两只船的函数不是好函数 5.4 函数设计的基本规则

热门文章

  1. 当互联网码农遇见国企老同学
  2. 电商无货源网店真的赚钱吗?
  3. 自动驾驶场景构建交通事故分析
  4. 出炉了! 2021 年将火爆的 10款 VSCode 扩展插件
  5. 在scanf中的作用
  6. 使用数组方式代替switch增强代码可读性
  7. 计算机毕业设计springboot集团合同管理系统1u7c4源码+系统+程序+lw文档+部署
  8. ffmepg实践系列之--硬解接口实现
  9. C语言培训目标,c语言学习目标
  10. matlab虚拟现实工具箱,Matlab虚拟现实工具箱简单使用