区块链技术指南笔记(一):区块链基本概念

比特币

比特币(BitCoin)的概念最初由中本聪在2009年提出,根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着它是一个去中心化的支付系统

与大多数货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有极强的稀缺性。该货币系统曾在4年内只有不超过1050万个,之后的总数量将被永久限制在2100万个。

从比特币的本质说起,比特币的本质其实就是一堆复杂算法所生成的特解。特解是指方程组所能得到无限个(其实比特币是有限个)解中的一组。而每一个特解都能解开方程并且是唯一的。而挖矿的过程就是通过庞大的计算量不断的去寻求这个方程组的特解,这个方程组被设计成了只有 2100 万个特解,所以比特币的上限就是 2100 万。

挖矿就是在争取记账权,对一段时间内比特币网络中的交易进行确认,并记录在区块链上的过程。这一过程要重复计算区块头的hash,不断修改随机数nonce,直到与难度目标值匹配。矿工在生成新的区块时需要根据前一个区块的hash、交易信息、随机数等来计算新的hash值,也就是说每一个区块都是在前一个区块数据基础上生成的,该机制保证了区块链数据的唯一性。挖矿成功,比特币系统会产生一笔比特币奖励给成功挖矿的矿工。其他节点会对挖到的矿的数据进行验证,如果验证不合格,说明这次挖矿不成功,其他矿工仍然有机会竞争记账权,如若成功了,其他节点会将区块信息保留下来(因为挖矿要用到前一个区块的信息)。挖矿过程就是争取记账的过程,矿工是记账员,区块链是账本,每个区块就是整个账本中的每一个账页。

 

去中心化

中心化和去中心化就是集权与分权。中心化,是中心决定节点,节点必须依赖中心,节点离开了中心就无法生存;去中心化系统中,任何人都是一个节点,任何人也都可以成为一个中心。任何中心都不是永久的,而是阶段性的,任何中心对节点都不具有强制性。去中心化,并非不要中心,准确的说,它的意思是”弱中心化”。

区块链技术指南笔记(一):区块链基本概念

那么去中心化的思想能给我们带来什么?不知道有多少人看过会计挪用公款打赏主播的新闻。这个会计就像古代的账房先生一样,账本正确与否取决于记账人。因为记账权掌握在少数人手上,所以一般出现了挪用公款的事发生,公司无法第一时间发现。

现在以去中心化思想这样解决类似的问题。假如公司拨款买东西,此时小明拿着钱去采购,并且和出售者一同将这个消息告诉了全市的人。那么就相当于全市人民都参与了这次采购(由于信息是公开的,所以商品的售价,资金的流向都是公开透明的,一旦交易存在问题,即全民验证没通过,公司可以第一时间发现问题)。

想想我们每天用手机支付,账户里的余额虽然是数字,但是那代表的是我们真正财富,因为我们知道有一个非常值得信赖的第三方在处理我们的账本。这就说明了在一个交易系统中,只要有一个可靠的记账机构(能把帐算明白),哪怕我们使用的是没有实体的数字钞票,整个交易系统也不会乱套。而区块链就是一种不同于传统记账的记账方式。传统的线上支付,表面上是人与人的直接交易。但实际上,背后都有一个第三方交易中介(往往是值得信赖的机构或公司)。而这个中介就是一个交易中心,它负责记录系统中的每一次交易信息,并且把这些信息整理并存储起来(我们可以把它看成一个大账本)。但这个账本要是被黑客攻击并恶意篡改,那么整个系统就会因此陷入危机。

区块链技术指南笔记(一):区块链基本概念

在区块链记账的交易系统中,并不存在这样的交易中心,所以整个系统没有从中心崩溃的风险。在区块链系统里面,每一次交易都直接发生在交易双方之间。交易双方会把交易信息广播到整个交易系统里,此时,会有很多志愿者把交易信息记录下来并整理成一个账本。再把这个账本广播回系统(参与记账的人也存在相互监督的过程,只有系统内大多数人相同的账本,才是正确的账本),结果是区块链系统的账本,并不是由一个单一的交易中心掌握的,而是由系统中的每一个参与者共同掌管的。除非黑客可以同时攻击整个系统中算力的50%以上的参与者,否则这个账本就不会被恶意更改。

 

问题:在很多参与者同时记账的系统中,怎么保证系统当中不会出现乱七八糟的账本?

这要靠区块链基于密码学的设计。在区块链系统中,每过一段时间,就会产生一个新的区块,用来存储刚刚产生的交易信息。系统中的参与者必须要解决一个密码学难题,才能让这个区块完整有效。如果有人解决了这个难题(挖矿成功),会把这个答案记录在区块的末尾,并且向全系统广播这个完整的区块,其他参与者收到消息会对这个信息进行验证,若成功,则可以解决下一个区块的问题。每一个区块的开头是前一个区块的hash值。这种形式把区块穿成了一个链条,它就是区块链。如果有人想要篡改某一区块内容,他就要重新**这个区块的难题,而且还要把之后链上的难题也要**。这就像以一人之力去抵挡千军万马,只存在理论上的可能性。这就形成了在没有强大中介参与的情况下,仍然安全可靠的数据管理系统

 

区块链

区块链是比特币的底层技术(比特币是区块链的第一个应用),也是目前最具革命性的新兴技术之一。其以去中心化方式建立信任等突出特点,对金融等诸多行业来说极具颠覆性,具有非常广阔的应用前景。区块链不是一项新技术,而是一个新的技术组合。简单的用一句话解释这个概念——区块链就是技术组合形成的公共数据库(或称公共账本)。其中区块链技术是指多个参与方之间基于现代密码学分布式一致性协议点对点网络通信技术智能合约编程语言等形成的数据交换处理和存储的技术组合。同时,区块链技术本身仍在发展和演化中。

 

以参与方分类,区块链可以分为:公有链(Public Blockchain)、联盟链(Consoritum Blockchain)和私有链(Private Blockchain)。从链与链的关系来分,可以分为主链和侧链。不同区块链还可以形成网络,网络中链与链的互联互通,产生互联链的概念。

公有链:公有链是对外开放的,用户不用注册就能匿名参与,无需授权即可访问网络和区块链。节点可选择*出入网络。公共链上的区块可以被任何人查看,任何人也可以在公共链上发送交易,还可以随时参与网络上形成共识的过程,即决定哪个区块可以加入区块链并记录当前的网络状态。公共链是真正意义上的完全去中心化的区块链,它通过密码学保证交易不可篡改,同时也利用密码学验证以及经济上的激励,在互为陌生的网络环境中建立共识,从而形成去中心化的信用机制。在公共链中的共识机制一般是工作量证明权益证明,用户对共识形成的影响力直接取决于他们在网络中拥有的资源的占比。公共链通常也称为非许可链。如比特币和以太坊等都是公共链。公共链一般适用于虚拟货币、面向大众的电子商务、互联网金融等B2C、C2C或C2B等应用场景。

 

联盟链:联盟链仅限于联盟成员参与,区块链上的读写权限、参与记账权限按联盟规则来规定。有40多家银行参与的区块链联盟R3和Linux基金会支持的超级账本项目属于联盟链架构。联盟链是一种需要注册许可的区块链,这种区块链也称为许可链(Permissioned Blockchain)。

联盟链的共识过程由预先选好的节点控制。一般来说,它适合于机构间的交易、结算或清算等B2B场景。例如在银行间进行支付、结算、清算的系统就可以采用联盟链的形式,将各家银行的网关节点作为记账节点,当网络上有超过2/3的节点确认一个区块,该区块记录的交易将得到全网确认。联盟链可以根据应用场景来决定对公众的开放程度。由于参与共识的节点比较少,联盟链一般不采用工作量证明的挖矿机制,而是多采用权益证明或PBFT(Practical Byzantine Fault Tolerant)、RAFT等共识算法。联盟链对交易的确认时间、每秒交易数据都与公共链有较大的区别,对安全和性能的要求也公共链高。

联盟链网络由成员机构共同维护,网络接入一般通过成员机构的网关节点接入。联盟链平台应提供成员管理、认证、授权、监控、审计等安全管理功能。2015年成立的R3联盟,旨在建立银行同业的一个联盟链,目前已经吸引了许多成员,包括世界著名的银行,IT巨头(IBM,微软)。

银行间结算时非常碎片化的流程,每个银行各自有一套账本,对账困难,有些交易有时要花几天才能校验和确认。同时,其流动性风险很高,在监管报送方面非常繁琐,也容易出现人为错误,结算成本很高。针对这种情况,R3联盟构建了一个银行同业的联盟链已解决这些问题。利用区块链技术,银行同业间可以共享一个统一的账本,省掉对账的繁琐工作,交易可以做到接近实时的校验和确认、自动结算,同时监管者可以利用密码学的安全保证来审计不可篡改的日志记录。

R3联盟将开发Corda分布式账本来实现未来愿景。从公开的资料来看,Corda具有以下特点:

(1)数据不一定要全局共享,只有满足合法需求的一方才能在一个协议里访问数据;

(2)Corda不用一个中心化的控制就可以编排联盟成员的工作流;

(3)Corda对联盟成员之间的每笔交易形成共识,而不是在联盟机构的系统层面形成共识;

(4)Corda的设计直接支持监管者监督和合规性监控;

(5)交易有参与交易的机构进行验证,而不是报告与交易无关的机构;

(6)支持不同的共识机制;

(7)明确基类智能合约与用书面语言撰写的法律文件之间的关联;

(8)采用工业标准的工具来构建Corda平台;

(9)不设虚拟货币。

Corda平台注重互操作性和渐进部署,不会将保密信息发布给第三方。一个机构可以和对手机构看到一组协议,并可以保证对手机构看到的是同样内容,同时报送给监管机构。Corda包括共识、校验、独一性、永恒性和认证等功能。

 

私有链:私有链仅在私有组织使用,区块链上的读写权限、参与记账权限按私有组织规则来制定。私有链的应用场景一般是企业内部的应用,如数据库管理、审计等。也有一些比较特殊的组织情况,比如在*行业的一些应用:*的预算和执行,或者*的行业统计数据,这个一般来说有*登记,但公众有权力监督。私有链的价值主要是提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部对数据的安全攻击,这个在传统的系统中很难做到。央行发行数字货币可能就是一种私有链。和联盟链类似,私有链也是一种许可链。

币科学公司推出供企业建立私链的多链平台。它提供保护隐私和权限控制的区块链平台,来克服在金融行业里碰到的推广区块链技术的障碍。多链的目标有以下3个:

(1)保证区块链上的活动只能由选择的参与者看到;

(2)引入机制来控制哪些交易是被允许的交易;

(3)提供安全的挖矿机制,同时不需要工作量证明以及与其相关的成本。

 

多链把挖矿权限制在一组实名的矿工范围,解决了一直困扰私有链解决方案中的一方垄断挖矿过程的问题。它的解决办法是限制在同一个时间窗口同一矿工能产生的区块链数。不像比特币那样只支持一条区块链,多链可以方便地配置多条区块链,并让用户同时用多链。这样的话,机构用户可以让管理员配置区块链而不需要由区块链专业开发者来做。

多链让用户在一个配置文件中配置区块链的所有参数,这些参数包括:

(1)区块链的协议,例如是私有链还是像比特币那样的公共链;

(2)目标区块产生的时间,例如一分钟;

(3)权限,例如所有人能连接,只有一些人能发送或接收交易;

(4)挖矿的不同形式(只适合于私有链);

(5)建立、移除管理员和矿工所需要的共识程度,以及在建立期不需要强制执行的期限(只适合于私有链);

(6)矿工的报酬,例如每区块50个币,然后每210000个区块减半付酬;

(7)邻节点连接和JSON RPC API的IP端口,例如8571、8570;

(8)允许的交易类型,例如paytoaddress、paytomultisig、paytoscripthash等;

(9)最大的区块大小,例如1MB;

(10)每个交易的最大元数据(OP_RETURN),例如4KB。

多链在节点的”握手”连接过程如下:

①每个节点提供它的公共地址,使其他节点能将它的地址包括在允许连接的清单中;

②每个节点验证邻节点的地址是在它的授权连接的节点清单里;

③每个节点发一个盘问消息给其他节点;

④每个节点发回一个回复盘问信息的签名,证明拥有他们的对应公共地址的私钥;

⑤如果双方对对方回复不满意,可随时中断连接。

在多链里,所有的权限的授予和回收都是通过包含特殊元数据的网络交易来实现的。找到创世区块的矿工被自动授予所有的权限,包括管理其他用户的管理员权限。管理员通过发交易给其他用户,并在交易的输出中包含授权用户的地址以及授权信息的元数据来给其他用户授予相应的权限。当要改变其他用户的管理和挖矿权限的时候,一个额外的限制条件是要由现有的管理员投票来决定。这些管理员的投票需要登记在不同的交易中,只有当足够的共识形成之后才能通过改变。

多链在很多方面的设计是为了使得用户在私链和比特币区块链能够进行双向迁移。多链是基于比特币核心的一个分叉。所有的对比特币的代码改变都是本地化的改变。未来比特币的升级功能可能可以并入多链的本地代码。它基于比特币的协议、交易和区块链架构,只是在握手协议上有所改变。其他的功能是通过元数据,同时改变交易和区块的验证规则来实现的。在接口方面与比特币完全兼容,所有的新功能通过新的命令来提供。它可以做成普通比特币网络的一个节点。多链提供一个在企业内快速部署私链的解决方案。可以用于去中心化交易所、数据库同步、货币结算、债券发行和P2P交易、消费行业积分奖励机制等场景。

 

具体来看,区块链的颠覆性价值至少包括以下方面:

(1)简化流程,提升效率。由于区块链技术是参与方之间通过共享共识的方式建立的公共账本,形成对网络状态的共识,因此区块链中的信息天然就是参与方认可的、唯一的、可溯源、不可篡改的信息源,因此原来许多重复验证的流程和操作就可以简化,甚至消除,例如银行之间的对账、结算、清算等。从而提升操作效率。

(2)降低交易对手的信用风险。与传统交易需要信任交易方不同,区块链技术可以使用智能合约等方式,保证交易多方自动完成相应义务,确保交易安全,从而降低对手的信用风险。

(3)减少结算或清算时间。由于参与方的去中心化信任机制,区块链技术可以是实现实时的交易结算和清算,实现金融”脱媒”,从而大幅度降低结算和清算成本,减少结算和清算时间,提高效率。

(4)增加资金流动性,提升资产利用效率。区块链的高效性,以及更短的交易结算和清算时间,使交易中的资金和资产需要锁定的时间减少,从而可以加速资金和资产的流动,提升价值的流动性。

(5)提升透明度和监管效率,避免欺诈行为。由于区块链技术可以更好的将所有交易和智能合约进行实时监控,而且不可撤销、不可抵赖、不可篡改方式留存,方便监管机构实现实时监控和监管,也方便参与方实现自动化合规处理,从而提升透明度,避免欺诈行为,更高效的实现监管。