主页 > imtoken体验版 > 区块链及区块链技术总结

区块链及区块链技术总结

imtoken体验版 2023-05-28 06:40:11

#1.技术人员看区块链的正确姿势

区块链虽然是一个新兴概念,但它所依赖的技术一点也不新鲜,比如非对称加密技术、P2P网络协议等。就像乐高积木一样,积木是有限的,但不同的组合可以产生非常有趣的东西。

我接触过一些工程师。当我第一次接触区块链时,他们都表达了同一个意思:都是成熟的技术,而不仅仅是分布式存储。从工程师的角度来看,第一反应是将这个新概念映射到自己的知识框架中是很自然的。但是,细究起来,发现这种片面的理解可能会导致对区块链的理解产生误区,即作为技术人员,忽视了区块链的经济特性——去中心化的、完全自治的系统。

区块链本质上是一个基于 P2P 的价值转移协议,我们不能只看到没有价值转移的 P2P。同样,我们也不能只看价值传递而看不到区块链的底层技术。

可以说,区块链更像是一门交叉学科,结合了P2P网络技术、非对称加密技术、宏观经济学、经济博弈等知识,构建了一个新的领域——价值互联网的探索。

那么什么是价值互联网?价值互联网可以是从当前蓬勃发展的电子商务衍生出来的支付业务。但它真的只是支付领域吗?显然这还不够,一级资本市场、实物资产的确认与转让、证券登记与交割、认证与反欺诈。我们再想一想,我们各大电商平台的恶意评论者还少吗?

在今天的金融领域,除了支付的便利性,在其他大部分业务中,我们就像在镣铐上行走。我们反复确认、审核、监督,反复搭建大大小小的高可用集群,保证了线上服务的可靠性和连续性。我们一个接一个地雇佣安全工程师,一个接一个地交付一个渗透测试项目。为什么?因为作弊的成本太低,低至数据库中的一行记录就可以提取数百万的资金。

强大的互联网给了我们一个成本几乎为零的高速信息传输通道,但没有低成本可靠的高速价值传输通道,所以这就是区块链即将带来的。

区块链是一个公共分布式账本。下面从技术角度做一个简单的介绍:

想象一下有一个 100 个分布式数据库集群。目前的情况是这100个节点的实际拥有者是一个组织,所有节点都在组织的内网,所以组织想要这100个数据库节点。做你想做的。换言之区块链技术成熟了吗,这 100 个节点处于受信任的环境中,并由具有绝对仲裁分配权的实体控制。

另一种情况是这样的,假设这100个节点属于不同的人,每个人的节点数据都是一样的,也就是完全冗余,所有节点都在广域网,也就是说,这100个节点之间没有信任节点,不存在具有绝对仲裁权的实体。

现在考虑第二种情况,什么样的算法(共识模型)可以用来提供一个可信的环境,这样:

各节点交换数据过程不可篡改;交易历史不可篡改;

各节点数据会同步到最新数据,识别最新共识数据;

本着少数服从多数的原则,整体节点维护的数据客观地反映了交易历史。

区块链本质上是解决上述第二种情况的技术方案,更准确地说,应该称为分布式冗余链账本方案。区块链的一些要素在我之前的文章中已经总结过:

因此,作为技术人员,不仅要看区块链所依赖的技术,还要关注区块链之外的点和方面。总的来说,区块链会更有趣。

#2. 区块链通用架构介绍

关于区块链本身的发展历史,网上有很多资料区块链技术成熟了吗,本文不再赘述。

关于区块链技术的介绍,在各个区块链平台的社区里都有详细的资料,但是这些资料的总结和抽象通用概念的介绍还很少见。本文试图总结。

介绍之前先简单介绍一下公链和联盟链的概念。这些概念是以太坊创始人Vitalik提出的,我在这些概念的基础上做了一些研究。

其实区分公链和联盟链很简单。看看区块链的访问权限就知道了。如果需要链上节点的权限才能访问区块链,那么这就是联盟链,否则就是公链。

顾名思义,我们也可以“按字面意思”,public表示完全开放的网络,alloy表示半开放的网络,成员之间共享,非成员没有自由访问权限,所以我们也称联盟链作为License链。

我们来看看一些比较主流的区块链平台(公链,全部开源):

我通常称它为“三巨头”。从生态的角度来看,比特币是最成熟稳定的,以太坊更像是前进的勇士,而比特股比前两个生态要小很多,但从创新的角度来看,不亚于前两个。

其他很多项目都是从这三个区块链衍生出来的,所以基于这三个,我们就可以基本了解区块链了。

不得不提Linux基金会项目——HyperLedger项目(主要是联盟链,开源),也是为了打造一个通用的区块链技术,但我觉得还在开发和迭代中,没有具体的应用案例。, 按不说话。

还有一些有趣的联盟链项目——R3 CEV项目(联盟链,闭源),还有中国的R3项目——ChinaLedger(联盟链,闭源),当然这些都不是开源的,我拿不到有用的资料分析,所以就不展开了。

从技术上看,针对不同的业务场景,对区块链有不同的要求,比如实时结算业务,要求区块链提供秒级交付,对应出块速度的要求,出块速度过快这往往会导致区块链出现分叉,形成孤链。如果孤链无效,则交易无效,影响区块链的最终一致性。

如果频繁的分叉导致相当比例的用户交易失败,那么系统可以被认为是不可靠的。

如果我们把这种实时性要求高的业务插入到联盟链中,就可以控制风险。通过调整共识算法,使用快速共识模型(Consensus Model)来避免上述问题,虽然不如公链健壮,但对于一些特殊场景来说已经足够了。

因此,在架构层面,公链和联盟链的技术也应该区别对待。

不过客户端的整体设计还是有一些通用的概念,如下图:

(图1)

区块链至少分为三层,

底层是一些通用的基础模块,如基础加密算法、网络通信库、流处理、线程封装、消息封装与解码、系统时间等;

中间层是区块链的核心模块,一般包含区块链的主要逻辑,如P2P网络协议、共识模块、交易处理模块、交易池模块、简单合约或智能合约模块、嵌入式数据库处理模块、钱包模块等;

顶层通常是基于 Json 标准 RPC 的交互模块。基于Json-RPC,我们还可以做出更好的UI界面或者web-service。

如果区块链支持智能合约,可能会有更多的层,比如增加一个BaaS层,区块链上的智能合约提供自治服务,比如下面的以太坊架构图(来自google,仅供参考):

(图2)

这种分层更关心的是区块链本身的分层,也就是业务层面,而不是技术层面。

让我们转向比特币的设计:

(图3)

比特币几个模块之间的耦合度其实是比较高的,历史包袱很多。当比特币的发明者中本聪使用 VC++ 开发比特币时,VC++ 标准库中的 sstream 流处理性能非常可观,所以不得不放弃,自己实现了一个基于向量的流处理容器。随着C++11的引入和标准库的更新迭代,性能也不尽相同。

从整体来看,我们可以看到比特币的模块较少,相对简单。chain-paramters 描述了整个区块链的参数设置,wallet 与地址/加密和存储有关,mem-pool 是未确认交易的池。得益于比特币核心开发者的不朽贡献,现在的比特币代码质量相比中本聪时代的比特币代码已经相当不错了。

不管上面的设计,一般都是从P2P网络协议开始的。作为 P2P 钱包,它同时提供服务和客户端。作为一个Service,它依赖于P2P网络协议,作为一个Client,它依赖于Json-RPC。

需要指出的是,“三巨头”使用的活期账户模型不同(所谓账户模型是指账户记账方式),比特币使用UXTO模型,以太坊和比特股使用账户余额模型。

UXTO模型(Unspent Transaction Outputs (UTXOs)):这个模型表达了一个转移的概念,即任何新产生的币都只会在后期的生命周期中转移,而不会死掉。传输本质上是由加密算法签名的,受控于验证:

(图4)

账户余额模型:账户余额模型摒弃了这种强验证账户模型,即账户余额回归数字加减,提高了交易效率。

#3. 共识算法和分布式

终于说到点子上了,这篇文章的每一节其实都可以展开成一篇独立的文章,内容有限,简单聊聊。

所谓区块链共识过程,上面提到的,是指如何客观记录全网交易数据,不可篡改的过程。目前,“三巨头”使用不同的共识算法(Consensus Algorithm),比特币使用PoW(Proof of Work),以太坊即将转换为Proof of Stake(权益证明),BitShares使用DPoS。(委托权益证明)。

我将上述算法称为“经济学”算法。所谓经济算法是指让作弊的成本可计算,而作弊的成本往往远大于作弊带来的收益,即作弊是无利可图的。这一思想为节点之间的博弈构建了一个算法,并使其趋于稳定平衡。

相应的,我们在计算机领域也有分布式共识算法,比如Paxos、Raft,我也称它们为传统的分布式共识算法。

它们之间最大的区别在于:拜占庭将军问题场景下系统的可靠性,即拜占庭容错(PBFT算法支持拜占庭容错)。但是,Paxos 和 Raft 算法理论上都可能进入一个无法被投票通过的无限循环(虽然这个概率实际上非常非常低),但它们都满足安全性,但放宽了对 liveness 的要求,PBFT 也是如此。

以下是传统分布式共识算法与区块链共识流程的一些异同:

相同点:

不同之处:

考虑到以上差异,结合公链和联盟链的特点,我们有:

由于联盟产业链半封闭半开放的特点,使用XXX的Delegated Proof是可行的,也可以在传统共识算法的基础上加入拜占庭容错/安全保护机制进行改进。

对于公链来说,PoW/Pos/DPos 等“经济”算法可能是最优算法。

从技术上讲,对于上述不同的共识算法,我们新开发的很多区块链都支持一个特性:共识模块是可插拔的,以满足不同场景的需求。

下图是未来区块链生态系统示意图:

(图5)

公链提供了一个可信可靠的价值传输网络,您可以在其上继续构建去中心化应用(DAPP)或部署联盟链,甚至传统数据库,并在上层构建C端应用。

ref: 谈区块链共识机制和分布式共识算法 Blockchaindev.org

#4. 数字资产与价值流通网络

这是一张图片:

参考:新现实区块链项目

“三巨头”中,比特币处于“数字货币”,比特股靠近“去中心化交易所”,以太坊处于“去中心化组织”。事实上,区块链与现实的接触点还在图示位置。

因此,区块链仍是一个成长中的少年。结合图5,我们希望构建一个基础设施完备的价值传递网络和拥有上层应用的丰富区块链生态系统,这还需要巨大的努力。

下一个目标是资产数字化(类似于资产证券化)。例如,我们可以将稀有物品(艺术品/古董)数字化,将知识产权数字化,票据资金等收益权数字化,这将大大提高市场运作的效率。智能合约,甚至人工智能,可编程社会不再是梦想。

--------------------------------

Q:感觉还是太抽象了。到目前为止,我仍然无法具体理解区块链,也没有找到具体的解释。很难理解?? ?

A:就像区块链这个词一样,它是被创造出来的,没有以前的概念可以映射到它,所以很容易理解。我们不谈论这个概念,我们只需要考虑我们的互联网还需要什么。正如比特币白皮书中提到的,点对点现金系统对其使用要求非常低,无需注册,无需手机号码,点对点网络,只要连接设备,那么你可以使用它。区块链的概念是一样的,目的是建立一个点对点的生态,解构权力带来的不对称。它本身只是一个共享的总账,有别于网络中的多节点记账和对账,瓦解了中心权力。

问:区块链技术如何应用​​于互联网身份认证?

答:这是个好问题。我目前正在做的区块链项目涵盖了这个概念,也就是你所说的互联网身份认证。我们相信这是使区块链成为真正业务的必要组成部分。

在我们的愿景中,身份首先是什么?身份不仅仅是一个ID号,一个密码,而是用户所有操作记录的集合,而这个记录集的代号就是身份。就像丢了账号然后申诉一样,申诉的内容真的是针对你的。区块链也是一样,需要相同的ID,还需要自动验证你历史的合法性。目前,互联网的身份认证依赖于公安系统。最简单的解决方案是将公安系统中的身份系统映射到区块链上。另一种解决方案是用户定义的记录集,它根据交易历史检查身份。当然,在更远的未来,结合人工智能,区块链可能会有更好的表现。

Q:如果将实时交付数据放入联盟链,联盟链的数据最终会同步到公链吗?根据分享,联盟链的数据不能信任公链。联盟链和公链中的数据是什么关系?这里看不懂,谢谢老师分享!

A:我不认为所有机构都愿意把资产放到公链上,会共存。理想的情况当然是完全使用公链来构建去中心化的应用程序。联盟链与公链之间的直接数据是简单的引用关系。我认为开放的关键数据集,比如用户身份,应该存放在公链上,让用户自己管理,而更私密的关键数据应该被机构使用。它与公链是隔离的,所以我认为联盟链的数据和公链的数据是互补的。也就是说,联盟链的数据是否应该同步到公链,取决于组织本身的需求。此外,

Q:有一些非常有趣的实体项目,比如智能门锁和无人驾驶汽车租赁。这些都是线下项目。如何实现互联?

A:首先,区块链项目是跨平台的,也就是说,嵌入式设备可以依靠区块链低信用成本的优势来自动记账,可以在联盟链上,也可以直接基于公众号。链的DAPP,这些账本是共享的,当引用关系发生时,这些数据可以进入公链通道,打通两者的关系。

其次,任何特定的区块链项目都需要依赖公链。就像很多落地项目都是以“三巨头”为基础的,其实目前还没有一个大家特别满意的标准。所以我将不得不拭目以待。

问:谢谢分享。能否谈谈上一张图中区块链发展的各个阶段对传统金融行业,尤其​​是银行业的影响?

A:对银行业的影响,我认为现阶段影响不大,尤其是在中国。这取决于区块链的发展程度。据我所知,央行已经开始开发自己的数字货币。对银行来说,最多不过是一次IT架构的升级,可以帮助银行业降低IT成本,有利于加强监管。但如果在更远的将来,银行可能不会特别封闭,成为一些区块链的代理节点,也会受到大家的监督,而不是少数特殊机构。

Q:如果公链可以记录所有的历史,有没有什么技术可以销毁或者封禁,有没有生命终结的一天?

A:有一点技术风险。当通用量子计算商业化时,目前很多加密技术都失效了,而基于密码学的区块链受到的影响最大(当然目前的中心化架构也会受到影响)。这取决于理论研究的结果,如果有新的密码学理论可以抵抗量子计算,那就没问题了。从 P2P 网络的角度来看,任何机构和个人都不能被封禁,只要有两个节点还能做交易和记账,区块链就是活的。

从经济学的角度来看,区块链的生死主要不是加密技术是否被破解,而主要是链上聚集了多少财富和利益,链上的数据有多少价值。如果没有价值,链条自然会消亡。相反,如果被攻破,只是等待新的加密算法出来后的分叉或数据迁移,这与恢复中心化数据库的备份没有太大区别。