[前言] 区块链是什么?

in #blockchain6 years ago

1.前言

最近因为工作需要,后期会做区块链相关的底层测试。
而且随着2017年比特币的爆发式升值,也引起了大家对于区块链的关注。
随着不断的了解发现,区块链技术,并没有特殊创新的技术,而是有机组合了已有领域的已有成果,所以,了解区块链,重要的是从思路上理解它的运行机制和理念。

备注:写此文章,主要是为了记录所学当做笔记,肯定会有理解错误的内容,请大家多多指正。
感觉自己写的好差,有时间的可以多看看
阮大师的区块链科普文章http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html
从概念到底层技术架构:http://www.8btc.com/ebook-blockchain
官方学习资料:https://github.com/chaozh/awesome-blockchain-cn

2.什么是区块链?

用一句话说,区块链就是首个自带对账功能的数字记账技术实现。(其实就是一个分布式存储系统)

区块链的基本概念包括:

  • 交易(Transaction):一次成功的交易,会导致账本状态的一次改变,如添加一条记录;
  • 区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;
  • 链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录

2.1 区块链分类

根据参与者的不同,可以分为公开(Public)链、联盟(Consortium)链、私有(Private)链。

  • 公开链:任何人都可以参与和维护,典型的比如比特币区块链,信息是完全公开的。
  • 引入许可机制,包括私有链和联盟链:
    • 私有链:集中管理者进行限制,只能得到内部少数人可以使用,信息不公开。
    • 联盟链:由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息会得到保护,典型如银联组织。

3. 区块链工作原理(以比特币为例)

在进行更深入的了解之前,先来大体了解一下区块链的运行过程,如下图所示:

从宏观到微观,区块链是由一个一个的区块组成的,每个区块又包含多笔交易信息,每笔交易又是由客户端发起的。
(1)合法的未确认交易是如何形成的?
      节点1所做的事情就是一笔合法的未确认交易的形成过程。客户端发起交易信息到网络中,网络中的节点收到交易信息后,会进行如下检查:

  • 交易是否已经处理过;
  • 交易是否合法。包括地址是否合法、发起交易者是输入地址的合法拥有者、是否是 UTXO;
  • 交易的输入之和是否大于输出之和。

检查都通过,则将交易标记为合法的未确认交易,并在网络内进行广播;

一笔完整的交易包含内容如下图所示:

(2)交易又是怎么变成区块的呢?
      请看节点2所做的事情。节点将10分钟之内获取到的交易信息(长度需要控制,每个区块不大于1MB),打包生成Merkle树根的hash值,节点暴力尝试计算出Nonce串,然后加上其他信息,生成候选区块。然后判断候选区块头的hash值是否满足一定条件(小于某个值),如果满足,就进行全网广播,候选区块变成了提案区块。
一个完整的区块数据结构如下图所示:

(3)区块如何上链?交易如何被最终确认?
      请看节点3所做的事情。节点从网络中收到 提案区块后,对提案区块头的hash进行验证,如果符合条件,提案区块成为合法区块,添加到链上。然后再等待6个块的可信确认后,交易最终被确认,交易生效。

4. 区块链基础架构模型


首先先来简单的一层一层进行了解:

  • 数据层:数据层其实从数据结构的角度看待,会更加有效。如下图所示:
    内容太多,未完待续
Sort:  

Congratulations @zailushangde! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

You published your First Post

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

Congratulations @zailushangde! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!