本文分享自天翼云开发者社区《区块链技术的基本理论》,作者:z****n
2008年10月31日,“中本聪”首次提出数字加密货币的概念。2009年,第一枚加密数字货币——比特币诞生。区块链技术作为比特币的核心技术,凭借去中心化、公开透明、不可篡改的特点受到国内外各界人士的高度关注,将其应用于各个领域(如金融、医疗保健、资产注册)。区块链是一个分布式系统,它记录所有的状态更新信息,例如加密货币系统中的交易。状态更新信息被复制并在所有参与方之间共享。区块链的主要特性是,它允许不受信任的参与方以一种安全的方式相互通信和发送状态更新信息,而无需完全受信任的第三方或授权的中心方。
为保证存储在区块链中的信息的安全性与完整性,区块链技术主要结合了以下三种密码学算法: 1.哈希算法:利用哈希函数,可以将任何长度的信息压缩为一个固定的二进制序列(哈希值)。哈希函数具有抗碰撞、不可逆和随机性等特性,为哈希算法的计算结果提供了安全性的保障。 2.非对称加密:在区块链中,使用了非对称加密技术来处理交易信息在传输过程中的安全问题。非对称加密算法中包含公钥与私钥。公钥是由私钥产生的,而私钥生成公钥的过程是单向的,因此私钥的安全性得到了保障。非对称加密过程可以归纳为:甲、乙双方首先分别产生一堆密钥,并将公钥公之于众;乙方使用甲方的公钥,对消息进行加密后发送给甲方,甲方利用自己的私钥解密其收到的加密消息;同理,甲方也会使用乙方的公钥对消息进行加密后发送给乙方,而乙方利用自己的私钥解密其收到的加密消息。 3.数字签名:在实际应用中,只采用非对称加密无法保证消息数据的安全性。在区块链系统中,可以使用数字签名来解决这个问题。数字签名是附加在交易信息上的具有不可否认性的数据,其签名过程如下图所示。传输交易信息时,发送方通过哈希运算生成对原始交易数据的数据摘要,并利用私钥对生成的数据摘要进行加密产生摘要密文,生成的摘要密文就是该交易的数字签名,随后将数字签名和交易信息打包发送给接收方。接收方接收到打包消息后,用与发送方一样的哈希函数对打包消息中的原始数据进行哈希运算生成数据摘要x,然后通过发送方的公钥对打包消息中的数字签名进行解密形成数据摘要y,若x和y的值相等,则接收方就能确认该交易信息是发送方的并且没有被篡改。
区块链平台一般被划分为数据层、网络层、共识层、协议层和应用层: 数据层:区块链技术中的最底层,该层进行数据的安全存储和交易,通过封装的链式结构、非对称加密和共识算法等技术手段实现。区块内存储区块链网络中产生的所有交易数据。区块结构如下图所示,每个区块由区块头和区块体构成。区块头包含当前区块版本号、前一区块哈希值、时间戳、随机数、当前区块哈希值以及Merkle数根。区块体包含交易的数量和具体的交易信息。
其中,区块版本号是要遵循的区块验证规则集;前一区块哈希值为上个区块的256位哈希值,它确保之前的区块无法被篡改,并使区块链在逻辑上链接到一起;时间戳标记了区块形成的大概时间,使得区块能够按照时间的先后次序进行排列;Merkle树根是该区块所有交集信息的哈希值;区块体中的Merkle树的叶子节点上的值是每个交易的哈希值,Merkle数根通过区块中Merkle树上的所有交易进行哈希运算产生并记入区块头,Merkle树上的每一叶子节点的哈希值发生改变都会导致Merkle树根值发生改变。因此,在Merkle树形成的过程中,一旦某一交易信息被人篡改,就会导致Merkle根节点发生改变。此时可以通过遍历Merkle树很容易定位找到篡改的交易。
网络层:区块链采用点到点(Peer-to-Peer)的方式来实现组网,消息以及数据的传输是在节点之间进行的,不需要任何中间环节或中央服务器,节点就拥有随时加入或离开网络的权利,因此P2P协议是网络层使用的传输协议。在区块链网络中,节点必须共同维护区块链系统。在区块链网络内,当一个新的交易被一个节点发布时,其他节点收到消息后对交易进行验证,该交易在验证通过后被放到一个新的区块中,由获得记账权的节点广播到网络中,而其他节点对新的区块进行验证,通过后存储到区块链中。
共识层:节点间的共识过程是指,互不信任的节点在区块链内利用特定的算法,短期之内消除恶意节点带来的干扰,从而对正确结果达成一致。区块链的关键技术之一是使高度分散的节点能够在去中心化的区块链中实现有效地共识。当前的共识机制主要有:比特币的工作量证明、以太坊的权益证明、EOS的委托权益证明等等。
合约层:由各种脚本、代码、算法机制及智能合约组成,是区块链可编程的基础。智能合约作为传统合约的数字化形式,就是利用算法或程序等技术在区块链内自动执行一段由传统合约编码的程序。智能合约为区块链增加了可编程的特性。
应用层:区块链的各种应用场景和案例,常应用在数字货币、金融交易、数据鉴证、选举投票、物流等方面。
区块链按准入机制可以分为三类:公有链、联盟链、私有链: 在公有链中,不需要经过许可,任意节点便可随意加入或离开区块链网络,一旦加入到区块链内,节点就可以获取从创世区块到当前区块上的所有交易数据,所有节点为确保区块链的稳定性,需要通过共识对新区块的产生以及对区块上记录的交易达成一致。
联盟链是一种半开放式区块链,内部由负责打包交易、生成新区块的记账节点和负责生成交易、查询交易的普通节点组成。联盟链适用于某个团体或者组织,它可以在一定范围内建立一个网络,仅通过授权的节点才能加入到网络中,使数据的生成和访问是可控的,同时也可以保证数据进行多方维护以及防止数据泄露。超级账本(Hyperledger Fabric)是联盟链的主要平台。
在私有链中,只利用区块链的总账技术进行记账,该区块链的写入权限仅由一个公司或个人独享。
根据区块链的发展演化阶段,区块链经历了以比特币为代表所实现可编程货币的区块链1.0模式、以太坊为代表实现可编程金融的区块链2.0模式、以 EOS为代表实现可编程社会的区块链3.0模式的三个发展时期。
区块链1.0:可编程货币是区块链1.0的典型应用。其中,比特币系统是一种全新的去中心化数字支付系统,可以满足用户随时随地进行交易的需求。交易过程信息都被存储在区块中,并且,每个区块中的内容都由全球网络中的无数计算机来检查、维护和更新,以确保区块中的内容不被篡改,做到记账结果的公开透明性。
区块链2.0:基于区块链1.0可编程的特点,人们将智能合约的理念加入到区块链中,获得了图灵完备的区块链2.0技术架构。区块链2.0中的节点可以通过简单的脚本实现对流通的数字资产的精确控制,区块内的交易内容扩展到可以包括金融信息,如知识产权、房产的契约等。如以太坊可通过智能合约使得区块链能够支持社会系统的诸多应用。
区块链3.0:随着区块链技术的进一步发展,为了有效的治理社会,人们预将在全社区对区块链普遍认可的前提下,将其应用于公证、仲裁、审计、投票等各种基础设施及日常应用中,形成一个可编程的社会。可编程社会能够以去中心化的形式配置全球资源,能够使得民主投票选举等与信用相关的社会活动变得更加公开透明,从而促进经济社会的发展和管理。区块链影响未来的互联网以及社会是必然的发展趋势。