首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

最近大热的区块链究竟是如何运作的?

这篇文翻译自」 How Does the Blockchain Work? 」全文。

作者Michele D'Aliessi用浅白易懂的文字阐述比特币(Bitcoin)和区块链(Blockchain)的运作原理,是一篇很棒的入门文章,因此我决定挑战翻译看看,让更多人了解这个技术。

本翻译文已取得Michele D'Aliessi的同意,全文如下:

自网路问世以来,区块链技术可能是目前为止最棒的发明。它让我们不用倚靠在无形的信赖或权威机构来做利益交易。举例来说,我和你打赌50 元明天旧金山的天气。我赌它会是晴天,你赌它会是雨天。我们会有三种方式来完成交易:

我们信赖彼此。不论结果是晴天或雨天,输家要给赢家50 元。如果我们是朋友,这会是一个好的交易方式。然而,即便是朋友,也有可能会赖皮不认输而不愿付钱,更何况是陌生人。

我们可以订定合约,如果有任何一方不愿付钱,赢家可以告输家。但要花钱花时间打官司,只为了讨回50 元,实在是得不偿失。

我们找一个中立的第三者,每人分别先给她50 元,结果揭晓后,她再把所有的钱100 元给赢家。无奈的是,这个第三者有可能卷款潜逃。

我们无法信任陌生人,也觉得打官司劳神伤财。区块链技术很有趣,因为它帮我们实现第三个交易方式,而且安全、快速和便宜。

我们可以只写几行程式码,让它执行在区块链网络(Blockchain Network) 上,进行交易。以打赌天气的例子,这支程式会确保100 元的安全,并且一到明天会自动确认天气状况,结果揭晓后,也会自动将100 元汇到赢家的帐户里。在区块链网络上的交易,是无法被窜改或停止,而且益于大型交易,如卖一间房子或一家公司。

本文的目的是不用艰涩的技术用词来解释区块链是如何运作,给读者技术背后拥有的逻辑和机制的基本概念。

比特币是最为人所知的一项使用区块链技术的应用。电子货币可被用来做物品交换,就像美元、欧元、人民币和其他国家的货币。我们先来说明比特币是如何运作,说明过程中会一点一点带入区块链的概念。

比特币让人们第一次可以在网路上交易身家财产,而且是安全的,没有人可以挑战其合法性。

-Marc Andreessen

所以,什么是比特币?

一块比特币就是一个单位的电子比特货币(BTC),并且就像真实的一块钱货币一样,本身是没有价值的,只有在进行物品交易时才会产生价值。

在比特币系统里,有一本帐本(ledger) ,它是一个电子档案记录着所有的交易纪录。

图1. 比特币电子帐本

这帐本不是存放在一个中央机构,像是银行,或是一个资料库。它拥有无数份副本,散布存放在区块链网络上的每一台电脑里,而每台电脑我们称为「 节点(node) 」。

如果David 想用比特币转帐给Sandra,他就送一个讯息告诉网络说:他的帐户减5 BTC,然后Sandra 的帐户加5 BTC。在网络中的每个节点都会收到讯息,并且将这笔交易记录到自己的帐本里,然后更新帐户的余额。

图2. 请求交易讯息

说到这里,关于帐本是由一群电脑共同维护,而不是由一个类似银行的中心机构来掌管,有三个启发:

在银行系统中,我们只知道自己的交易纪录和帐户余额,而在区块链网络里,每个人可以知道任何人的交易纪录。

一般来说你信任你的银行,而比特币是分布式系统,运行在网路上,任何事情发生错误,是没有客服人员可以帮你的。

区块链不是建构在信赖情感上,其安全性和可靠性是透过特殊的数学函数和程式码达到的。

我们可以定义区块链是一个系统,它让一群互联的电脑安全地共同维护一份帐本。

为了能在区块链网络里进行交易,你需要一个钱包(wallet) ,它让你可以存放和交易你的比特币。只有你可以花费你的比特币,所以每个钱包被特殊的加密法所保护着,使用一对独特且配对的钥匙:公钥和私钥,才能解锁。

如果一个讯息被公钥加密,只有配对的私钥才能解密读到讯息。反之,如果你用你的私钥加密讯息,只有配对的公钥可以解密。所以当David 想要转帐,他需要用他的私钥将转帐讯息加密后,送到网络里,然后每个节点使用David 的公钥将讯息解开,以确认是由David 发送的。

在加密完成时会产生一个电子签名,它会被节点们用来确认交易讯息的发送来源和真伪。电子签名内容是一串文字,它是由交易讯息和私钥所组成的,所以不能用在其他的交易讯息上。如果你更改交易讯息中任何一个字元,电子签名也会跟着改变,所以骇客很难更改你的交易讯息或是得知交易金额。

图3. 电子签名与加密交易

钱包的公钥其实是网络里的一个位址(send to address),所以当你转比特币给某人时,你其实是将比特币转公钥的位址。而且你必须证明你是私钥的所有人,才能进行转帐。请注意,在网络里的交易讯息已经是被加密过的,你不用揭示你的私钥。

每个节点都保有一份帐本,但节点是如何知道你的帐户余额?区块链系统并没有记录每个人的帐户余额(译注:所以帐本实际上不是像图1 一样),事实上,它只有纪录网络上每笔交易纪录(如图4)。为了得知你的帐户余额,你必须分析和验证所有曾经跟你钱包产生交易的纪录。

图4. 区块链网络的帐本

「帐户余额」的计算和验证需要靠之前的交易纪录。举个例子,为了转出10 BTC 给John,Mary 先发起一个交易讯息,它包入了之前部分的转入交易纪录,只要这些纪录的转入金额加总起来刚好或大于10 BTC 即可发送讯息。这些包入的交易纪录称作输入(inputs),每个节点会验证这些输入的金额加总是等于或大于10 BTC。这些计算和验证会由钱包和节点自动完成,使用者不需要烦恼。

图5. 区块链的交易讯息结构

至于,系统如何信任这些输入?它去确认你的钱包在之前所有的转入交易纪录中是否真的有这些输入。为了简化和加速验证的过程,每个节点会保留一份特殊的资料来达到目的,也因为这个验证过程,钱不可能会无缘无故多出来。

持有比特币代表的是,帐本上你还未变成输入的交易纪录。

在比特币网络上执行交易的程式码都是开源的,这表示任何人只要有电脑和网路就可以进行交易。然而,程式的错误有可能导致你的比特币会不见。还记得吗?比特币是分散式网络,并没有专属的客服人员替你找回遗失的钱或钱包密码。所以你想要用比特币进行交易,建议使用正式的比特币钱包软体(例如Bitcoin Core ),并且妥善保存你的钱包密码或私钥。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180102A0WLKL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券