【思前享后】区块链基本概念

291 阅读15分钟

小猿“思前享后”为大家分享优质内容!————Share猿

Hi大家好:

  我是Share猿,Share是英文(SHARE),猿是猿猴的猿,在微信公众号、微博、简书、掘金、今日头条、CSDN都可以通过搜索“Share猿”找到我,我等你哦!小猿 “思前享后”为大家分享优质的内容!今天小猿为大家分享:区块链基本概念


  一个完整的区块链系统包含了很多技术,非对称加密、数字签名、时间戳等技术、P2P网络、共识机制,还有链龄、UTXO、Merkle树、双花等相关技术概念。正是这些技术,使得区块链在无中心的网络上安全稳定运转,为区块链的交易、验证、链接等功能提供了源源不断的动力。

1.数据区块

  比特币的交易记录会保存在数据区块之中,比特币系统中大约每10分钟会产生一个区块,每个数据区块一般包含区块头(Header)和区块体(Body)两部分,如图所示:


区块结构

  区块头包含的信息就像我们写日记的时候每页的页码、日期等等信息类似。区块体中则主要包含交易计数和交易详情,就相当于我们日记本中的内容一样。我们平常下载的数据主要就是区块体的数据。

2.挖矿与分叉问题

  区块在挖矿过程中产生。所谓挖矿,实际上是穷举随机数算法,把上个区块的哈希值加上10分钟内的全部交易单打包,再加上一个随机数,算出一个256位的字符串哈希值,输入的随机数Nonce使哈希值满足一定条件就获得这个区块的交易记账权。新产生的区块需要快速广播出去,以便其他节点进行对其验证,以防造假。

  每个区块存着上一个区块的哈希值,可以溯源到源头,只有经过验证后才最终获得区块的交易记账权。比特币系统会让挖矿的矿工竞争记账权(在主链上链接区块的权利),这个竞争机制就是工作量证明机制。挖矿需要付出大量的能源和时间,谁付出的工作量多就能以更大的概率获得一个区块的记账权。获取记账权的矿工会将当前区块链接到前一区块,形成最新的区块主链,该矿工也会得到系统奖励的一定数量(2009~2013年每10钟产生50个比特币,2014年至今每10分钟产生的比特币将减半成25个)的比特币。所有的区块链接在一起形成了区块链的主链,从创世区块到当前区块,在区块链之上的所有数据历史都可以被追溯和查询。

  需要说明的是,可能会出现不同地区的两个矿工同时“挖出”两个新区块加以链接的情况,这时主链上就会出现“分叉”。系统并不会马上确认哪个区块不合理,而是约定后续矿工总是选择累计工作量证明最大的区块链。因此,当主链分叉以后,后续区块的矿工将通过计算和比较,将其区块链接到当前累计工作量证明最大化的备选链上,形成更长的新主链,并自动抛弃分叉处的短链,从而解决分叉问题。

3.时间戳和不可篡改性

  时间戳是指从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,通常是一个字符序列,唯一地标识某一刻的时间。在比特币系统中,获得记账权的节点在链接区块时需要在区块头中加盖时间戳,用于记录当前区块数据的写入时间。每一个随后区块中的时间戳都会对前一个时间戳进行增强,形成一个时间递增的链条。时间戳技术本身并没有多复杂,但在区块链技术中应用时间戳却是一个重大创新,时间戳为未来基于区块链的互联网和大数据增加了一个时间维度,使得数据更容易追溯,重现历史也成为可能。同时,时间戳可以作为存在性证明(Proof ofExistence)的重要参数,它能够证实特定数据必然在某特定时刻是的确存在的,这保证了区块链数据库是不可篡改和不可伪造的,这也为区块链技术应用于公证、知识产权注册等时间敏感领域提供了可能。

4.分布式数据库

  比特币系统中的区块就像一个记账本一样,记录了所有比特币的交易信息,每一个比特币用户的比特币收支情况都被永久地嵌入了数据区块中以供别人查询。这些数据区块中的交易数据存放在每一个比特币用户的客户端节点中,所有的这些节点则组成了比特币及其坚韧的分布式数据库系统。任何一个节点的数据被破坏都不会影响整个数据库的正常运转,因为其他的健康节点中都保存了完整的数据库。

5.UTXO

  关于UTXO的好多人把它当做我们的余额,但是UTXO不同于余额,我拿余额宝和比特币做一个简单的比较大家就明白了。


余额宝和比特币对比

  从上图中我们可以看出,你有一个比特币就相当于你有一个未花费的交易输出,而余额宝则是实实在在的余额。为什么要这么设计,从软件的方面来讲这样设计一方面有助于节省数据库资源,另一方面可以提升记账的效率。

6.哈希函数

  哈希函数在比特币系统中也有着重要的应用,区块链中的数据并不只是原始数据或者交易记录,还包括它们的哈希函数值,即将原始数据编码为特定长度的、由数字和字母组成的字符串后,记入区块链。哈希函数有着很多适合存储区块链数据的优点:
  1)哈希函数处理过的数据是单向性的,通过处理过的输出值几乎不可能计算出原始的输入值;
  2)哈希函数处理不同长度的数据所耗费的时间是一致的,输出值也是定长的;
  3)哈希函数的输入值即使只相差一个字节,输出值的结果也会迥然不同。比特币系统中最常采用的哈希函数是双SHA256哈希函数,通俗来说就是将不同长度的原始数据用两次SHA256哈希函数进行处理,再输出长度为256的二进制数字来进行统一的识别和存储。总之,哈希函数是比特币系统中的关键技术,为比特币系统提供了很多便利。

7.Merkle树

  Merkle树是数据结构中的一种树,可以是二叉树,也可以是多叉树,它具有树结构的所有特点。如图所示:



  比特币区块链系统中的采用的是Merkle二叉树,它的作用主要是快速归纳和校验区块数据的完整性,它会将区块链中的数据分组进行哈希运算,向上不断递归运算产生新的哈希节点,最终只剩下一个Merkle根存入区块头中,每个哈希节点总是包含两个相邻的数据块或其哈希值。
  在比特币系统中使用Merkle树有诸多优点:首先是极大地提高了区块链的运行效率和可扩展性,使得区块头只需包含根哈希值而不必封装所有底层数据,这使得哈希运算可以高效地运行在智能手机甚至物联网设备上;其次是Merkle树可支持“简化支付验证协议”(SPV),即在不运行完整区块链网络节点的情况下,也能够对交易数据进行检验。所以,在区块链中使用Merkle树这种数据结构是非常具有意义的。

8.双重支付

  双重支付问题又称为“双花”问题,即利用货币的 数字特性用“同一笔钱”完成两次或者多次支付。在传 统的金融和货币体系中,由于金钱货币是物理实体, 具有客观唯一存在的属性,所以可以避免双重支付的 情况。但在其他的电子货币系统中,则需要可信的第 三方管理机构提供保证。区块链技术则在去中心化的 系统中不借助任何第三方机构而只通过分布式节点之 间的相互验证和共识机制,有效地解决了双重支付问 题,在信息传输的同时完成了价值转移。区块链技术 通过区块链接形成的时间戳技术加上验证比特币是否 满足UTXO(未花费交易)和数字签名,有效避免了 双重支付的问题。如果有人用同一笔UTXO构造了两 笔付给不同交易方的交易,则比特币客户端只会转发 最先被侦听到的那个。矿工会选择将那笔交易包入未 来区块,当其中一笔交易所在的区块后有5个链接的 区块,这笔交易已经得到了6次确认。在比特币区块 链上,6次确认后可以基本上保证比特币不被双花。

9.P2P网络

  P2P网络(peer-to-peer network,对等网络)是一 种在对等者(peer)之间分配任务和工作负载的分布 式应用架构,是对等计算模型在应用层形成的一种组 网或网络形式。因此,从字面上,P2P可以理解为对 等计算或对等网络,P2P网络示意图如图2-5所示。国 内的迅雷软件采用的就是P2P技术。区块链系统是建 立在IP通信协议和分布式网络的基础上的,它不依靠 传统的电路交换,而是建立于网络通信之上,完全通 过互联网去交换信息。网络中所有的节点具有同等的 地位,不存在任何特殊化的中心节点和层级结构,每 个节点均会承担网络路由、验证数据区块等功能。网 络的节点根据存储数据量的不同可以分为全节点和轻 量级节点,全节点存储了从创世区块以来的所有区块 链数据(比特币网络现在大约有几十GB,且还在不 断增长中)。全节点的优点是进行数据校验时不需要 依靠别的节点,仅依靠自身就可以完成校验更新等操 作,缺点是硬件成本较高。轻量级节点只需要存储部 分数据信息,当需要别的数据时可以通过简易支付验 证方式(Simplified Payment Verification,SPV)向邻 近节点请求所需数据来完成验证更新。

10.加密算法

  除了哈希算法以外,比特币中还存在一种为交易 加密的非对称加密算法(椭圆曲线加密算法)。非对 称加密算法指的就是存在一对数学相关的密钥,使用 其中一个密钥进行加密的数据信息,只有使用另一个 密钥才能对该信息进行解密。这对密钥中,对外公开 的密钥叫作公钥,不公开的密钥就叫作私钥。打个比 方来说,公钥就像银行的账户,私钥就像是该账户的 密码或者账户所有者的签名。区块链之上的有效交易 有一个用于交易发起方私钥签名有效的数字签名,而 该交易的签名可以通过使用交易发起方的公钥进行验 证。公钥可以通过算法从私钥中计算得出,但私钥却 不能从公钥中推出。比特币系统中使用的就是一种非 常典型的非对称加密算法——椭圆曲线加密算法 (ECC)。



  如图所示,比特币系统一般从操作系统底层 的一个密码学安全的随机源中取出一个256位随机数 作为私钥,私钥总数为2 256 个,所以很难通过遍历所 有可能的私钥得出与公钥的对应的私钥。用户使用的 私钥还会通过SHA256和Base58转换成易书写和识别 的50位长度的私钥,公钥则首先由私钥和Secp256k1 椭圆曲线算法生成65字节长度的随机数。一般情况 下,比特币钱包的地址也由公钥所生成,其生成过程 为首先将公钥进行SHA256和RIPEMD160双哈希运 算,并生成20字节长度的摘要结果(即Hash160结 果),这个将作为比特币地址的主体(body)信息, 再在前面加上版本前缀0x00,在后面添加4个字节的 地址校验码。地址校验码通过对摘要结果进行两次 SHA256运算,取哈希值的前4位产生。最后通过 Base58处理把连在一起的版本前缀、主体信息和校验 码转换成可以容易让人识别的比特币字符地址。

11.数字签名

  数字签名就是在信息后面加上另一段内容,作为 发送者的证明并且证明信息没有被篡改。一般是发送 者将信息用哈希算法处理得出一个哈希值,然后用私 钥对该哈希值进行加密,得出一个签名。然后发送者 再将信息和签名一起发送给接收者。接收者使用发送 者的公钥对签名进行解密,还原出哈希值,再通过哈 希算法来验证信息的哈希值和解密签名还原出来的哈 希值是否一致,从而可以鉴定信息是否来自发送者或 验证信息是否被篡改。

12.比特币的隐私模型

  传统隐私模型(见图2-7)为交易的参与者提供 了一定程度的隐私保护,第三方不会交出交易者的个 人身份信息,公众所得知的只是某个人将一定数量的 货币发给了另外一个人,但是难以将该交易与某个特 定身份的人联系起来,公众无法知道这人到底是谁。 这同股票交易所发布的信息是类似的,每一手股票买 卖发生的时间、交易量是记录在案且可供查询的,但 是交易双方的身份信息却不予透露。但实际上,交易 双方的个人信息是存放在第三方机构,所以一定程度 上交易参与者的隐私信息还是会有泄露的风险。



  在比特币的隐私模型(见图2-8)中,所有的交 易不需要第三方的操控,也不需要提供任何身份信 息,只需要提供比特币的地址就可以跟任何人完成一 次准匿名的交易。在一定程度上,交易不可追溯到交 易者本身,因此比特币上的交易可以在一定程度上摆 脱监管。但通过对区块链上交易的地址以及交易额做 关联分析,也可以获得有关交易者的蛛丝马迹。因 此,比特币的交易还不是纯粹的匿名交易机制,而是 准匿名(pseudo-anonymous)交易机制。


  小猿有一个梦想,可以把区块链通过直白的语言讲给每一个人听。从一篇博文开始!从一段视频开始!从一本书开始!如果您想让您的团队了解区块链!让您的公司了解区块链!让您的学生了解区块链!可以私信小猿或者加小猿微信预约小猿,带你们走进区块链的世界!如果是西安的朋友,小猿可以在业余时间到贵公司为大家讲解!只赚人气不赚钱!!哈哈!!

扫描以下公众号关注小猿↓↓↓↓↓↓↓↓


更多资讯请在简书、微博、今日头条、掘金、CSDN都可以通过搜索“Share猿”找到小猿哦!!!