比特币研究系列【白皮书】

区块链技术似乎也研究过一阵子了,但对区块链应用的鼻祖和最成功的区块链应用比特币,原版比特币白皮书却没完整看过,这有点说不过去,今天在家把比特币白皮书原版看了一遍,继续随意做笔记。

摘要

摘要中说明,这个白皮书提出了一种完全点对点实现的电子现金系统,中间不需要通过任何的金融机构。

摘要也特别说明了这个系统防止了双重支付(double-spending)问题,上次去朋友公司普及区块链知识时,有人就问这些功能不是在现有系统中都实现得很好吗?的确是这样,在中心化的系统中很多功能(例如双花)很容易实现,但去中心化的系统中就麻烦多了,而去中心化是区块链的一个很重要的特性,也是区块链变革的价值中很重要的一部分。

简介

简介中说明中心化系统在绝大多数情况下运行良好,但是无法实现完全不可逆的交易,同时限制了日常的小额支付。

完全不可逆的交易,区块链基本是实现了,例如The DAO事件,在原有链上没法可逆,硬分叉出ETH,现状就是ETH和ETC平行运行。如果是中心化的系统,这种情况很容易处理,直接封号扣掉就好了,当然中心的权力太大了!
这种不可逆也的确有一些需要解决的问题,例如转帐错误、黑客攻击等等,毕竟人不是机器总是有出错的时候,这个系统最终还是要给人类用服务于人类的,但我相信区块链发展进程中会有更好的解决方案。

中心化系统下的支付成本是比较高,国内也有很多商户不愿意接受小额信用卡支付,大额的也有很多需要买方付手续费,牵涉到跨境时更是如此。不过随着电子货币的大涨,现在去中心化的比特币、以太坊支付费用也不小了,特别是小额支付。

交易

每个电子货币拥有者传送电子货币给下一位时,会对前一次交易和下一位拥有者的公钥进行签名并附在交易末尾。

防止双重支付,需要交易信息公示,整个系统内的所有参与者,都有唯一的公认的历史交易序列,收款人需要确保在交易期间多数的节点都认同该交易是首次出现。

时间戳服务

时间戳服务通过对区块形式的数据加上时间戳进行哈希,每个时间戳将前一个时间戳纳入其哈希中(reinforcing),并形成一个链。

工作量证明

工作量证明比如SHA-256下,哈希值以一个或多个0开始,那么随着0的数目上升,找一这个解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次哈希运算。

大概意思应该就是以下代码这样

import hashlib
from itertools import count

msg = 'randomstring'
for i in count():
    hashid = hashlib.sha256(msg+str(i)).hexdigest()
    if hashid.startswith('0000'):
        print i,hashid
        break

区块中增加一个Nonce,这个数决定了工作证明的难度。

工作量证明机制保证了区块信息的不可更改,如果要更改就必须完成同样的工作量,这个工作量指的是本区块和本区块以后所有区块的工作量。

网络

新的交易向全网广播,每个节点将交易信息纳入一个区块中,尝试在自己的区块中找到一个工作量证明,并向全网广播,其它节点认同该区块的方法,就是在该区块的末尾,制造新的区块以延长该链条。

节点始终都将最长的链条视为正确的链条,并持续在这个链条上工作。

激励

每个区块的第一笔交易会产生由该区块创造者拥有的新的电子货币,提供了将电子货币分配到流通领域的一种方法。

这种方法与挖矿类似,有人说POW是资源浪费,这个看在哪个方面来看,如果把数字世界里的各种不同数字也与现实世界中的各种不同物品类比,这种数字货币就类似于黄金,为什么现实世界的黄金挖矿不是浪费而在数字世界里挖矿就是资源浪费呢?个人认为还是思维的定势,思维转变了也就能接受了!(可以想像这样一个场景,每个人能进入数字世界,在数字世界里每个人脖子上、手上都带着比特币这些装饰品,大家都认为这是财富和美丽的象征,那么挖矿就不是浪费资源了吧,我想我是游戏做多了:-) )而现有的其它各种数字货币可以理解为现实世界中的钻石、铜矿、铁矿、泥沙等,所以不同数字货币才有不同的价值。

另外一个激励的来源则是交易费。

激励系统也有助于鼓励节点保持诚实。如果有一个贪婪的攻击者能够调集比所有诚实节点加起来还要多的算力,他面临一个选择:要么将其用于诚实工作产生新的电子货币,或者用于二次支付攻击。那么他就会发现,按照规则行事,诚实工作更有利可图。

这一点在比特币发展过程中也证实了,各大矿场都说控制算力在多少多少,这也是保证他们的利益,如果算力真超了,整个链不可信了,也没人一起玩了,好像当时域名币就是这样吧!

不过想起当时问过区块链朋友的一个问题,如果是牵涉到更大的利益呢?例如说国家利益,假设有某个国家是用数字货币做为国家货币,但是有敌对的国家有办法获得更大的算力,从而影响这个数字货币区块链的正常稳定运行,这种情况下就不是简单的数字货币的利益权衡了吧?

回收磁盘空间

如果最近的交易已经纳入足够多的区块之中,那么就可以丢弃交易之前的数据,以回收磁盘空间。

不含交易信息的区块头大小仅80字节,每10分钟一个区块,每一年区块头数据也才4.2M。

简化支付确认(SPV)

在不运行完整网络节点的情况下,也能够对支付进行检验。

注意这里是支付确认,不是交易确认。

Combining and Splitting Value

Privacy

Calculations

Conclusion

白皮书提出了采用工作量证明机制的点对点网络来记录交易的公开信息,网络结构简洁,节点之间的工作大部分是彼此独立的,只需要很少的协同。节点可以随时加入网络,也可以随时离开网络。

白皮书链接

https://bitcoin.org/bitcoin.pdf


H2
H3
H4
Upload from PC
Video gallery
3 columns
2 columns
1 column
4 Comments