这是一篇很好的了解区块链起源、技术及其运用的文章。请勿未经允许进行转载。
区块链技术起源于化名为中本聪(Satoshi Nakamoto) 的学者在 2008 年发表的奠基性论文《比特币:一种点 对点电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System)。
基于该论文,中本聪设计并发布了一种去中心化的 P2P 虚拟加密货币——比特币(Bitcoin)。
比特币被称为加密货币 (Cryptocurrency),但是比特币并 没有加密。比特币中的所有信息都是明文存储在区块链 中的。
以比特币为代表的加密货币主要使用了密码学中的两个 关键技术: 1. 散列 (Hash) 2. 数字签名 (Digital Signature)
密码学中使用的散列函数被称为密码学散列函数 (Cryptographic Hash Function),它有两个重要的特性: 1. 碰撞避免 (Collision Resistance) 2. 源藏匿 (Hiding)
之外,比特币等加密货币还对散列函数有一个额外的要 求: 3. 谜题友好 (Puzzle Friendliness)
在对称密码学 (Symmetric Cryptography) 中,通信双方使 用协商好的密钥进行通信。发送方使用密钥对信息进行 加密,接收方使用相同的密钥解密并得到原文。 通信双方使用同一个密钥,因此这被称为对称加密体系。 对称密码学需要事先在通信双方间对密钥进行分发,这 是对称密码学的一个重要缺点。
在非对称密码学 (Asymmetric Cryptography) 中,使用的不 是对称密钥而是一对公私钥对 (Public-private Key Pair)。 公私钥对通过 RSA,ECDSA 等算法生成后,通信者可 以将自己的公钥向公共空间公开,只需要妥善保存自己 的私钥。
比特币等加密货币中,使用公钥密码学对发布的交易进 行签名,以防止冒名顶替
区块链本质上是一个基于对等网络 (Peer-to-peer Network) 的分布式数据库。它通过一系列共识机制来保证数据的 一致性、合法性和可靠性。 通过建立一个由所有参与者共同维护的、不可篡改的数 据库,区块链可以记录过去的所有历史数据,所有这些 数据都是分布式存储且公开透明的。 任何不相识的网络用户都可以通过合约、数字签名和公 钥密码学来达成信用共识,而不需要一个中心机构。
一个完整的区块链系统包含了很多技术,其中有用于存 储区块的数字签名、时间戳技术;有作为支撑 P2P 网络 的共识算法;有用于挖矿的工作量证明机制。 在虚拟加密货币应用中,还有用于钱包以及交易认证的 椭圆曲线公钥密码学;用于记账的 UTxO 算法;用于 交易储存和查询的默克尔树等技术。
区块 (Block) 用于存储所有数据,是区块链和加密货币 的最基本的单位。
区块由区块头 (Block Header) 和区块体 (Block Body) 组成。
区块的区块头中封装了以下字段:
• 生成当前区块的时间戳 (Timestamp);
• 当前区块的哈希值 (Hash);
• 前一个区块的哈希值 (PrevHash);
• 用于工作量证明计算的难度目标 (Target);
• 用于杂凑出难度目标哈希的随机数 (Nonce);
• 数据的摘要,在比特币中是默克尔根 (Merkle Root)。
工作量证明(PoW,Proof of Work)概念最早由 Cynthia Dwork 和 Moni Naor 于1993年提出。工作量证明本质 上是一种防止资源滥用、阻断服务攻击的对策。
挖矿的本质就是计算机计算出一个随机数 (Nonce) 能使得 当前区块的哈希值 (Hash) 满足本区块的难度目标 (Target)。
工作量证明的本质是按算力进行投票。当区块链出现分 叉时,最长的链代表了多数人的决定,因为投入到这条 链上的用于工作量证明的算力最大。
当矿工成功挖出一个区块时,该矿工把这个新区块向全 网广播。网络中的其他节点在接收到该区块后,对该区 块内的数据和工作量证明进行校验,如果合法就将该区 块写入自己本地的区块链副本中。随后矿工将在这个区 块的基础上进行工作,以挖出下一个新区块。
节点总是认为最长的链是正确的,并致力于延长它。如 果两个节点同时广播了不同的下一个区块,有些节点可 能先收到其中一个而其他节点先收到另一个。这种情况 下,节点基于他们收到的第一个合法区块工作,但是也 保存另一个分支以防它变为更长的链。
当下一个区块被找到,意味着两个区块中的某一个出现 了后继节点,僵局就会被打破。这时在另一个分支上工 作的节点将切换到这条更长的链上来。
激励会有助于鼓励节点保持诚实。如果一个攻击者有能 力聚集比所有诚实节点更多的算力,他将发现遵守规则 比破坏规则去篡改历史区块对他来说更有利,因为他只 需要诚实工作就能够获得比所有其他人都多的新货币。
一旦某个交易已经被足够多的区块覆盖,这之前的支付 交易就可以被丢弃以节省磁盘空间。为便于此而又不破 坏区块的哈希值,交易将被哈希进默克尔树 (Merkle Tree),只有根节点被纳入到区块的哈希值。老的区块可 通过剪枝的方式被压缩。树枝内部的哈希不需要被保存。
运行一个不完整的网络节点也是可以进行支付验证的。 用户只需拥有一个最长链的区块头副本,通过向其他网 络节点请求该交易所在区块的默克尔树,就可以验证交 易是否存在于某个区块内。
拜占庭容错技术 (BFT, Byzantine Fault Tolerance) 是分布式 计算领域的最基础的容错技术。
BFT 是对现实世界中分布式系统的抽象,对硬件错误、 网络拥塞以及恶意节点攻击等原因造成的分布式系统异 常行为进行了模型化分析。
在一个分布式异步系统中,只要有一个节点 不可靠,就不存在一个协议可以保证在有限时间内使所 有节点达成一致性共识。
在私有链和联盟链的情境下,一般不会经常存在拜占庭 故障,因此可以选用 Raft 算法进行共识协商。
在区块链系统中使用 Raft 算法实现共识的过程可以描述 如下:选举一个 leader 节点,赋予该节点完全的记账权; 所有其它节点将记账请求发送给 leader 节点,由该节点 负责记账。
公有链系统一般采用工作量证明 (PoW, Proof of Work) 机 制进行一致性共识。
简单来说,PoW 的主要特征就是计算的不对称性。工 作端需要做出相当难度的工作并得出一个结果,而验证 方很容易通过结果来检查工作端是否做了相应的工作。
PoW 对能源过于浪费。比特币网络中每秒 完成数百万次 SHA256 计算,消耗了大量的电力资源。 而这些计算除了保证了系统的一致性外,并没有实际的 价值。
权益证明 (PoS, Proof of Stake) 机制是另一种用于区块链 系统进行共识协商的机制。
权益证明使用伪随机选举来选择作为下一个区块生成者 的节点。想要参与到锻造过程的用户需要先将一定数量 的币锁定为他们的股权。一个节点股权的多少决定了它 被选为下一个区块验证者的机会:股权越多,机会越大。
公有链可以理解为公共区块链,公有链上的行为是公开 的,它又不受任何人控制,也不归任何人所有,被认为 是“完全去中心化”的区块链。
公有链上的各个节点可以自由加入和退出网络,并参加 链上数据的读写,读写时以扁平的拓扑结构互联互通, 网络中不存在任何中心化的服务端节点。
大家所熟悉的比特币和以太坊,都是公有链架构的。
私有链也称专有链,是一条非公开的链,需要授权才能 加入节点。
私有链中各个节点的写入权限皆被严格控制,读取权限 则可视需求有选择性地对外开放。私有链能够防止机构 内单节点故意隐瞒或者篡改数据,即使发生错误,也能 够迅速发现来源。
通常情况,私有链适用于特定机构的内部数据管理与审 计等金融场景的应用。例如一些金融、审计机构使用私 有链存放账本及数据库。
联盟链也可称为区块链的联盟。从某种程度上来说,联 盟链也属于私有链,但它私有的程度不同,其权限设计 要求更复杂,可信度更高。
联盟链适用于行业协会、高级别机构组织、大型连锁企 业对下属单位和分管机构的交易和监管。联盟链仅限于 联盟成员,因其只针对成员开放全部或部分功能,所以 联盟链上的读写权限、以及记账规则都按联盟规则来定 制。
这种方式与现有的中心化系统相比,不仅提升了结算、 清算效率,还能大大降低成本。联盟链几乎不采用工作 量证明共识机制而是采用权益证明等共识算法。
以比特币为例,参与交易的机构主要可以分为区块链基 础设施、交易平台、ICO 融资服务、区块链综合服务等 类型。
医疗机构之间和医疗机构与保险机构之间需要经常进行 数据交换。数据提供商之间更好的数据合作意味着更精 确的诊断和更有效的治疗,以及更高效的医疗体系。
区块链系统能够让医院、患者以及其他利益相关方在区 块链网络中安全高效地共享数据。
分布式能源管理的发展带来的问题是微电网的管理,以 及如何和现有的中央电网进行有效整合。区块链具有分 布式记账和智能合约体系,能够将能源流、信息流和资 金流有效衔接,成为能源互联网落地的技术保障。
个人的健康情况、事故记录等信息可能会上传至区块链 中,使保险公司在客户投保时可以更加及时、准确地获 得风险信息,从而降低核保成本、提升效率。
本文摘自东南大学宋宇波教授提供的学习资料,笔者分享出来提供大家学习交流,是一篇很好的了解区块链起源、技术及其运用的文章。请勿未经允许进行转载。
如有疑问,欢迎联系[email protected]讨论交流