区块链 - 基础概念大全

前言

本问是笔者读《区块链:从数字货币到信用社会》的一些摘要和自我理解内容,基本上涵盖了区块链的方方面面以及各个重要的点;

序三

中本聪认为不能依靠某个中心创建信用。因为任何过度中心化的结果都会产生信息不对称,会存在利用中心全力损害参与者的利益、损害市场上其他方利益的情况。所以,中本聪的比特币白皮书开宗明义的提出:我们要开创一种不需要第三方的、不需要中介的支付系统、既电子货币的支付系统;

首先要解决所有权的唯一性的问题,既是不能被篡改,(原文中说的是不能重复支付,我觉得这个描述不太准确),那么如何解决呢?是通过时间戳,一旦某个交易在某个时间点上达成,那么任何一个想来篡改的交易所提供的时间戳对不上,那么就会失败;但是这个问题又聚焦在,谁来盖这个“时间戳”?盖“时间戳”的是所谓的“矿工”。矿工每 10 分钟给全网的每一笔交易盖“时间戳”-也就是“记账”,但是问题是,哪个矿工愿意使用自己的矿机来记录呢?那就是比特币的威力所在了,矿工的奖励就是通过币基所产生的新币的奖励,通过竞争到一段时间内(约 10 分钟)的唯一合法记账权而获得,谁竞争到了,谁就可以获得一定数量“比特币”的“奖励”,同时,全网其它矿工要同步一致它这个记账,然后竞争下一个区块记账权。最初,这个奖励是 50 个比特币。按照规定设定,每四年减半一次,2013 年减半到 25 个比特币。所谓区块链,就是这样一个又一个区块账簿连接起来形成的单向记账链条;

比特币的区块链是靠消耗计算资源给全网作证,重新创建信用体系。区块链就是靠全网分布记账,自由公正,创建了一个共识数据库,这就是未来信用的数据大厦;

一个新的时代,未来的信用、事实的真假是靠全网公正的某个协议(区块链协议),靠全网每台电脑成为记账人来实现的。它解决了什么问题?未来信用由每个消费者自己靠大数据在区块链上产生,就像北京市金融局霍学文书记所说的,“区块链会成为全球金融的基础架构”,这时未来的信用大厦;

区块链创世纪

先驱篇

该小节讲述了比特币的历史,

密码朋客:一群对密码学热衷的极客;

最后的难点就是“双重支付”问题,使用的就是亚当・拜克在 1997 年发明的哈希现金(Hash Cash)算法机制,但是该算法一直没有引起数字货币的重视,直到 2004 年,Hal Finney 将哈希现金算法改进为“可复用的工作量验证(Resusable Proofs of Work - RPOW)”,它是基于拜占庭容错机制之上的;

所有的技术都已经成熟,终于由中本聪于 2008 年完成;它将 RPOW(可复用工作量验证)引入加密货币,于是比特币诞生了;中本聪使用 RPOW 解决了拜占庭的问题,消除了中枢“时间戳”服务器的需求;

中本聪的白皮书,注:白皮书遵从学术习惯采用“我们”作为第一人称,行文也是标准的论文格式。看下下面的经典内容,

“本文提出了一种完全通过点对点技术实现的电子现金系统。它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。”

中本聪选择在 2008 年全球金融危机的时候将比特币公之于世(可见,比特币估计老早就弄好了~~~~ 等待时机;)在介绍他的创新时说到:“传统货币最根本的问题在于信任。中央银行必须让人信任它不会让货币贬值,但历史上这种可信度从来就不存在。银行必须让人信任它能管理好钱财,并让这些财富以电子货币形式流通,但银行却用货币制造信贷泡沫,使私人财富缩水。”

两个月后,也就是 2009 年 1 月 3 号,中本聪发布了开源的第一版比特币客户端,宣告了比特币的诞生;它同时通过“挖矿”得到了 50 枚比特币,产生第一批比特币的区块,叫做“创始区块”(Genesis Block);

中本聪向密码学家哈尔・芬尼转账了一笔比特币。那笔转账在当时还不值一文,却在加密货币篇章里留下浓墨重彩的一笔。这时人类历史上第一次摆脱受信第三方金融机构而完成的点对点交易;

中本聪对 20 世纪 90 年代的失败者记忆犹新,他指出 Beens(虚拟货币)、Flooz、Ecash(电子货币)等数字货币先驱失败的根本原因就在于其中心化的架构;因为一旦为数字货币信用背书的公司倒闭,或中央服务器被黑,该数字货币就会面临信用破产和内部崩溃的风险。

2013 年,一名叫特拉梅尔的安全研究人员公布了他与中本聪的加密邮件的往来,在邮件中,中本聪写道:
“我觉得现在更多的人对 90 年代感兴趣,但是经过数十年,我们已经看到了基于‘信任第三方’系统的失败(例如 Ecash)。…. 我们是在尝试首次创建一个以‘非信任第三方’为基础的系统。”

面临挑战,挖矿是必须的….

白皮书中,“想要在点对点基础上不值一个分布式的‘时间戳’服务器,我们必须使用一种与亚当・拜克的哈希现金相似的工作证明系统。”

很多人都认为,比特币网络需要消耗掉庞大的计算力,这是一场灾难;素数币创始人 Sunny King 写到,“加密货币目前已经分道扬镳为两条路:一种是能源密集型,一种是环保节能型;素数币第一次引入非哈希现金的工作量证明机制,使算力不仅用来制造区块链,还提供额外的潜在科学价值。”

Sunny King 还发明了权益证明 (PoS) 。与要求矿工证明执行一定量的计算工作不同,权益证明要求用户提供证明一定数量加密货币的所有权即可;

还有一些人对比特币处理交易的效率不满意;比特股创始人 Byte Master 在社区发帖:“互联网带宽、CPU、硬盘空间等都是非常宝贵的资源,指望个人使用自己的时间和电脑资源来通过挖矿的方式来获取财富对个人而言是不利的,也是不太现实的;此外,比特币 10 分钟的确认时间对于验证付款而言实在是太长了,他应该像如今刷信用卡那般迅速。”

中本聪是这样解释的,将来用户只需运行轻节点,只交易,不挖矿,处理区块的节点将是矿场部署的大型服务器。备注,这正是现在比特币所演化的方式,基本上挖矿的都是自建机房和集群在弄了…. 所以比特币的成本出奇的高了,难怪现在比特币卖那么贵。

Vitalik 通过分析中本聪的 C++ 源码后指出,中本聪之前在代码中所埋下的三个彩蛋到后来都被印证是正确的,

  1. 比特币使用公钥的哈希作为地址,带来了不必要的复杂度和浪费,但事实上,这时深思熟虑的未雨绸缪,因为可以让比特币完全免受量子计算机的威胁。
  2. 比特币总量 2100 万的限制,或者说是 2 的 50.899 次方,这时一台计算机里面能够以标准证书形式存放的最大整数;
  3. 选择了正确的椭圆曲线,成功绕开了 NSA 居心叵测的陷阱;

Vitalik 认为上述三点都是中本聪所蒙对的,而且并不认为中本聪的代码写得好;于是 2014 年,他发起了以太坊项目,试图以一套图灵完备的脚本语言,解决比特币扩展性能不足的问题,提供不同智能合约,让用户搭建各种应用。

货币篇

  1. 石币之鸟

  2. 法兰西银行的黄金

    货币只是一种记账方式,不仅雅浦岛居民这样认为,美国联邦储备银行也这样认为,比特币等区块链货币也是这样认为;当文克莱奥斯兄弟宣称他们拥有 100000 枚比特币,不是说在某银行的保险箱里,真的有 100000 枚比特币整整齐齐的放在那里,而是说比特币全网节点都承认有一笔这些比特币归属于文克莱奥斯兄弟;

  3. 货币的本质

  4. 邓巴数限制
  5. 中心化的缺陷

    比特币全网的节点每时每刻都在向全网广播交易,每笔交易经 10 ~ 60 秒就能广播至全球所有节点,这些广播出来的交易在经过矿工的验证后,打包到数据块中,串联起来形成环环相扣的区块链,这些交易一经六次确认便几无篡改的可能性;如果要篡改某个区块上的数据,得从这个区块开始重新计算之后的所有区块,考虑到比特币全网 1300 万亿次哈希运算的算力,地球上比特币网络之外已不存在足以逆转比特币交易的计算能力。

信用篇

  • (三)等价交易

    当今电子支付是如此的便捷高效,以至于人们会有这样的疑惑:既然 PayPal,支付宝已经如此方便,我们还需要基于区块链的数字货币支付吗?

    答案是肯定的,在一次支付宝处理的交易中,一个人的之处等于另一个人的收入,这是等价交易。问题在于,如果支出与收入是同一个人的两个账户,会发生什么?由于对支付宝而言,每一笔交易的边际成本都近乎于零,所以,如果一个人同时拥有两个账户,他在两个账户里反复进行转账交易,就会以非常低的成本制造出无数被支付宝视做洪水猛兽的刷信用行为。

    笔者备注,是的,区块链的确可以杜绝一个人的两个账户或者多个账户之间刷信用的行为,但是如何杜绝一家人多个不同账户之间互刷信用的行为呢?

    库拉圈带给我们的启示是:如果规定交易的方向,就可以避免刷信用的行为;

    看得非常的不明白…. 如果一个用户 A 或者说一个水军群体 AA,不断的单向的购入某个商家近百件商品,但是都是虚假交易,这个能避免刷信用?

  • (四)将币天销毁引入信用评价

    币天(CoinDays)销毁是区块链的一个非常重要的概念,它的定义是,币天销毁等于每笔交易的金额(币)乘以这笔交易的币在账上留存的时间(天),比如你花了一笔 100 天以前收到的 10 比特币,这笔交易的币天销毁就是 1000 币天。

    少数人群会注意这个指标,因为币天销毁比较直观的反应了市场的流动性,走向;在市场处于下跌信道时,币天销毁的峰值意味着市场中的强手,因为代表着大币可能要抛币。当市场处于上涨信道时,币天销毁的峰值意味着市场中的强手,表明市场可能会走强。

    本质上都是利用币天销毁在交易过程中不可逆的特性,使得用户不能在两个账户间反复利用同一笔钱获得某种回报。

    下面看一下作者是如何解释使用币天销毁来防止刷信用的行为的?注意,下面的这个用例防止的是用户利用同一笔钱反复给自己刷好评的?

    如果规定币天销毁作为信用评价因子,在一次交易中,销毁的币天越多,则信用评价的权重越高。当某一个刷客试图给自己的两个不同账户反复交易刷好评时,第一次交易的评价是有效的,但历史上累积的币天在交易完成之时便已销毁,当进行第二笔交易时,由于发生在第一次交易后不久,币天累积非常小,相应的能够贡献的信用也微乎其微…

    怎么来理解这里作者的阐述?

    如果某个人有无穷无尽的比特币,那么每个比特币都有自己的币天值,那么这个人就可以无限的使用自己的新的比特币为自己进行刷单;但是,这种情况是不存在的,因为这个人的比特币是有限的,所以币天对他而言是有限的资源,所以,他在刷信用的时候会非常的小心;但是留下了一个问题,如果每次交易结束,交易描述为 A -> B,既是 A 买了 B 的东西并把比特币支付给 B(注意,A、B 不是同一个人),那么 B 得到的是新比特币,那么币天值会非常的低,如果立刻 B -> C 既是 B 立刻与 C 发生交易,如果 B 使用的是 A 支付给 B 的新比特币,该比特币的币天销毁值非常的低,那么就会导致 C 所收到的信用非常的少,如果 C 又立即发生 C -> D,D 立即发生 D -> E,并且使用的都是相同的比特币,这样就会同时也导致 D 和 E 的信用累积非常的少;笔者将这个问题描述为币天销毁信用的初始累积问题

    笔者能够想到的解决方案就是,如果比特别是在不同人之间进行第一次流转,给对方做评价的时候,需要额外设置一个权重值,两个不同人之间或者同一个人之间第一次使用一组新的比特币进行流转的时候,给一个非常高的权重值,这样就可以避免笔者上述所描述的这种情况;但是,这样做的前提就是每个比特币必须有有效的身份识别,既是这个身份识别能够明确无误的指明是这个人,这个人的身份不能在比特币的归属上造假;当然,如果同一组比特币在多个人之间相互流转,如果流转的次数过于频繁,那么币天销毁值就会非常的低,而且因为身份识别的干预,所以每次交易之间不会有任何的权重,这时,相互刷信用所得的信用累积就会非常非常的少;

    Ok,经过笔者自己上述的深入分析,认为币天销毁是可以圆满的解决刷信用的问题,注意,不仅是同一个人刷信用的问题,同时也可以杜绝多个人之间刷信用的问题;之所以它能够解决这样棘手的问题,是在于,这种解决方式是在交易最本质的东西上,既是货币上去解决,也就是从根源上去解决这类的问题,因此能够找到圆满的解决方式;

    下面来看看作者是如何阐述目前淘宝应对刷信用的代价有多么的高昂?

    淘宝构建了其及其复杂的信用体系试图区分真实的交易行为和作弊交易行为,并通过大数据分析,结合用户的社会关系、职业、收入甚至公共事业缴费单,评价一个人的信用高低;也就是说,这个问题在淘宝看来是个社会道德问题;

    然而在区块链的信用评价中,信用其实是一个数学问题。在刚才的例子中我们可以看到,用户的交易行为不再被区分为作弊交易与真实交易,而对所有的交易都一视同仁,… 作弊是允许的,不存在一个中心化权威可以跳出来宣布冻结你的账户,但即使你作弊,也不会对任何人的信用产生影响。

    笔者感悟,也就是说,通过区块链的方式,可以有效的甄别出这是一起作弊行为,那既然是一起作弊行为,没关系,不产生效用就可以了,这样,当人们意识到作弊是完全没用的时候,自然也就么有了作弊的冲动了,也就自律了。

  • (五)热力学第二定律
    本小节描述了,除了等价交易以外,需要引入时间这个维度,其实就是币天值,由此勾勒了依靠币天销毁而创造的信用社会;最后的问题是,币天这个东西是什么时候加入比特币的?答案是一开始就有了,可能是个巧合。

区块链篇

本章节着重描述比特币的底层技术,既是区块链技术,

  • (一)第五次计算范式创新

    它以以下的四个特征,可能会给政府与金融服务带来跨越性创新

    1. 通过加密技术对账
      目前政府和商业机构会把交易的详细信息发送给对方,一旦收到信息,每个机构都会在自己的账本上更新信息。但现在还没有一种方法可以保证这些信息的准确性。区块链天然的通过其分布式共识来解决这个问题。
    2. 数据复制
      区块链提出了分布式的数据复制的标准;
    3. 访问控制
      分布式账本使用私钥和签名管理访问账本的权限,
    4. 透明性和私密性
      账本是公开的,但是又是私密的。
  • (二)无银行组织的跨行结算

    在没有银行间清算组织以前,两家银行要跨行结算是非常麻烦的。

  • (三)中心化的共享总账
    通过区块链,每个银行可以根据标识从区块链的数据中中找到属于自己的部分;

区块链基础

一、区块链的基本概念

中本聪的论文《比特币:一种点对点的电子现金系统》

中本聪使用区块链技术将比特币打造成为了一种数字货币和在线支付系统;比特币使用公钥地址发送和接收比特币,并进行交易记录,从而实现个人身份信息的匿名。交易确认的过程则需要用户贡献算力,共同对交易进行共识确认,从而将交易记录到全网公开账本中。

比特币的区块链技术是为比特币量身定制的,所以,比特币的所使用的区块链技术只是区块链的一部分,并不能形成统一的标准;

区块链中包含数据记录、当前区块根哈希、前一区块根哈希、时间戳以及其它信息;如下图所示,
block-chain-data-structure.png

  • 数据记录的类型
    数据记录的类型可以根据场景决定,比如资产交易记录、资产发行记录、清算记录、智能合约记录设置物联网数据记录等等;从作者的观点出发,这里应当是可以存储任何你想要存储的信息;
  • 数据记录的结构
    通常是以树状结构存储,比如默克尔树,而区块根哈希实际就是数据记录树的根节点哈希,
  • 时间戳
    区块的生成时间

今年来,包括高盛、摩根大通和纳斯达克金融机构开始展开对区块链技术的重点研究。

区块链技术的安全性、不可逆、不可篡改性和透明性都已经得到了证明,如果能够把供应链金融业务直接简历在这样的具有可靠性的区块链上,将极大降低安全和信息的成本,如果能够构建一个具有公信力的类似区块链公共信息系统,那么成本将会进一步降低;从政府层面来说,这一点非常的重要,因为提供值得大众信任的系统本身就是政府职能的一部分。中国的资本运作效率远低于美国的一个非常重要的原因就是社会的信用体系不健全、信息不透明、部门协调成本高,且利益保护现象严重;所以,可以通过区块链技术打破这个僵局,

  • (一)区块链的分类

    1. 公共区块链
      公共区块链是完全分布式的区块链,区块链数据公开,用户参与程度高,同时易于产生网络效应,便于应用推广。
    2. 共同体区块链
      又称作联盟链,是指参与区块链的节点是实现选择好的,节点间通常有良好的网络连接等合作关系,区块链上的数据可以是公开的也可以是内部的,为部分意义上的分布式,可视为“部分去中心化”;
      共同体区块链的参与节点间的连接状态较好,验证效率较高,只需较低的成本即可维持运行,提供高速交易处理的同时降低交易费用,有很好的扩展性,数据可以保持一定的隐私性。但是,这也意味着在共识达成的前提下,参与节点可以一起篡改数据。
    3. 私有区块链
      完全私有的区块链中写入权限仅在参与者手里,读取权限可以对外开放;由于私有用户说了算,里面的数据没有无法篡改的特性,对于第三方的保障力度大大降低。

二、区块链的工作原理

  1. 拜占庭将军问题
    拜占庭如此的强大,致使至少十个邻邦中的一半同时进攻,才能攻破;且这些邻邦有个特性就是,各怀鬼胎,“互不信任”,所以,各个邻邦需要可靠的信使来互相传递信息,来共同协商进攻目标和进攻时间;因此这些邻邦的将军想要攻占拜占庭,都面临这一个困扰,也就是著名的“拜占庭将军问题”;

    邻邦将军不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,将军们能否找到一种分布式协议进行远程协商,进而赢取拜占庭城堡战役的胜利呢?这就是拜占庭将军问题。

    解决拜占庭将军问题有如下几种方式

    1. 口头协议算法
      要求每个消息都能正确的传递到对方,信息接受者知道当前消息发送者的身份;采用该协议,口口相传;但是问题是,消息不能追根索源,下面是笔者的理解,比如将军 A 通过 B 再通过 D 最后传递到将军 F 上,那么他的消息已经经过层层传递了,那么试问通过 D 将 A 的消息传递给 F 的消息可靠不呢?中间有没有被谁篡改过呢?又因为 F 知道,将军中有间谍,所以这个消息是不可信的;
    2. 书面协议算法
      使用签名的方式保证信息的确是由 A 原始发送的;但是,签名本身可能有问题,因为如果 A 使用的签名证书既公钥被盗,那么 A 的消息同样可以在过程中被篡改,那么签名就失去意义了;归根结的,这样的问题还是在于,证书的有效性,如果证书是中心化存储的,那么就有可能被篡改,所以,用于签名的证书也需要分布式存储;
    3. 区块链技术
      将入一个成本,既是”工作量“,区块链必须完成一个随机哈希算法的计算工作量才能够向各个城邦发送消息;当将军 A 发送消息的时候,会使用比特币客户端的标准公钥为这笔交易进行签名… 笔者认为,这个专属于 A 的公钥必须得到区块链的公认,也就是分布式存储和验证的前提下,那么可以保证它是可信的;于是通过区块链的签名技术,能够解决拜占庭将军中间谍的问题,既是保证,将军 A 的这个消息既是经过其它将军转发后,同样可以确信无疑该信息就是由 A 所发送的;

    笔者读完作者有关此部分的描述,感觉描述的不是特别的详细,不过区块链的确可以有效的识别某个将军的身份问题;感觉比较清晰的部分是 https://www.zhihu.com/question/23167269 其实真正的故事是 11 个拜占庭将军出去打仗,但是处在不同的据点,他们通过“广播”的方式发送自己的决定,也就是说最终每个将军最后都会有一份这样的共识,但是 11 个将军中有间谍,间谍的信息不可靠…. 这里不再深入研究,打算后续有时间专门立文分析;

  2. 区块链的工作流程
    block-chain-working-process.png

    1. 发送节点将新的数据记录向全网广播;
      笔者补充,注意,它并不需要向所有的节点转播,典型的做法通过 Gossip 协议,只需要向少数的几个节点进行广播就好,Gossip 协议会保证该消息会发送到全网;
    2. 接收节点对收到的数据记录信息进行检查,比如记录信息是否合法,通过检查后,数据记录将会被纳入一个区块中。
    3. 全网所有接收节点对区块执行共识算法(工作量证明、权益证明等)。
    4. 区块通过共识算法过程后被正式纳入区块链中存储,全网节点均表示接受并存储该区块,新区块的制造将以该区块链为基础进行延长;

    如何避免区块链分叉的问题?

    节点始终都将最长的区块链视为正确的链,并持续一次为基础验证和延长它;笔者补充,但是我们知道广播是有延迟的,在一个频繁的交易系统中,其中某一个节点是很难保存最新的节点的,那么就会存在一个问题,如果它本地保存的不是最新的链条假设该链条为 _B_,但此时又有区块必须要保存,那么必然,它将会把数据保存到链条 _B_,假设现在最新的链条是 _A_,那么必然发生 _A_ 与 _B_ 之间的状态不同步的问题,也就产生了两条不同的链条;笔者猜想,区块链必须有相应的机制来确保不会存在两个状态不相同的链条同时存在,要么采用 merge 算法,要么就是当某个节点要保存区块数据段的时候,必须将本地的区块链既 _B_ 先同步更新为 _A_ 以后再保存,但是这是一个去中心化的架构设计,要同步最新状态的 _A_ 谈何容易,所以我在猜想,区块链一定有极强的容错机制,允许你的链条的状态不是最新的,并且可以接受最新的区块数据,然后根据某种 merge 算法可以保证虽然各个节点存在不同状态的区块链,但是通过该算法,在形式上的状态都是一致的;这里就得益于区块的时间戳了;想想,的确是可行的;但是不知道区块链自身是怎么设计的,这只是笔者认为唯一的一种可行的方式;

  3. 区块链的共识机制

    共识机制是区块链节点就区块信息达成“全网一致”的共识机制,可以保证最新区块被准确添加至区块链、节点存储的区块链信息一致不分叉甚至可以抵御恶意攻击;当前主流的共识工作机制包括:工作量证明(PoS)、权益证明(PoW)、工作量证明与权益证明、股份授权证明、瑞波共识协议等。

    1. 工作量证明 (Proof Of Work)

      先看一下与 POW 相关的工作流程

      • 节点监听全网数据记录,当节点接收到新的数据并通过合法性验证以后,将该数据进行缓存。
      • 节点消耗算力尝试不同的随机数,进行制定哈希计算,并不断重复该过程知道找到合理的随机数;
      • 找到合理的随机数以后,生成区块信息,首先输入区块头信息,然后是记录数据信息;
      • 接单对外部广播出新产生的区块,其它节点验证通过以后,连接至区块中,主链高度加一;

      上面应当讲述的是某个新的交易产生以后,怎么样通过 POW 机制将该数据存储到区块中的过程;POW 直接真正的体现是在上述的第 2 点中,归根结底,就是某个节点约到后面越要花费大量的资源和时间(主要是 CPU 的资源和时间)来寻找并验证一个可行的随机数,寻找该随机数的过程就称作“挖矿”,消耗了资源得到有效的随机数以后自然就会得到相应的奖励,该奖励就是“比特币

      但是这样做带来如下的明显的弊端,

      • 区块链的本质工作应当是用来存储区块数据的,结果却耗费了大量的资源和时间来寻找随机数,也就是挖矿;
      • 而且越到后面越来寻找到合适的随机数,导致必须算力集中,需要超级计算机或者超级联盟,所以,实际上到最后,“挖矿”成了专业户要做的事情了,广大老百姓反而参与不到其中了;最著名的挖矿机池是 Ghash 矿池,它数次达到了总共算力的 50%,引发大家的担忧;
    2. 权益证明(PoS) + 工作量证明
    3. 权益证明
      PoS 是一个根据持有货币的量和时间,进行利息发放和区块产生的机制。在权益证明 PoS 模式下,有一个名词叫做币天,当某人持有新币 100 枚,并且持有了 30 天,那么这 100 枚币的币天 = $30\times 100 = 3000$;PoS 的典型应用是未来币,
    4. 股份授权证明
      PoS 机制使用一个确定性算法以随机选择一个股东来产生下一个区块,该算法中,账户的余额决定了节点被选中的可能性;然而,该系统并未使区块链越来越安全且不可逆,因为最终区块链的区块产生权掌握在账户余额最多的少数节点手中。
    5. 瑞波共识协议 (Ripple Consensus Protocol, RCP)
      使一组节点能够基于特殊节点列表达成共识,初始特殊节点列表就像一个俱乐部,要接纳一个新的成员,必须由该俱乐部内部的会员进行投票通过以后才能纳入;
  4. 区块链所面临的问题

    1. 区块链体积过大的问题
      节点所存储的区块链数据体积会越来越大,存储和计算的负担越来越重;以比特币区块链为例,其完整的大小当前已经达到了 63.61 GB,
    2. 区块链数据确认时间的问题
      尤其是金融区块链系统中,存在数据确认时间较长的问题;以比特币区块链为例,当前比特币交易的一次确认时间大约需要 10 分钟;
    3. 处理交易频率的问题
      区块链面临交易频率过低的问题;以比特币区块链为例,
    4. 区块链的发行受到现行制度的制约,
      因为区块链的区中心、自治化淡化了国家的概念,对现行的体质带来了冲击;

区块链进阶

简单支付验证 (SPV)

SPV 是一种无须维护完整的区块链信息,只需要保证所有的区块头部信息即可进行支付验证的技术。该技术大大节省了区块链支付验证用户的存储空间,减轻用户存储的负担;以比特币系统为例,节点只需保存所有区块头信息,即可进行交易支付验证。

  1. SPV 与轻钱包之间的区别,
    轻钱包指的是节点本地只保存于其自身相关的交易数据,但并不保存与自身相关的交易数据。SPV 的目标是验证某个支付是否真实存在,并得到多少个确认。SPV 节点不需要下载新区块的全部数据,只需要保存区块头部信息即可。
  2. 区块链支付验证与区块链交易验证的区别
    SPV 指的是区块链支付验证,而不是区块链交易验证。区块链交易验证的过程比较的复杂,包括账户余额验证、双重支付判断等,通常由保存区块链完整信息节点来进行验证;而支付验证过程则比较简单,只是判断该笔交易是否已经得到区块链共识验证,并得到多少的确认数即可。

SPV 的技术原理

先来看一下区块链的头部信息,

block-chain-head-data-structure.png

SPV 既是利用区块链的所有完整的头部信息对交易进行验证的,过程中会使用到布鲁姆过滤器来保证接收到的比特币是此次交易的目标比特币,然后通过默克尔树哈希认证路径保证此次交易是完整的;

SPV 的扩展功能

SPV 虽然可以高效的进行支付验证,但是对于节点当前状态(账户余额、账户信息设置合约状态等)均无法给出证明;因此“以太坊”对 SPV 进行了扩展:每一个区块头,并非只包含一棵默克尔树,而是包含了三棵默克尔树,分别对应了三种对象:默克尔交易树,默克尔收据树和默克尔状态树;其中默克尔收据树和默克尔状态树是比特币系统中没有的;

  • 默克尔交易树
    保存交易信息,用于验证交易是否真实包含于区块链中;
  • 默克尔收据树
    保存某个地址的历史事件实例,比如一个交易是否执行成功、一个众筹合约是否完成了目标等;
  • 默克尔状态树
    保存了账户名称、账户余额等;

基于上述的三棵树,以太坊不仅可以实现 SPV 的支付验证,而且可以快速验证账户是否存在、了解账户余额甚至快速判断交易是否执行成功等信息,实现了良好的 SPV 扩展;

SPV 面临的问题

交易可锻性攻击;

侧链

侧链起源

侧链协议是指可以让比特币安全的从比特币主链转移到其它区块链,又可以从其它区块链安全的返回比特币主链的一种协议。因此,只需符合侧链协议,所有现存区块链,比如以太坊、莱特币、暗网币等竞争区块链都可以成为侧链。

侧链的意义重大,意味着比特币不仅可以在比特币区块链上流通,还可以在其它区块链上流通;BlockStream 出于商业化的考虑,提出了侧链协议

侧链协议

侧链协议的目的是实现双向锚定(Two-way Peg),使比特币可以再主链和侧链中互转;
side chain and block chain relationship.png

元素链

元素链是 BlockStream 实现的一个参考侧链,元素链 Alpha 是比特币测试链的一个侧链。

闪电网络

闪电网络(The Lightning Network)是一个去中心化的系统。闪电网络的卓越之处在于,无须信任对方以及第三方即可实现实时的、海量的交易;

闪电网络的起源

根源还是在单个区块体积的最大限制为 1 M,不能满足日益增长的需求,因此扩容问题显得日益严重;扩容的方案分为两派,长期规划派和短期搁置派。自 2015 年 6 月至今,经过大半年来大范围的反复讨论,目前长期规划派基本上完败;

扩容问题

比特币网络有两个划分:清算系统和现金系统;

  1. 清算系统
    当区块链越长,对区块链的容量和效率越来越有限制,因此区块链的交易必须保证高价值的交易进块,那么比如 1 分钱的交易就属于低价值的交易,不允许进块了。
  2. 现金系统
    意味着所有的交易都应该进块;
  3. 扩容大小的选择

微支付通道

微支付通道概念于 2012 年首次被提出,是解决小额度,高频次支付场景的方案,目的在于缩减支付的交易数量,使高频、小额支付成为可能;举个例子 Alice 在 Bob 的电影网站上看电影,每次需要支付 0.1 BTC,分别看了 10 场电影那么就需要支付 10 次 0.1 BTC,而采用微支付通道就会将交易缩减为 2 笔交易;也就是说,微支付通道主要的目的是解决交易合并的问题;

闪电网络交易合约

微支付通道解决了合并交易的问题,但是没有解决撤销上个交易的问题;利用“理性经纪人”和单向流动达到撤销上个交易的目的,交易并不是真正被撤销,若真正可撤销,则币就变成了可以双向流动的了;

闪电网络是基于微支付通道演进而来,创造性的设计出了两种类型的交易合约

  • 序列到期可撤销合约 RSMC
  • 哈希事件锁定合约 HTLC

闪电网络面临的问题

智能合约

智能合约的起源

尼克・萨博告诉我们的是,智能合约本质上的抽象概念是在个人、机构和财产之间形成关系的一种公认的工具,是一套形成关系和达成共识的协定。智能合约的条款(如抵押品、产权划分等)可以嵌入到处理硬件和软件中,以这样的方式使违约成本非常昂贵(甚至令人望而却步)。

智能合约技术现在正建立在区块链基础之上,因为区块链本身就是一个计算机程序,智能合约与它进行交互,就像它能够与其它程序进行交互一样。

智能合约的起源

智能合约是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,有计算机系统自动执行。以一个销售合约为例:卖家承诺发送货物,买家承诺支付合约的货款,只要参与者达成协定,智能合约建立的权利和义务,就由一台计算机网络执行。我的疑问是,如果卖家假发货,而在系统中加入真发货怎么搞?

智能合约与传统合约的区别

intelligent contract vs normal contract.png

智能合约与区块链

智能合约与区块链的关系

尼克・萨博关于智能合约的工作理论迟迟没有实现,一个重要的原因就是因为缺乏能够支持可编程合约的数字系统和技术。区块链的曲线正好解决了该问题;如果说区块链 1.0 是以比特币为代表,解决了货币和支付手段的去中心化问题,那么区块链 2.0 就是更宏观的对整个市场去中心化,利用区块链技术转换许多不同的数字资产而不仅仅是比特币,

智能合约的工作原理

基于区块链的智能合约包括事务处理和保存机制,以及一个完备的状态机,用于接受和处理各种智能合约,而且事务的保存和状态处理都在区块链上完成。

智能合约的应用案例

  1. 房屋租赁
    注意,Bob 所提供的房门的门锁是自动连上会联网的;
  2. 差价合约
    金融衍生品相关
  3. 代币系统
    其中关键点是所有的货币或者代币系统,从根本上来说是一个带有如下操作的数据库:从 A 中减去 X 单位数据并把它加到 B 上;
  4. 储蓄钱包

智能合约面临的问题

区块链怎么玩

数字货币

总量恒定型:比特币

比特币的最高上限为 2100 万个。2009 年初,第一个比特币的区块产生,区块 0 的信息如下,
bitcoin-zero.png

锚定型:比特股

政府发型型:央行数字货币

2016 年 1 月 20 日,来自中国人民银行的一则新闻,

在我国当前经济新常态下,探索央行发型数字货币具有积极的现实意义和深远的历史意义。

周小川行长说:

数字货币的技术路线可以分为基于账户(account-based)和基于钱包(wallet-based)两种,也可以分层并存;提到了区块链是其中一项可选的技术,其特点是分布式薄记、不基于账户、而且无法篡改;如果数字货币重点强调保护个人隐私,可选用区块链技术。人民银行部署了重要的人力资源探索区块链技术….

支付汇兑

登记结算

Reference

《区块链:从数字货币到信用社会》