蒋勇 | 白话区块链技术栈与应用

点击查看全文


image


(中生代技术&华章科技区块链技术分享第一期)
(本文约12000字,阅读完本文预计10分钟)
(如果电脑上阅读出现方框乱码,请下载PDF原文:链接:http://pan.baidu.com/s/1jHEyjEA 密码:zg30)

内容概要

现如今说起比特币,相信不少朋友已是耳熟能详了,尤其是这两年随着其价格飙升,甚至超过了黄金 ,超过了房地产,各大财经媒体乃至央视都有所关注报道;

在很多朋友心目中,比特币似乎就是一个类似于游戏币、邮币卡这样的炒作标的物,除了惊叹于它的价格上升速度外,对其了解还是寥寥。

然而,这一切的背后,到底是什么在支撑,现如今除了比特币,还有很多其他的类似系统, 比如莱特币、以太坊、 比特股等等,不胜其多,但凡介绍这些内容的软文, 大体都会提到一个名词:区块链

一切似乎都是由区块链引起的,那么,就让我们剖开迷雾,揭开神秘的面纱,来看看这里头到底是个什么,它有什么特点,能有什么用处。

白话区块链技术栈与应用

导读:本章内容主要介绍区块链本身的含义以及代表性的技术组成,并由此介绍比特币是怎么通过这样的技术产生的。

1. 什么是区块链

1.1 一个有趣的数据记录格式

区块链,拆开来就是“区块+链”,实际上是一种数据的记录格式,软件在处理数据的时候,总是需要按照某种格式来读写,比如我们通常使用的关系型数据库,数据是按照一条一条的记录保存,或者再通俗的说,就像会计记账,将每一笔发生的业务都记在账本中,每一笔记录的账务称之为是凭证,一个月下来,将记录的一堆凭证数据汇总成 一个账簿,每过一个月就月结一下。区块链的格式,跟会计的这种记账方法很类似,所谓区块也就是一大坨数据的意思,我们可以将会计每个月所有记录的记账凭证看成是一个个的区块,区块之间通过年 月串联起来,这样看起来就像是一条数据链一样,区块链其实就是这么简单的一个格式,我们看个示意图:


image

如图所示,就是区块链格式的样子了 ,在比特币中,不是每个月存储一个区块, 而是大约每10分钟一个区块(注意只是大约,不是精确的10分钟),区块中存储的数据是最近的10分钟内发 生的交易 事务(最近的10分钟这个说法其实并不严谨,现在可以就这么理 解,在下面另有解释),可以理解为就是流水账。

大家看到这样的格式后,不知道是否有些似曾相识的联想,其实这样的数据格式,在生活中是有很多相似的;

比如工厂仓库的出入库记录,这个跟会计账本是类似的,还有家谱或者族谱,每一代人之间的关系是一个区块,到了下一代 又是一个区块,区块之间是父辈与子 女的关系连接,等等;而如果是计算机专业的朋友,一眼看上去,这不就是个线性表吗?是的,这就是比特币软件的主要数据存储格式,也是其他所有基于区块链技术的系统存取数据的格式。

这是一个很有趣的数据格式,它将连续不断的发生的数据分成了一个 一个的数据块,这样每个区块就都有自己的数字编号,也可以有自己的身份证号(通过哈希算法计算得到),在下载同步这些数据的时候,可以并行的从各个节点来获得,无论数据先后,到达本地后再根据区块号或者身份证号来组装起来就行 。

另外,这种格式是一种链条的格式,链条最大的特点就是一环扣一环,很难从中间去破坏, 比如有人篡改了中间的5号区块,那么如果要让数据看起来是完整的,就得同步把5号区块后续的所有区块都要更改掉,这个难度就大了,这也是区块链数据格式不可篡改的其中一个原因(当然了,如果仅仅只是本机的数据,也没什么不可篡改的,区块链系统真正的防篡改能力是通过无数个区块链系统运行的节点网络以及共识算法来实现的,这个在下面再介绍)。

这种格式还要个妙处,如果这个数据总是由一个人来记录的,那自然也没什么,但是如果放到网络中, 大家共同来记录这个数据,那就有点意思了,每个区块数据由谁来记录或者说打包,是可以设置一个游戏规则的,比如说掷骰 子,大家约定谁能连续3次掷出6,那就让他来记这个数据,为了补偿 一下他的劳动投入,奖励给他一些收益, 比特币正是使用了这样的原理来不断的发行新的比特币出来,奖励给打包的那个人的比特币就是新发行的比特币。

说到这里,大家觉得有点意思了吧?

1.2 一组技术的代表称呼

刚刚我们说了,区块链是一种数据的记录格式,可如果仅仅如此的话,实在不算是什么大不了的创新,事实上,在技术上区块链是一组技术的代名词,我们通常都说使用了区块链技术就是这个意思,那么既然是一组技术,那是由哪些技术组合起来的呢?我们来看一组关键词:

  • 公开密钥算法
  • 网络共识算法(挖矿)
  • 梅克尔数据证明
  • 可编程脚本合约
  • 区块链账本

1.公开密钥算法
属于计算机密码学⾥面传统的技术,公开密钥算法是⼀种不对称的加密算法,拥有两个密钥,可以互相加解密,通常其中的一个密钥是公开的称之为公钥,另外一个密钥是保密的称之为私钥;

2.哈希算法
也是属于计算机密码学中传统的技术,应⽤就更广泛了,主要⽤来对⼀段数据进行计算,得出⼀个摘要信息,通俗点说就是给一段数据⽣成⼀个身份证号;不同的消息生成的摘要数据是不⼀样的(某些抗碰撞能力弱的哈希算法可能在这⽅面会有些问题,但是使⽤广泛的⼀些知名的哈希算法,发⽣碰撞的概率很低),相当于给⼀段数据⽣成了一个身份证号这么个意思,在区块链系统中,哈希算法的使⽤很多,⽐如区块与区块之间,就是通过区块头的哈希关联起来的,⽽区块中的每⼀笔交易事务也都会⽣成⼀个哈希值作为交易易数据的ID,通过这些身份证号可以⽅便的检索或者关联区块,也能⽅便的指定某⼀笔交易事务。

哈希算法还可以用来生成梅克尔树,在下面我们再详细介绍,我们说了,哈希算法的特点是,只要目标数据有哪怕⼀点点的改动,生成的哈希值就会完全不不一样,因此可以⽤用来验证数据是否被改动过。

3.⽹络共识算法
在很久前就有计算机科学家研究过,并且提出过一些模型,⽐如拜占庭容错算法之类,比特币、以太坊这些使用的是⼀种工作量证明算法,其它的一些区块链系统有使用其他各种衍⽣的算法,⽽算法的原理都很简单,就是约定⼀个规则,通过共同执行这个规则,让每个分布式的节点数据都保持最终一致;

4.梅克尔数据证明
这是利用哈希算法将⼀组数据创建为⼀棵哈希树结构,⽤于验证数据完整性的一种结构,同时也应⽤在了轻量级钱包中。不同的区块链系统对梅克尔树的应⽤不尽相同,比特币中是⼆叉梅克尔树,比较简单,通过交易事务的哈希值两两配合生成一棵树,以太坊这种就复杂的多了,称之为梅克尔.帕特⾥夏树,这里暂时不赘述。

5.可编程脚本合约
什么叫合约?就是⼀组约定的规则,⽐如银行的结算系统,⼩明转账100给小王,在这么⼀个过程中,银⾏系统就会根据⼀组规则自动执行,规则包含⽐如检测⼩明的密码是否正确,余额是否⾜够,⼩王的账号是否正确,检测通过则分别更改两者的账户⾦额并写⼊事务⽇志。是的,这就是合约的意思了,当然,如果范围再⼴泛些,各种商业合约也都是这么个意思,因此可编程脚本合约也没什么好稀奇的,然⽽,如果将这种编程合约放到区块链的环境中,就⽐较有趣了,看两个特点:
第⼀个,区块链系统是⽆中⼼的分布式⽹络,没有边界
第⼆个,区块链系统通过⼀系列的技术实现了可信任⽹络
加起来,就是⽆边界的可信任⽹络,在这样的⼀个⽹络中执⾏既定的合约,成本低⽽而且安全,⽐特币在本质上也是属于这么⼀种脚本合约,只不过在⽐特币软件中,合约中处理的事情是⽐特币的转账,如果扩展这个概念,众筹、担保、分润等各种合约种类都能应⽤在这上⾯,⽤户也可以⾃行编写合约规则,以太坊便是这⽅面的⼀个典型代表,并由此带出了智能合约的应⽤。
这些技术的具体解释,我们在下⾯⼀一详述。
其中的【区块链账本】我们已经介绍过了,不再赘述,那么其他的技术都具体是什么意思呢,它们是怎么与区块链账本结合起来的?我们来一一说明一下:

1.3 创世应用“比特币”

点击查看全文


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值