货币的演化
- 以物易物 - 如我国古代社会几只羊交换奴隶
- 实物货币 - 如黄金交易
- 符号货币 - 如纸币
- 中央系统虚拟货币 - 如电子银行,支付宝
- 分布式虚拟货币 - 如比特币
而比特币的底层应用就是区块链
区块链本质
一个去中心化的分布式账本,也可以说成是一个特殊的分布式数据库。
特点
- 可以无限增加的巨型账本 -- 每个区块可以视作这个账本的一页,每增加一个区块,账本就多了一页,这一页中可能会包含一条或者多条记录信息
- 加密且有顺序的账本 -- 账目信息会被打包成一个区块并加密,同时盖上时间戳,一个区块按时间戳顺序链接形成一个总账本
- 去中心化账本 -- 每个人的电脑都是一个完整的账本,由网内用户共同维护,它是去中心化的。
分布式账本
这里有个例子:
有一家三口人,家里只有一个记账本,这个账本爸爸来记账。由于账本只有爸爸可以记,这就造成了,爸爸就可以偷偷多花,然后少记账,这就是一个中心化的家庭账本。
但是如果有分布式账本呢,这个问题就不会产生了,爸爸记账,妈妈和孩子也会记账,这时候谁想改的话,通过看其他人的就知道是不是造假账了。
实际上区块链上,要篡改账本,除非你能控制超过51%的节点,但是这是不可能的。
中心化和去中心化
中心化
我们姑且拿淘宝做个例子吧。
- 我们用淘宝买商家衣服,付钱到支付宝
- 淘宝提示买家付钱了,提醒商家发货
- 商家发货完毕,东西到了买家,买家告诉淘宝,东西收到
- 淘宝把钱打给商家
我们可以看出,整个流程完全是以淘宝为中心的操作,一旦淘宝出了问题。整个交易就无法顺利完成。比如,你已经付钱了,但是淘宝服务器坏了,无法找回数据,那么你的这钱怎么要证明你付钱了呢。这就是中心化,也就是依靠淘宝的公信力完成的,我们比较信赖淘宝而已。
去中心化
我们再举个例子
比如一个城市,只有5个人,他们相互借钱:
假设B向A借了1块钱,这个时候A在人群里大喊:“我是A,我借给了B 1块钱”, B也在人群里大喊:“我是B, A借给我了1块钱”。这个时候人群里的其他人C,D,E听到了这个消息,他们就会拿出小账本记下:“xx年xx月xx日...,A借给了B 1块钱”,同时A,B也会记录。
这个时候如果B不认账了,其他人C,D,E就会站出来说:“我们有记账的,你确实借A钱了”
这样就已经建立了一个去中心化系统了,不需要银行等公信力组织。你篡改自己的账本是无效的,如B,因为大家手里都有账本。
挖矿
问题一,大家为什么要帮你记账,大家的时间也很宝贵的。为了让大家帮忙记账,我增加了一个新的规则,给第一个听到我喊话的并且将其记录在小本子上的人奖励。
这奖励就是对你劳动(记账)的酬劳,当然这个酬劳是整个系统给的。要得到这个酬劳,你要做到几点:首先,抢在所有人之前听到我的喊话并记录在自己的小本子上;记录之后,你还有马上告诉整个城市的人-这个我记录完了,你们再记录也没有用了,别人就会放弃这笔赚钱的生意;以此同时,你还要做一件事,就是给自己的记录加上一个独一无二的编号,然后把记录和编号一起喊出来,于是,下一个人再记录的时候,就会带着这个记录和独一无二的编码继续下去。
有了奖励之后,人们就有了动力,他们就会为了得到奖励开始监听周围发出的各种声音,只为了第一时间记录新的记录。
这就是比特币挖矿
分叉
问题二,有可能出现这么一个问题,A和B几乎同时记录完成,然后喊出我记录完成了。那么这时候有的可能认为听到的是A喊得,有的人认为是B喊得。但是奖励只有一份。这时候我们会采用原始简单的规则:谁长听谁的
黑色表示当前账簿主干。此时,可以随便选择一个页作为当前主分支,例如选择A:
此时如果有一个新的账簿页是基于A的,那么这个主干就延续下去:
如果这个主干一直这么延续下去,表示大家基本都以A为主干,B就会被遗忘。但是也有可能忽然B变成更长了:
那么我们就需要将B分支作为当前主干,基于这个分支进行后续工作。
双花问题
双花问题是指一笔数字现金在交易中被重复使用的现象。
假如我同时向B和C都喊了一句,我给你一块钱。那么怎么保证这一块钱在实际的交易中只被支付了一次呢?
拿比特币来说,交易发生的一刻起,比特币的交易数据就被盖上了时间戳,而当这笔数据打包到一个区块中后,就算完成了一次确认;在连续进行6次确认之后,这笔交易就不可逆转了;在比特币中,每一次确认都需要“解决一个复杂的难度”,也就是说每一次确认都需要一定的时间。
这种情况下,要把一笔资金进行两次交易,因为确认时间很长,所以两次交易同时确认几乎不可能。而一笔交易确认后,第二次交易就没法确认了。所以双花问题是无法产生的。
参考
区块链:一个故事告诉你比特币的原理及运作机制
《图解区块链》