区块链技术
1. 什么是区块链
1.1 定义
- 区块链是一个分布式账本,一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。
- 区块链是一个很难被随意更改的分布式数据库,所有系统参与者共同完成这个数据库的记录,存储和维护工作。
- 区块链是多种技术的整合,是一种新的数据记录、存储和表达的方式。
- 简单地说,区块链就是不依赖中心化的记账,
1.2 分类
分类 | 概 念 |
---|---|
公有链 | 无官方组织及管理机构,无中心服务器,参与的节点按照系统规则自由接入网络、不受控制,节点间基于共识机制开展工作 |
私有链 | 建立在某个企业内部,系统的运作规则根据企业要求进行设定,修改甚至是读取权限仅限于少数节点,同时仍保留着区块链的真实性和部分去中心化的特性 |
联盟链 | 介于公有链和私有链之间,更符合大部分行业场景,适度对外开放 |
1.3 区块链的特点
- 完全分布式
- 每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝。任一节点失效,其余节点仍能正常工作。
- 可靠性和不可篡改性
- 破坏区块链系统需要攻击51%以上的节点。
- 去信任性
- 区块链系统并不基于信用体系,而是基于密码学原理。参与整个系统中的每个节点之间通过数字签名技术进行验证,节点之间是无需互相信任的,因为每个节点都有这个网络的所有数据。
- 集体维护
- 系统中的数据块由整个系统中所有具有维护功能的节点来共同维护,而这些具有维护功能的节点是分布式的,任何人都可以参与。
- 完全透明
- 整个系统的运作规则(算法)、数据(账本)都是公开透明的,可即时审计的。
- 可追溯
- 区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易历史。
2. 区块链相关概念和技术
2.1 相关概念
- 公钥
- 相当于账号,全网每个节点都有一个公钥,别人付钱时都是付给这个公钥
- 私钥
- 相当于你的账号的身份证明,私钥可以解开公钥加密的数据,说明付款方确实是你。私钥必须妥善保存,一旦丢失,就丢失了账户内的所有数据也就是所有财产。
- 交易
- 节点之间发生的支付就是交易
- 区块
- 一段时间内的所有交易会打包成一个区块
- 这个区块还会记录上一个区块的hash值,使得上一个区块不可篡改。
- 区块会包含时间戳,这个时间戳解决了“双花”问题,也就是一个货币不能被支付两次,区块链技术中承认时间戳在前的交易的有效性。
- 区块链
- 由于每个区块都有上一个区块的hash值,造成每生成一个新区快,就会造成老区块的不可篡改,从而形成全部数据的不可篡改。
- 记账权/挖矿
- 所谓记账权,也就是比特币中的挖矿,其实就是把从上次区块生成后到现在为止的所有交易打包再打上时间戳,向全网公示,51%的节点确认区块有效则该区块就加入到区块链的末端,成为账本的一部分。
- 由于不存在中心,所以记账权是全网争夺的,大家通过计算一道密码学难题,谁先解出来,并获得全网共识,谁就争夺到记账权。
- 因为要鼓励节点参与记账,所以争夺到记账权会有报酬,就是若干比特币。
- 共识机制
- 就是所有分布式节之间怎么达成共识,通过算法来生成和更新数据,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。以比特币为例,采用的是“工作量证明”(Proof Of Work,简称POW)。工作量是需要算力的,通过工作量证明,有效的防止了篡改和伪造,因为如果要达到伪造和篡改的工作量,大概需要上亿元成本的算力。
2.2 相关技术
- 数字签名
- 数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的。二是数字签名能确定消息的完整性。
- **SHA256 **
- 一种求Hash值的加密算法。将任何一串数据输入到SHA256将得到一个256位的Hash值(散列值)。相同的数据输入将得到相同的结果。输入数据只要稍有变化(比如一个1变成了0)则将得到一个千差万别的结果,且结果无法事先预知。
- Merkle Tree
- 一种哈希二叉树,使用它可以快速校验大规模数据的完整性。在比特币网络中,Merkle 树被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何一笔交易信息的改变都会使得使得 Merkle 树改变。
- 时间戳服务器
- 用来进行时间比对以及验证处理,时间戳服务器是一款基于PKI(公钥密码基础设施)技术的时间戳权威系统,对外提供精确可信的时间戳服务。它采用精确的时间源、高强度高标准的安全机制,以确认系统处理数据在某一时间的存在性和相关操作的相对时间顺序,为信息系统中的时间防抵赖提供基础服务。
3. 节点网络和交易过程
3.1 节点网络
- 任何机器都可以运行一个完整的比特币节点,一个完整的比特币节点包括如下功能:
- 钱包:允许用户在区块链网络上进行交易
- 完整区块链:记录了所有交易历史,通过特殊的结构保证历史交易的安全性,并且用来验证新交易的合法性
- 矿工:通过记录交易及解密数学题来生成新区块,如果成功可以赚取奖励
- 路由功能:把其它节点传送过来的交易数据等信息再传送给更多的节点
- 除了路由功能之外,其他的功能都不是必须的。一个个的节点构成了节点网络,节点的数量决定了区块链网络的健壮性,节点越多,网络越安全。
3.2 交易过程(以比特币为例)
- 第1步:所有者A利用他的私钥对前一次交易(比特货来源)和下一位所有者B签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。此时B以公钥作为接收方地址。
- 第2步:A将交易单广播至全网,比特币就发送给了B,每个节点都将收到的交易信息纳入一个区块中。对B而言,该枚比特币会即时显示在比特币钱包中,但直到区块确认成功后才可用。目前一笔比特币从支付到最终确认成功,得到6个区块确认之后才能真正确认到帐。
- 第3步:每个节点通过解一道数学难题,从而去获得创建新区块权利,并争取得到比特币的奖励(新比特币会在此过程中产生)。节点反复尝试寻找一个数值,使得将该数值、区块链中最后一个区块的Hash值以及交易单三部分送入SHA256算法后能计算出散列值X(256位)满足一定条件(比如前20位均为0),即找到数学难题的解。由此可见,答案并不唯一。
- 第4步:当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其他节点核对。时间戳用来证实特定区块必然于某特定时间是的确存在的。比特币网络采取从5个以上节点获取时间,然后取中间值的方式作为时间戳。
- 第5步:全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。每个区块的创建随着全网算力的不断变化,会随算力增强而缩短、随算力减弱而延长。
4. 区块链的应用
- 区块链1.0应用:数字货币
- 区块链2.0应用:智能合约+数字货币,例如:跨境支付、反洗钱、证券发行与交易、数字化资产等。
- 区块链3.0应用:扩展到金融行业以外其他行业
- 隐私数据存储:区块链的高冗余存储、去中心化、高安全性和隐私保护等特点,使其特别适合存储和保护重要隐私数据。
- 防伪溯源:善款进入系统后,整个生命周期都将记录在区块链上,没有人工拨付等环节,每一笔款项的去向很难人工更改。这样就可以促进公益捐款全过程的开放和透明。
- 身份认证:区块链数字身份识别证书
- 能源管理:去中心化网络,让网内用户在其屋顶太阳能发电超过需求时,可卖给社区的邻居,可以彼此互通有无,并以区块链虚拟货币来结算。
- 投票:开源在线投票。
5. 区块链存在的一些问题
- 性能与容量问题
- 去中心化程度与共识机制效率的矛盾:去中心化程度越高,共识机制效率越低,交易时延越长,交易吞吐越低,因此两者必须平衡。
- 账本存储容量和处理性能的矛盾:账本规模的增长,会带来节点的硬件资源门槛的提高。
- 安全性局限
- 51%攻击:需要引入大量节点,如果节点太少,51%攻击很容易。而节点太多,又会出现高能耗的问题。
- 私钥与终端安全:私钥存储在用户终端本地,如果私钥被窃取,就会出现资金损失。
- 共识机制安全:PoW、PoS的共识机制是否真正安全,缺乏严格的证明和试验。
- 尚未建立统一的标准
- 没有清晰统一的概念界定,又缺少权威的机构对区块链产品进行评定,这极易造成在涉及区块链的项目谈判、实施过程中出现问题,更谈不上区块链的大规模推广和应用。
- 衍生市场混乱
- 处于炒作高峰期的区块链技术不仅受到社会大众的关注,而且存在着被不法分子所利用进行欺诈的情况。假数字货币的流通,影响区块链行业的正常有序发展。
- 应用规模与抗压能力的矛盾
- 目前的区块链应用规模较小,尚缺乏对大规模区块链应用的案例。可以预知的是,大规模的区块链必然需要更强的运算能力,更大的存储,更快的网络传输带宽,同时也会产生更多的交易广播风暴。这种广播风暴几乎是无法抑制的,所以在大规模商用之前,区块链还有很长的路要走。