浅析比特币白皮书

    任何事物的发展都有其客观原因,区块链也不例外;简单来说,任何技术的发展都是为解决问题产生的:当前存在什么问题?如何解决该问题?----其实这句话是我硕士生导师天天都要说的,这句话就是研究算法的套路,哈哈!

    现在我们要看看中本聪这个大神为什么要创造比特币?采用什么技术实现了比特币系统?中文版比特币白皮书请见下面链接:

    比特币白皮书:一种点对点的电子现金系统

    英文版见以下链接:

    Bitcoin: A Peer-to-Peer Electronic Cash System

0. 存在什么问题?

    基于信用的模式”(trust based model)交易存在以下问题:

a. 无法实现完全不可逆的交易,因为金融机构总是不可避免地会出面协调争端;

b. 中介的存在,会增加交易的成本,并且限制了实际可行的最小交易规模;

c. 现在中交易需要建立信任,信任建立机制需要成本。

    如何解决:

“所以,我们非常需要这样一种电子支付系统,它基于密码学原理而不基于信用,使得任何达成一致的双方,能够直接进行支付,从而不需要第三方中介的参与。”

    个人认为这是区块链技术(支持比特币系统)最有价值的地方:基于信任成本高,基于密码学原理使得建立信任的成本趋近于0。

    下面进一步分析中本聪采用哪些技术来设计比特币系统的。

1. 交易(Transactions)

    个人认为这个概念中文版表述得不太准确,英文版原文为:

“We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership.”

Transaction 图示

    如上所示,假设Owner1 转账一定数量BTC给Owner2,Owner1把上一笔自己的UTXO和Owner2的public key执行hash,然后用Owner1的private key 进行签名;Owner2可以使用Owner1的public key验证这笔交易是由Owner1发起的,也就是“A payee can verify the signatures to verify the chain of ownership”。交易验证过程会在后续的文章中详细阐述。

    同时基于区块链的比特币系统也能解决“双花”问题。设计A同时一笔UTXO转账给B和C,即

    TX1: A->B

    TX2: A->C

    设计网络中的某个节点先接受都TX1,随后接受到TX2,发现TX2与TX1是同一笔UTXO,节点就会丢弃A->C,从而解决了“双花”问题。

2. 工作量证明(共识算法)

    在区块链系统中,由于激励机制每个节点都会争夺记录账本的权利,争夺的过程就是挖矿的过程。过程如下:

旷工搜索一个随机数,经过某种运算(如SHA256)使结果满足某种特性,如运算结果的前N位为0。当某个旷工发现这个随机数时将向网络广播,其他节点确认后就获得了记账权,即产生了一个新的区块。

    共识算法的本质是通过算法确认某个节点花费大量算力得出随机数nonce;共识算法应该具有如下特征:

    a. 已知output的特征很难推算出input,只能通过无数穷举才能获得;

    b. 知道input很容易算出output,进而确认output是否符合某些特征。

    POW严重浪费CPU资源,进而推动其他共识算法的产生(如POS,DPOS),以后文章中会详细阐述共识算法。

3. 网络

    网络部分白皮书讲得简单明了,不再啰嗦,简单列出如下:

    运行该网络的步骤如下:

    a. 新的交易向全网进行广播;

    b. 每一个节点都将收到的交易信息纳入一个区块中;

    c. 每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;

    d. 当一个节点找到了一个工作量证明,它就向全网进行广播;

    e. 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;

    f. 其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。

    节点始终都将最长的链条视为正确的链条,并持续工作和延长它。如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别。当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。该僵局(tie)的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。

    所谓“新的交易要广播”,实际上不需要抵达全部的节点。只要交易信息能够抵达足够多的节点,那么他们将很快被整合进一个区块中。而区块的广播对被丢弃的信息是具有容错能力的。如果一个节点没有收到某特定区块,那么该节点将会发现自己缺失了某个区块,也就可以提出自己下载该区块的请求。

4. 激励机制

    激励机制就是旷工挖矿算出符合规则的随机数,产生新的区块,以获得比特币奖励。

    个人认为这是比特币系统诸多创新点之一:

    a. 可以吸引大量节点功能维护公共账本,提高数据的可靠性;

    b. 减少黑客的攻击;因为破坏比特币系统也会伤害自己的利益。

5. 回收磁盘空间与简化支付确认(SPV)

    “如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该交易之前的数据,以回收硬盘空间。为了同时确保不损害区块的随机散列值,交易信息被随机散列时,被构建成一种Merkle树(Merkle tree)[7] 的形态,使得只有根(root)被纳入了区块的随机散列值。通过将该树(tree)的分支拔除(stubbing)的方法,老区块就能被压缩。” ----引用来自于白皮书

Stubbing off Branches

    很明显,这种方案极大地减小了节点存储区块链的磁盘空间。

“在不运行完整网络节点的情况下,也能够对支付进行检验。一个用户需要保留最长的工作量证明链条的区块头的拷贝,它可以不断向网络发起询问,直到它确信自己拥有最长的链条,并能够通过merkle的分支通向它被加上时间戳并纳入区块的那次交易。节点想要自行检验该交易的有效性原本是不可能的,但通过追溯到链条的某个位置,它就能看到某个节点曾经接受过它,并且于其后追加的区块也进一步证明全网曾经接受了它。”

    ----SPV机制,引用自白皮书

SPV 图示

    这里有个疑问点“但通过追溯到链条的某个位置,它就能看到某个节点曾经接受过它”,节点如何通过区块链区块header信息追溯到交易的?

6. 价值的组合与分割

    比特币的每个交易可包含多个输入和多个输出(当然也可能是单输入单输出),每个输入可以是小额UTXO,输出最多包含两个:一个是支付,一个是找零。这种价值的分割和组合可以提高交易的效率。

Multi Input & Multi Output

疑问点:

a. 白皮书第3部分“Timestamp Server”是什么机制?与区块头中的时间戳有何联系?

b. SPV机制中,节点可以只保存最长有效链,如果验证某个交易的有效性,如何确认该交易在区块中的Merkle的分支路径?在本地区块头中搜索?还是在网络其他节点中获得?

    以上即是个人对比特币白皮书的理解,由于能力有限,如有错误欢迎大家指出! 希望和大家一起进步。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容