我的账户
链视界

关注数字经济、区块链

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

链视界 门户 百科

区块链如何工作? 用大白话讲解区块链技术(一)

比特币技术从2009年比特币诞生开始不断演化更新,如今早已是精彩纷呈百花齐放,不管是学术界还是企业界,不断涌现出最新的技术和成果。由于区块链的开源和分布式特性,所以从一开始它就是世界性的技术。

由于语言和网络限制的原因,中文世界的读者很难接触并读懂国外优质的英文区块链文章,它们并非看起来的那么高大上和晦涩难懂,有很多文章非常易懂且并不浅显,所以我觉得有必要将他们翻译成中文读者可以看懂的文章。

本文原文标题为 How Does the Blockchain Work? 副标题为 Blockchain technology explained in simple words. 以下内容在最大程度还原原文内容的前提下,做了一些方便中文读者理解的改动,文末的阅读原文可以查看英文原文。由于原文太长,分两篇文章呈现,本篇为第一篇。

区块链技术也许是互联网自身演化出来的最好的发明,它让数据在不借助任何中心认证服务的前提下,以极低的信任成本完成交易。试想一种场景,我和你以50美金为赌注,赌旧金山明天的天气,我赌晴天,你赌下雨,那么今天我们有三个可选项:

  1. 我们可以相互信任对方,不管是晴天还是下雨,输家都会给赢家50美金。如果我们是朋友,这将是一个非常好的解决方式,然而现实情况是,不管是朋友还是陌生人,都极有可能出现一方违约。

  2. 我们可以将赌约写入合约中,并由双方都认可的机构公证。然而一旦有一方违约,赢者不得不支付额外的诉讼费用和漫长的诉讼流程,对于小额交易来说,这绝不是一种最优的解决方案。

  3. 我们可以委托一个中立机构,双方各抵押50美金给第三方,赢家将会得到这两笔钱,但是我们要时刻提防第三方携款跑路的情况。

不管是信任机构还是合约都不是最优方案,陌生人信任成本太高,诉诸合约则需要时间和金钱,区块链技术有趣的地方就在于它为我们提供了一个安全、快捷、便宜的解决方案。

我们可以在区块链上写一段上述赌约的合约代码,程序会安全地保管双方的50美金,并且自动检测明天的天气情况,然后将100美金支付给赢家。双方都可以审核合约的逻辑,一旦合约部署到区块链上,它将无法被更改或者停止,也许你会觉得对于50美金的赌约有些小题大做,但如果是交易房产和公司呢?

以上并没有从技术层面上解释区块链如何工作,但是已经呈现了区块链的大致面貌和运行逻辑,接下来会详细分析区块链和比特币的原理。

比特币的基本原理

最被人所知且讨论最多的区块链应用无疑是比特币,比特币是一种可以被用来作为交易媒介支付产品和服务的数字货币,就像美元、欧元、人民币以及其他国家法币。接下来我会通过第一个区块链应用来详细分析区块链是如何工作的。

比特币第一次给了我们一种可以从一个互联网用户传输唯一数字信息给另一个互联网用户的方式,这种传输方式可以保证足够得安全,每个人都相信传输会发生,没有人会挑战传输的合法性,这种突破性的进展很难被夸大吹嘘。
—— Marc Andreessen

数字账本

一个比特币就是一个btc数字货币单元,就像美元一样,一个比特币自身没有价值,它的价值来自于我们都同意用它来交易商品和服务,同时我们也相信别人会做同样的事情。

为了记录每个人拥有的比特币数量,区块链使用了一个包含所有交易信息的数字账本。这个账本文件不会像银行或者中心化数据中心,将数据存储在中心化的服务器上。它通过互联网被分布式地存储在全世界各个地方的私人计算机(也叫节点)上,每个节点都会在本地存储一份复制账本。

如果 David 想要发送比特币还给 Sandra ,他将向网络中广播一条信息,该信息指示他的账户应该减少 5BTC,同时 Sandra 的账户将会加上相同数量的 BTC。每个网络中的节点都会收到信息,并且针对本地账本执行这条交易请求,更新各个账户的余额。

分布式的计算节点维护同一账本相比类似银行的中心化服务有以下几个特点:

  1. 在银行系统中,我们只能知道自己的交易记录和账户余额;在区块链上任何人都可以看到其他人的交易信息。

  2. 当你习惯信任并依赖银行系统,比特币由于其分布式特性,在出现问题时,并没有提供客服电话和帮助请求。

  3. 区块链被设计为通过特殊的数学算法和代码来保证其安全性,故而不需要中心化的信任机构。

公私钥

我们可以定义区块链是一个允许一群相互连接的计算机共同维护同一份安全账本的系统。为了在区块链上发送和处理交易,你需要一个可以存储和交易比特币的钱包软件,钱包通过一对唯一且关联的公私钥和加密学方法保证其安全性。

如果一条信息被指定的公钥加密,那么只有拥有相应私钥的人才能解密读取信息,反过来也是同样的道理,如果你用自己的私钥加密数据,那么也只能是相应的公钥才能解密数据。如果 David 想要发送交易,他需要通过自己钱包中的私钥对交易信息加密并广播到网络中。由于只有 David 知道私钥,所以也只有他才能发送钱包中的比特币。网络中的每个节点都可以通过公钥来解密交易信息以判定交易是否是由 David 发送。

当你用钱包私钥加密一个交易请求数据,实际上是生成了一个数字签名,该数字签名可以被区块链中的节点验证交易的合法性和所有权,数字签名是交易数据和私钥一起加密后得到的字符串,故而一个数字签名只能对应一笔交易。如果你更改了交易数据中的一个字段,得到的数字签名就会完全不同,因此可以防止重放攻击或者人为更改交易金额。

为了必须要发送比特币交易,你需要用钱包中的私钥进行签名,唯有如此你才能证明这些比特币属于你,所以私钥非常重要,千万不能对任何人泄露,否则资产就极有可能被盗。

获取钱包账户余额

区块链中的每个节点都维护着同一份账本,那么,节点如何知道某一个账户的余额呢?事实上区块链并不记录每个账户的余额,它只记录每一笔验证并确认过的交易。对于钱包来说,它需要分析某个账户在区块链上发生的过往所有历史交易,然后计算获得最终的账户余额。

Mary 如果想要发送10BTC给 John,她必须要找到自己并未使用过的输入链接(也称为UTXO Unspent Transaction Output)来拼装出一笔至少大于10BTC 的交易请求, 网络中的节点会验证金额是否正确,UTXO是否未被使用。UTXO 一旦使用过,未来就不能再使用了,这就如同你在支付宝上花出去的一笔钱,就只能成为交易记录,而不能再被花一次。

那么系统如何验证输入的交易有效呢?事实上系统会验证交易请求中给出的所有跟当前账户相关的UTXO,为了加速验证过程,每个节点都会保存 UTXO,正是这些安全验证算法,保证了比特币不会出现双花。拥有比特币意味着数字账本中包含跟你账户相关的UTXO,由于交易记录是透明开源的,任何人都可以看到每个账户的交易情况。

上文提到区块链是分布式系统,没有客服电话或者人员帮你找回因为忘记钱包密码而丢失的交易和资产,故而使用比特币官方的开源钱包软件来保存私钥会更安全一些。

以上是比特币的基本原理,下一篇会继续分析区块链名称的由来、区块链如何保证交易的安全和防止双花,以及比特币挖矿的原理,最后会分析区块链面临的挑战。

(扫二维码 入群交流)

区块链百科
微信扫码
行业动态资讯早知道

Copyright © 2022 链视界 粤ICP备2021100744号   Designed by 链视界