什么是区块链?
简而言之,区块链是作为去中心化数字分类账的数据记录列表。数据被组织成块,这些块按时间顺序排列并通过密码学保护。
区块链的最早模型是在 20 世纪 90 年代初创建的,当时计算机科学家 Stuart Haber 和物理学家 W. Scott Stornetta 在区块链中采用了加密技术,作为保护数字文档免遭数据篡改的方法。
Haber 和 Stornetta 的工作无疑启发了许多其他计算机科学家和密码学爱好者的工作 - 最终导致比特币作为第一个去中心化电子现金系统(或简称为第一个加密货币)的诞生。
尽管区块链技术比加密货币更古老,但直到 2008 年比特币诞生后,它的潜力才开始被认识到。从那时起,人们对区块链技术的兴趣逐渐增长,加密货币现在得到了更大规模的认可。
区块链技术主要用于记录加密货币交易,但它适用于许多其他类型的数字数据,并且可以应用于广泛的用例。最古老、最安全、最大的区块链网络是比特币,它的设计巧妙地将密码学和博弈论结合在一起。
区块链如何运作?
在加密货币的背景下,区块链由稳定的区块链组成,每个区块都存储先前确认的交易列表。由于区块链网络是由分布在世界各地的无数计算机维护的,因此它充当去中心化数据库(或分类帐)。这意味着每个参与者(节点)都维护区块链数据的副本,并且它们相互通信以确保它们都位于同一页面(或块)上。
因此,区块链交易发生在点对点全球网络内,这使得比特币成为无国界且抗审查的去中心化数字货币。此外,大多数区块链系统被认为是无需信任的,因为它们不需要任何类型的信任。没有单一的权威机构来控制比特币。
几乎每个区块链的核心部分都是依赖于哈希算法的挖掘过程。比特币使用 SHA-256 算法(安全哈希算法 256 位)。它接受任意长度的输入并生成始终具有相同长度的输出。生成的输出称为“哈希”,在这种情况下,始终由 64 个字符(256 位)组成。
因此,无论该过程重复多少次,相同的输入都会产生相同的输出。但如果对输入进行微小的改变,输出就会完全改变。因此,哈希函数是确定性的,在加密货币世界中,大多数哈希函数都被设计为单向哈希函数。
作为单向函数意味着几乎不可能从输出计算出输入是什么。人们只能猜测输入是什么,但猜对的几率极低。这就是比特币区块链安全的原因之一。
现在我们知道了该算法的作用,让我们通过一个简单的交易示例来演示区块链如何工作。
想象一下,我们有爱丽丝和鲍勃以及他们的比特币余额。假设爱丽丝欠鲍勃 2 个比特币。
为了让 Alice 向 Bob 发送 2 个比特币,Alice 向网络中的所有矿工广播一条包含她想要进行的交易的消息。
在该交易中,爱丽丝向矿工鲍勃提供了地址和她想要发送的比特币数量,以及数字签名和她的公钥。签名是用爱丽丝的私钥进行的,矿工可以验证爱丽丝实际上是这些代币的所有者。
一旦矿工确定交易有效,他们就可以将其与许多其他交易一起放入一个区块中,并尝试挖掘该区块。这是通过将块通过 SHA-256 算法来完成的。输出需要以一定数量的 0 开头才能被视为有效。所需的 0 数量取决于所谓的“难度”,“难度”根据网络上的计算能力而变化。
为了在开始时生成具有所需数量的 0 的输出哈希,矿工在运行算法之前将所谓的“随机数”添加到块中。由于输入的微小变化会完全改变输出,因此矿工会尝试随机随机数,直到找到有效的输出哈希。
一旦区块被开采,矿工就会将新开采的区块广播给所有其他矿工。然后,他们检查以确保该块有效,以便他们可以将其添加到区块链副本中,并且交易完成。但在区块中,矿工还需要包含前一个区块的输出哈希,以便所有区块都捆绑在一起,因此称为区块链。由于信任在系统中的运作方式,这是一个重要的部分。
每个矿工的计算机上都有自己的区块链副本,每个人都信任投入最多计算工作的区块链,即最长的区块链。如果矿工更改了前一个块中的交易,则该块的输出哈希值将发生变化,这会导致该块之后的所有哈希值也发生变化,因为这些块与哈希值相似。矿工必须重做所有工作,才能让任何人接受他的区块链是正确的。所以如果一个矿工想要作弊,他需要超过50%的网络算力,这是非常不可能的。像这样的网络攻击因此被称为 51% 攻击。
让计算机工作以生成区块的模型称为工作量证明(PoW),还有其他模型,例如权益证明(PoS),它们不需要太多的计算能力,并且需要更少的电力同时能够扩展到更多用户。
