区块链概述

雷课  2019-03-22  新手入门/区块链知识栏目  

  区块链概述

  输

  定义: 区块链由一个共享的,容错的分布式数据库和多节点网络组成。

  在区块链数据库中

  数据仅可通过共识算法以块的形式增加,不可修改或删除,以防止篡改;

  每个区块至少会包含一个块生成时间和出块签名;

  所有的交易数据都会被双方签名,以防止抵赖;

  传统区块链中,新增区块中储存上一个区块的hash,并通过此hash与上一个区块相连

  在区块链多节点网络中

  所有节点都有浏览区块的权限,但是并不能完全控制区块

  所有节点都有验证区块,参与共识,并通过共识增加数据的权利

  通过区块链可以实现

  不依赖授信第三方的数据记录和链上数据溯源

  通过peer-to-peer网络的数据通信和可信价值交换

  对所有面向系统中心控制者的攻击都有非常强的抵抗能力

  潜在应用:

  物联网

  互联网医疗

  云储存

  安全领域,如授权,可信服务提供

  互联网金融等

  应用实例:

  由日本Morgen银行和ripple等提供的快速,安全,便捷的国际转账服务.

  SWIFT自己正在建立的区块链网络,加速国际转账

  IBM建立的supply chain,探索潜在服务

  比特币

  P2P技术: 点对点数据传输,BT协议的支撑技术。

  共识算法:区块链能够保证不可篡改,数据可信的核心。

  椭圆加密算法,公私钥体系,数字签名等密码学算法。

  Merkle树:区块链数据储存的数据结构。

  下文中将介绍我认为不可替代的一些技术: 共识算法,加密/签名,P2P。更多的请各位自己在网上查询。

    前 言  

  个人觉得,区块链不是一项新技术,而是多种网络技术组合来解决一个新问题,而这个新问题的核心是共识算法。

  我知道在知乎回答区块链问题一定要做好唇枪舌战的的准备,毕竟知乎的“政治正确”是区块链都是骗子,而“区块链”这个话题甚至已经变成了一个各种公众号炒币的金融话题,完全脱离了本质。但是我思来想去还是决定把我自己理解的区块链技术写下来,毕竟这是有可能会改变一些东西的一项技术。

  请注意,本文只想以一种客观的角度来描述区块链技术,请评论也仅限于技术问题,不讨论政治,哲学和其他,我保留删评论的权利。

  区块链的最主要技术进步是,实践证明了在同步通信的情况下,参与节点不受限的拜占庭问题近似可解。谈到区块链现在呈现鲜明的两派,毁誉参半。这是因为早期比特币参与者,所谓的币圈大佬良莠不齐,诈骗者居多造成的,首先在这里有必要澄清一些过度传销引起的误解。

  区块链是一项颠覆性技术。是一种革命。 这是错误的,区块链是一种效率和信任的交换,并不是革命,也不一定适用于所有问题。

  区块链是“去中心化”的,“智能合约”是智能的。实际上,decentralized这个词既没有在比特币论文出现过,也不应该被翻译为“去中心化”,我个人比较喜欢台湾地区的“分散式”这个翻译。2016年6月W3C的区块链会议上,以太坊核心开发团队就表示不再使用这个词,而完全的去中心化会导致效率十分低下,是不可行的。区块链的核心是分布式。智能合约(smart cONTract)这个词,翻译的非常不恰当。英文里"smart"的意思是”敏捷“,"intelligent"的意思才是智能,"smart contract"是为了帮助程序员快速完成区块链应用开发。现在有很多人望文生义,这也很不合适。

  区块链完全是一种分布式数据库。区块链采用了分布式数据库的特征,但是为了达成强数据一致性和不可篡改,牺牲了很多分布式数据库的优点,当然也带来了一些分布式数据库没有的特性。

  技术有其应用前景,在不成熟之前就接受大众投资是非常不明智的行为。

  2009年, Satoshi Nakamoto建立了第一个区块链系统,比特币,这是一种点对点电子现金系统,主要为了支持资金交易。此后,区块链系统随着数字货币的爆发迅速发展,功能各种各样。

  此后,随着ETH的发展,smart contract给区块链的发展带来了极大的技术变革,它帮助应用开发者缩短了开发时间。这是区块链发展史上目前两个非常重要的节点。

  现在在不同领域,存在各种各样的区块链系统正在开发,或者正在运行,或者正在探索应用前景。区块链的p2p通信方式,密码学加密/签名并不是重点,已经有了很多解释,我们着重讲一下区块链里的共识算法。

  挖矿/共识算法

  挖矿是一种创造区块的过程,这种区块是可以被验证并添加进分布式数据库的数据块。在一些区块链系统中,比如比特币和ETH,矿工可以通过挖矿从系统获得奖励。在所以区块链系统中,挖矿都是一个最核心的概念,试图参与挖矿过程的节点被称为矿工。

  理论上,每个可接入区块链的节点都有成为矿工的权利,但是它们不一定有机会成为矿工。

  挖矿是一种周期性的竞争行为,根据共识算法不同,对于每个挖矿周期,从矿工中选择“优胜者”的方式也有所不同,通常我们称这些“优胜者”为当前周期“出块者”。这种共识算法通常被理解成为“多数人共识”,而如何在网络中定义“人”这一过程,在不同共识算法中有所不同。

  目前存在很多种共识算法来决定这一过程:

  工作量证明(Proof of Work): PoW是比特币中使用的共识算法,当然目前也有很多其它区块链系统应用PoW。它需要矿工参与一场困难的周期性的数学竞赛(比特币中具体为计算指定0数目的hash值),这场数学竞赛难以计算但是易于验证。一旦有某个矿工计算出了结果,它将用这个结果和这段时间自己从网络中收集的交易信息一起打包,形成当前区块,并把此区块广播至区块链节点网络。每个节点都可以验证竞赛结果和区块中的交易信息,如果验证成功,节点会添加这个区块进自己的区块链数据库。所有节点完成新区块验证和添加的时间之和应当小于竞赛周期。因为需要参与数学禁赛,这场竞赛比较的是计算能力。PoW共识算法认为,单位计算能力就是互联网上的一个“人”。于是,如果攻击方的算力大于参与竞赛所有算力的50%,才可以攻击成功。(实际情况下,考虑到网络延迟等因素,攻击成功的算力门限要低于50%)。

  股权证明(Proof of Stake) : PoS并不要求矿工参与计算复杂的数学问题,实际上,它采用一种伪随机的方式,根据每个账户持有“Stake“的多少来选择每一轮的“出块人”,持有股票越多,概率越大。PoS算法认为每一份“Stake”或者“Value”的持有者是互联网上的一个“人”,持有股票才代表此“人”对网络潜在恶意不大。当然,与PoW同理,如果持有股票的”50%“以上,才有攻击网络的能力。最初的PoS版本不奖励出块人,它会导致持有者没有参与挖矿的动力,所以,现在的PoS共识都加入了对出块人的奖励,然而这依然存在“无利益攻击“等潜在的攻击方式。

  容量证明(Proof of Space): PoSpace类似于PoW共识,但是它要求大容量的硬盘空间。矿工通过向硬盘中写入指定大小的数据,来参与挖矿竞赛。换句话说,单位硬盘空间被认为是网络中的一个“人” ,PoSpace已经被提出了一段时间,但是目前应用还不多。

  重要性证明(Proof of Importance): PoI是矿工通过节点的交易数量和账单来向网络证明自己重要性的共识算法,换句话说,单位交易记录被认为是网络中的一个“人”,但是这种共识算法很容易被机器人刷单攻击。

  随机数算法:通常,如果不考虑经济模型,区块链的共识算法是为了通过一种足够随机的方式选出“出块者”,并通过随机性使下一轮“出块者”难以预测。因此,存在很多在区块链网络制造随机数的共识算法,比如最小块哈希(Minimum Block Hash)和Algorand共识,它们并没有通过与经济模型的结合,降低矿工攻击网络的动机。

  实用拜占庭容错(PBFT):PBFT是一种拜占庭问题解决方案,也是密码学中 “多数人共识“的主要获得方式。PBFT每轮选择出块节点,该节点生成的区块需要通过一系列复杂的表决方式获得至少2/3参与共识节点的同意。PBFT的优点是,当块产生之后不需要其他节点验证,也就是说不会出现其他节点“不同意”这轮竞赛结果或者区块内交易信息的问题。因此,PBFT算法极其变种,几乎不存在“分叉问题”, 所有节点出块即最终块。而PBFT的最大问题是,共识算法的时间复杂度会随着加入节点的增加而大幅度增长,通常认为PBFT难以服务25个以上的参与共识节点。因此,所有采用PBFT的区块链必须首先通过一些规则”选举“出参与共识的代表。所以,这是一种利用“被选举出的人做出的小范围共识”代替“大多数人共识”的共识算法,当然实践上这是可行的。比较典型的区块链是NEO和Hyperledger。

  需要补充说明的是,1,2,3,4 的系列算法中都存在“分叉问题”,每轮竞赛之后,优胜者出块可能存在被其他节点拒绝的情况,这时会导致区块链数据库在某些节点不同步,即“分叉”,这些算法的解决方案是寻找“最长链”的节点数据库,并与之同步。

  加密/签名

  依靠密码学的加密和签名技术是区块链中身份唯一性的保证。这里我说的”身份唯一性“,并不是在指代一个人只有一个账户,而是区块链中账户本身是唯一的,只能被自己的”钥匙“打开。

  这就是非对称加密,在非对称加密中,有一堆秘钥,这两者都可以用来加密数据,而必须用另一方才能解密。公钥是公开的一个秘钥,私钥是不公开的一个秘钥。

  那么可以很容易理解,当用公钥加密的时候,只有私钥持有者才可以解密数据,这是在做保密传输,称为”公钥加密“。当用私钥加密的时候,所以知道此私钥对应公钥的人都可以解密数据,这是在通过公钥认证身份,称为”私钥签名“。

  只有公钥可以从私钥中计算出来,而私钥却不能从公钥中推出。而个人账户地址是与公钥一一对应的。

  图2 区块链地址产生的过程

  非对称加密的一种--------椭圆曲线加密算法目前是被应用最广泛的算法。

  P2P(peer to peer 对等网络)

  P2P是一种点对点数据传输技术,依靠用户群交换信息,与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能,任何一个节点无法直接找到其他节点,必须依靠其户群进行信息交流。

  P2P网络的分布特性通过在多节点上复制数据,也增加了防故障的健壮性,并且在纯P2P网络中,节点不需要依靠一个中心索引服务器来发现数据。在后一种情况下,系统也不会出现单点崩溃。

  当然P2P网络也有很多种,不同区块链中可能采用不同实现方式。

  P2P网络的经典例子,比如迅雷和早期的电驴。

  图3 P2P网络

  区块链依靠P2P在各个节点之间传输数据,依靠私钥签名确保数据唯一,依靠公私钥体系构建账户体系,依靠共识算法添加数据并提供网络维护者的激励,依靠Merkle树构建储存数据库。依靠时间戳确保历史区块产生时间。

  这是区块链的主要技术构成。

  存在问题

  当然区块链目前存在太多问题,导致使用起来很反用户直觉。

  1.匿名和隐私

  比特币和以太坊目前是不存在绝对的隐私的,只是存在了一些匿名手段,准确的说,比特币只存在一些匿名特性。虽然无法知道用户是谁,但是比特币这个“论坛”上的“用户行为”是可以追踪的。目前有以ZK-SNARK为代表的零知识证明技术来保证隐私,但是还存在性能的问题。

  2.算力/票集中化导致的安全性下降

  如之前所说,我们可以很理想的认为,在互联网上一个“单位算力”就是一个人,但是存在经济利益之后,就会有各种手段来取得算力领先地址。比如“矿机”,“矿池”等以大算力为目标的一些设施。PoS也是如此,有多少票是一种经济行为,而在各种经济领域,“二八准则”始终是存在的。

  3.过于自由的智能合约带来的安全问题

  智能合约是图灵完备的,在这种基础上,因为写智能合约的人同样良莠不齐,所以很可能会出现各种安全漏洞。

  4.区块链数据是很封闭的

  区块链是一个很封闭的生态系统,它的信任只能保证在“链上”数据本身,而从现实世界到区块链这一段,并不能保证不存在拟欺诈。甚至,不同区块链之间的数据互传,也很难保证是完全可信的。这就是大多数人诟病的”溯源“并不一定可信,当然目前有了一些以预言机为代表的解决方案,但是这些技术并没有能够从根本上解决问题,还需要进一步研究。

  5.当需要与用户交互时,智能合约本身无法操纵账户数据

  比如用智能合约发工资,但是我们并不能保证智能合约取钱的账户内部有足够工资。它只能完成“输入金钱到输出多账户工资”这样的流程。

  这是我理解的区块链技术,

  希望可以给大家帮助!

  雷课:

         让教育更有质量,

         让教育更有想象!

版权信息
作者:雷课
来源:雷课

关于我们

联系我们

作者进驻

手机版

Copyright © 2013 比特巴 www.btb8.com
始建于2013年,提供比特币 区块链及数字货币新闻、技术教程、测评、项目周报、人物等资讯
本页面提供的是新手入门教程资讯,提供入门级的比特币知识、区块链知识以及各类数字货币知识,是数字货币爱好者入门、精通的好导师。