本文摘自《白话区块链》
区块链技术理念
区块链的本质就是一种记账方法,是通过“区块链客户端”来记账。运行中的客户端软件称为“节点”。
在区块链系统中,所有的节点都是可以互相通信的,这个功能称为“网络路由”
共识算法就是一种大家都遵守的筛选方案。在选出一个节点后,则一段时间内的账务数据都以这个节点记录为准,这个节点记录后会广播出去,告诉其他的节点,其他节点只需要通过网络来接收新的数据,接收后各自根据自己现有的账本验证一下能不能接得上,有没有不匹配和不规范的,如果都符合要求,就存储到自己的账本中。
有些区块链系统在记账环节会设计出一种带有竞争的机制,让各个节点去抢,谁抢到这个机会谁就能获得打包数据的权利并且同时获得这笔奖励。这个过程称为“挖矿”。
在区块链系统中,识别不同的使用者是通过一种密码算法来实现的。这个算法分为公钥和私钥,公钥可以给别人,私钥自己保管。公钥是用来做身份识别的,从公钥可以算出地址来代表一个用户。用公钥加密的数据必须用对应的私钥才能解密,用私钥加密(通常称为“签名”)的数据必须用对应的公钥才能解密。
区块链技术栈
区块链是将产生的数据按照一定的时间间隔,分成一个个的数据块记录,然后再根据数据块大的先后关系串联起来。
区块链的基本技术:区块链账本、共识机制、密码算法、网络路由、脚本系统。
区块链账本:表示一种特有的数据记录格式。每一个数据块之间通过某个标志连接起来,从而形成一条链。区块数据在逻辑上分成了区块头和区块体。每个区块头中通过梅克尔根关联了区块体众多的交易事务,每个区块之间通过区块头哈希值串联起来。
共识算法:在区块链系统中,每个节点必须要做的事情就是让自己的账本跟其他节点的账本保持一致。共识算法就是一个规则,每个节点都按照这个规则去确认各自的数据。共识算法其实也是一种筛选方案,比如PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,权益证明)、DPoS(Delegate Proof of Stake,委托权益证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)等。
密码算法:主要用到,哈希算法、梅克尔树。
脚本系统:脚本系统可以使区块链中实现各种各样的业务功能。
网络路由:区块链系统是一个分布式系统,各个节点之间的通信靠的就是网络路由。
区块链分类和架构
区块链系统实际上是一个维护公共数据账本的系统,一切技术单元的设计都是为了更好地维护这个公共数据账本。通过共识算法达成节点的账本数据一致;通过密码算法确保账本数据的不可篡改性以及数据发送的安全性;通过脚本系统扩展账本数据的表达范畴。区块链系统实际上就是一种特别设计的数据库系统或者说分布式数据库系统。
区块链1.0架构
这个阶段的区块链系统主要是用来实现数字货币的。
矿工要对区块数据进行打包;矿工能获得系统的奖励。
钱包工具提供给用户管理自己账户地址以及余额。
浏览器用来查看当前区块链网络中发送的数据情况(比如,最新区块高度、内存池的交易数等)
RPC客户端和命令行接口用来访问核心节点
区块链2.0架构
区块链2.0的代表产品是以太坊。最大的区别是支持智能合约,用时拥有以太坊虚拟机
区块链3.0架构
区块链3.0是将区块链技术作为一种泛解决方案,可以面向行业应用。
区块链3.0可以看做是一套框架,通过对框架的配置和二次开发可以适应各行业的需求。“可插拔共识”意思就是共识机制是不固定的,可配置的。
区块链分类
根据网络范围分类:
- 公有链:完全对外开放的,任何人都可以使用,没有权限的设定,完全公开透明。没有第三方管理、依靠一组事先约定好的规则。这个规则确保每个参与者在不信任的网络环境中能够发起可靠的交易事务。
- 私有链:不对外开放,仅仅在组织内部使用。
- 联盟链:网络范围介于公有链和私有链之间。使用在多个成员角色的环境中,如银行之间的支付结算、企业之间的物流等。
根据部署环境分类:
- 主链:部署在生产环境的真正的区块链系统。
- 测试链:开发者为了方便大家学习使用而提供的测试用途的区块链网络。
根据对接类型分类:
- 单链:能够单独运行的区块链系统都称为“单链”。比如:比特币主链、测试链,以太坊主链、测试链。
- 侧链:属于一种区块链的跨链技术。
- 互联链:所有的区块链都互联起来(只能说是如果可以的话)