区块链真的能构造“公平公正”的理想王国吗?

2024-02-02 17:30

本文主要是介绍区块链真的能构造“公平公正”的理想王国吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

出品 | 智识神工官方博客

贪污腐败、走私和非法贸易、偷税漏税、网络诈骗、生产销售假冒伪劣产品等行为是人类社会与经济系统的顽疾,这些问题造成了许多负面影响。每一起社会资源的暗箱交易都损害着公众的信任,不可追溯的不法金钱流动让受害者苦不堪言,人们期待着一个更加公平、透明、安全、高效的社会与经济系统。

在这个期盼之下,人们强化法律和执法、尽力提高透明度和公开度、完善举报制度、加强宣传教育。纵使如此,不法资金流动仍无法杜绝,社会根据被发现的问题不断地总结经验教训,不断改进和完善措施,没被发现的问题则只能期待后人的智慧。

由人组成的系统难免有疏漏,因此区块链想把分配的方法交给代码与机器,把交易记录和验证方法公开给所有参与者。在这种理念下,第一条区块链比特币发布了,作为一种“去中心化的分布式账本”被人们熟知。

公链——去中心化

比特币是一种用于记录交易的账本,去中心化是它显著的特征,即没有第三方公信机构来记录交易,每个参与者都可以获取这个账本,都有机会成为一笔新账的发布者。比特币属于区块链中的公链,即任何个体都可以随意地加入或退出。实现这样一个分布式账本有以下几个问题:

  1. 如何确定发布新账的人
  2. 如何保证新账是正确的
  3. 如何保证账本不被篡改
  4. 如何保证所有人的账本是一样的

弄明白这几个问题,就明白了比特币的原理。这几个问题涉及到共识算法、哈希函数、数字签名等方法,下文将分别介绍。

  • 如何确定发布新账的人(也被称为“挖矿”)

谁来当发布新账(创建新区块)的人,显然需要取得群体共识。取得共识可以粗略地分为两种方式:先询问所有人,大多数人同意之后再发布;带着某种凭证直接发布,该凭证能被所有人确认。

比特币选择了第二种方式(公链都属于第二种),使用的是被称为PoW(Proof of Work,工作量证明)的共识算法。而PoW的核心在于哈希函数,这里简要介绍一下哈希函数的特性。

哈希函数是一种映射,能把任意长度的输入转换为固定长度的输出,通常记为H(x) 。一个良好的哈希函数要求:对于任意的输入 x ,计算H(x)都相对容易;从H(x)推导出 x 在计算上不可行;当x_{1}\neq x_{2}时,H(x_{1})\neq H(x_{2})的概率可以忽略不计。

挖矿其实就是在不断计算哈希函数,算出符合要求的哈希值:

H(B_{n})\leq targetHash

B_{n}=\left [ H(B_{n-1}),t_{n},Merkle_{n},nounce_{n} \right ]

其中, B_{n} 代表第 n 个区块的关键参数, t_{n} 代表第 n 个区块产生的时间, Merkle_{n} 代表一个哈希树的根,可以看作第 n 个区块记录的所有交易的聚合哈希值, nounce_{n} 代表一个随机数。矿工的任务就是猜出 nounce_{n} 使得 H(B_{n})\leq targetHash ,算力越大猜的越快,越有可能成功创建新区块。

targetHash=\frac{targetMax}{Difficulty}

newDifficulty=oldDifficulty\times \frac{2016\times 10min}{Time_{2016}}

targetMax 是一个固定值, Time_{2016} 指创建前2016个区块实际花费的时间。

  • 如何保证新账是正确的

​这里用到了数字签名的技术,只有交易的发起者具备签名的能力(私钥)。每一笔交易都有“输入”、“输出”两个部分。“输出”中包含了接收者的地址与接收金额,而“输入”必须与其它交易的“输出”对应。

打个比方,一个交易就像一个合同,合同上写着张三转给李四5块钱,合同上必须要有张三的签名。王五帮忙把这个合同和其它合同一起打包存起来,但王五没法篡改合同,因为他没法伪造张三的签名。那么,怎么确定张三有5块钱呢,必须在之前的区块链中找到另一个合同,比如赵六转给张三5块钱的合同,且这5块钱还未被其它合同使用。如此便可保证新区块中的交易是正确的。

  • 如何保证账本不被篡改

假设最新的区块已经是第8888块了,而一个攻击者想要篡改第8000块区块,由于哈希函数的不可逆性,它无法创建一个能被第8001块区块认可的父区块替换掉原本的第8000块区块,它只能将第8000块之后的所有区块全部篡改掉。

而由于创建区块的Difficulty限制,在全网算力下,平均每10分钟才能创建一个区块,攻击者的算力必须超过全网其它算力之和(即控制51%以上的算力),才有可能篡改出一条更长的链,因此篡改已确认的区块十分困难。

  • 如何保证所有人的账本是一样的

当一个新区块被创建之后,如何把这个区块发送给其他人呢?

比特币选择的是gossip方法,每个节点都会维持几个与其它节点的连接,当节点A收到一个区块block并对其进行验证(它找到的随机数nounce的确可以使得哈希函数小于目标哈希)之后,会将该区块的相关信息包装成一个inv消息广播给其连接的节点,若节点B收到inv消息并且发现自己之前没有接收过这个区块,则向A节点请求这个区块的具体信息。B节点收到该区块后会继续验证并广播其inv消息。经过数轮传播之后,新区块便可以发送到全网。

一个新区块发送给全网半数节点需要时间,那就可能存在冲突,如果在某一时刻,节点A和节点B同时发现了新区块X和Y,那么部分节点会认证X,部分节点会认证Y,这就出现了区块链的“分叉”,哪一条才是主链呢?

为了解决冲突问题,比特币提出了最长链原则,如果认证过X矿工先发现了区块Z,X+Z的链长度大于Y,认证过Y的节点收到Z之后发现Z的链更长,就会抛弃Y,加入X+Z这条链,而区块Y就变成了“孤块”,Y上记录的奖励和交易都不会被认证。

当然,也可能出现更长的分叉,就是在X、Y之后恰好又同时分别生成了U、V,分叉的两条链的长度仍然相同。此时,两条链的速度竞争会一直持续下去,直到出现更长的链。一般来说,比特币交易被确认6个区块后,便被认为是非常安全的,极少出现分叉的情况,随着区块的增加,分叉的可能性逐渐减小,交易也变得越来越不可逆转。

综上所述,比特币具备去中心化、公开透明、不可篡改等优点,在公平、透明、安全、高效的愿景中它做到了三点,十分了不起。但由于这种全网记账与全网广播的架构与PoW的共识算法,它无法做到高效,只能记录少量重要的信息(比特币货币交易),且交易确认时间较长(几分钟到几十分钟),无法做到承载所有交易,杜绝不法资金流动,相反,它甚至几乎沦为金融投资品,滋生了许多恶性事件——用比特币进行黑市交易(比特币虽然交易透明,但是身份匿名,被不法分子所利用)、区块链交易所失窃(网络环境的不安全导致私钥存在被盗窃的风险,大量私钥的集中管理更容易遭到黑客针对)。

各种公链项目推出PoS(Proof of Stake)、DPoS(Delegated Proof of Stake)、PoA(Proof of Authority)等共识算法缓解了PoW的能源消耗问题,智能合约技术扩展了区块链的应用,使其不再局限于加密货币交易,逐步延伸到物联网、医疗、国际贸易等领域。但全网记账带来的高数据量(比特币全链:几百GB,以太坊全链:几TB)与私钥的安全威胁仍然亟待解决。

私链——分布式一致性

大企业内部由于对商业数据的隐私要求以及对效率的高要求,不适合使用公链,于是出现了用“公平”换取“高效”的私链。

私链十分依赖强调分布式一致性的共识算法(Paxos、Raft、ZAB),保障私链节点之间的数据同步。而这些分布式一致性算法并不依赖区块链,它们在区块链出现之前就在为互联网大企业服务了。互联网大企业用户数量多,单台服务器无法处理所有访问与数据更改请求,必须同时使用多台服务器处理业务,分布式一致性算法正是让多台服务器上的数据保持一致的手段,还能有效消除部分服务器宕机的影响。私链的加持为分布式一致性带来了不可篡改的安全,颇受同时注重效率与安全的金融行业青睐。

私链的所有节点都属于一个企业,不可篡改性只是针对入侵了几个节点的黑客,而掌握了所有节点的企业可以任意修改数据,因此私链的分布式系统被认为具有很高的中心化程度。

联盟链——拜占庭容错

出于对私链过度中心化的担忧,企业机构往往联合起来采用联盟链(超级账本Hyperledger企业以太坊联盟 EEA),区块链节点归属于多家企业,增大了篡改数据的难度。与只需考虑宕机节点的私链不同,联盟链中还需要提防恶意节点,这便构成了拜占庭将军问题。

该问题假设一个场景:一个将军向他的下属军官们下达命令,以决定是进攻还是撤退,共同进攻才能获得胜利,共同撤退也能保存实力,都属于达成共识,获得成功。但如果一部分进攻,一部分撤退,整个军团将全军覆没。在统一共识的目标下,命令的传递过程充满曲折,比如,命令不能到达,命令乱序,更可怕的是,下属军官们中存在叛徒,他们不仅会篡改命令,甚至还会阴奉阳违,声行不一,最最可怕的是,也许将军本人就是那个叛徒,它向不同的军官下发不同的命令,故意使军团覆灭。即,战场上任意一个做决策的人,都可能是叛徒,会任意篡改命令。在这样的外部条件下,是否存在一种算法,使得整个军团可以达成一致的共识,获得成功呢?

1982年Lamport等人证明了该问题有解的条件:当叛徒人数为 f 时,总人数 n 必须满足 n\geq 3f+1 。可以通俗地解释为:一个军官必须收到 2f+1 个投票(投票上有签名认证身份)才能做出决定,以保证发出投票的忠臣多于叛徒,而如果 n-f< 2f+1 ,叛徒则可以全体不发送投票,导致没有人能收齐 2f+1 个投票,即使收到 f+1 个相同投票也是没有用的,因为不能确定这 f+1 个人中是否有叛军投票给A行动却执行B行动。所以 n 必须大于等于 3f+1 。

目前解决拜占庭问题的共识算法有PBFT、dBFT、HoneyBadger、HotStuff等。下面介绍几个使用了联盟链的项目。

  1. NEO是一个开源的智能合约区块链平台,旨在为数字资产的数字化、智能合约的执行和分布式应用的开发提供基础设施。dBFT是NEO区块链平台所采用的共识算法之一,用于确保网络上所有节点对区块的顺序和内容达成一致,以避免双重支付等问题。在dBFT中,网络中的节点被划分为记账人(也称为验证人或委员会成员)和普通节点。记账人负责确认交易并打包区块,而普通节点则参与投票选择记账人。每个记账人都有确定的轮次来产生区块,其他记账人会对其提出的区块进行投票,如果超过三分之二的记账人都同意该区块,则认为达成共识,并将其添加到区块链上。NEO之所以选择dBFT作为其共识算法,是因为dBFT具有较高的性能和扩展性,能够在快速确认交易的同时确保网络的安全性。与其他共识算法相比,如比特币的PoW(工作量证明)和以太坊当前采用的PoS(权益证明),dBFT能够提供更快的交易确认时间和更低的能源消耗,从而适用于更广泛的商业应用场景。
  2. Facebook的Diem(前名Libra)是一个全球数字货币项目,旨在为全球用户提供一种稳定、安全且低成本的数字货币解决方案。Diem项目在设计共识机制时选择了HotStuff的改进算法作为其核心算法,用来确保网络上的节点之间达成共识,并确认有效的交易和区块。HotStuff的高性能、高吞吐量和快速确认特性使得它非常适合应用于数字货币项目,可以支持大规模的交易处理。通过HotStuff共识算法,可以实现快速确认交易和高度的容错性,即使在存在恶意节点或网络故障的情况下,共识机制仍然能够保持网络的安全和稳定,这对于数字货币项目非常重要。

公平、透明、安全、高效

公链、私链、联盟链在去中心化、安全、效率上不断权衡。公链去中心化程度最高、篡改数据的难度也最高,私链生成区块的效率最高,联盟链则比较均衡。目前公链公平、透明、安全的性质最受青睐,得到了最多的关注,不断涌现的新设计都在试图改进公链的效率,同时催生了一批区块链应用(Defi、NFT、Dapp),但区块链应用的代码开源,导致它们更容易遭受黑客的攻击,此外,各种区块链技术都面临着私钥失窃的威胁,网络安全环境与安全意识亟待提高。

为了克服这类脆弱性,智识神工给出了“数据+通信+网络”三位一体的信息安全技术全方案,其中主研SPU安全处理器)提供了底层硬件安全环境,包括安全存储私钥、缓解开源组件安全漏洞的威胁等功能,加强了整体安全性。

区块链与共识算法的技术发展还有很长的路要走,我们期盼用技术实现一个更公平、更透明、更安全、更高效的系统,让权利分配恰如其分,让系统的运行规则公开透明,让数据与隐私都得到保护,让各种服务流畅运行。愿各位同行一起在这条路上砥砺前行。

这篇关于区块链真的能构造“公平公正”的理想王国吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/671444

相关文章

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

为什么现在很多人愿意选择做债务重组?债重组真的就这么好吗?

债务重组,起初作为面向优质企业客户的定制化大额融资策略,以其高效周期著称,一个月便显成效。然而,随着时代的车轮滚滚向前,它已悄然转变为负债累累、深陷网贷泥潭者的救赎之道。在此路径下,个人可先借助专业机构暂代月供,经一段时间养护征信之后,转向银行获取低成本贷款,用以替换高昂网贷,实现利息减负与成本优化的双重目标。 尽管债务重组的代价不菲,远超传统贷款成本,但其吸引力依旧强劲,背后逻辑深刻。其一

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

C++中类的构造函数调用顺序

当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的 构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。 简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是 要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时, 如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。

Java构造和解析Json数据的两种方法(json-lib构造和解析Json数据, org.json构造和解析Json数据)

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Json数据的方法示例。 一、介绍       JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json

数据库遇上知识图谱、区块链、深度学习

参考资料: https://zhuanlan.zhihu.com/p/33381916 https://www.zuozuovera.com/archives/1062/ 东南大学D&Intel Lab相关ppt 数据库的核心概念——表示、存取、查询 有了数据库是干什么,大概实现的逻辑,特点,才能引申出对当今这些新技术的对比、适应和发展。 目的:研究数据表示、存取数据模型:表示数据的模型,通

写给大数据开发:你真的“慢“了吗?揭秘技术与职场的平衡艺术

你是否曾经在深夜里,面对着一个棘手的数据处理问题,感到无比沮丧?或者在一次重要的项目汇报中,突然语塞,无法清晰地表达你的技术方案?作为一名大数据开发者,这些场景可能再熟悉不过。但别担心,因为你并不孤单。让我们一起探讨如何在这个瞬息万变的行业中,既磨练技术利刃,又培养职场软实力。 目录 技术与时间的赛跑1. 长远视角的重要性2. 复利效应在技能学习中的应用 跨界思维:数据结构教我们的职场智

CF #278 (Div. 2) B.(暴力枚举+推导公式+数学构造)

B. Candy Boxes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/488/problem/B There