理解区块链技术

现在区块链技术十分火爆, 玩客币推出后, 迅雷股价从10月初的8美元左右一度飙升至27美元!! 资本市场对区块链概念和比特币模式非常看好.

比特币就是区块链技术的一个成功应用.

"区块链"概念介绍

区块链技术也被称之为分布式账本, 是一种互联网数据库技术, 特点是去中心化, 公开透明, 让每个人均可参与数据库记录.

上面这一句来自百度百科. 我第一次看过之后对区块链还是一头雾水. 还看了知乎上关于区块链的回答. 知乎上的回答多是将区块链和比特币混合起来讲, 看了还是很糊涂. 下面我先抛开比特币, 单独说说区块链. 最后在结合比特币说说比特币是如何应用区块链技术的.

区块链是一种数据库技术

首先区块链是一种分布式数据库!! 这种数据库将数据存储在任意多台机器上, 并且能够保证所有机器上存储的数据是一致的. 由于互联网上有无数多台机器, 所以区块链形成的数据库永远都存在备份. 那么问题来了, 如何保证无数多台机器之间的数据一致性? 数据量太大怎么办? 冗余太多怎么办?

  1. 数据冗余问题

    区块链技术不是为了减少数据冗余, 不是为了提高查询速度. 它的特点是去中心化, 公开透明.
  2. 数据量太大的问题

    区块量系统将数据存储在无数多台机器上, 每台机器上存储的数据是一致的, 这样数据会越来越多, 但是根据信息技术的摩尔定律:每18个月左右, 同样价钱能够买到的存储能力提升一倍, 这样来看区块链系统中的数据是永远够存的. 不需要考虑数据太多没法存储的问题.
  3. 不同机器之间数据一致性的问题

    这个问题要分两部分解决, 1机器(或者叫结点)的数量是有限的情况下, 2机器(结点)数量是无限的情况下.

3.1 结点数量有限的环境下的共识算法: 拜占庭共识算法pbft(之后再详细介绍)
3.2 结点数量无限的环境下: 比特币的工作量证明机制.(在工作量证明机制下选择累计工作量最大的区块链)

简单总结下:

  1. 区块链是一种数据库
  2. 区块链的数据存储在很多很多的机器上(任意一台机器出问题不会对整个系统产生影响)
  3. 不同机器之间需要想办法保证数据一致

理解"区块链"一词

上面介绍的这种分布式数据库为什么要叫"区块链"??

区块链需要分成两部分"区块"和"链"

结合数据结构中的链表的概念理解区块链

#define struct ListNode{
    int var;
    ListNode *next;
}Node;

上面是一个链表的定义, 链表每个结点分两部分, 1数据存储部分. 2下一个结点的指针
通过不断访问next即可遍历链表. 链表就是很多个Node 通过next指针连接起来.

区块链就是很多个区块通过hash值连接起来
区块.png

一个区块大致上可以理解为这样的结构

#define struct Block{
    char *myHash;//本区块的hash值
    int  var;//表示数据, 可以理解为任意数据
    char *previousHash;//上一个区块的hash值
}Block;

可以这样想象一下, 拿到一些数据, 通过这些数据计算出myHash2, 数据加上自己的hash值成为一个区块(newBlock), 查询当前区块链中最后一个区块的myHash1, 将newBlock的previousHash赋值为myHash1, 这样不同的区块(block)之间以hash值相连接成为一个链条--区块链.

从最后一个区块开始不断访问previousHash即可遍历整个区块链.

小结:

  1. 区块链是一种逻辑结构
  2. 链表是不同结点使用内存地址来连接, 区块链是不同区块之间使用hash值来连接.

从"账本"的角度理解区块链

区块链是一个分布式账本, 区块链中的数据只能添加, 不能修改和删除. 例如a获得10元
a支出10元. 这样通过遍历a的所有记账记录可以得到a的账户余额.

多个结点如何共同完成记账操作?

参与区块链的各个结点需要选出一个记账结点, 此时被选出的主结点负责记账, 并且把记账数据发送给区块链中的其他结点. 当主结点出了问题, 剩下的结点可以自动选举出新的主结点负责记账.

小结:

  1. 区块链中的数据只能添加, 不能修改和删除
  2. 多个结点参与记账, 能够自动选出主结点. 其他结点依据主节点进行数据同步.
  3. 主节点可以自动更换.

从技术角度理解区块链

区块链技术是以下技术的组合

  1. 点对点网络(p2p技术)
  2. 加密技术(如RSA)
  3. 共识算法(如pbft, 工作量证明机制)
  4. 数据存储技术(数据库)

点对点网络

即p2p技术, 简单地说就是一个结点既是客户端也是服务端, 结点(机器)可以访问其他结点, 也可以应答其他结点的请求.

类似p2p下载, p2p下载器可以访问到当前p2p网络中的其他结点, 从其他结点下载数据, 同时p2p下载器也将你拥有的资源提供给别人下载.

p2p技术提供了结点发现功能, 即p2p网络中的结点可以自动发现新结点.

p2p网络内可以广播消息

加密技术

RSA公钥加密, 私钥解密.
hash算法 hash256, md5等等
保证数据传输安全, 防止数据被篡改.

数据存储技术

mysql, sqlite, leveldb
一个单独区块中的数据可以是任意类型. 例如账本, 就是一条条的记账数据, 可以理解成数据库中一个表的n条记录.

共识算法

共识算法保证多个结点之间的数据一致性. (一个新区块的添加, 需要多个结点之间讨论达成共识)

结点有限的环境下的一种共识算法pbft

pbft拜占庭容错算法, 具体的算法可以单独写一篇上万字的文章了...
此处只写一些pbft算法的特点.

pbft流程.png

上图是pbft算法的执行流程,
由图可知, 当结点数量增大时, 共识算法的效率会降低. 所以pbft算法只能应用在结点数量有限的区块链系统中.

小结:

  1. 结点之间利用p2p网络同步信息.
  2. 新区块在被添加到区块链中之前需要经过共识算法讨论.
  3. 共识算法保证了多个结点之间数据一致.
  4. pbft算法的效率随着结点数量的增加而降低.

区块链系统的一次执行流程(结点数量有限的环境下)

  1. 选举中心结点(记账结点)
  2. 记账结点接受记账数据, 例如100条数据形成一个区块
  3. 记账结点将新区块广播到p2p网络中
  4. p2p网络中的所有结点开始共识算法
  5. 所有结点达成共识
  6. p2p网络中的各个结点根据共识情况将新区块加入到自己的区块链中

总结

区块链技术就是多台机器共同保存一份数据. 共识算法保证了多台机器之间的数据一致性, 分布式存储和加密技术保证了数据不会被篡改, 一些结点失效不会影响整个系统的运行. 点对点网络保证了任何机器可以随时加入和退出区块链系统.

实现了全网共同维护一份可增加不可被修改的数据.

比特币是如何应用区块链技术的

比特币有矿工的概念, 矿工就是区块链系统中的结点.
比特币设计了独特的共识算法, 主要是选举记账结点这一部分. 比特币的记账结点每10分钟更换一次, 通过hash碰撞来选举记账结点. 流程大致是这样的.

  1. 记账结点提出数学问题, (就是一个哈希值)
  2. 各个矿工开始哈希运算, 第一个通过hash运算得到上一个结点提出的hash值的结点成为新的记账结点, 成为新记账结点的同时生成新的区块, 并且此矿工得到比特币奖励.
  3. 记账结点将包含自己比特币奖励信息的区块广播到全网, 全网矿工记录此新区块.
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容