从实现的角度解读区块链

码上哈希 码上哈希     2022-10-17     455

关键词:

前言

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

  在阅读完本篇文章对区块链有了一定的了解后可以参考区块链的一个简单的模拟实现来加深自己的理解:(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)

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

  区块链是什么

  拜占庭将军问题深入探讨

  

 

以数据库思维理解区块链

...,两极观点之下,我认为我们应该从IT人比较能够理解的角度探讨一下区块链技术。因为区块链这个东西的本质和数据库技术非常相像,很多机制使用数据库的理念去理解会非常直观准确。对于区块链和传统数据技术,我认为区... 查看详情

解读央行《区块链能做什么不能做什么?》

...区块链能做什么、不能做什么?》,我想从一个程序员的角度来谈谈这篇文章。观感先说观感,这篇文章可以说真的是非常鞭辟入里了。笔触客观,分析得道。tokenToken本质上是区块链内定义的状态变量,转账过程保证双方状态... 查看详情

如何系统学习区块链技术?

...寻找很多所谓的“解读”,打听很多“消息”。二、技术角度基础阶段:1、《区块链开发指南》-作者申屠青春:作者多余比特币底层的研究可谓是非常深入,讲解的也非常通俗易懂。2、《区块链技术指南》-作者邹均:作为国... 查看详情

从思维角度看区块链区别于传统互联网的价值所在

  从思维角度看区块链区别于传统互联网的价值所在  传统互联网是信息互联网,区块链是价值互联网,所以,区块链也被认为是互联网的下半场。那么,何为价值互联网?区块链具有哪些价值?本文从思维的角度,说明区... 查看详情

区块链系统开发有哪些核心技术?源中瑞小六解读

...值等信息。从结构来看,区块链的大部分功能都由区块头实现。核心技术2、哈希函数:哈希函数可将任意长度的资料经由Hash算法转换为一组固定长度的代码,原理是基于一种密码学上的单向哈希函数,这 查看详情

区块链技术!

前言区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角... 查看详情

从概念到底层技术,一文看懂区块链架构设计!

...tps://www.8btc.com/article/106022前言区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,... 查看详情

如何用区块链技术解决信任问题?fabric架构深度解读

...“共识机制”等。这篇文章将抛砖引玉,通过深度解读HyperledgerProject旗下的Fabric,介绍区块链适合的应用场景,如何从技术上去解决实际业务中 查看详情

区块链技术与应用

区块链技术与应用MOOC上的,一个非常好的宏观思考角度01区块链概论从IT技术发展历程、区块链在智能社会中的地位,区块链的概念、知识体系,区块链的哲学与社会学基础,区块链的主要应用领域等角度全面和... 查看详情

区块链概念及应用解读

思维导图: 产生背景:互联网上的贸易,几乎都需要借助可信赖的第三方信用机构来处理电子支付信息。这类系统内生性地受制于“基于信用的模式”。区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术。... 查看详情

一文读懂为什么需要跨链?跨链是什么?跨链实现技术?

...#xff0c;旨在解决不同链间资产与数据等跨链操作问题,实现区块链互联互通、提升区块链互操作性与可扩展性的重要技术手段。随着区块链行业的迅猛发展,多种公链、私链和联盟链的出现产生一个问 查看详情

解密区块链宠物养成游戏系统(附代码)!

    区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与区块链宠物养成游戏等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,... 查看详情

区块链概述---如何简单的理解区块链技术

...建立了新的信任方式,这是可以被量化的,从技术的角度实现的,所以说区块链成为了下一个信任的基石。区块链最核心的革命 查看详情

从概念到底层技术,一文看懂区块链架构设计(附知识图谱)

...//www.8btc.com/ebook-blockchain前言 区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说... 查看详情

区块链概述---如何简单通俗的理解区块链技术

...建立了新的信任方式,这是可以被量化的,从技术的角度实现的,所以说区块链成为了下一个信任的基石。区块链最核心的革命 查看详情

解读区块链智能合约!

  解读区块链智能合约!  区块链和智能合约技术的广泛适用性使得该领域参与者按照各自所在学科来解读它,因此现在还缺乏统一的术语定义,对于一个发展如此快速的技术领域来说是一大缺憾。本文作者JoshStark是律师和... 查看详情

[赠票]智能合约与区块链技术专场

...比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的认识。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足... 查看详情

学习区块链必读的6本书

...南等豆瓣评分:8.5本书从数字货币及智能合约技术层面,解读了区块链技术在金融领域的运用。“如果你正在寻找一本在技术层面解释比特币是如何运作的,并且你有一定计算机科学和编程的基本知识,这本书应该很适合你... 查看详情