草庐IT

公链与私链在数据隐私和吞吐量上的竞争

BSV区块链 2023-11-26 原文


*发表时间:2022年2月22日
信息来源:bsvblockchain.org



本文将讨论大众对公链和私链的常见误解,并从数据隐私和吞吐量两方面来对比公链和私链。

当企业和政府实体对不同的区块链解决方案进行审查时,首先考虑的问题之一是他们应该使用公链还是使用“许可型”私有区块链。

一般情况下,实体会将证书验证、试点项目或研发项目等应用放在公链上。但当他们想创建自己的通证或是涉及到企业或个人敏感数据一类的数据应用时,他们会选择一个许可型的区块链平台。

粗浅来看,将“私有区块链”等同于数据隐私,将“许可型区块链”等同于网络安全,是有道理的。

反过来说,这一假设也就意味着公链不可能应用于涉及敏感数据的场景,而且在安全性方面会比较差。

然而,这两种假设都是源于对区块链原型的错误理解

01 对私链和公链的误解

● 数据隐私是导致项目选择私有区块链的主要考虑因素之一,因为人们普遍认为公链不可能符合欧盟GDPR等法规。

● 将私有账本命名为“许可型区块链”,人们便假设公链无法提供灵活的权限设置选项。

● 由于公链的基础设施和计算服务可供所有公开实体使用,人们认为这种网络必然会难以快速处理数据应用的任务负载。

02 数据隐私:公链vs私链

主流观点认为,如果你是一家银行或企业,你可能希望实施许可型区块链。而公链,由于包含了“公”这个字,则被理解为它会自动把企业、政府和个人数据暴露在公共领域。

但这是一种误解,并且这种误解可以追溯到公链的功能尚未被真正理解和利用的时代。

“化名”是BSV区块链的标准功能

虽然简单的区块链移植方案会面临隐私性的问题,但像BSV区块链这种基于UTXO的区块链,本质上是一个“化名”系统。发布到链上的每一比特的数据都与发布者以及与该数据产生互动的实体的数字签名有所关联。这种数字签名在交易和身份信息之间设置了一道防火墙

简单地说:交易是公开的,但用户的身份仍然是具备隐私性的。

而通过使用一次性的化名,进一步混淆个人或组织交易之间的关系,可以进一步加强用户的隐私。

简单而言:虽然一个实体使用BSV区块链向区块链发布了数百万项数据,但通过查看公共区块链记录是不可能看出这些数据之间的关系的,而且想要追溯所有数据的源头,是非常繁重(且昂贵)的任务。

在不公布底层数据的情况下确保数据的完整性

BSV区块链利用SHA-256算法,将一串文本转换成了一个被称为哈希值的确定性输出。从输出信息不能反推输入信息,但如果相应的哈希值是公开的,任何拥有输入信息的人都可以验证其真实性。

当你拥有一套安全的哈希算法时,即便是输入发生了最微小的变动,也会得到一个完全不同的输出。例如,将一个字母从大写改为小写,或仅仅是添加了一个句号,结果都会不同。

这一功能创造出了一个“数字指纹”,并被交易处理商(又称节点)用来保证区块链的完整性。区块链只是一个区块序列(或被链接起来的区块列表),包含了通过哈希指针链接到的前一个区块头的数据。区块头哈希包含了上一个区块的哈希输出和当前区块内数据的哈希(默克尔根)。

这种强大的格式造就了一条有效的区块链,可以一直回溯到第一个“创世”区块。由于这些区块是通过工作量证明一个接一个建立起来的,任何试图覆盖或改变这些已存储数据的行为都需要攻击者去构建一条全新的工作量证明链,同时其速度还要超越诚实的节点。从计算能力的角度看,这是不切实际的。因此,任何存储在建立了一定量的工作量证明的区块中的信息都是极难改变的。

任何节点或用户都可以通过仅使用交易的默克尔证明来对交易里面的数据的完整性进行快速验证和验真,以确保哈希值的可靠性。

案例研究:BSV区块链上的医药研究数据

Veridat是一个SaaS(软件即服务)平台,可以简化关键信息的采集流程,并将信息存储到BSV区块链上。Bench是他们推出的一款基于云端的服务,通过在研究工作流程中记录关键事件,为医药业的研究完整性和数据真实性提供支持。

他们并非直接将数据发布到BSV区块链上,而是将数据进行哈希,然后将哈希值上链。医药公司不希望他们的数据出现在公链之上。使用哈希值可以确保他们的数据免受竞争对手的窃取,同时仍然能够证明工作流程的有效性。

加密技术来加强区块链的数据隐私

除了BSV区块链内置的数据隐私措施外,还可以通过使用端到端这类简单的加密技术来加强隐私性。也可以使用zk-SNARK(零知识的简洁非迭代知识论证)等更先进的技术。

案例研究:公链上的医疗数据

为了说明公链——即BSV区块链如何被应用于存储和处理最敏感的数据,让我们考虑一个涉及敏感数据的实用范例:医疗健康数据

在全球范围内,医疗健康服务的供应商(从医生、药剂师到制药商)目前都是将与患者、药物试验和药物治疗相关的数据存储在封闭的数据孤岛之中。这些数据孤岛往往没有足够的安全层和防火墙。这种做法不仅会导致数据泄露,还会限制医疗从业人员全面了解患者的病史。

国家卫生委员会(NHC)的子公司、个人健康数据平台EHR Data Inc,正在将NHC的医疗数据迁移至BSV区块链。除了BSV的私钥系统之外,EHR数据平台在将数据发布至区块链之前会对其进行加密,从而在共享关键数据的同时保证了患者的隐私。

当被问及他们对公链和私有区块链的选择时,EHR Data的首席科学家Ron Austring用互联网和内联网的类比来进来了回答:

“如果你搭建了一个网站并把它放在你公司的内联网上,你就无法得到更多的(互联网)曝光。如果你一开始就使用公链,你立马就知道你的服务可以被公链上的其他实体使用。”

03 吞吐量:公链vs私链

吞吐量也是人们经常谈论的问题,因为大多数公链都面临着扩容的问题。

对于BSV区块链而言,可扩容性是其核心基础之一,它同时还兼具稳定性、安全性和即时性

BSV是唯一可大规模扩容的区块链。

BSV网络支持更大的数据容量,更快、更强的数据处理能力,以及非常低的手续费,这使得开发者能够基于此构建出无数创新的应用。跨国企业和整个供应链将能够基于BSV 区块链的协议和基础设施来运行自己的数据系统。

BSV主网TPS达到了5124Tx/s(区块高度686127),并且这个数值还在不断增长。

04 唯一的全球级区块链

想象一下这样的一个世界:我们拥有大量不同的私有区块链,每条区块链都运行在自己的基础设施和协议之上。它与当前这一堆不同的联合数据库模式有什么本质的不同呢?

而BSV区块链为我们提供了一种愿景:通过一个单一的全球数据库,为全球数据带来互操作性和共享市场,并将控制权和数据所有权交还至用户手中。


目前,全球已有超过400个项目构建于BSV区块链之上。凭借坚如磐石的协议及超高的网络性能,BSV生态系统迅猛发展,我们期待未来出现更多前所未有的商业应用。


  • 对BSV区块链开发感兴趣的朋友可以通过CSDN站内私信联系我们,申请加入BSV开发者交流群。
  • 同时,您也可以扫描下方二维码,关注BSV区块链官方微信公众号,了解更多区块链领域的实时资讯。

有关公链与私链在数据隐私和吞吐量上的竞争的更多相关文章

  1. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  2. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  3. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  4. ruby-on-rails - Ruby - 如何从 ruby​​ 上的 .pfx 文件中提取公钥、rsa 私钥和 CA key - 2

    我有一个.pfx格式的证书,我需要使用ruby​​提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o

  5. 带有 attr_accessor 的类上的 Ruby instance_eval - 2

    我了解instance_eval和class_eval之间的基本区别。我在玩弄时发现的是一些涉及attr_accessor的奇怪东西。这是一个例子:A=Class.newA.class_eval{attr_accessor:x}a=A.newa.x="x"a.x=>"x"#...expectedA.instance_eval{attr_accessor:y}A.y="y"=>NoMethodError:undefinedmethod`y='forA:Classa.y="y"=>"y"#WHATTT?这是怎么回事:instance_eval没有访问我们的A类(对象)然后它实际上将它添加到

  6. ruby-on-rails - rails 上的 ruby : radio buttons for collection select - 2

    我有一个集合选择:此方法的单选按钮是什么?谢谢 最佳答案 Rails3中没有这样的助手。在Rails4中,它是collection_radio_buttons. 关于ruby-on-rails-rails上的ruby:radiobuttonsforcollectionselect,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/18525986/

  7. ruby - 将命令行上的变量传递给 Cucumber 测试 - 2

    我正在尝试将cucumber项目的用户名和密码置于版本控制之外。有没有办法在命令行上手动将用户名和密码等变量传递给Cucumber脚本?我的备份计划是将它们放在一个YML文件中,然后将该文件添加到gitignore,这样它们就不会被置于版本控制中。 最佳答案 所以,我看到了您对铁皮人的评论,答案是肯定的。cucumberPASSWORD=my_passwordPASSWORD被设置为环境变量,您可以通过将其引用为ENV['PASSWORD']来使用它的值。例如,browser.text_field(:id=>'pwd').setEN

  8. ruby - 将哈希值保存到 Ruby 上的文件 - 2

    我刚刚迈出了编程的第一步。我刚刚完成了CodeAcademy的另一门类(class)。这次我被要求创建一个小电影目录。这是我的问题:如何在文件中保存/加载带有电影标题和评级的哈希值而不是自己的代码?下面是代码现在的样子(几句葡萄牙语,但您可以忽略它:movies={Memento:3,Primer:4,Ishtar:1}puts"Oquevocêgostariadefazer?"puts"--Digite'add'paraadicionarumfilme."puts"--Digite'update'paraatualizarumfilme."puts"--Digite'display'

  9. ruby - 在 RUBY 上的 PADRINO 框架上使用 RSPEC 进行测试的教程 - 2

    我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa

  10. ruby-on-rails - heroku Cedar 上的 CSV - 2

    我想在herokucedar上使用带有rails3.2.1的CSV模块,但是require'CSV'没用这是使用控制台测试时的错误:Loadingproductionenvironment(Rails3.2.1)irb(main):001:0>require'CSV'LoadError:nosuchfiletoload--CSVfrom/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.1/lib/active_support/dependencies.rb:251:in`require'from/app/vendor/bundle

随机推荐