文章来源:链闻ChainNews
作者:Liao
原文为《How Does the Blockchain Work?》,作者 Michele D’Aliessi 用浅显易懂的方式阐述比特币与区块链的运作原理。
自互联网问世以来,区块链技术可能是目前为止最棒的发明。它让我们不用倚靠在无形的信赖或权威机构来做利益交易。举例来说,我和你打赌 50 元明天旧金山的天气。我赌它会是晴天,你赌它会是雨天。我们会有三种方式来完成交易:
我们信赖彼此。不论结果是晴天或雨天,输家要给赢家 50 元。如果我们是朋友,这会是一个好的交易方式。然而,即便是朋友,也有可能会赖皮不认输而不愿付钱,更何况是陌生人。
我们可以订定合约,如果有任何一方不愿付钱,赢家可以告输家。但要花钱花时间打官司,只为了讨回 50 元,实在是得不偿失。
我们找一个中立的第三者,每人分别先给她 50 元,结果揭晓后,她再把所有的钱 100 元给赢家。无奈的是,这个第三者有可能卷款潜逃。
我们无法信任陌生人,也觉得打官司劳神伤财。区块链技术很有趣,因为它帮我们实现第三个交易方式,而且安全、快速和便宜。
我们可以只写几行代码,让它执行在区块链网络上,进行交易。以打赌天气的例子,程序会确保 100 元的安全,并且一到明天会自动确认天气状况,结果揭晓后,也会自动将 100 元汇到赢家的账户里。在区块链网络上的交易,是无法被窜改或停止,而且益于大型交易,如卖一间房子或一家公司。
本文的目的是不用艰涩的技术用词来解释区块链是如何运作,给读者技术背后拥有的逻辑和机制的基本概念。
比特币 是最为人所知的一项使用区块链技术的应用。电子货币可被用来做物品交换,就像美元、欧元、人民币和其他国家的货币。我们先来说明比特币是如何运作,说明过程中会一点一点带入区块链的概念。
比特币让人们第一次可以在网路上交易身家财产,而且是安全的,没有人可以挑战其合法性。- Marc Andreessen
所以,什么是比特币?
一块比特币就是一个单位的电子比特货币 BTC,并且就像真实的一块钱货币一样,本身是没有价值的,只有在进行物品交易时才会产生价值。
在比特币系统里,有一个账本 Ledger,它是一个电子档案记录着所有的交易纪录。
这账本不是存放在一个中央机构,像是银行,或是一个资料库。它拥有无数份副本,散布存放在区块链网络上的每一台电脑里,而每台电脑我们称为「节点 node」。
如果 David 想用比特币转账给 Sandra,他就送一个讯息告诉网络说:他的账户减 5 BTC,然后 Sandra 的账户加 5 BTC。在网络中的每个节点都会收到讯息,并且将这笔交易记录到自己的账本里,然后更新账户的余额。
说到这里,关于账本是由一群电脑共同维护,而不是由一个类似银行的中心机构来掌管,有三个启发:
在银行系统中,我们只知道自己的交易纪录和账户余额,而在区块链网络里,每个人可以知道任何人的交易纪录。
一般来说你信任你的银行,而比特币是分布式系统,运行在网路上,任何事情发生错误,是没有客服人员可以帮你的。
区块链不是建构在信赖情感上,其安全性和可靠性是透过特殊的数学函数和代码达到的。
我们可以定义区块链是一个系统,它让一群互联的电脑安全地共同维护一份账本。
为了能在区块链网络里进行交易,你需要一个钱包 wallet,它让你可以存放和交易你的比特币。只有你可以花费你的比特币,所以每个钱包被特殊的加密法所保护着,使用一对独特且配对的钥匙:公钥和私钥,才能解锁。
如果一个讯息被公钥加密,只有配对的私钥才能解密读到讯息。反之,如果你用你的私钥加密讯息,只有配对的公钥可以解密。所以当 David 想要转账,他需要用他的私钥将转账讯息加密后,送到网络里,然后每个节点使用 David 的公钥将讯息解开,以确认是由 David 发送的。
在加密完成时会产生一个电子签名,它会被节点们用来确认交易讯息的发送来源和真伪。电子签名内容是一串文字,它是由交易讯息和私钥所组成的,所以不能用在其他的交易讯息上。如果你更改交易讯息中任何一个字元,电子签名也会跟着改变,所以骇客很难更改你的交易讯息或是得知交易金额。
钱包的公钥其实是网络里的一个位址 (send to address),所以当你转比特币给某人时,你其实是将比特币转公钥的位址。而且你必须证明你是私钥的所有人,才能进行转账。请注意,在网络里的交易讯息已经是被加密过的,你不用揭示你的私钥。
每个节点都保有一份账本,但节点是如何知道你的账户余额?区块链系统并没有记录每个人的账户余额,事实上,它只有纪录网络上每笔交易纪录。为了得知你的账户余额,你必须分析和验证所有曾经跟你钱包产生交易的纪录。
「账户余额」的计算和验证需要靠之前的交易纪录。举个例子,为了转出 10 BTC 给 John,Mary 先发起一个交易讯息,它包入了之前部分的转入交易纪录,只要这些纪录的转入金额加总起来刚好或大于 10 BTC 即可发送讯息。这些包入的交易纪录称作输入 inputs,每个节点会验证这些输入的金额加总是等于或大于 10 BTC。这些计算和验证会由钱包和节点自动完成,使用者不需要烦恼。
至于,系统如何信任这些输入?它去确认你的钱包在之前所有的转入交易纪录中是否真的有这些输入。为了简化和加速验证的过程,每个节点会保留一份特殊的资料来达到目的,也因为这个验证过程,钱不可能会无缘无故多出来。
持有比特币代表的是,账本上你还未变成输入的交易纪录。
在比特币网络上执行交易的代码都是开源的,这表示任何人只要有电脑和网络即可进行交易。然而,程序的错误有可能导致你的比特币消失不见。还记得吗?比特币是分散式网络,并没有专属的客服人员替你找回遗失的钱或钱包密码。所以你想要用比特币进行交易,建议使用正式的比特币钱包,例如 Bitcoin Core,并妥善保存你的钱包密码或私钥。