光润真空完成首轮天使轮融资,无锡天使基金独家完成
06-18
介绍|随着工业互联网加速发展,区块链技术越来越受到关注。然而,区块链平台的建设也面临着问题:数千个数据中心都有各自的数据管理模式,单一的区块链应用既不能承载大规模的数据量,也不能满足多样化的数据管理模式。
。本文是腾讯云区块链专家工程师刘长辉在“腾讯云开发者社区沙龙线上”分享内容的总结。
希望能和大家交流。点击视频查看完整视频播放 1、新基建下的区块链 区块链融合了密码学和分布式数据库技术,可以有效、安全地实现跨组织的数据共享协作,在新基建中发挥作用。
角色。新基建下的区块链具有以下四个特点:范围广、分区治理、跨链互联的分级治理、满足现有治理体系的统一实名身份、支持基于区块链的敏感数据跨链传输。
身份授权。首先,服务范围更广。
不再像前几年那样只有少数企业联盟建设信息设施,需要进行分区治理。每个区域和业务都可以构建相对独立的区块链,同时支持与其他不同区域和业务的集成。
业务区块链进行跨链协作。第二个特点是层级治理。
在区块链新基建场景中,节点并不是完全平等的,而是分层的,以满足政府或企业现有的治理体系。三是身份验证。
最好有一个统一的身份体系,类似于全国统一的身份证,即使跨地区、跨业务也可以基于身份进行授权和验证。第四个特性是支持敏感数据的跨链传输。
在保证跨机构数据共享的同时,我们还要保护数据的隐私。下面通过一个例子来说明新基建的区块链应用场景是怎样的。
在教育领域,区块链可用于管理学生身份和档案。这些都是重要的数据,需要长期管理,以保证以后不被篡改,并且数据可追溯。
通常不同的省市都会有自己的区块链系统来维护本地数据,但如果学生进入高等教育或转学,就会涉及到跨区块链的数据流动。政务领域这样的例子还有很多,比如户籍迁移或者社保等,涉及到跨区域的数据流转,也存在很多跨业务的信息协作场景。
简而言之,会出现很多基于区域或业务的分区链,这就涉及到跨链协作。 2. 如何构建高度可扩展的区块链平台。
区块链内部数据不可篡改,变化过程可追溯。然而,当涉及到跨区块链链接时,分片链之间是平行的,无法验证对方的数据是否可靠。
在这种情况下,为了保护区块链的基本特性,需要引入跨链治理平台。其功能包括跨链身份管理和跨链交易管理。
现在区块链已经纳入新的基础设施场景,将需要区块链服务更广泛的用户群体,管理更多的数据。这些最终都将取决于区块链能否实现更高的可靠性。
扩大。目前,区块链在扩展性方面面临三个主要问题:单个区块链承载的数据量有限。
单一区块链无法满足不同业务的数据管理模式。平行的企业、地区、部门组织起来的区块链相对不同。
既要求独立,又要求协作。为了追求去中心化和数据不可篡改、可追溯等特性,区块链所付出的成本和价格远高于我们平时使用的数据库。
因此,用单一区块链承载整个工业互联网的数据是不现实的。第二点是工业区块链中的各种业务会有不同的管理模式,比如不同的共识机制和策略。
在这种情况下,将所有不同的业务放在同一个区块链中是不现实的。的。
第三个问题是每个地区和企业都会建立自己的区块链。比如每个城市都会有自己独立的区块链,但同时也涉及到跨区域、跨业务的协作,这也是扩展性上的一个大问题。
针对这些问题,目前的解决方案是通过跨链解决区块链的水平扩展问题,然后通过分层解决跨链的效率监管。三、区块链去中心化与效率的权衡 1、层级治理 由于区块链强调去中心化,因此需要所有参与者相互验证。
在工业互联网场景中,由于数据量巨大,不同业务、不同区域的链是平行且平等的,无法验证其他业务链的数据是否正确,因此提出了分层已经出现。分层治理模式可以提高效率并满足监管要求。
这和我们整个社会的机制是类似的,包括政府和企业的分级管理。分层之所以能够提高区块链的效率,是因为分层相当于牺牲了部分去中心化的特性。
如果没有分层,整个区块链将是一个完全扁平化的结构,就像众所周知的公链一样,每个节点都是平等的。达成共识需要大家投票或者竞争,共识节点会很多。
如果我们把区块链做成层次化,我们就可以把共识的范围限制在少数节点,共识的规模就会小很多。比如在比特币中,为了提高比特币应用的效率,会在比特币上构建第二层网络,这也是分层的一种思想。
腾讯云区块链的分层解决方案在系统中主要分为两大层次,上面是应用层,下面是治理层。 (1) 应用层 应用层可以构建大量并行的应用子链。
应用子链可以实现不同的业务,采用不同的治理模型。子链只需要专注于自己的区块链应用并提供相关API即可。
他们不需要关心如何实现复杂的跨链流程,也不需要关心如何实现与其他链的通信,因为跨链流程是由治理层实现的。 (2)治理层 治理层为应用层的跨链协作或数据流通提供底层支持。
其功能主要分为两部分:跨链交易管理和跨链身份管理。跨链交易管理需要管理多个不同链之间交易的执行状态,以保证数据的一致性。
也就是说,多个区块链上的交易要么全部执行成功,要么全部失败,从而保证数据的一致性。与传统分布式交易不同,跨链交易处理过程需要保证去中心化。
由于交易是基于区块链进行管理的,所以称为交易链。这里采用的两阶段去中心化跨链互操作,可以实现灵活、大规模的跨链互联区块链系统。
最底层是跨链身份管理,为区块链上层应用提供可信身份服务。我们称之为身份链,用于管理子链的身份和用户的身份。
子链的身份就是上层应用子链的身份。应用子链如果需要与其他并行子链进行跨链操作,必须首先在身份链上注册自己的身份。
这个身份包含了子链暴露的一些资源管理API,以实现基于身份的服务发现。因此,身份链相当于一个公共地址簿,管理着各类身份信息。
身份信息有两种类型。首先是区块链应用的用户身份。
身份链向上层所有子链颁发统一的身份,以便子链可以验证其他子链的用户身份。通过身份链,我们可以打通不同权限的数据所有者、管理者和访问者之间的验证流程,为安全的跨链互操作提供信任基础。
在联盟链中,身份是信任的基石。基本上所有的授权验证都是基于身份的。
统一的身份系统是跨链的关键。身份信息主要包括以下几类: 身份标识符(ID):用作身份的唯一识别码;身份类型(Type):分为几类:个人、设备、机构、应用子链; Identity Public Key:身份对应的非对称加密公钥,用于签名验证(私钥为身份所有者私有);身份发行签名:发行机构/??联盟对身份的签名;身份服务:记录身份的服务地址、API等信息,根据身份类型不同,可分为“组织与应用子链”和“个人”。
这里最关键的是身份服务,它记录了与身份相关的网络服务地址、API等信息。以个人身份为例。
例如,“我”现在在深圳。那么“我”的个人身份可能就是深圳某个应用链上的对外服务地址。
这些身份以区块链的形式进行管理,形成身份。链。
身份链相当于提供了一个统一的身份,类似于真实的身份证,可以提供跨链的身份注册查询和验证功能。有了身份链,您就可以迈出跨链基于身份的区块链服务发现的第一步。
身份链作为公开透明的身份注册中心,提供身份的信任背书,并提供区块链服务发现功能。因为我们的身份包括外部服务的API。
例如,如果我有一个区块链服务,如果我想提供我的服务,我需要在区块链上注册我的身份。服务的调用者可以在相关链上查询我的服务并发起调用。
以查询某条个人数据为例。某个APP想要使用个体A的身份来查询其在身份链上的身份服务。
身份链将返回个人的身份服务,即应用子链的身份ID。 APP获取应用子链的身份ID。
然后去区块链查询链的身份服务。一旦找到,就相当于找到了外网服务地址,即查询API或者更新API。
这样APP就可以直接调用API访问应用链,对个人用户发起数据查询或更新操作。应用子链还可以审核操作权限并执行。
这就是服务发现的功能。通过服务发现,可以实现跨链查询。
2、跨链查询 跨链查询只相当于跨链的一小步。那么如何通过身份服务实现跨链查询呢?如图所示,图中有四个角色。
最底层是身份链,最上层是申请者C和两条应用链A、B。这个场景代表用户的数据托管在蓝色区块链A上,但现在用户需要授权区块链B查询其托管的数据在这种场景下,A、B、C都需要在身份链上查询对方的身份信息,验证对方的身份是否合法以及请求或授权的数字签名是否正确。
找到对方的服务地址后,身份链可以根据身份链上的服务地址直接访问对方。一般来说,身份链由监管机构管理。
例如,如果身份存在问题,监管机构可以冻结该身份。冻结后,身份信息将失效。
(1)预言机中有一个细节。例如,应用链B想要查询身份链,还需要查询子链A,这就涉及到区块链的跨链查询功能。
对于区块链来说,如果想要查询链外的数据,目前还不太容易实现。对于外部数据来说,其有效性是无法被验证的,所以如果想要查询外部数据,就必须引入区块链的预言机功能,也是区块链中比较新的技术方向。
简单来说,预言机就是一种将区块链之外的信息写入区块链的机制。我们把区块链分为两类节点,一类是普通区块链节点,一类是预言机节点。
oracle节点内置了oracle模块。当我们想要访问链外的数据时,我们通常会调用预言机的智能合约,让预言机代其读取链外的数据并写入到区块链中,然后同步到其他区块链节点。
其他节点会将这些数据写入其状态数据库,然后这些普通的智能合约就可以使用这些链下数据。区块链没有内置预言机功能,因为大多数智能合约无法直接访问外部网络资源。
有些智能合约使用通用的编程语言,例如Java、GO,可以调用网络接口访问外部。然而,智能合约通常不用来直接调用外部接口,因为它们不是很标准化。
因此,通常采用预言机来统一管理网络接口调用,然后将外部数据最终写入区块链。统一管理更加规范,二是可以将链下数据直接写入区块。
只有写入块后才能追踪外部数据。 (2)预言机简化的过程比较复杂,联盟链有更简单的解决方案。
由于联盟链的节点规模并不太大,因此可以简化智能合约的开发流程和部署方法。如下图所示,验证节点和预言机节点是一体化的。
验证节点和预言机节点之间没有单独的区别。它们都是通用的区块链节点。
智能合约不会区分预言机智能合约和普通智能合约,而是将其视为统一的智能合约。这样,智能合约就可以像普通智能合约一样访问本地状态数据库,也可以访问oracle模块。
智能合约的调用过程也需要共识。整个数据流程被简化,比如从外部调用智能合约。
那么智能合约执行过程中,如果有查询外部数据的指令,该指令就会发送到预言机模块,由预言机代表合约去外部。查询完数据后,预言机获取到外部数据后,会直接将数据返回给智能合约。
然后智能合约可以根据外部数据进行下一步计算,并将计算结果写入状态数据库。智能合约的最终处理结果和预言机得到的中间结果将一起写入区块链。
(3)预言机信任机制这里有一个关键点。使用预言机后,如何保证可信度?可信主要包括两个方面,一是去中心化,二是数据可验证性。
去中心化意味着可以部署来自不同组织的多个预言机节点,通过区块链保证去中心化。例如,如果超过2/3的预言机节点返回相同的结果,我们就认为预言机得到的结果是可信的。
预言机合约已经和普通的预言机合约进行了整合,因此也通过了共识。仅仅因为它读取的是链外的数据,所以本地没有办法验证这个数据。
它依赖于预言机节点进行背书,这与本地数据不同。第二个是数据可验证性,即如何验证外部数据是否有效。
在这个过程中,预言机的链下数据也需要经过其他节点的验证和提交,并且必须写入到区块文件中。链外数据需要标准化其数据格式,以确保其可验证。
首先是链外的服务也必须有一个身份,即证书,属于哪个机构或链,以及在哪里访问数据路径。一、链下服务可以提供URL等。
除了数据的原始内容之外,还有数据的签名。链下服务的身份私钥对原始数据进行签名。
这样就保证了预言机的可信度。 3、跨链互操作预言机只能解决链外读取数据的问题,但还有更复杂的跨链互操作问题。
跨链互操作不是简单的读取,而是意味着一个交易可能同时修改多个链上的数据,这比跨链查询要复杂。跨链互操作面临三个挑战: 一致的去中心化跨链数据可以验证现有的分布式系统。
解决一致性问题有比较成熟的方案,比如通过协调器实现两阶段提交。但问题是区块链需要去中心化,这就需要多个协调人充当公证人,将公证人聚集成联盟链,以联盟链的形式协调公证人。
三是跨链数据的可验证性。区块链非常重要的一点是数据是可验证的。
如果数据不可验证,那就和常用的数据库没有什么区别。例如,在使用数据库时,客户端提交请求,数据库向我们返回成功的响应。
例如,如果返回OK,我们就会认为数据已经提交到数据库中。这种方法对于区块链来说是不可验证的,因为对于区块链来说,感觉数据不值得信任。
因此,采用去中心化、两阶段提交的方式来实现跨链互操作并保证交易一致性。我们将从交易链中选择多个节点作为公证人集合,公证人将协调不同子链之间的互操作。
为了保证跨链过程的可验证性,公证人集合与子链之间需要相互验证。相互验证包括两部分。
一种是公证人发起提案,即双方都按照我的提案,这样提案要求就可以得到验证。由于它是由一群公证人而不是单个公证人发起的,因此可验证提案的目的是防止公证人做出邪恶行为。
双方的应用子链都需要验证公证人提案的有效性。第二个方面是提交的可验证性。
提交可以被验证,防止双方应用子链作恶。它需要一组公证人来验证应用子链交易的执行结果,验证交易所在的区块是否已被确认并提交,以及是否已通过哈希形成链。
例如,A链上的用户想要转账10元给B链上的用户,中间有一组公证人。如果想要完成交易,公证人首先发起提案。
建议是左边链A减去10元,右边链B加10元。发起的提案也必须在区块链上进行,区块链A和B都必须验证提案是否有效。
如果公证人作恶,向A链发起提案A链减10元,向B链发起提案减20元,就会出现问题。这是公证人作恶的情况,所以公证人需要去中心化,通过区块链进行投票。
另一方面,公共集合还需要验证A和B是否真正提交。如何实现验证需要借助交易链。
交易链是由公证人组成的联盟链,管理跨链交易的状态并公开记录跨链凭证。跨链证书分为两部分,一是应用子链的跨链证书,二是公共跨链证书。
子链的跨链证书包括子链的元信息和交易提交证书。子链的元信息需要提前在交易链上公开。
在跨链过程中,公证人必须验证子链的区块以及子链的交易凭证是否满足子链的提交条件。公证人和公证集合的跨链证书,包括公证人提案的签名策略和提案的签名集合。
因此,公证人需要将提案进行组装,并将同意的提案提前写入交易链中。提案策略将规定有效的策略应满足哪些公证和条件,例如需要哪些公证人共同签名才能成为有效的提案,或者必须满足多少百分比的签名才有效。
因此,在跨链过程中,子链也会验证公证人的集体提案签名是否满足提案政策。这些是跨链互操作中数据的一些可验证细节。
交易链作为去中心化的协调者,以两阶段的方式协调多个不同的应用链,以保持数据的一致性。两阶段提交的第一阶段是预执行。
一笔交易必须由交易链中的智能合约发起,最终会触发应用链的智能合约执行并调用应用链。应用链智能合约执行过程中,会调用智能合约的API来读写本地区块链的账本。
当然,第一阶段只是预执行,并不是真正的提交。因此,当应用链的合约调用API修改密钥时,需要先备份密钥。
原因是在跨链过程中,可能会出现提交成功但另一条链无法执行成功的情况,这就需要支持后续的回滚操作。因此,必须提前做好备份,并锁定key,防止当前事务执行过程中被其他事务修改。
也就是说,当我的交易还没有提交的时候,其他交易也修改了这个key的值。如果不加锁,执行回滚操作时就会出现问题。
所以我们将其转换为 4 个操作。第一步操作是查询密钥的原始值,第二步是锁定密钥,第三步是备份密钥的原始值,最后一步是实际修改密钥。
第二阶段会出现两种情况。如果应用链在预执行阶段顺利的话,就会进入确认分支的第二阶段。
确认分支相对简单。首先会删除第一阶段预执行的备份,然后解锁密钥以完成交易。
如果某个应用链的第一步失败,则需要回滚其他链的预执行操作。在回滚过程中,需要找到密钥的备份。
比如先找回备份,重置关键数据,最后释放锁。这将涉及到密钥修改机制,该机制将被4次读写操作所取代。
为了减少开销,接下来的三个操作都是写操作,即接下来的三个写操作可以批量提交。最终相当于一次读,一次写,两次请求。
添加两个阶段后,为了防止跨链交易的逻辑侵入应用合约的开发过程,两阶段执行过程的细节由系统完成。例如,如果一个合约想要修改某个密钥,它实际上并不知道执行了多少底层操作。
这样做的好处是可以支持不同的异构区块链。我们看到跨链的流程是非常复杂的,整个跨链的流程也非常繁琐。
既要遵循去中心化,又要追求数据可验证性,这就导致跨链交易的效率非常低。交易链充当多个应用链之间的通信中介。
即使是简单的跨链操作,也会涉及到三条链,任何一个节点都无法单独做出决策。这就像三组人开会,没有人可以做出决定。
所以共识决策过程是非常低效的。为了找到平衡去中心化和效率的解决方案。
在某些场景下,我们把跨链变成两个流程。第一个过程是在线过程。
我们假设节点是值得信赖的,没有节点会作恶。我们可以像传统的集中式系统一样进行通信。
例如,如果每个链中都找到一个代理,那么链之间的通信就变成了两个代理之间的通信。在网上过程中,任何交付都需要附有凭证。
无论你做出响应还是发起请求,都会有自己的数字签名,以及在数据提交过程中可以验证的数据结构。虽然为了简化流程不会实时进行验证,但在线流程中生成的各种凭证将在离线流程的第二部分中进行验证。
因为是离线的,所以不会影响效率。在追求效率的场景下,可以利用联盟链的实名特性,将跨链流程分为线上和线下两部分,将一些复杂的事情放到线下对账流程中。
4.区块链技术展望除了上面提到的可扩展的跨链互联之外,还有一些更重要的区块链技术。 1、链上链下协同 第一个是链上链下协同。
区块链为了安全可信,牺牲了一定的效率。如果想把一个业务完全放到区块链上,用这种低效的处理方式完全闭环解决,场景是有限的。
区块链只能解决链上数据的可信问题,但在现实世界中肯定需要考虑链上和链下数据的协作。比如如何保证现实世界的数据映射到链上并且是可信的。
例如,基于可信硬件的方法是先在链下对数据进行预处理,处理完后再上传到链上。还可以使用一些可信系统进行背书,这些都是与链上、链下协作相关的技术。
2、隐私保护 第二个是隐私保护。区块链为跨组织的数据共享和协作带来了便利。
与中心化的互联网业务相比,区块链在可靠性和隐私方面将面临更大的挑战。因为原来的数据只需要内部访问,但现在可能会暴露给其他联盟链的成员,所以会出现很多数学方法,比如同阶段加密、零知识证明相关的技术。
但复杂的计算需要通过可信的硬件来实现。可信硬件的原理就是把我们受保护的一些逻辑运行在可信硬件模块上,这就要求硬件必须是可信的。
从外部无法窥探或篡改内存中的运行逻辑和数据。 3.特定领域语言的智能合约第三种是特定领域语言的智能合约。
智能合约实际上是多方约定的规则或合同。从本质上讲,越简单越好。
一方面,简单意味着代码中的错误更少,另一方面,也更容易审计合约。合同不像普通的程序。
它会被更多的人看到,不同的组织和公司必须共同审核它是否安全。因此,在实际应用中,你会遇到成百上千行的智能合约。
逻辑非常复杂,对审计人员的技术背景要求很高。因此,未来可能会出现针对特定场景的智能合约。
因为针对特定场景,开发部分会比较少,审核难度和bug都会有很大的改善。Q&AQ:知识产权保护方面有应用案例吗? A:在证书存储方面,腾讯云区块链与中网安全、北铭等多家外部厂商合作开发了名为“智信链”的项目,以保护知识产权。
Q:不同底层框架的区块链可以跨链吗? A:可以跨链,但是需要重新定义跨链协议。例如,基于 Hyperledger 或以太坊的协议不具有互操作性,需要另一层封装才能实现异构跨链。
不同的区块链需要适配协议并添加适配层。目前,有很多跨链解决方案支持不同的底层框架。
但要实现这一步,您需要自己适应每个区块链,或者使用已经适应的解决方案。 Q:如何提高产链速度? A:链生成速度应该是指链上交易的速度。
联盟链中区块链的交易性能还不错。如果主要原因是共识慢、节点多,有多种解决方案。
比如分层,或者随机选择一部分节点进行共识。同意的人越少,达成共识的速度就越快。
Q:验证越来越复杂,如何保证速度? A:部分验证可以离线完成。这在当今的互联网场景中非常常见。
比如,不同业务系统之间经常会有对账,比如和银行的对账,一般是隔天进行一次,也都是线下进行。因为没有办法完全保证在线时数据的一致性。
问:公钥可以发送给任何人吗?答:公钥是公开的,放在身份中。任何人都可以在身份链中看到您的公钥。
只有能够看到您的公钥才能验证您的签名是否正确。 Q:如何打造联盟链,保证可信度?答:这个问题比较典型。
联盟链最值得信赖的构建方案是大家部署一个节点,然后生成自己的公私钥对,保存自己的私钥,共享公钥。当区块链还不存在时,需要先通过其他方式进行共享,比如通过电子邮件收集所有公钥,将共识信息写入区块链。
区块链中的第一笔交易诞生了。 。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-17
06-17
06-08
06-18
06-18
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用