区块链相关基础知识点

Hash 算法特点

  • 正向快速:给定明文和 Hash 算法,在有限时间和有限资源内能计算得到 Hash 值。
  • 逆向困难:给定(若干) Hash 值,在有限时间内很难(基本不可能)逆推出明文。
  • 输入敏感:原始输入信息发生任何改变,新产生的 Hash 值都应该出现很大不同。
  • 冲突避免:很难找到两段内容不同的明文,使得它们的 Hash 值一致(发生碰撞)。

以太坊区块链相比比特币技术特点

  • 支持图灵完备的智能合约,设计了编程语言 Solidity 和虚拟机 EVM。
  • 选用了内存需求较高的哈希函数,避免出现强算力矿机、矿池攻击。
  • 叔区块激励机制,降低矿池优势,减少区块产生间隔。
  • 采用账户系统和世界状态,而不是UTXO,容易支持更复杂的逻辑。
  • 采用 Gas 限制代码执行指令数,避免循环执行攻击。
  • 支持 Pow 共识算法,并计划支持效率更高的 PoS算法。

PBFT 共识算法

  • pre-prepare:负责执行区块,产生签名包,并将签名包广播给所有共识节点;
  • prepare:负责收集签名包,某节点收集满2*f+1的签名包后,表明自身达到可以提交区块的状态,开始广播Commit包;
  • commit:负责收集Commit包,某节点收集满2*f+1的Commit包后,直接将本地缓存的最新区块提交到数据库。

    消息包共有的字段

字段名 字段含义
字段名 字段含义
idx 当前节点索引
packetType 请求包类型(包括PrepareReqPacket/SignReqPacket/CommitReqPacket/ViewChangeReqPacket)
height 当前正在处理的区块高度(一般是本地区块高度加一)
blockHash 当前正在处理的区块哈希
view 当前节点所处的视图
sig 当前节点对blockHash的签名

其中,PrepareReqPacket类型消息包包含了正在处理的区块信息 block。

以太坊整体架构

Juice功能特性介绍

  1. 共识机制
    Juice弃用了公链的PoW共识算法,采用PBFT算法(拜占庭容错)和Raft算法(基于投票选举),并使得共识算法插件化,用户可根据应用场景的特性针对性地选择共识算法。PBFT适用于节点可信度一般的应用场景,Raft适用于节点可信度很高的应用场景。
  2. 系统合约
    系统合约是为了支撑系统运行所需的一类管理合约。根据是否预设于创世区块中可分为两类,一类是预设系统合约,另一类是非预设系统合约。非预设始系统合约在链初始化完成后由管理员部署。
  3. 内置合约
    内置合约即硬编码合约,将计算资源消耗较大或数据存储量较大的一些标准接口由C++代码实现并内建在平台中。其特点是执行不需要智能合约虚拟机,其内部数据存储可以使用状态数据库也可以使用扩展数据库。
  4. 角色模型
    Juice在系统层面定义了链创建者、链管理员、Token管理员、节点管理员等角色。
    链创建者在链初始化时确定,由调用初始化接口的用户担任。链创建者可指定链管理员、Token管理员和节点管理员,可编辑链的部分基本信息,可编辑节点的部分基本信息,可编辑已注册用户的部分基本信息。
    链管理员可以被指定多个。链管理员可指定节点管理员,可编辑链的部分基本信息,可编辑节点的部分基本信息,可编辑已注册用户的部分基本信息。
    Token管理员只能被指定一个,且指定后不可更改。Token管理员可声明、发行和回收Token。
    节点管理员可以被指定多个。节点管理员可编辑自身创建的节点的部分基本信息。
  5. 合约防火墙
    合约的调用权限由合约防火墙进行控制,合约防火墙在合约账户的原生属性中实现。DApp开发者可对自己部署的合约设置防火墙规则,防火墙规则类似于Linux的iptables的进入规则。
    合约防火墙独立于合约的代码逻辑,因此,合约的代码只需要关注业务逻辑而不需要关注被调用的权限。
  6. 隐私保护
    Juice使用加密Token保护用户的隐私。加密Token在账户的原生属性中实现,并支持多种类型的Token定义。用户的Token余额和交易金额使用同态加密算法加密存储,使得所有的链上行为不涉及Token明文信息。Token的交易过程中使用零知识证明算法进行验证。
  7. Web控制台
    Juice提供了一个Web控制台,用于搭建和维护网络,以及监控整个网络的运行状态。用户在搭建和维护网络时,只需要在可视化的Web界面上进行操作即可,因此,用户的使用门槛大为降低。监控内容包括监控交易执行情况、节点出块情况、节点负载情况等等。
  8. 性能优化
    Juice对以太坊做了多方面的性能优化。优化了EVM的智能合约内存管理机制,使得智能合约内存使用效率及代码执行效率均有显著提升。改造了Nonce机制,在保证交易不可重放的前提下使得交易TPS显著提升。支持了WebSocket 长连接,通过主动推送交易回执的方式减少了交互次数。

零知识证明

零知识证明是指证明者能够在不向验证者提供信息本身内容的情况下,使验证者相信某个论断是真实可信的一种技术。
一个经典的洞穴例子,如下图所示。

R和S之间存在一道密门,并且只有知道咒语的人才能打开。Peggy知道咒语并想对Victor证明,但证明过程中不想泄露咒语。他该怎么办呢?
1)首先Victor走到P,Peggy走到R或者S。
2)Victor走到Q,然后让Peggy从洞穴的一边或者另一边出来。
3)如果Peggy知道咒语,就能正确地从Victor要求的那一边出来。
Victor重复上述过程很多次,直到他相信Peggy确实知道打开密门的咒语为止。
在这里,Peggy是证明方,Victory是验证方。Peggy通过上述方法证明了自己确实知道咒语,但是没有像Victory透露任何咒语的相关信息,这一过程也就是零知识证明。

区块链如何保证无法篡改

区块链是如何做到交易记录不可被篡改的
已写入区块链的历史数据不是不可篡改,而是很难篡改。如果基于 PBFT 共识,要同时篡改网络中三分之二节点的区块,如果基于 POW 共识,那矿工的算力要是其他竞争者的N倍(N取决于被修改区块距当前区块的距离)。
从数据结构上看,一旦修改了某个区块,后续所有的区块都需要修改才能确保修改的不会被发现。
从工作量证明看,就是说区块的生成是要消耗工作量才能完成的,需要调整后续的nonce才能使区块有效。
从技术维度,利用强大的加密算法和巧妙的数据结构确保每个修改都会被检测到。
从经济维度,利用工作量证明使得每次修改都需要付出巨大的经济成本。

您的支持将鼓励我继续创作!
0%