什么是区块链
区块链有两个主要部分:区块和链。这不是废话吗?但大道至简,它的本质就是一串链子把区块串起来,然后数据被划分成连续的多个区块的形式,在电脑里储存。
举个例子你就明白了,下图中方框代表国家,每个方框里每个国家的一些城市名字。
除此之外,每个方框里面还有一个称作哈希值(hash)的部分,哈希值是由一系列字符组成(比如“1hi515AHA5H”),它的值由每个方框的里面信息决定。
由于技术上哈希值的产生比较复杂,简便起见我们用城市名首字母来代替正轨的哈希值比如USA的那个方块里面有New York,LosAngeles和 Chicago三个城市,那么哈希值就是“NYLAC”,每个连续的区块链都包含上一个区块的哈希值,暂把它们称作“前哈希值”(Prev Hash)。
这就有点像 C 语言的指针,把区块连接起来。如果有人想篡改 USA 这个区块,比如加入一个城市 Boston,那么这个区块的新哈希值就会变成“NYLACB”,但是下一个区块India中存储的“前哈希值”仍然是“NYLAC”,这样就没法匹配,这个链就此断了。
所以你知道了吧,哈希值的引入就是为了防止有人篡改任何一个区块。
那么你也许又会问了,那我把下一个区块的“前哈希值”也一并改了不就行了!Too young,too naive!
区块链的数据并不是只存在于一台电脑上的,他的数据是在存在于所有接入区块链网络的电脑上的,每个电脑上的数据都是一样的,因为每当你加入区块链网络,你的电脑就会下载所有区块,如果某人篡改了他的版本,网络就会判断是否可信,它的策略是相信大多数人的版本。
还有一点需要说明,在区块链网络里面,除了数据,所有电脑上运行的程序都是一样的,所有电脑一起执行这套程序。这一点和我们日常生活中所见的大多数应用的机制不同,比如微博,所有的数据和处理程序都是集中在微博的服务器上,而手机 APP、PC 应用、网页等终端的主要功能仅仅是用于与处理服务器进行交互。
但在区块链网络里面,是去中心化的,它依靠所有接入区块链网络的用户的计算机共同执行它的程序。这意味着只有区块链网络中的每台电脑都关机了,它才会停止运行。
公共区块链