引言
最初接触区块链相关时,看了很多文章,真的是云里雾里,不知所云,区块链到底是什么?能干什么?看半天还是没明白,相信很多人都有类似的感觉。
区块链是什么?
区块+链
对数据结构有印象的同学,应该脑子里会浮现出现链表,是的,它们俩很像。
所以从这个角度讲,区块链本身这个词就描述了它的数据结构属性,它是拿来存数据的。
具体来讲,一个区块,包含区块头和区块体,区块头包含了时间戳和上一个区块的哈希等信息,区块体则是一个交易列表,整个区块进行哈希计算后生成自己的哈希,后面的区块按同样的方式包含了上一个区块的哈希,这样就把所有区块串起来变成一条链。
由于每个区块都包含了前一个区块的哈希,如果想要篡改第3个区块,那么第3个区块后面的区块也要全部重新计算哈希全部篡改过去,这样的结构保证了区块链数据很难被篡改。
账本
那区块链一般拿来存什么的?最常见的应用就是账本,我们可以很容易的把区块链的结构和账本类比对应起来,一个区块相当于账本里的一页,一页的账目流水相当于区块中的交易列表,我们按时间顺序记账,唯一区别是,区块链可以无限增长,账本是有限的,用完就得换一本。所以区块链也常常被称为超级账本,有些开源项目的名称就会含有ledger这个词。
去中心化
如果区块链只是一种数据结构,那么它就不会被那么多人追捧了。上面提到区块链数据很难被篡改,那只是很难,如果区块链数据是中心化存储的,那只要对这个中心化存储有控制权的人完全可以任意修改,区块链的创新之处在于,它有很多去中心化的节点,每个节点上都有一条自己的链,不同节点通过同步,保证和网络上别的节点上的链处于一致状态,那些链状态不正确的节点会被其它节点剔出网络,这样某些恶意个人或组织,想篡改数据就得控制网络上大量的节点,这是非常非常困难,几乎不可能的。
共识
聪明的同学可能会问,这么多节点,每个节点上都有链,那谁来记账,也就是谁来生成新的区块呢?以谁的为准呢?这就引出了共识机制,以比特币为例,每个节点都可以参与记账,但比特币网络使用了叫POW工作量证明的共识机制,通俗讲就是出一道有难度的数学计算题,第一个计算出来的节点获得记账权,然后这个节点把内存里的交易按时间排序打包到区块追加到自己的链上,同时广播出去,别的节点这时只需同步即可,这个过程,比特币也叫做挖矿。
智能合约
除了最常见的记账应用,如果要应用在别的领域,能实现吗?要修改底层实现吗?不需要,区块链2.0引入了智能合约,智能合约就是拿来在区块链上扩展实现各种不同的应用,可以把智能合约当作区块链上的二次开发语言,它可以定义业务对象的属性,状态,以及不同个体或组织对业务对象可以做哪些操作(即区块中的交易),通过智能合约把业务合约化,自动化。
RSA
聪明的同学又问了,这链上的资产类业务对象,任何人都可以操作吗?归属于谁的?继续以比特币为例,张三拥有100个比特币,这100个比特币怎么确认是张三的,怎么保证只能由张三花掉?这里用到了RSA的公钥和私钥,100个比特币在数据层面是一个input,input里包含了张三的公钥信息,100的数量,还有用张三公钥生成的一个锁定脚本,这个锁定脚本只能用张三的私钥去解锁,这样就保证了资产的归属和使用权。
总结
总结一下,区块链的主要特征:
- 分布式的时间序列数据存储(轻对象)
- 不可篡改
- 去中心化
- 开放
- 安全
- 可扩展
因此区块链也被称为下一代互联网:可信的价值互联网。
区块链能干什么?
我们想象一下,现实世界中的各种资产对象,放到链上存储和跟踪,然后不同的个人和组织可以方便的在一个公共的可信网络和存储里按照共同认可的规则互相协作,不同的企业,机构,组织之间的壁垒被打破,业务运作流转更自动化,更高效,更可信。再想想我们当前的状态:这个企业自个儿弄个系统,另外一个机构又弄一个系统,各自有各自的数据,谁也不知道对方数据到底有没有被改过,再来系统对接,联调,甚至跨国机构、组织,想想就觉得费劲。
学习资料
书籍
- 精通比特币
- 区块链技术及应用
开源项目
- bitcoinj
- ethereum
- hyper ledger fabirc