区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
1 区块链基础知识
1.0 区块链的核心技术有哪些?
区块链主要解决交易的信任和安全问题,因此它针对这个问题提出了四个技术创新:
-
分布式账本
就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。
跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分成多份进行存储。二是区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据。
没有任何一个节点可以单独记录账本数据,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。也由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。
-
非对称加密和授权技术
存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。
-
共识机制
就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。
区块链的共识机制具备“少数服从多数”以及“人人平等”的特点,其中“少数服从多数”并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。“人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果、直接被其他节点认同后并最后有可能成为最终共识结果。
以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。当加入区块链的节点足够多的时候,这基本上不可能,从而杜绝了造假的可能。
-
智能合约
智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息(包括医疗信息和风险发生的信息)都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔。
1.1 比特币
定义及特点
比特币的定义:比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。与大多数货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。
1、每个人最初的积分(就是比特币)数额都是0; 2、社群里的人共同维护一个账本,无论是否有变动,账本每10分钟更新一次,更新后要通知社群所有人; 3、社群里的任何一个人都有权记账,只要记账,就能获得50个比特币的奖励(每四年减半,现在是12.5个比特币); 4、所有想记账的人都要算同一道数学题,第一个算对的人才有资格记账; 5、比特币的上限是2100万枚。
比特币的几个特点:
1、去中心化。不依赖任何一个中心记账,而是由所有人一起来维护一个账本,任何人都可以去抢记账权。
2、不可篡改。每一个区块都被盖上了时间戳,所有的区块都跟前一个区块相连,一旦想更改区块内的数据,时间戳就对不上了;而且俱乐部所有人都在盯着呢,想篡改至少要有超过一半的人愿意跟你一起“指鹿为马”。
3、公开透明。任何一个账户的往来账目都可以在区块链上查到。当你转账给别人时,不用担心对方收了钱不认账,区块链上都记得一清二楚呢。
4、国际化。因为比特币只存在于互联网,如果想转账、支付、购买比特币,只需要联网操作一下就可以了。从比特币钱包的下载数据来看,全世界有200多个国家在用比特币,比美元、人民币等货币都更加国际化。
5、抗通胀。各国法币的总量没有上限,政府每年都在大量印钱,比特币的上限是2100万,任何人不得更改。
比特币的安全性
在区块链世界,你只要知道了别人的“银行卡密码”(私钥),就可以知道别人的“银行账户”(公钥)和“银行卡号”(地址),可以取走里面的币。
因为在区块链中,私钥通过加密生成公钥,公钥转换一下格式生成地址。也就是说,私钥可以推导出公钥,公钥可以推导出地址。
比特币的私钥就是通过程序“抛256次硬币”,随机生成的。比特币私钥的本质是256位二进制数。
比特币的私钥总数,理论上有「2的256次方」个。私钥总数的实际值比上面的理论值略低,因为有一小部分私钥不可用,但对总数影响微乎其微。
矿工和挖矿
比特币世界里的“矿”是比特币,所以“挖矿”是指挖比特币,“矿工”是指运用挖矿设备(比特币矿机)参与挖比特币的人。
为了保证比特币能在没有发行主体的情况下顺利发行,比特币的创始人中本聪为比特币的发行设立了奖励机制:
比特币每10分钟左右记账一次,记录比特币网络上的转账。每一次记账都会得到系统的比特币奖励。记账的矿工有很多,那奖励该给谁呢?为了公平起见,就要求每一次记账前,所有参与竞争记账权的矿工,先解答出系统给的一道难题。谁最先找出难题的正确答案,谁就获得了这一次的记账权,也就获得了对应的比特币奖励。
在比特币系统里,每一次记账权的获得,都需要解出与之对应的难题。这道难题就像是把需要解开的密码锁,而解锁的钥匙是一个随机的数字。第一个找到正确数字的人,将获得这次记账的权利以及相应的比特币奖励(这个奖励包括:系统的出块奖励和转账用户的手续费奖励)。
1.2 共识机制
区块链本质是去中心化,去中心化的核心是共识机制,区块链上的共识机制主要解决由谁来构造区块,以及如何维护区块链统一的问题。
区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质:
-
一致性:所有诚实节点保存的区块链的前缀部分完全相同。
-
有效性:由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。
区块链的自信任主要体现于分布于区块链中的用户无须信任交易的另一方,也无须信任一个中心化的机构,只需要信任区块链协议下的软件系统即可实现交易。
当今区块链的几种共识机制介绍
区块链上的共识机制有多种,但任何一种都不是完美无缺,或者说适用于所有应用场景的。
PoW 工作量证明
整个系统中每个节点为整个系统提供计算能力(简称算力),通过一个竞争机制,让计算工作完成最出色的节点获得系统的奖励,即完成新生成货币的分配,简单理解就是多劳多得,bitcoin、LTC等货币型区块链就应用POW机制。
-
优点
完全去中心化节点自由进出,算法简单,容易实现破坏系统花费的成本巨大,只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致
-
缺点
浪费能源,这是最大的缺点区块的确认时间难以缩短,如bitcoin每秒只能做7笔交易,不适合商业应用新的区块链必须找到一种不同的散列算法,否则就会面临bitcoin的算力攻击对节点的性能网络环境要求高容易产生分叉,需要等待多个确认无法达成最终一致性
PoS 权益证明
也称股权证明,类似于你把财产存在银行,这种模式会根据你持有加密货币的数量和时间,分配给你相应的利息。
-
优点
对节点性能要求低,达成共识时间短
-
缺点
没有最终一致性,需要检查点机制来弥补最终性
DPOW 委托股权证明
DPOW是 PoS 的进化方案,在常规 PoW和 PoS 中,任何一个新加入的区块,都需要被整个网络所有节点做确认,非常影响效率。
DPoS则类似于现代董事会的投票机制,通过选举代表来进行投票和决策。被选举出的n个记账节点来做新区块的创建、验证、签名和相互监督,这样就极大地减少了区块创建和确认所需要消耗的时间和算力成本。
-
优点
大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证
-
缺点
牺牲了去中心化的概念,不适合公有链
PBFT 实用拜占庭容错
实用拜占庭容错机制是一种采用“许可投票、少数服从多数”来选举领导者并进行记账的共识机制,该共识机制允许拜占庭容错,允许强监督节点参与,具备权限分级能力,性能更高,耗能更低,而且每轮记账都会由全网节点共同选举领导者,允许33%的节点作恶,容错率为33%。实用拜占庭容错特别适合联盟链的应用场景。
-
优点
会背离中心化,加密货币的存在及奖励机制会产生马太效应,让社区中的穷者更穷,富者更富共识效率高,可实现高频交易
-
缺点
当系统只剩下33%的节点运行时,系统会停止运行
dBFT 授权拜占庭容错
这种机制是用权益来选出记账人,然后记账人之间通过拜占庭容错算法达成共识。授权拜占庭容错机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。
-
优点
专业化的记账人可以容忍任何类型的错误记账由多人协同完成,每一个区块都有最终性,不会分叉算法的可靠性有严格的数学证明
-
缺点
当三分之一或以上记账人停止工作后,系统将无法提供服务当三分之一或以上记账人联合作恶,可能会使系统出现分叉
Pool 验证池
基于传统的分布式一致性技术,加上数据验证机制。
-
优点
不需要加密货币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。
-
缺点
去中心化程度不如bitcoin,更适合多方参与的多中心商业模式。
Paxos
这是一种传统的分布式一致性算法,是一种基于选举领导者的共识机制。领导者节点拥有绝对权限,并允许强监督节点参与,其性能高,资源消耗低。所有节点一般有线下准入机制,但选举过程中不允许有作恶节点,不具备容错性。
Paxos算法中将节点分为三种类型:
proposer:提出一个提案,等待大家批准为结案。往往是客户端担任该角色
acceptor:负责对提案进行投票。往往是服务端担任该角色
learner:被告知结案结果,并与之统一,不参与投票过程。可能为客户端或服务端
Paxos 能保证在超过50%的正常节点存在时,系统能达成共识。
瑞波共识机制
瑞波共识算法使一组节点能够基于特殊节点列表形成共识,初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由该俱乐部51%的会员投票通过。共识遵循这些核心成员的“51%权利”,外部人员则没有影响力。由于该俱乐部由中心化开始,它将一直是中心化的,而如果它开始腐化,股东们什么也做不了。与bitcoin及Peercoin一样,瑞波系统将股东们与其投票权隔开,因此,它比其他系统更中心化。
Peercoin
Peercoin(点点币,PPC),混合了POW工作量证明及POS权益证明方式,其中POW主要用于发行货币,未来预计随着挖矿难度上升,产量降低,系统安全主要由POS维护。
在区块链网络中,由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。每种共识算法都不是完美的,都有其优点和局限性。
区块链解决了在不可信信道上传输可信信息、价值转移的问题,而共识机制解决了区块链如何分布式场景下达成一致性的问题。
虽然区块链目前还处于发展的早期,行业发展还面临着一些阻碍,但社会已经足够多地认识到区块链的价值,区块链发展的脚步绝不会停滞不前,行业发展也定会找到突破阻碍的方法。
1.3 智能合约
“智能合约是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机系统自动执行。”
“智能合约程序不只是一个可以自动执行的计算机程序,它本身就是一个系统参与者,对接收到的信息进行回应,可以接收和储存价值,也可以向外发送信息和价值。这个程序就像一个可以被信任的人,可以临时保管资产,总是按照事先的规则执行操作。”
“智能合约的工作理论迟迟没有实现,一个重要原因是因为缺乏能够支持可编程合约的数字系统和技术。区块链技术的出现解决了该问题,不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明可追踪等优点,天然适合于智能合约。因此,也可以说,智能合约是区块链技术的特性之一”
智能合约的应用场景
智能合约能应用的场景将非常广泛,譬如房租租赁、差价合约、代币系统、储蓄钱包、作物保险、金融借贷、设立遗嘱、证劵登记清算、博彩发行等。
1.4 Dapp
DApp就是D+App,D是英文单词decentralization的首字母,单词翻译中文是去中心化,即DApp为去中心化应用。DApp就是智能合约+App。
之前开发一个app需要一家公司招开发人员进行开发然后推广运营,现在开发DApp可能不需要是一家公司,也可以是个人或自媒体,整个流程可以是:
-
写白皮书
-
明确共识机制
-
Token激励机制
-
智能合约开发
-
去中心化社区自治
对比APP,两者最大不同就是中心化与去中心化。App先要有钱,所以先融资;然后再有人,所以招齐人后再开发运营。而DApp则是继承传统App并结合区块链的特点所形成的产物,它更像是众筹模式、共享模式和去中心化模式,DApp先有发起人或组织,写好白皮书明确了共识机制和token分配与激励,持有token的人即为股东,直接和DApp的盈利关联(也可以说用户即是股东),持有的token像股票可以买卖,在支持的交易所交易,所以持有该DApp的token相当于拥有所有者权益。可以想象,未来各个领域都会有DApp,每个人都将因token分类、以token群分。
Dapp的应用:
DApp被大多数人看好的方向在于和物联网、共享经济的结合,比如无人驾驶汽车应用。传统上,一辆无人驾驶汽车得到路况信息需要先传输到中心化服务器,然后服务器再传输给另一辆无人驾驶汽车,若出现服务器故障或者传输网络延迟等情况,汽车之间没有及时通信,路况又是随时变化的,所以就很容易出现事故。如果汽车与汽车能直接通信,一辆无人驾驶汽车实时将路况信息写入区块链,其他无人驾驶汽车则可及时获取路况信息并及时调整,这样要好于中心化管理。
1.5 联盟链 私有链 公链
公链
公共链不需要任何集中的组织。 通过比特币网络中使用的PoW等共识算法,公共链成为一种新的主网,可以消除管理员获得的集中管理员和佣金不公的所有风险。 网络可以保持正确的交易不受信任和无权限。 由于比特币采用公有链,即使没有通过服务器进行集中管理,也实现了零停机时间,即使存在过度访问的情况,仍会继续产生数据块。
但是,特别是PoW的成本很高,因为它需要大量的电力来证明计算能力。 另外,尽管每个人都可以加入比特币网络,但在大多数实际交易中,创建块都是无用的,需要10分钟。 通过收集51%的网络计算能力,没有终结和篡改的可能。
私有链
这是由某个集中组织管理的区块链。 这一个集中的组织记录和管理分类帐。 交易记录既有公开形式也有私人形式。 集中管理员可以任意删除过往交易并更改账户余额。 (对于公司方面来说,这是有利的,因为它们可以灵活地与情况相对应,但是存在篡改可能性的风险意味着它与已有系统相比不再是新系统)。
而且,在私有链中,验证者可以被信任,并且没有必要通过共识算法给予经济激励。 因此,交易吞吐量如此提高,TPS将超过10万。 成本和电力等时间成本也较低。
尽管与现有的数据库系统相比,区块链本身的特点不适合用于大量数据的搜索,分析和管理。 虽然区块链默认具有防篡改功能,并且从安全角度来看有几个优点,但是在添加周边环境和外部应用方面,它在安全性方面仍然不成熟。 这种机制是积极的,我们希望将来会有所改进,但是,非集中式私有链可能在这个时候效率低于已有数据库。
联盟链
联盟区块链是几个高可信度节点之间的共识。 IBM提供的Hyperledger Fabric也是采用联盟类型区块链的一种,并通过“PBFT”实现了快速交易验证; 一个共识算法,其中交易通过大多数可信节点的同意进行验证。
除了私有链,联盟链还解决了公有链的问题,如计算能力巨大,数据处理能力缓慢,没有停止。 限制数据的验证器,对于Blockchain协议的更新,不需要硬叉。 此外,引入KYC和部分信息披露限制制度是可能的,那么这些期货更适合一些公司或组织内部的运作。
DSS Trilemma:Blockchain在分散,可扩展性和安全性(DSS)之间存在三难问题
超级账本
比特币、以太坊的成功,推动了区块链行业的飞速发展,从区块链的分类来看,它们都属于公链项目,区块链除了有公链之外、还有私有链和联盟链。公链的完全去中心化是一个美好的未来,但是又和现实存在着很大的冲突,难以快速落地 ,多中心的联盟链被认为是更有可能快速融入现实,落地实践。当前最著名的的联盟链基础平台就是“超级账本(Hyperledger)”项目。
Hyperledger (或 Hyperledger项目)是一个旨在推动区块链跨行业应用的开源项目, 由 Linux基金会在2015年12月主导发起该项目, 成员包括金融,银行,物联网,供应链,制造和科技行业的领头羊。
项目的目标是区块链及分布式记账系统的跨行业发展与协作,并着重发展性能和可靠性(相对于类似的数字货币的设计)使之可以支持主要的技术、金融和供应链公司中的全球商业交易。该项目将继承独立的开放协议和标准,通过框架方法和专用模块,包括各区块链的共识机制和存储方式,以及身份服务、访问控制和智能合约。
由于点对点网络的特性,分布式账本技术是完全共享、透明和去中心化的,故非常适合于在金融行业的应用,以及其他的例如制造、银行、保险、物联网等无数个其他行业。通过创建分布式账本的公开标准,实现虚拟和数字形式的价值交换,例如资产合约、能源交易、结婚证书、能够安全和高效低成本的进行追踪和交易。
Hyperledger Fabric(后文简称Fabric)是其中发展最好的一个企业级区块链平台,最初由Digital Asset和IBM 贡献,目前已经应用于沃尔玛的食物溯源链(Foodtrust)和马士基的物流跟踪链(TradeLens)中, 代表了当下企业级区块链应用的最高水平。可以认为Fabric是一种联盟链(Consortium Blockchain)平台, 它适合构建跨越多个企业边界的去中心化应用。
由于Fabric项目的目标是应用于相对可信的企业联盟环境,因此其设计思路与比特币、以太坊 等公链平台有明显的差异。Fabric借鉴了区块链的数据结构,但引入了相当多的身份验证与 权限控制机制,以及数据隐私保护机制,以适应企业级应用的要求。同时由于企业联盟环境 要比完全开放的公链环境可控,因此Fabric没有强调其共识体系对拜占庭容错的实现,允许使用 非拜占庭容错算法建立共识,从而可以达到相当实用的交易吞吐量。
毫无疑问,Fabric是受到比特币的启发而诞生的,因此它借鉴了比特币、以太坊这些公链中的一些 核心特性,例如采用不可篡改的区块链结构来保存数据、采用非对称加密技术来进行身份识别 与认证、支持智能合约等等。
但是Fabric定位于企业级的分布式账本技术(DLT - Distributed Ledger Technology)平台, 它的主要目的是为跨越多个企业边界的活动提供不可篡改的分布式记账平台。例如在食物溯源 应用中,为了让消费者可以了解到所购买食物是否安全,就必须将从农场到加工商、分销商、 零售商乃至监管机构等各个环节的检验与放行信息记录到区块链上,以保证溯源信息的透明与可信:
因此Fabric是一种联盟链(Consortium Blockchain),它适合在多个企业间实现分布式记账,这一 定位使Fabric的实现与以太坊这样的公链有了明显的差异:
分布式账本 vs. 区块链
分布式账本是比区块链更加宽泛的概念,可以认为区块链只是分布式账本的一种实现技术, 其他的分布式账本实现还包括哈希图等。
去中心化 vs. 分布式
Fabric淡化了去中心化(Decentralized),而以分布式(Distributed)代替,这一思路带来了系统设计 与实现上的巨大影响。 例如,在Fabric中,采用中心化的CA机制来发放证书,只有持有有效证书的节点和用户才可以访问区块链 上的账本数据。因此Fabric是许可制 / Permissioned的区块链,这与不需要许可 / Permissionless 的以太坊这样的公链形成了鲜明的对比。
拜占庭容错 vs. 崩溃容错
由于采用许可机制,Fabric也淡化了对不可信(Trustless)环境下共识达成的依赖性,而假设 联盟链中的企业有可能是值得信赖的,因此并不依赖于工作量证明这样的拜占庭容错算法 —— 虽然 Fabric模块化的设计可以支持引入不同的共识算法实现,但目前的产品化方案是Kafka共识,它显然 是不能对抗拜占庭错误的 —— 不过对不可信环境支持的淡化处理有利于提高交易的吞吐量,这对于企 业级应用也是有益的。
数据隐私保护
在另一方面,Fabric强化了隐私保护能力。例如,Fabric支持在同一套企业网络上建立多个不同 的通道 / Channel,每一个通道都有自己的区块链和访问控制,彼此互不影响,这有利于 复用基础设施,例如不同企业间的销售部门可以建立一个通道来分享市场数据,而这些企业间的 研发部门可以建立另一个通道来分享技术数据。
Fabric并不是唯一的联盟链解决方案,但目前可以说是最复杂的企业联盟链实现,这种复杂性 源于设计者对应用场景的假设和推演,以及对Fabric广泛适用性的考量,这是我们在学习过程 中需要换位思考的一点。