浅谈区块链
这段时间区块链三个字成为当下网络的热点。趁着空闲时间,我也稍稍了解了一下区块链技术。算是有一点小小的收获,在这里和大家分享一下。由于我也是刚刚接触区块链,可能很多地方表达的不准确甚至错误,望大家海涵。
一:那些年,我对比特币的误解
说起区块链,就不得不说一下目前沸沸扬扬可谓一币千金的比特币。第一次听到比特币是在大学。那时间听到比特币和挖矿就自然而然想将其和‘币’与‘矿’关联起来。现在看来这种类比的方法有时间并不是那么准确。首先说‘币’,作为经济的载体,无论是以实物为载体看到见摸得着的实物货币还是由一条条数据来体现价值的电子货币,你都能找到找到一个载体来体现你所持有的货币,比如说你手上的百元大钞或者是易付宝里显示的余额。这些货币是你真真切切的持有的,不会因为别人的意志而改变。曾经在我看来比特币就是普遍意义上的电子货币的一种,比特币本身就是一串特别的数据,这串数据就是比特币经济意义的载体。而所谓的挖矿自然就是在茫茫互联网上找到这些符合比特币规则的特殊数据。这些认知既然我称之为误解,那自然在一定程度上是不正确的,如果你也是这么认为的,那么希望通过以下对区块链名词的简单解释,能够让大家对于比特币,对于挖矿有新的认知。
二:区块链的共识机制
之前说过实物货币和普遍意义上的电子货币都是有相应的载体来体现其经济价值的。而比特币作为一种基于区块链的新型货币,它是没有载体来体现其‘可见性’的。比特币的‘存在’依赖于区块链的共识机制。何谓共识机制?在我看来共识机制可以分为两个方面,即‘共’和‘识’。 首先说‘识’, 整个区块链由一个个网络节点组成。我们不妨把一个个网络节点当做一个个‘人’,把每个节点存储的数据当做这个‘人’的认知,有的‘人’无所不知,知道整个区块链网络中的所有数据,这些‘人’被称为全节点。有些‘人’只知道区块链网络的一部分数据,这样的‘人’被称为轻量级节点。虽然如此,但是每个‘人’对于同一块数据的认知是一样的,且他们所拥有的权利是相同的。
而对于比特币来说,它的存在就依赖于这些‘人’的认知。也就是说‘人’们认为你拥有5个比特币,那么你就拥有5个比特币。而比特币交易的过程也就是这些‘人’认知改变的过程。大家认为你有5个比特币划到C名下。那么C就拥有5个比特币,你就少了5个比特币。这是一个很有意思的地方,比特币是没有载体来体现其存在的,它完完全全依赖于‘人’的认知,你唯一证明你拥有比特币的途径就是大家认为你拥有比特币。也就是说即使你拥有100个比特币,但是如果大家都认为你只拥有10个比特币,那么你就只有10个比特币。并不像你拿着的百元大钞或者你易付宝里的100余额,即使别人都认为你只拥有10块钱,但是攥在你手里的人民币也不会由百元变为10元,易付宝余额也不会莫名的由100变为10。
也许你会说,如果我认为A划了10个比特币给我,难道我就能得到这10个比特币了吗,答案自然是否定的。但是如果你拉到足够的‘人’和你一起做这件事情,那么这件事并不见得无法完成。这就要说到‘共’字了。
‘共’字的意思是说区块链网络上被承认的节点都保持着共同的认知。如果有区块链网络上发现不同数据怎么办呢?那么秉承多少服从少数的原则,少数数据会被舍弃并同步为多数数据。值得注意的是这种少数服从多数的共识原则并不能判断数据的真假。也就是说区块链的节点都是盲目跟风的‘人’,他们不管真假对错,只跟着多数‘人’的脚步走。这也是我为什么说你一个人并不能完成在不经A同意的情况下划走他名下的比特币到自己名下。但是如果你拉到足够多的人即超过50%的人来和你共同做这件事,那么这件事就能完成,并且由于多数服从少数,那些曾经持有正确数据的人会迅速被同步到你的阵营。这也就是区块链网络中的51%算力攻击的由来,也就是说如果你掌握了整个区块链网络中的51%的计算力,那么你就可以在整个比特币网络中为所欲为了,因为你一直处于多数群体。当然掌握超过整个网络中51%的算力并不是那么符合实际。
很多目前区块链的显著特点都是由于其共识机制实现的。因为区块链中不存在那种处于中心枢纽说什么整个网络都要认同的皇帝式的人物,在区块链网络中大家的权利都是对等的。这种没有中心的p2p网络(对等网络)实现了真正意义的去中心化。同时由于区块链的共识机制且掌握整个区块链网络51%的算力又显得不切实际,使得修改区块链网络的数据几乎是不可修改的。这是一个特别强大的属性,要知道在中心化的网络中总有一些管理员能够修改整个网络中的数据。但是这在区块链网络中几乎是不可能的。由于共识机制你只有占据整个区块链网络中的多数才能完成全网数据的更改。因此几乎可以说区块链中的数据就像历史一样,发生了就是发生了,你只能知道曾经发生过什么,但是无法去改变过去。
三:区块链的区块:
区块链,顾名思义,就是由区块组成的链。每个区块记录着一部分数据。整个区块合起来就是区块链的全部数据。一个区块由区块头和区块体组成,区块体保存着这个区块的实际数据信息。区块头则封装了当前的版本号,前一区块地址,时间戳,随机数,当前区块的目标哈希值以及由区块体各条实际数据根据Merkle树算法得到的的hash根值。一个个区块通过前一区块的地址相连组成了区块链。而区块的地址就是由区块头中的信息共同决定的。区块头信息中又包含着区块体数据经由Merkle树算法得到的根hash值。这意味着一但你修改了区块中的任何数据都会导致当前区块地址改变,从而使得下一个区块连接不到这个被修改的区块,这个被修改的区块也就被剥离出区块链了。
区块结构-摘自区块链技术指南
四:区块链的挖矿机制
曾经在我看来在区块链网络上挖矿就是在茫茫互联网找到合适的数据,如果找到这个数据那么你就持有了这个数据。这个数据就是所谓的矿石。通过之前对共识机制以及比特币存在方式的解释,大家应该也觉得这种想法不那么准确了。在区块链网络中,确实是在不断的计算获得合适的数据的,但是挖到的这个数据却不是你的资产,他只是一个记录数据的权利,也就是说你找到了合适的区块来存储最近的数据。这个区块并不是作为你的资产存在的。因为区块链网络中是去中心化的,所有的区块都是共享的,没有谁能单独拥有某个区块。既然无法通过掌握区块来获得财产,那么为什么还有那么多人对比特币挖矿乐此不疲呢。事实上,根据之前的共识机制,当你挖到这个区块记录下合适的数据,区块链网络就会认可你的劳动,作为报酬,所有节点会产生一条成新的共识:你挖到了一个区块,所以奖励你10个比特币,这10个凭空产生的比特币就是你挖矿的报酬。但是如果两个人同时挖到合适区块怎么办呢?此时区块链会同时保持连接两个区块,在之后的流程中如果发现某一条链路更长,那么相对较短的链路就会被切断而链接到长链路上。以此来保证整个区块链网络中的数据一致性。
区块链交易流程-摘自区块链技术指南
以上只是区块链技术的冰山一角,除此之外还有很多巧妙的机制。比如为什么说区块链技术是巧妙的融合而非新生,比特币网络使用的工作量证明之外的权益证明,股份授权证明等挖矿机制,如何避免双花问题,区块链又如何保证一定时间内只有一个区块产生,如何定义公共链,联盟链等诸多区块链分类等等。限于篇幅及本人理解有限本文就不做赘述了,大家有兴趣可以拜读一下邹均先生的《区块链技术指南》一书,相信会对区块链技术有新的认识。