ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一种中心化与去中心化结合的可信系统

2020-06-16 23:37:46  阅读:224  来源: 互联网

标签:验证 私有 账本 可信 公有 结合 中心化 数据 交易


摘要:现有的一些私有链与公有链结合的方式,并不能公开的验证私有链数据是否正确,用户和第三方也不能脱离私有链,完全独立的从公有链上获取信息,所以不能够完全可信。本文提出一种类公有链的系统架构,通过与私有链形成同态,并结合等价验证账户数据链将其映射到分布式的客户端节点中,每个客户端节点只需要存储和验证部分账本数据,即可等价为验证了整个账本数据,从而实现验证私有链数据是否正确。同时提供了用户数据的隐私检索功能,所以用户和第三方(需授权)都可以独立的在类公有链上隐私检索该用户的数据,并且用户可以对自己的数据实现自证明,从而达到可信的目的。

 

一.简介

现有的一些私有链与公有链结合的方式,一般会通过私有链上的数据与公有链相关联并产生一个transactions ID或hash值,然后可以通过公有链证明该transactions ID或hash值所关联的私有链数据是唯一的且未被篡改的,以证明该数据未被伪造。如果该数据是独立的数据,比如是存证类型的数据,或者是token发行数据,并不依赖私有链的其它数据,也即私有链的其它数据不会对该数据的正确性造成影响,则是可信的;但如果该数据不是独立的数据,比如是交易类型的数据,会依赖私有链的其它数据,也即私有链的其它数据会对该数据的正确性造成影响,比如类Bitcoin中的交易数据需要验证包括引用的未花费交易输出是否存在、有无双花、交易数额是否正确、解锁签名是否有效等,并且所引用的未花费交易输出会形成依赖,需要继续前向验证,进而可能需要验证私有链的整个账本数据,但公有链上无法对私有链的整个账本数据进行验证,所以仅能验证该数据未被篡改或未被伪造,并不能够可信。

即使能够验证私有链的整个账本数据,以证明该交易数据是正确的,但还是不足够的,以下进行说明。比如用户Bob在一段时间内的资产变化情况,有n笔收入,m笔支出,还有t笔贷款,每一笔都在私有链上产生一个交易并与公有链相关联产生一个transactions ID或hash值(下文用txid代替),其中贷款可认为是从私有链发行的可贷款额度池中获取的数额,收入和支出可认为是从私有链发行的token所产生的流转中的部分交易。假设txid所对应的私有链数据是正确的。此时第三方需要对Bob的账本进行审计,但Bob并不能够出示证明,因为虽然Bob给出的txid也都可以证明所对应的数据是正确的,但并不能够证明Bob给出了所有的txid,他可能会因为某种原因(比如纳税或贷款),而少给出部分txid以有利于自己。这时第三方还是需要通过中心化的机构(私有链),获取到Bob所有的txid,但也不能证明就是完整的。并且Bob从中心化机构(私有链)获取到的txid也不一定就是完整的,比如Alice转账给Bob,但Bob因为某种原因没有收到该txid。可以看出该问题在于需要依赖txid才可以在公有链上查找关联的数据并验证,而txid需要通过用户或中心化机构(私有链)获取到,且不能证明其完整性和一致性,所以也导致用户不能够自证明。

如果是将交易数据依次反向连接,比如后一个交易数据包含前一个交易数据的txid,从而形成了链。但还是需要通过用户或中心化机构(私有链)获取到最后一个交易数据的txid,才能够向前依次查找,此时还是没有办法证明该txid就是这一段时间内该用户在公有链上的最后一个txid,所以需要获取该用户在这一段时间后的一个txid,进而依次获取到该用户在这一段时间内的txid,才能证明是一致且完整的。比如Bob在一段时间内没有收入,但要证明这段时间内没有收入,需要Bob在这段时间后产生一个收入交易,需要产生一个收入来证明没有收入,这明显是不合理的。所以需要将交易数据依次正向连接,能够从前向后进行查找,这时用户和第三方(需授权)都可以独立的在公有链上检索该用户的数据,并且具有一致性和完整性,用户也就可以实现自证明。

 

二.类公有链

公有链是指任何人都可以读取、发送交易且交易能获得有效确认,也可以参与其中共识过程的区块链,比如Bitcoin。

本文定义的类公有链是除只能有一个对象S发送交易数据外,其余都与公有链定义一致的区块链。也即任何人都可以参与共识并对账本数据进行验证,也可以获取共识奖励,但奖励的交易也需S产生,因为只能包含S的交易数据。除交易数据外,还可能会有额外的数据,比如共识者的投票数据,这些数据类公有链也是可以包含的,因为不会直接修改交易数据的状态。

假设S是一个私有链,发送的交易数据实际是私有链的区块数据,里面包含了私有链的交易数据。因为区块数据是依次顺序连接的,所以类公有链也需依次顺序包含S产生的区块数据,并且S不能有分叉,因为分叉相当于有双花了。类公有链依次顺序包含S产生的区块数据,包含的数量不定,类似异步过程。并且类公有链包含的额外数据并不会直接修改交易数据的状态,所以类公有链在交易数据的状态上与S产生了同态。

首先仔细分析公有链的矿工具有的角色。矿工首先会对待打包的交易数据进行验证,然后打包生成区块数据,再广播至每个矿工进行同步并验证和记录。所以公有链的矿工具有验证者、生产者、记录者三种角色。其中验证者和记录者每个矿工都具有,但生产者需要矿工进行某种证明才能获得,比如工作量证明。这里的生产者生成了(交易)数据的集合,也就是账本数据。

现有的通过私有链数据与公有链相关联并产生一个transactions ID或hash值,以验证私有链数据未被篡改。这里的私有链具有生产者角色,公有链具有记录者角色。这里的生产者生成了(交易)数据的集合,但并不是账本数据。账本数据由记录者生成并广播至每个记录者进行记录,以保证账本数据不被篡改。通过记录者的账本数据,以验证生产者生成的(交易)数据未被篡改。但是这里没有验证者角色,无法对私有链的(交易)数据进行验证。

类公有链的系统架构与上述类似,但是具有验证者角色。因为类公有链只能依次顺序包含S产生的区块数据,所以私有链S具有生产者角色,生成了(交易)数据的集合。类公有链的矿工具有记录者角色,完整的记录了S所产生的(交易)数据集合,类似上述关联的transactions ID或hash值而不做有效验证,只确保数据不被篡改,并且记录者还可以记录不会直接修改交易数据状态的额外数据。验证者则是分布式的客户端,因为类公有链依次顺序包含S产生的区块数据,所以在交易数据的状态上与S产生了同态,并且通过等价验证将账本数据映射到分布式的客户端节点中,且通过区块(头)链与每个客户端具有一致的状态,所以每个客户端只需要存储和验证部分账本数据,即可等价为验证了整个账本数据,所以也就验证了私有链生成的(交易)数据是否正确。

公有链的矿工具有验证者、生产者、记录者三种角色,其中生产者需要进行某种证明才能获得,比如工作量证明。公有链产生新的区块数据后,并不是立即可信的,一般需要经过几个确认才能达到可信的状态,中间可能会发生分叉。经过确认后的区块数据是正确的、不可篡改的,并且具有一定的公平性。

类公有链的矿工只具有记录者角色,私有链S具有生产者角色,客户端具有验证者角色。类公有链产生新的区块数据后,并不是立即可信的,因为没有经过验证,且可能发生分叉,所以需要经过几个确认,确保不会发生分叉,也即不可篡改后,再由客户端同步区块数据并通过等价验证的方式,对账本数据进行验证。所以并不确保生成的账本数据是正确的,但能保证经过几个确认并验证后的账本数据是正确的、不可篡改的。如果私有链S产生了错误的数据,首先经过记录者记录后是不可篡改的,其次会在验证者验证时检验出来,并且不会知晓某个交易数据被哪些节点选择验证。所以类公有链的系统架构虽然不能保证生成的数据一定正确,但却可以保证错误的数据无所遁形。

用户交易数据的写入操作是通过私有链S写入账本数据,所有的读取操作则是在客户端的DHT网络上进行,通过区块(头)链的一致性可以反映所有的客户端与类公有链的状态一致,并且不会依赖私有链S给出任何检索信息(加密生成密钥和地址生成密钥不是检索信息,密钥不属于链数据。用户的签名私钥是由自己生成并保管,不能也不必透露),是完全独立的从DHT网络上获取信息,所以类公有链的系统架构是读写分离的。并且DHT网络的客户端节点通过等价验证,验证了账本数据是否正确。用户则通过账户数据链,能够正向的隐私检索用户自己的数据。还可以授权给第三方,第三方也能够隐私检索该用户的数据,并且具有一致性和完整性,所以用户可以实现自证明,还可以证明某个地址是属于该用户的地址。

类公有链的数据也需经过几个确认并验证,才能达到可信的状态。如果是小额交易,用户端可以立即信任私有链产生的数据;但如果交易数额较大,用户端可以等待一段时间,等该交易数据被包含在类公有链中,并经过几个确认和验证,就可以认为该交易数据是不可篡改的、正确的、可信的。

公有链数据是公开的、透明的,任何人可以读取并验证。类公有链数据是公开的、半透明的,任何人可以读取并验证(现有的通过私有链数据与公有链相关联并产生一个transactions ID或hash值,私有链数据并没有公开,所以与本系统不同)。半透明是指用户信息等部分内容在类公有链上是保密的,因为这属于用户自己的信息,并不属于公共状态信息,其他人也不需要验证,只需要私有链验证即可,用户也可以自证明。但涉及公共状态的信息,比如系统发行的token总量等,以及通过token所产生的流转交易,任何人都具有验证交易是否正确的权力,以防止私有链产生错误数据或者非法发行token。所以类公有链上的公共状态信息及会影响其的数据是透明的,而非公共状态信息则是保密的。

 

三.合约

类公有链的系统架构可以看作是分层的系统架构。第一层是私有链,第二层是类公有链,第三层是用户端。并且需要等价验证,所以交易数据的模型采用UTXO模型。私有链可以生成系统的状态树,所以私有链查询和修改用户的状态是通过状态树实现的,然后转换为UTXO交易数据,所以类公有链可以使用合约数据。

因为用户的交易数据分为发送交易数据和接收交易数据,并且发送交易数据是由用户发起,是对接收交易数据的花费,所以系统中的合约状态只会在用户的接收交易数据中通知和响应该用户,并且因为账户数据链将用户的所有接收交易数据依次连接形成了一条正向的逻辑链,所以用户从类公有链上依次检索该用户数据,得到的用户状态与私有链中系统状态树的该用户状态是一致的。如果发送交易会引起合约状态的改变,系统也是通过接收交易数据通知和响应该用户。

系统中的合约数据并不是公共状态信息,也不会直接影响token,并且只与某些用户相关联,所以在类公有链上,非关联的用户并不会验证合约数据。合约数据是由私有链执行,并产生一个关联的交易数据,通过交易数据完成token的流转,并在交易数据的附加数据中包含合约执行的加密结果。当类公有链包含该交易数据时,会被所有的客户端随机选择验证交易是否正确,但不会也不能解密查看合约执行结果,只有关联的用户端可以解密查看合约执行结果,并能根据合约内容对结果进行验证。因为类公有链具有不可篡改性,所以该合约执行结果是不可篡改的。所以系统中的合约数据类似链下数据,只由与之关联的用户端验证其结果是否正确,但该数据是加密存储在链上,所以是不可篡改的。并且合约产生的交易数据,会被所有的客户端随机选择验证,以确保系统的公共状态信息有效。所以类公有链的合约也不保证执行结果一定正确,但能保证合约的内容和结果不会被篡改,相关联的用户端可以验证其结果是否正确,并且可以自证明。

 

四.公平性

前文所述公有链具有一定的公平性,是因为生产者需要进行某种证明才能获得,比如工作量证明。如果不同大小的证明会对结果产生影响,也即可以通过增加证明来获得更有利的结果,则表示具有一定的公平性。如果不能通过增加证明或其它方式来获得更有利的结果,则表示具有公平性。比如是通过公有链产生一个可证公平随机数,然后再通过该随机数对结果产生影响,并且结果不会对随机数的生成者有利,则结果可认为是公平的。

类公有链的生产者是一个私有链,所以并不具有公平性。但是可以通过类公有链产生一个可证公平随机数,然后再通过该随机数对私有链的结果产生影响,并且结果不会对随机数的生成者有利,也可以认为结果是公平的。所以可以通过类公有链生成可证公平随机数,解决部分公平性的问题。

 

五.总结

文本首先分析了现有的私有链与公有链结合的一些不足。然后分析了公有链的矿工所具有的三种角色,通过不确定的生产者产生可验证的账本数据,并广播至其他验证者和记录者进行验证和记录,从而生成正确的、不可篡改的、公开的、透明的可信账本数据。

然后本文提出一种类公有链的系统架构,也是一种中心化与去中心化结合的系统架构,将生产者、记录者和验证者分为三层,分别是私有链、类公有链和DHT客户端,记录者只完整记录生产者所产生的账本数据,并同步给其他的记录者进行记录,以生成不可篡改的、公开的账本数据,并与私有链形成同态。然后将账本数据映射到DHT客户端,通过等价验证使每个客户端只需要存储和验证部分账本数据,即可等价为验证了整个账本数据,从而验证私有链的账本数据是否正确。所以类公有链并不保证生成的账本数据一定正确,但却可以保证错误的数据无所遁形。

所以类公有链的数据经过几个确认并验证后,也能达到正确的、不可篡改的、公开的、半透明的可信状态。并通过区块(头)链的一致性可以反映所有的客户端与类公有链的状态一致,也即具有全局的一致性。再通过账户数据链,用户和第三方(需授权)都可以独立的在客户端的DHT网络上隐私检索该用户的数据,还可以证明某个地址是属于该用户的地址,所以用户可以实现自证明,从而达到可信的目的。

中心化的私有链系统再结合由链转化为点的方式,能够存储和验证处理海量的交易数据,并能生成正确的账本数据。所以类公有链的系统架构,可以支持海量的用户数量以及处理海量的用户数据,并能通过读写分离的方式,在DHT网络中检索和获取经过确认和验证的可信状态数据。

标签:验证,私有,账本,可信,公有,结合,中心化,数据,交易
来源: https://blog.csdn.net/zym11/article/details/106755829

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有