区块链
本文记录为《区块链技术指南》的读书笔记,针对一些区块链技术的概要和实现做的一些笔记与分析
文章最后的几部分为一些源码与环境的解释,在此没做笔记原文链接
本文是对《区块链技术指南》一文的通读与辨识。
文章是技术性偏重的指南与参考,将从区块链产生、发展的脉络中梳理一些常用的技术理论知识。包括但不限于如下:区块链与数字货币,区块链技术的价值、挑战及展望,典型应用场景,分布式核心问题,密码与安全技术。另外,还分别从比特币、以太坊、超级账本等区块链技术支持或相关的项目来进行论述。介绍了Fabric工具的部署以及一些应用开发示例。
数字货币相比现实货币而言,具有一些如便于防伪、防验、便携等优点,在实验层面取得了一定的成功(如比特币的火爆)。就货币性质本身而言,数字货币或许能够在很多方面优于现实货币,但是鉴于当下的现实经济环境和技术、安全等方面的因素,数字货币并不能大批量的在实际生活中使用。
目前银行金融中使用的俗称电子货币或数字货币1.0,这其实依托于第三方的公正或者交易记账监管机制,利用信用等因素进行交易。这种具有中心化的操作模式,其实是需要复杂的信赖关系和第三方担保因素的。数字货币想要建议对等的记账模式,单纯的去中心化,就需要一些技术或算法的支持。否则在货币防伪、双重支付等问题就会出现漏洞。
数字货币在近30年一直在去中心化努力,直到比特币的出现,将PoW 与共识机制结合在一起,首次从实践意义上实现了一套去中心化的数字货币系统。它无需任何外部管理机构,通过一些数学、密码等原理保证成功交易及安全性。
2008.10.31中本聪,比特币设计白皮书;2009年初开源。比特币网络由数千个核心节点参与构成,没有任何中心的运维参与,支持了稳定上升的交易量。
比特币的金融货币希望:被掌控在发行机构手中;自身的价值无法保证;无法匿名化交易。
从比特币的底层区块链技术,到分布式记账本技术。区块链,正是实现去中心化记账本系统的一种极具潜力的可行技术。
现实:这是一个新兴产物,暂时缺乏统一的标准和规范
区块链从记账本概念而来,是首个自带对账功能的数字记账技术实现。可以将其看成是一种去中心化的记录技术,这些数据和节点彼此无需信任,数据由全局节点共同维护。每个参与者都有完整的记录备份。其具备的一些特点可能是:
如果再与智能合约相结合,将具有一些更加灵活的复杂的操作。
基本原理:交易、区块、链。
交易是指一次导致账本发生更改的操作,如添加一个记录;区块存储一端时间内的交易及转态结果;链则是所有区块按自然顺序串联而成的数据结构。
这个大的记账本可以是分布式存储的,只允许添加,不允许进行删除和修订操作。一个新的区块需要通过一些机制来判断是否合法才被加入到链的末尾。这些机制叫共识机制,分为多种不同的类型。
分类:公开链、联盟链、私有链(据参与者角度)
根据使用目的和场景:货币链、产权链、众筹链等
一些错识——它不是数据库,也不能颠覆现有技术
发展:从原始到复式、数字化到分布式。问题:容易出错、易被篡改、中心化问题
区块链结构并非唯一能满足分布式记账需求的结构。狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要记录历史区块数据而进行校验,适合分布式记账场景下防篡改和可扩展性的需求。广义上,区块链还指代基于区块链结构实现的分布式记账技术,还包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。
以区块链为基础的分布式账本科技则可能解决传递可信信息的问题,在互联基础上提供可信保障。这意味着基于分布式账本科技的未来商业网络,将成为继互联网之后的新一代基础设施——大规模协作(collaboration)系统。
现代商业的典型模式为,交易方通过协商和执行合约,完成交易过程。区块链擅长的正是如
何管理合约,确保合约的顺利执行。区块链一般具有分布式容错性、不可篡改、隐私保护性等特点,能够带来可信任性、降低成本、增强安全的业务特性。
从技术角度讲,区块链涉及到的领域比较杂,包括分布式、存储、密码学、心理学、经济
学、博弈论、网络协议等。主要是在密码学技术、分布式共识、性能、安全等方面存在提高和改进。
要找到合适的应用场景,还是要从区块链自身的特性出发进行分析。区块链在不引入第三方中介机构的前提下,可以提供去中心化、不可篡改、安全可靠等特性保证。因此,所有直接或间接依赖于第三方担保信任机构的活动,均可能从区块链技术中获益。
物流供应链——供应链行业往往涉及到诸多实体,包括物流、资金流、信息流等,这些实体之间存在大量复杂的协作和沟通。传统模式下,不同实体各自保存各自的供应链信息,严重缺乏透明度,造成了较高的时间成本和金钱成本,而且一旦出现问题(冒领、货物假冒等)难以追查和处理。通过区块链各方可以获得一个透明可靠的统一信息平台,可以实时查看状态,降低物流成本,追溯物品的生产和运送整个过程,从而提高供应链管理的效率。当发生纠纷时,举证和追查也变得更加清晰和容易。
区块链首先是一个分布式系统。中央式结构改成分布式系统,碰到的第一个问题就是一致性的保障。很显然,如果一个分布式集群无法保证处理结果一致的话,那任何建立于其上的业务系统都无法正常工作。
Consistency,系统中多个服务节点,给定一系列操作,在协议的保障下,试图使得处理结果达成某种程度的一致。分布式系统实现一致,对外就能呈现一个功能正常的,且稳定性和性能都很好。一致性不能代表结果的正确性,只是一种状态
实际的计算机集群中,存在如①节点的不可靠通讯②节点处理错误或宕机③同步调用等问题。理想的分布式系统应满足如下要求:
理想的分布式系统代价过高,进而出现了带约束的一致性(不同于这两个强一致性):顺序一致性和线性一致性。强一致的系统往往比较难实现。很多时候,人们发现实际需求并没有那么强,可以适当放宽一致性要求,降低系统实现的难度。例如在一定约束下实现所谓最终一致性(Eventual Consistency),即总会存在一个时刻(而不是立刻),系统达到一致的状态,这对于大部分的 Web 系统来说已经足够了。这一类弱化的一致性,被笼统称为弱一致性(Weak Consistency)。
共识算法主要是保障系统能够满足不同程度的一致性。共识算法解决的是对个提案大家达成一致的过程。
共识算法主要面临的问题是不存在完美性能的分布式系统,一般地,把故障(不响应)的情况称为“非拜占庭错误”,恶意响应的情况称为“拜占庭错误”(对应节点为拜占庭节点)。
我们可以通过一些算法包括Paxos/Raft等来解决非拜占庭错误。对于拜占庭错误,则使用PBFT 系列、PoW 系列算法等。
FLP 不可能原理:在网络可靠,存在节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性算法。
FLP 不可能原理实际上告诉人们,不要浪费时间去为异步分布式系统设计在任意场景下都能
实现共识的算法。FLP 原理实际上说明对于允许节点失效情况下,纯粹异步系统无法确保一致性在有限时间内完成。
但是,我们可以在有限的代价下(工程思想下),能够做到——CAP。
分布式计算系统不可能同时确保一致性(Consistency)、可用性(Availablity)和分区容忍性(Partition),设计中往往需要弱化对某个特性的保证。
比较直观地理解,当网络可能出现分区时候,系统是无法同时保证一致性和可用性的。要
么,节点收到请求后因为没有得到其他人的确认就不应答,要么节点只能应答非一致的结
果。好在大部分时候网络被认为是可靠的,因此系统可以提供一致可靠的服务;当网络不可靠时,系统要么牺牲掉一致性(大部分时候都是如此),要么牺牲掉可用性。
ACID 原则描述了对分布式数据库的一致性需求,同时付出了可用性的代价。
Paxos 问题是指分布式的系统中存在故障(fault),但不存在恶意(corrupt)节点场景(即
可能消息丢失或重复,但无错误消息)下的共识达成(Consensus)问题。这两类算法主要是用来解决非拜占庭问题的一致性问题,共识算法。
拜占庭问题更为广泛,讨论的是允许存在少数节点作恶(消息可能被伪造)场景下的一致性
达成问题。拜占庭算法讨论的是最坏情况下的保障。
将军问题:信息传递的错误问题?多节点中的消息传递正确及时的一致性问题?
密码学领域十分繁杂,这一节介绍了密码学领域中跟区块链相关的一些基础知识,包括 hash 算法与摘要、加密算法、数字签名和证书、PKI 体系、Merkle 树、同态加密等,以及如何使用这些技术实现信息的机密性、完整性、认证性和不可抵赖性。
hash算法将任意长度的二进制值(明文)映射为较短固定长度的二进制值(hash值),且不同的明文很难映射为相同的hash值。hash值在应用中也被称作指纹或摘要。
主流的一些算法有MD5、SHA-1、SHA-2
hash算法能够作为数字摘要的算法,来确保内容没有被篡改过的问题。
算法类型 | 特点 | 优势 | 缺陷 | 代表算法 |
---|---|---|---|---|
对称加密 | 加解密密钥相同或可推算 | 计算效率高、加密强度高 | 需提前共享密钥,易泄露 | DES,3DES,AE2,IDEA |
非对称加密 | 加解密密钥不相关 | 无需提前共享密钥 | 计算效率低,仍存在攻击可能 | RSA,EIGamal,椭圆曲线系列算法 |
现代加密算法的典型组件包括:加解密算法、加密密钥、解密密钥。其中,加解密算法自身是固定不变的,一般是公开可见的;密钥则往往每次不同,并且需要保护起来,一般来说,对同一种算法,密钥长度越长,则加密强度越大。
并非所有加密算法的强度都可以从数学上进行证明。公认的高强度加密算法是在经过长时间各方面实践论证后,被大家所认可,不代表其不存在漏洞。但任何时候,自行发明加密算法都是一种不太明智的行为。
**混合加密机制:**即先用计算复杂度高的非对称加密协商一个临时的对称加密密钥(会话密钥,一般相对内容来说要短的多),然后双方再通过对称加密对传递的大量数据进行加解密处理。典型的场景是现在大家常用的 HTTPS 机制。
数字签名用于证实某数字内容的完整性(integrity)和来源(或不可抵赖,non-repudiation)
主要有HMAC、盲签名、多重签名、群签名、环签名等
数字证书用来证明某个公钥是谁的,并且内容是正确的。对于非对称加密算法和数字签名来说,很重要的一点就是公钥的分发。一旦公钥被人替换(典型的如中间人攻击),则整个安全体系将被破坏掉。
数字证书就是像一个证书一样,证明信息和合法性。由证书认证机构(Certification Authority,CA)来签发,权威的 CA 包括 verisign 等。
在非对称加密中,公钥则可以通过证书机制来进行保护,如何管理和分发证书则可以通过PKI(Public Key Infrastructure)来保障。PKI 体系在现代密码学应用领域处于十分基础的地位,解决了十分核心的证书管理问题。
PKI 并不代表某个特定的密码学技术和流程,PKI 是建立在公私钥基础上实现安全可靠传递消息和身份确认的一个通用框架。实现了 PKI 的平台可以安全可靠地管理网络中用户的密钥和证书,包括多个实现和变种,知名的有 RSA 公司的 PKCS(Public Key Cryptography Standards)标准和 X.509 规范等。
同态加密(Homomorphic Encryption)是一种特殊的加密方法,允许对密文进行处理得到仍然是加密的结果,即对密文直接进行处理,跟对明文进行处理再加密,得到的结果相同。从代数的角度讲,即同态性。
挖矿:参与维护比特币网络的节点,通过协助生成新区块来获取一定量新增的比特币;注:每个区块的奖励一开始是 50 个比特币,每隔 21 万个区块自动减半,即 4 年时间,最终比特币总量稳定在 2100 万个。因此,比特币是一种通缩的货币。
工具:客户端;矿机;脚本
共识机制:比特币的网络是公开的,比特币区块链采用了PoW的机制来实现共识;Pow即工作量证明,通过计算俩猜测一个数值,得以解决规定的hash问题,保证一段时间内,系统只能出现少数合法提案。PoS为权益证明,类似于股东机制,占有股份越多的人越容易获取记账权。
其他。。尚未记全