区块链科普系列——比特币白皮书|标准共识

标准共识小助手 2020-01-10 18:54

Overview 概述

2010 年比特币的价格从最初 10,000 个比特币只能买 2 个披萨(大约 30 美金),到 2017 年最高 20,000 美金一个比特币。8 年,比特币已经涨了 6,666,667 倍 。如此的投资收益是每个人都想获得的,但如何抓住这样的机遇?

Report 报告

区块链设计的初衷

区块链是一个综合新兴事物。需要计算机科学、密码学、经济学、金融学、数学、博弈论等背景知识才能理解以比特币为代表的各种区块链项目。

当今世界我们要和其它人达成一笔交易通常需要信任第三方才能完成交易。比如我们信任银行,所以我们给其它人转账是通过银行完成的。我们信任淘宝所以在淘宝上买东西会用支付宝支付。但淘宝、银行这样的第三方并不直接参与交易,只是辅助完成交易并且由于不信任,才会在交易过程中使用银行、淘宝。但是我们付出的代价就是增加了交易成本,付一定的费用给银行、淘宝这样的第三方。能不能没有第三方参与也能安全的完成交易避免支出冗余的成本呢?

区块链设计之初就是解决此类问题。区块链通过各种技术手段,建立了庞大的网络体系,让每个人可以在无信任的情况下安全的交易。

区块链不等于通证(TOKEN)、不等于数字货币、不等于比特币。比特币这里是指在市场上交易的有价格的,它的符号是 BTC。

通证(TOKEN)就像航空公司给大家的里程积分,每乘坐一次航班就得到对应数量的里程积分。每个航空公司都会发自己的积分,相当于每个航空公司都发行了自己通证(TOKEN)。数字货币相当于,你用积分换了机票,或者其它商品,这时使用的积分就相当于数字货币。那个最大的航空公司比如国航,它发行了最多的积分/通证(TOKEN),国航的积分就相当于比特币。现在你有国航的积分,只能换国航的机票,但是你想换海航的机票那该怎么办呢?于是有人提供了一个地方让把持有国航积分和海航积分的人弄到一起,帮助把国航的积分换成海航的积分。这个地方就是数字货币交易所。比特币网络或比特币系统是指那个去中心化,不断产生比特币(BTC)的网络系统。比特币(BTC)是区块链技术的第一个应用的产物。

区块链技术的创造目的并不是为了产生比特币(BTC),更不是为了将这东西拿到市场上出售。比特币最初来源于一篇论文《Bitcoin: A Peer-to-Peer Electronic Cash System》。很明显最初的目的是建立一个点对点的去中心化的交易系统。BTC 是这个系统对于各个参与节点计算交易确认的奖励。正是因为这个去中心化的交易系统是建立在密码学技术上,所以交易的结果和奖励是可信的无法被篡改,才导致了大众媒体所过分渲染的稀缺性。才开始了各种金融概念、货币概念、物流追溯。原本这比特币系统的目的很简单,就是建立一个总体成本更低,不需要传统的信任基础,不需要信任的第三方机构(如:银行)就可以完成交易的系统。当然随着技术发展,该技术也确实在很多地方产生了一些革命性的变化。从每人都最关心的钱/价格/投资收益看,BTC 确实从一文不值到 20,000 美金一枚,实在令人惊叹。

比特币网络交易过程

一旦一笔比特币交易被发送到任意一个连接至比特币网络的节点,这笔交易将会被该节点验证。如果交易被验证有效,该节点将会将这笔交易传播到这个节点所连接的其他节点;同时,交易发起者会收到一条表示交易有效并被接受的返回信息。如果这笔交易被验证为无效,这个节点会拒绝接受这笔交易且同时返回给交易发起者一条表示交易被拒绝的信息。

比特币网络是一个点对点网络,这意味着每一个比特币节点都连接到一些其他的比特币节点(这些其他的节点是在启动点对点协议时被发现的)。整个比特币网络形成了一个松散地连接、且没有固定拓扑或任何结构的「蛛网」——这使得所有节点的地位都是同等的。比特币交易相关信息(包括交易和区块)被传播——从每一个节点到它连接的其他节点。一笔刚通过验证且并被传递到比特币网络中任意节点的交易会被发送到三到四个相邻节点,而每一个相邻节点又会将交易发送到三至四个与它们相邻的节点。以此类推,在几秒钟之内,一笔有效的交易就会像指数级扩散的波一样在网络中传播,直到所有连接到网络的节点都接收到它。

涉及名词解释

加密:公钥和私钥。公钥加密,私钥解密;私钥签名,公钥验签。

私钥:实际上是一组随机数。

公钥:对私钥进行椭圆曲线加密算法生成,但是无法通过公钥倒推得到私钥。公钥的作用是在和对方交易时,使用自己的私钥加密信息,然后对方使用自己的公钥解密获得原始信息,这个过程俗称签名。

地址:由于公钥太长,在交易中不方便使用,就对公钥哈希进行 SHA256、RIPEMD160、Base58 算法加密生成地址。

对称加密,比如:小 A 要将信息传给小 B,但是通讯的网络是有可能被窃听的,为了解决这一问题,小 A 和小 B 事先商量好一个秘钥,小 A 用秘钥将信息加密传给小 B,小 B 收到信息后再用这个秘钥进行解密,因为加密解密用的是同一个秘钥,所以称为对称加密。但是这样做的前提是小 A 小 B 之间要有足够安全的通信渠道,来保证秘钥的传输,显然这是对称加密的一个不足之处。

非对称加密:用公钥加密,用私钥解密。小 A 传信息给小B时,需要用小 B 的公钥对信息进行加密,小 B 收到信息后用自己的私钥进行解密。也就是加密和解密用的都是接收方的公钥和私钥。由于公钥是公开的,发信息时只需要知道对方的公钥,而私钥不需要彼此透明,因为它是用来解密的。

假设这样一个场景:某一天,小 A 转了 10 个比特币给小 B,然后广播到区块链上,那其他人怎么知道这笔交易确实是小 A 操作的呢,会不会是有其他人冒名顶替?这时候就需要用到公私钥了,为了解决这个问题,小 A 需要在发布交易的时候用自己的私钥对这笔交易进行签名,其他人收到交易的信息之后用小A的公钥验证这笔交易签名的正确性,来确定这笔交易就是小 A 操作的。

使用『私钥』对交易进行签名

比特币钱包间的转账是通过交易(Transaction)实现的。交易数据是由转出钱包『私钥』的所有者生成,也就是说有了『私钥』就可以花费该钱包的比特币余额。生成交易的过程如下:交易的原始数据包括“转账数额”和“转入钱包地址”,但是仅有这些是不够的,因为无法证明交易的生成者对「转出钱包地址」余额有动用的权利。所以需要用『私钥』对原始数据进行签名。生成“转出钱包公钥”,这一过程与生成『钱包地址』的第 2 步是一样的。将「转出签名」和「转出公钥」添加到原始交易数据中,生成了正式的交易数据,这样它就可以被广播到比特币网络进行转账了。

比特币关键技术——账户体系

UTXO 模型:Unspent Transaction Output(未花费交易输出)

比特币并不是基于账户的方案,而是基于 UTXO 方案。比特币规定每一笔新的交易的输入必须是某笔交易未花费的输出,每一笔输入同时也需要上一笔输出所对应的私钥进行签名,并且每个比特币的节点都会存储当前整个区块链上的 UTXO,整个网络上的节点通过 UTXO 及签名算法来验证新交易的合法性。这样,节点不需要追溯历史就可以验证新交易的合法性。

这个和传统银行账户的思维完全不一样。张三拥有 10 个 BTC,其实就是当前区块链账本中,有若干笔交易的输出(UTXO)收款人都是张三的地址,而这些 UXTO 的总额为 10。这个地址一共收了多少 UTXO,则是要通过比特币钱包代为跟踪计算,所以钱包里显示的余额其实是有多少价值 BTC 的输出指向你的地址。

支付系统账户模型中,会遇到常见的「双花攻击」,在比特币交易系统中,没有账户余额概念,但是有某地址的净未花费交易输出个数,这个数值计算,从上到下扫描一遍同一地址所有的进进出出,立等可取。你只要等上 6 个区块的确认时间,就能确保不被双重支付,因为这笔交易得到了全网的确认。

Conclusion 结语

区块链(Blockchain)是比特币的一个重要概念,该概念在中本聪的白皮书中提出,区块链是一串使用密码学方法相关系产生的数据块(称为「区块」,block)。新增的数据块总能链接到上一个区块,即整条区块链的尾部。比特币点对点网络将所有的交易历史都存储在「区块链」(blockchain)中,所以区块链可以看作记录着比特币交易的账本。所以,自比特币以来,才正式诞生了区块链的概念。在系列的下篇,我们会具体探讨如何抓住区块链概念中的机遇。

风险提示:

  • 警惕打着区块链和新技术的旗号进行非法金融活动。标准共识坚决抵制利用区块链进行非法集资、网络传销、ICO 及各种变种、传播不良信息等各类违法行为。