区块链的工作原理

分享
Copied to clipboard!

什么是区块链?

简单来说,区块链就相当于一个去中心化的数字账本,它记录了一系列的电子数据。这些加密数据组成区块,并按照时间顺序排列。

区块链最早的模型形成于20世纪90年代初,当时的计算机科学家Stuart Haber和物理学家W. Scott Stornetta为了保护数据不被篡改,便使用了加密技术。

Haber和Stornetta的这项成就鼓舞了当时许多的计算机科学家和密码学爱好者钻研区块链工作,这也促使了世界上第一种数字货币--比特币的诞生。

尽管区块链技术先于数字货币,但也是在2008年,比特币产生之后,区块链技术才开始被认可。

从那时起,人们对于区块链技术的兴趣逐渐高涨,数字货币也开始盛行。

区块链技术主要用于记录数字货币交易, 但在其他数据方面也同样适用,甚至可以被运用于更广泛的领域。最古老,最安全以及最庞大的区块链网络是比特币网络,它是在密码学和博弈论完美结合的基础上产生的。


区块链的工作原理

在数字货币领域,区块链可被视为由一连串稳定的区块组成,每一个区块都存储了一系列之前已确认的交易数据。由于区块链网络是由无数的电脑所共同维持的,因此它的主要功能便是一个去中心化的数据库(或是分类账簿)。换言之,区块链中的每一个参与者(即节点)维护一个区块链数据的副本,并且他们互相之间保持良好的沟通交流以确保他们都在同一个区块上。

因此,区块链交易是发生在一个点对点的全球网络环境中,而这也正让比特币成为了一个去中心化的,无国界的,以及抗审查的数字货币。然而,大多数区块链系统则被认为是不可靠的,因为它们并未要求任何的信任机制。比特币也没有单独的监管机构。

几乎每一个区块链都有一个核心的部分--“挖矿”,而这依赖于哈希算法。比特币使用SHA-256算法,利用该算法,输入任意长度的字符串可以得到相同长度的输出结果。每当输出一个字符串,就可以称之为一个“哈希值”,而在SHA-256算法下,最终会得到64个字符。

也就是说,无论该“挖矿”步骤重复多少次,相同的输入总是会得到同样的输出结果。但是,如果在输入时发生一点改变,输出结果就会完全不同。因此,哈希函数是恒定的,且大多数数字货币都是被设计为单向散列函数。

单向散列函数同时也意味着无法根据其输出结果计算出输入的字符串。唯一的方法就只能靠猜,但是猜对的可能性是非常低的。这也是比特币区块链之所以安全的原因之一。

现在我们知道算法是用来做什么的了,让我们用一个简单的交易示例来说明区块链是如何运作的。

假设Alice和Bob是两位比特币的持有者,Alice欠Bob两枚比特币。

为了实现从Alice转给Bob两枚比特币这笔交易,Alice向全网的矿工们广播了这条交易信息。

在这笔交易中,Alice将Bob的地址和交易的比特币数量提供给矿工,并且附上了一个数字签名和她的公钥。这个签名是由Alice的私钥生成的,同时,矿工们也能通过它来验证Alice是这些比特币的实际拥有者。

一旦矿工们确认这笔交易是有效的,他们就能够把这条交易信息和其他交易信息一起放到一个区块里面,并且尝试对这个区块进行“挖矿”,这是将区块通过SHA-256算法加密来进行的,运算结果必须是以一定数量的0为开头才能判定为有效,0的数量是根据运算的“困难度”来确定的,而“困难度”则是根据全网的算力变化而改变的。

为了能够运算出正确的的哈希数,矿工们在进行加密算法前,在区块内加入一个“随机数”,因为“随机数”的一个微小的改变就会完全的改变运算结果,矿工们不得不尝试不同的随机数,直到他们得到正确的哈希数值。

每当一个区块被挖出,矿工就会向全网其他矿工公告这个新的区块信息,这样其他矿工就能够确认这个区块是否有效,然后他们就会把有效的区块信息加到自己的区块链当中,这样,交易就完成了。但是,矿工们仍然需要将前一个区块的哈希值加到新的区块中,这样所有的区块才能链接在一起,因此才叫做区块链。

每一位矿工都有一份属于自己的区块链信息副本储存在他们的计算机上,并且最多算力投入的那一条一定是最长的链。如果有人想改变之前一个区块中的交易信息,那么这个区块的哈希值也会变化,这就会导致这个区块后面所有区块的哈希值都产生变化,他就不得不把之前所有的运算重新做一遍,使得别人相信他的区块信息是正确的,因此,如果有人想要篡改区块信息的话,那么他就得付出超过全网50%的算力,这几乎是不可能的,类似的网络攻击也就被称之为51%攻击。

这个使计算机运算来产生区块的模型叫做工作量证明机制(PoW)。除此之外还有一些其他的机制,比如权益证明机制(PoS),它不需要很多的算力支持,这就意味着它消耗更少的电力资源和能够让更多的用户参与。

Loading