数据上链的原则与方式

数据上链的原则与方式

2023年7月27日发(作者:)

数据上链的原则与⽅式由于区块链技术众所周知的不可篡改的特性,很多⼈就将区块链作为⼀个数据库来使⽤,在传统项⽬进⾏区块链改造的过程中,将所有本来存⼊传统RDBMS(关系数据库)的数据,全部改成存⼊区块链中,以为这就是区块链项⽬了。实际上,我们在对传统项⽬进⾏链改的过程中,由于区块链的特殊特性,并不能作为传统数据库使⽤,⽽是要将关系数据库、区块链结合,进⾏业务分析,将能上链的,有必要上链的数据进⾏区块链上链改造。那么到底哪些数据适合上链,哪些数据不适合上链,到底⽤什么⽅式上链?⼀、哪些数据不适合直接上链1. ⼤⽂件不直接上链。⽐如视频、图⽚等。主要是因为区块链作为⼀种分布式账本技术,在多个节点(甚⾄所有节点)都在本地存储了区块链完整的历史数据。如果我们将1GB的视频直接上链,那么这个视频将会在每个节点都占⽤1GB的磁盘空间,⽽且⼀旦上链是⽆法删除该交易的,所以我们还不能去删除该数据,强⾏删除将会导致区块链数据不完整,新节点加⼊同步并检查历史账本数据时将会因为数据丢失⽽校验失败。所以我们⼀般来说区块链都会限制交易的⼤⼩和区块的⼤⼩,⽐如我们要求每个交易不能超过1MB,每个区块不能超过8MB,从⽽杜绝⼤⽂件直接上链导致的磁盘急剧膨胀的问题。如果我们的⼤⽂件有上链的需求,可以采⽤哈希上链的⽅式,要么直接计算哈希值,然后将哈希上链,要么结合IPFS去中⼼化存储技术,将⼤⽂件存储到IPFS⽹络中,然后IPFS会给出⼀个特殊的哈希值,将该哈希值上链。2. 机密、敏感数据不直接上链。⽐如合同内容、订单内容。因为我们的区块链账本是分布式存储在各个节点的,所以如果我们将机密敏感的数据直接上链了,那么所有节点都会同步到上链的数据,在他们本地节点就可以查看上链后的敏感机密信息。如果有上链的需求,我们可以将数据存储在私有的数据库或者IPFS中,然后哈希上链,也可以通过密码学的⽅法进⾏加密,然后密⽂上链。3. ⼤量、冗余重复的数据不直接上链。⽐如系统⽇志。⼀般系统⽇志如果开到DEBUG级别,每秒⼏千⼏万笔⽇志记录是很正常的,⽽且这些⽇志的价值信息很低,基本都是很细节的,冗余重复的⽇志。⽽区块链本⾝是⼀个性能有限的⽹络,⼀般TPS都是在千级别,能做到上万TPS的都已经是很厉害的了。⽽如果我们将⼤量冗余重复的数据上链,那么将会占⽤⼤量带宽,导致真正有价值的数据淹没在⽇志交易中,排队等待打包,从⽽影响我们正常业务的运⾏。⽽且⼤量⽇志上链也会导致区块链磁盘占⽤快速膨胀,对所有节点的存储也是挑战。我们如果有⽇志上链的需求,⼀般可以按批次,将⽇志进⾏IPFS存储、计算哈希,或者通过⼀种叫KSI()的⽅式,对批量⽇志建⽴哈希树,将哈希根上链。⼆、哪些数据适合上链1.有价值含义的数据上链。⽐如积分、票据、礼品卡、游戏⾦币、游戏道具等。区块链天然可⽤于构建价值⽹络,在区块链中可以很容易的⽀持通证(Token)的创建、流转、销毁等操作。⼀般通证分为两种:同质化通证(fungible Token)和⾮同质化通证(NFT全称是non-fungible Token)。通证并不是公有链独有的技术,在联盟链中,也可以通过合约实现这两种通证。同质化通证⽤于表⽰同⼀种类型的,彼此没有区分的价值符号,⽐如你有1000个国航⾥程积分和我有1000个国航⾥程积分是没有区别的,我们都可以去兑换相同的礼品,其价值是⼀样的。所以某商家的积分、某游戏⾦币都可以⽤同质化通证在区块链上实现。⾮同质化通证⽤于表⽰彼此之间有区别,具有唯⼀性的符号。⽐如游戏道具,不同的道具可能具有不同的属性,从⽽在游戏中具有不同的表现。对于这些有价值,⽽且可以看得出来是有流通需求的数据,就可以⽤通证来表⽰。2. 有共享需求的数据上链。⽐如⿊名单共享。⾏业中经常有数据共享的需求,⽐如在银⾏之间希望能够共享信⽤⿊名单,如果在⼀个⼈在某个银⾏失信,进⼊了银⾏的⿊名单,那么其他银⾏肯定也不愿意贷款给这个⼈。于是银⾏之间可以建⽴区块链,每个银⾏将⿊名单共享到区块链中,利⽤区块链共享账本的特点,所有上链数据同步到每个银⾏的区块链节点中。当然出于隐私保护和法律法规的要求,我们不会直接明⽂上链,可以通过⼀些密码学的⽅法,将⿊名单数据在各个银⾏之间共享,同时也保证不泄露更多隐私信息。3. 有协同处理需求的数据上链。⽐如商品溯源。⼀件商品从⽣成出⼚到后⾯经过总经销商、分销商、各个物流公司、零售商才会到达消费者⼿中,如果是跨境贸易,那么中间还会经过海运、海关等环节,中间经⼿的环节多,参与⽅⼜是独⽴的不同的公司和政府部门,所以我们想要知道每件商品到底经过了哪些环节,每个环节花费了多久的时间,从⽽进⼀步的优化流程;消费者想要知道购买的商品是否是仿冒品,中间经过哪些环节,那么就需要将物品的溯源做好。商品溯源的⼀⼤难点就在于中间经⼿的环节太多,⽽且是不同的公司,所以⼀个中⼼化的系统很难处理。⽽区块链分布式账本的特点,可以为每个环节的公司和政府部门建⽴节点,他们只需要将⾃⼰的系统对接本地的区块链节点,在业务流转过程中,通过区块链实现各个环节公司的协同。4. 有审计要求的数据上链。⽐如核⼼数据操作⽇志。在传统中⼼化系统中,我们将商家评分、消费者评价、企业信⽤评估分等存储到数据库中,平台系统根据数据库中的数据决定是否优先展⽰,是否给予批贷款等,所以这些数据是⾮常核⼼,⾮常重要的。真是由于这些数据的重要性,所以也带来了⼀种⿊产:修改信⽤评分、删除差评等。究其原因是因为中⼼化数据库系统中的数据是可以被修改,可以通过系统漏洞或者⾏贿数据库管理员,由管理员修改了核⼼数据。⽽采⽤区块链技术,我们将核⼼数据上链,基于区块链不可篡改的特点,即使是IT管理员也⽆法篡改这些上链数据。所有修改都会留痕,并被审计,所有⿊客攻击篡改⾏为和内部⼈员的数据修改⾏为都⽆所遁形。三、数据上链的⽅式1.原⽂上链。这种主要适⽤于只上链⼀个字段的情况,⽐如我们做了⼀个许愿的DAPP,就是⽤户将⾃⼰的⼼愿写到区块链上,⽽这个⼼愿可能就是⼏个字,也可能是长篇⼤论,但不管怎么样,他可以认为就是⼀个⽂本字符串,⽽我们的上链操作就是将整个字符串直接上链存储。2.格式化后上链。这种主要适⽤于业务数据上链的场景,⽐如企业要将⾃⼰⽣成的所有产品上链,⽽产品本⾝具有很多属性,⽐如:材质、总量、类型等等。企业可以将产品的所有要上链的属性构建成XML对象或者JSON对象(个⼈更推荐使⽤JSON对象),然后将格式化(序列化)后的产品对象上链。不推荐使⽤protobuf、rlp等数据库不⽀持的序列化⽅法,⼀般很多NoSQL数据库是⽀持JSON对象的索引的,所以如果我们存⼊的是JSON对象,那么还可以直接对存⼊的对象进⾏各种条件的检索。3.哈希摘要上链。这种主要⽤于⽂件上链的场景。前⾯说到,区块链不适合将⼤⽂件直接上链,⽽哈希算法可以将⼤⽂件计算出⼀个固定长度的摘要。(⽐如SHA256算法,算出来32字节的摘要)使⽤哈希摘要可以保证原始数据不会被篡改,因为⽂件⼀旦被篡改,那么算出来的哈希值和链上的哈希值不匹配。⽽为了预防⽂件存储在某个服务器硬盘上,万⼀服务器硬盘坏了,那么数据就永远丢失了这种情况,我们可以采⽤IPFS这种分布式存储技术。IPFS负责将⼤⽂件切割成很多个⼩块,然后将⼩块分散存储在多台服务器中,从⽽避免了单机故障造成⽂件丢失的可能。同时IPFS在⽂件分割和存储的同时,也会计算出⼀个哈希摘要,我们可以将该哈希摘要上链(可能还需要对哈希进⾏加密),在获得⽂件准确的哈希值,就可以通过IPFS获得原始⽂件。4.加密后上链。这种上链⽅式好主要适⽤于不希望其他⽅看到的机密敏感数据。加密⼀般采⽤对称加密,⽽加密的密钥每个⽂件都不⼀样,我们可以将密钥⽤上链⽅的公钥进⾏加密,这样只有私钥持有⽅才能解密出对称密钥,然后再⽤对称密钥解密链上数据。为什么不直接⽤数据持有者的公钥加密呢?因为⼀⽅⾯对称加密的性能远远⾼于⾮对称加密,另⼀⽅⾯,如果我们希望将某个链上数据共享给另⼀⽅,那么他只需要解密对称密钥,然后将该密钥⽤对⽅的公钥加密上链,这样对⽅就可以使⽤⾃⼰的私钥解密出对称密钥,然后⽤对称密钥解密出⽂件。四、数据上链为我们带来什么安全优势1.所有上链数据基于密码学数字签名,上链数据不可被第三⽅篡改,不可抵赖。这是基于区块链交易的基本特性,数据要上链就得通过交易,⽽交易要被⼴播和打包到区块中,就必须要有数字签名。⽽数字签名保证了交易数据⽆法被第三⽅篡改,也保证了上链数据必然是私钥持有者签名的,不可伪造,不可抵赖。2.基于多参与⽅的共识算法,防⽌单⽅⾯作恶,修改⾃⼰链上历史数据。区块链作为分布式账本,在记账时,需要多⽅进⾏共识,只有共识通过才会被记账,⽽⽆论采⽤哪种共识算法,都需要保证单⽅或者少数节点的作恶⾏为不会影响整个链的数据。⽽基于区块链的链式数据和区块头中包含区块所有交易的默克尔根的特点,保证了历史数据⽆法被篡改。这⾥的⽆法篡改和基于签名的⽆法篡改是两种情况。数字签名保证的是原始数据不会被第三⽅篡改,但是如果⼀个⽂件只是由我⽤⾃⼰的私钥签名了,那么我是可以修改⽂件的内容,然后再⽤我⾃⼰的私钥重新签名,⽣成⼀个新的合法的签名⽂件的。⽽区块链的共识算法就是如果我已经把A⽂件签名并上链了,那么我⾃⼰都不能把A⽂件改成A1后重新签名,神不知⿁不觉的把A替换成新的A1。3.基于分布式技术,每个节点具有完整全账本,防⽌单机故障和数据丢失。因为我们上链的数据具有多个副本,每个全账本节点都保留了完整的区块链数据,所以不存在单机故障导致整个区块链⽹络⽆法正常运⾏或者因为硬盘故障导致链上数据丢失的可能性。4.基于联盟链的节点准⼊、TLS加密通讯、通道隔离等技术,保证了数据的传播范围可控,防⽌数据被窃取。这⾥主要说的是联盟链技术,联盟链属于许可链,和开发的任何⼈都可以访问的公有链相⽐,联盟链是受限访问的,即使联盟链节点部署在互联⽹中,但是由于节点准⼊的限制,并不是任何⼈下载了节点运⾏的区块链程序就能接⼊联盟链⽹络的,⽽且节点与节点之间的通讯是通过TLS加密的,所以即使⿊客截取了⽹络包,也⽆法知道区块链⽹络中传输的内容,从⽽保证了数据的安全。通道隔离技术是指Fabric中的Channel的概念,相当于⼦链,不同的数据共享范围,就对应不同的通道,只有同⼀个通道中的数据才能被访问,所以如果有ABC3⽅组成的联盟链,AB通道中的数据C是看不到的,AC通道中的数据B是看不到的,也就进⼀步的控制了数据传播的范围。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690464171a353148.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信