从实现的角度解读区块链

前言

  随着比特币的起起伏伏,区块链技术越来越受到关注。区块链和比特币是当下和人工智能一样风靡的领域。人们开始寻找区块链技术的用武之地,已经有了不少的尝试。但是区块链的价值所在众说纷纭,特别是一些媒体胡乱吹嘘或者是故意贬低,给大家都带来了不小的困惑。其实作为一名技术人员只需要理解其底层实现原理和运行机制,之后其应用场景和发展前景相信都会有自己的见解。

  在阅读完本篇文章对区块链有了一定的了解后可以参考区块链的一个简单的模拟实现来加深自己的理解:(toychain) 欢迎star :)

区块链和比特币

  首先要理清楚区块链和比特币的区别和联系,区块链可以理解为一种有特点的数据存储结构或者说是协议,能够解决一些列的安全、稳定等方面的问题;而比特币是利用区块链技术实现的一种数字货币系统,比特币也是目前唯一一个成熟的区块链应用,这也是二者容易混淆的原因之一。比特币起始于2008年名为中本聪(Satoshi Nakamoto)的人发表的一篇论文《比特币:一种点对点的电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System原文 译文

  区块链是一种新型去中心化协议,能安全地存储比特币交易或其它数据,信息不可伪造和篡改,可以自动执行智能合约,无需任何中心化机构的审核。交易既可以是比特币这样的数字货币,也可以是债权、股权、版权等数字资产,区块链技术解决了拜占庭将军问题,大大降低了现实经济的信任成本与会计成本,重新定义了互联网时代的产权制度。

  中本聪提出了提出了这个具有创造力的构想并实现了比特币系统,在越来越多的支持者的参与下,比特币系统稳定运行,在2017年迎来了爆发式的发展,一枚比特币的价格曾经一度突破2万美元大关。越来越多的技术人员、投资者、金融从业者开始关注区块链技术,并试图拓展其应用领域,体现其特点和价值。当前区块链技术在金融领域还在继续深耕,其他领域也开始了不错的尝试,例如游戏,安全等。

  下面通过以下几个方面进行逐一讨论和分析:

  • 区块的基本结构
  • 去中心化与点对点网络
  • 数据的不可修改性
  • 共识机制
  • 双重花费和拜占庭将军问题
  • 隐私保护

区块的基本结构

  区块的结构并不复杂,包含了一些字段,整体上看一个区块的结构类似于双向链表中的节点。可以先直观的感受比特币系统中第505156个区块的头信息。

  这些字段相当一部分可以通过字面意思来理解,对于较为重要的字段进行一一列举。

  • Number Of Transactions:此区块中所包含的交易数量,网页下方显示了846个交易的详细信息,也称为区块体
  • Difficulty:难度系数,为了控制区块产生的速度,难度系数代表当前区块产生的难度
  • Version:区块链的版本
  • Nonce:工作量,在当前难度系数下计算了1683386125次才生成了此区块
  • Hash:此区块的Hash签名,唯一且不可更改
  • Previous Block:前一个区块的Hash签名,有且只有一个
  • Next Block(s):后一个区块的Hash签名,可以有多个(区块链存在分叉的情况)
  • Merkle Root:默克尔树根,默克尔树是存储交易签名的数据结构,在Git中也有应用

  这些关键字段的正确维护是区块链实现的基础,也是区块链去中心化,解决双花和拜占庭将军问题的基本结构。有了关键的数据结构,还需要相辅相成的规则和算法才能运行起来。理清楚整个流程之后再回过头看区块结构就能一目了然了。

  通过结构的观察可以得出结论:

  • 一个区块写入后Hash唯一且不可更改,除非把整个区块链中所有区块的Hash,Previous Block,Next Block(s)全部做相应更改
  • 一个区块的内容更改后Hash随之更改

去中心化与点对点网络

  去中心化是区块链的核心思想,这也是与其他分布式产品的最大区别,去中心化保证了公平性和安全性。点对点网络就是在去中心化的框架下的互联网,类比现实社会,当今的社会制度就是中心化的,国家的中心是政府,金融系统的中心是央行。假如政府腐败、央行作弊,那么整个社会就无公平可言,所有的数据也是不可信任的。也许去中心化也是人类社会制度发展的终极目标。只要拥有一台电脑就能加入点对点网络成为一个节点,每个节点都能拥有整个区块链的信息(目前达到了上百GB),而且在不断的更新和同步。每一个区块的写入都会广播到整个网络。点对点网络中每个点拥有相同的权利和义务,都是对等的,以CPU作为算力单位每个点都可以参与投票、计算和打包数据,也拥有同步区块信息的权利。

数据的不可修改性

  在区块的基本结构中得出了区块内容一旦写入则不可修改的结论。原因非常容易理解,首先一个区块的通过Hash=SHA256(区块头)得出,因此每个区块的Hash都是唯一的。并且区块头中包含Merkle Root字段,区块体中的交易数据存储在默克尔树的叶子节点中,因此Merkle Root可以看做是此区块体中所有交易数据的唯一签名。基于以上事实,不管是对交易数据的修改还是对区块元信息的修改都会导致区块的Hash字段改变,由于除了第一个个最后一个区块外所有节点同时具有Previous Block,Next Block(s)字段,会引起连锁反应。修改一个区块数据的代价是要修改区块链中所有区块的Hash、Previous Block,Next Block(s)字段为相应值。如果不是同时拥有全网一半以上的算力是不可能做到的。因此可以说区块数据一旦写入区块链就是永久写入不可修改。这也保证了数据的安全性和可信任度。

共识机制

  共识机制是区块链中最重要的特点,共识是指对区块数据的认同,也可以看做是投票。只有点对点网络中半数以上的都认为区块数据是真实可靠的才能达成共识。目前有几种主要的共识机制:工作量证明(PoW)、权益证明机制(PoS)、授权股权证明机制(DPOS)和拜占庭共识算法(PBFT)。其中工作量证明是比特币采用的机制。在比特币中工作量证明就是所谓的“挖矿”。

  由于每个节点都要去同步最新的区块链数据,所以区块产生的速度不能太快,不然大部分节点根本来不及同步。中本聪为此设计了难度系数调节机制,在区块结构中维护了Nonce和Difficulty两个字段,分别代表计算的次数和难度系数,区块产生设计速度是每10min产生一个,随着算力的提高,这个速度可能会加快,如果区块的产生速度大于设计速度那么下一个区块的难度系数就会增加。因此可以保证区块的产生时间间隔围绕在10min左右。所以在比特币中随着时间推移挖矿会越来越难。

  如果有两个区块同时加入区块链,那么区块链就会分叉。哪一个分支长度先达到6个就会把哪一个当做主干,确认交易,另一个分支就会被抛弃(选中大多数节点的共识)。因此确认一次交易的时间要1个小时左右。

双重花费和拜占庭将军问题

  双重花费是指把同一笔资产花费到两个不同的交易中,例如,节点A一共有1个比特币,节点A几乎同时提交了两个交易:向节点B支付1个比特币,向节点C支付一个比特币。在交易记录之前这两笔交易可能都是合法的,可能会有不同的节点将其记录到区块中,如果同时产生了两个区块,那么就按照工作量证明的共识机制来选择。区块链不通过第三方也可以解决双花问题。

  拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢取战斗?这就是著名的拜占庭将军问题。

  拜占庭将军问题再区块链中的描述应该是,在不知道具体的诚实节点的情况下怎么能够达到共识,在区块链中使用主流的共识机制(工作量证明(PoW)、权益证明机制(PoS)、授权股权证明机制(DPOS)和拜占庭共识算法(PBFT))就可以解决拜占庭将军问题。

隐私保护

  由于在区块链中,所有节点都由全网唯一的SHA256签名代表,这个签名也不能被反向推出信息,因此即使签名在全网广播也不能得到某个节点的信息。基于这一点在所有交易中节点都相当于是匿名的,很好的保护了用户的隐私。但这也是编写勒索软件的黑客们常用的勒索支付方式。

小结

  基于以上对区块链的理解,可以得出结论,区块链技术是去中心化的,区块的结构特点可以很好的保证数据的安全和节点之间的公平性,也可以利用共识机制来解决双花和拜占庭将军等类似问题,比特币的发展也体现出了对区块链价值的认同。但为了实现这些特点,也付出了不小的时间和空间成本:每个节点都需要实时同步整个区块链信息(目前已经达到上百GB);每个区块的容量有限;平均每10min才能生成一个区块,每小时才能确认一次交易,交易处理速度目前来看是远远不够的。

  到目前为止区块链的应用场景非常有限,在目前的技术水平下成熟的尝试还局限在金融货币领域。判断区块链是否能运用到某一个领域只需要判断三点即可:不需要管理中心,不要求数据的实时性,付出的成本小于收益。现在看来区块链带来的改变虽然不足以和人工智能相提并论,但区块链的思想非常值得去研究和参考。

  从技术的角度看,任何一个新技术都不是凭空产生的,一定是在已有的技术基础上加以改进和创新得来的。区块链也不例外,如果你对分布式计算(分布式事务,Paxos算法等)和密码学(对称加密,非对称加密,数字签名)稍微有一些了解的话研究区块链时就会非常轻松,区块链和Git的实现也有一些相似的地方(比如都使用了默克尔树)。

  由于时间和水平限制,难免有误,请指正。存手打,如果对你有帮助请考虑 “推荐”。:)

  参考资料:

  一个区块链的模拟实现(Github欢迎star)

  比特币入门教程

  BitCoin technology Merkle tree(Hash tree)

  比特币:一种点对点的电子现金系统

  区块链是什么

  拜占庭将军问题深入探讨

  

原文地址:https://www.cnblogs.com/wxisme/p/8463245.html

时间: 2024-10-08 08:02:07

从实现的角度解读区块链的相关文章

解读区块链智能合约!

解读区块链智能合约! 区块链和智能合约技术的广泛适用性使得该领域参与者按照各自所在学科来解读它,因此现在还缺乏统一的术语定义,对于一个发展如此快速的技术领域来说是一大缺憾.本文作者Josh Stark是律师和区块链咨询开发公司Ledger Labs的运营和法律主管,总结了现在智能合约定义的分类,以及各自的缺陷,呼吁两类参与者互相学习,达成一个合理的定义. 智能合约没有清晰确定的定义. 这个创意以下一代区块链平台核心的地位出现在公众视野,同时被视为企业实际应用的关键特性. 还有人把它描述为“自主机

徐明星解读区块链与物联网的重要联系

随着网络IT 时代的到来,物联网技术有了更新的发展.对于物联网,徐明星认为它是把所有物品通过射频识别等信息传感设备与互联网连接起来,以实现物品间的信息交换和通信. 作为互联网.传统电信网等信息的主要承载体,物联网正在利用其独特的物品与物品之间进行信息交换和通信的技术影响和改变着人们的生活.物联网一方面正在影响传统产业数字化的转型工作,另一方面在促进产业结构优化升级.同时进行发展的还有区块链技术.两者之间有什么重要的联系?深入解剖区块链与物联网的重要联系是刻不容缓的. 在传统的网络通信时代,人们利

从Go语言编码角度解释实现简易区块链

区块链技术 人们可以用许多不同的方式解释区块链技术,其中通过加密货币来看区块链一直是主流.大多数人接触区块链技术都是从比特币谈起,但比特币仅仅是众多加密货币的一种. 到底什么是区块链技术? 从金融学相关角度来看,区块链是一种存储数据的方式,去中心化的数据库,应用到比特币也就是去中心化账本: 从密码学角度来看,区块链是一种传递价值的协议: 从计算机科学的角度来看,区块链只是一种数据结构: 不同于我们平时接触的手机电脑,先有系统,然后才会在系统里开发各种APP应用.09年第一枚比特币诞生,15年也就

《Nodejs开发加密货币》之二十三:区块链

前言 亿书,是一款加密货币产品,用时髦的话说,更是一款实用的区块链产品.那么,区块链是什么?有那些特点?最近,以太坊硬分叉事件给了我们很多启示,能不能彻底杜绝区块链分叉行为?这一章,我们通过认真阅读和理解亿书相关的代码逻辑,来详细解释和说明这些问题,以便更加深入的了解和学习这项技术. 源码 blocks.js https://github.com/Ebookcoin/ebookcoin/blob/v0.1.3/modules/blocks.js block.js https://github.c

以数据库思维理解区块链

作为一个数据库行业的老兵,我看到在区块链技术的热潮下,传统的IT技术同学们保持了十分理性,甚至是排斥的态度.其实不管是热捧还是排斥,两极观点之下,我认为我们应该从IT人比较能够理解的角度探讨一下区块链技术.因为区块链这个东西的本质和数据库技术非常相像,很多机制使用数据库的理念去理解会非常直观准确. 对于区块链和传统数据技术,我认为区块链技术的未来发展,主题是"融合".我们就从数据库这个角度来解读区块链技术体系中各个技术点,以及通过"去中心化数据库"这个概念,把区块链

大数据、java、Python、区块链、人工智能哪个发展前景刚好?

在这个信息时代高速发展的情况下,很多人会对自己该往哪个方向发展感到迷茫,下面我就浅显的给大家介绍一下五大流行区域的发展前景. 大数据的发展前景: 当前大数据行业真的是人才稀缺吗? 学了几年后,大数据行业会不会产能过剩? 大数据行业最终需要什么样的人才? 接下来就带你们看看分析结果: 当前大数据行业真的是人才稀缺吗? 对!未来人才缺口150万,数据分析人才最稀缺. 先看大数据人才缺口有多大? 根据LinkedIn(领英)发布的<2016年中国互联网最热职位人才报告>显示,研发工程师.产品经理.人

【好课推荐】再不懂区块链,你就out了!快快开启进阶之路,挑战高薪职位吧

区块链技术被认为是继蒸汽机.电力.互联网之后,下一代颠覆性的核心技术. 如果说蒸汽机释放了人们的生产力,电力解决了人们基本的生活需求,互联网彻底改变了信息传递的方式,那么区块链作为构造信任的机器,将可能彻底改变整个人类社会价值传递的方式.以前是靠信誉.靠百年老店.权威机构等,区块链利用技术建立了新的信任方式,这是可以被量化的,从技术的角度实现的,所以说区块链成为了下一个信任的基石.区块链最核心的革命特性是改变千百年来落后的信用机制. 区块链从15年火到18年,作为人们口中的热门话题,区块链应用广

区块链技术与数据库技术

区块链技术与数据库技术 IBM是最早介入区块链研发的国际大公司之一,例如去年大家熟知的IBM和三星的区块链合作项目以及Linux/IBM联合项目.作为IBM区块链技术中国区的负责人和专利评审委员会的联合主席,我和团队也在去年10月就提交并获得区块链的美国专利.这是中国人获取的第一个区块链国际专利.紧接着12月,我们组织了IBM全球Fintech峰会及内部闭门会议,邀请IBM全球13大研究院在区块链相关领域的院士, DE, VP和CTO齐聚上海进行为期2天的研讨.讨论的结果是公司在今年迅速将区块链

区块链介绍

定义: 区块链(Blockchain)是比特币的底层技术,像一个数据库账本,记载所有的交易记录.这项技术也因其安全.便捷的特性逐渐得到了银行与金融业的关注. 简介: 区块链(Blockchain)是比特币的一个重要概念,本质上是一个去中心化的数据库,同时作为比特币的底层技术.区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块. 区块链在网络上是公开的,可以在每一个离线比特币钱包数据中查询.比特币钱包的功能依赖