• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Substrate - 1 开始 - 1.5 常见术语

武飞扬头像
shiyivei
帮助1

1.5 常见术语

这些术语定义和解释了区块链和Substrate生态系统中常见的概念

公投人数自适应调整 (adaptive quorum biasing (AQB))

公投人数自适应调整允许更灵活的治理,它取消了为投票目的而设置的任意法定人数的要求。而这种要求会导致不良的治理机制。公投人数自适应调整机制在Democracy pallet中实现。Democracy pallet为链上实体(如集体或者个人代币持有者)提供了一个接口,他们可以以积极、消极或者中立的态度召集公投

如果针对某一项提议的投票率偏正,则提议被通过的门槛会随着参与投票的人数增加而降低,因此较高的投票率会增加公投通过的可能性。如果投票率偏负有时候也被称为默认同意,因为当投票者不参与时会算作默认通过。投票率偏中性时,则是简单的哪方投票多,哪方获胜

aggregation

常用在和FRAME相关的上下文中,aggregation或者pallet aggregation指的是把来自于多个运行时模块中相似的类型聚合成一个单个类型的过程。Pallet aggregation可以代表每个类型的相似类型。对包含了聚合类型的调用有时候叫做外部调用或者对外部对象的调用。目前,有六种数据类型可以被聚合

  • Call :使用一些参数调用的已发布函数
  • Error:函数调用失败的描述信息
  • Event:描述状态改变的pallet- emitted事件信息
  • Log:可扩展的header 项目
  • Metadata:用于检查上述信息
  • Origin:函数调用的来源

赞成投票(approval voting)

投票系统支持投票者投票给多个候选人(项目),到期得票数最多的人(项目)会获胜。在投赞成票时,需要注意以下几点:

  • 给所有候选人(项目)投票等同于未投票
  • 可以通过把票投其他所有候选人的方式来反对你不赞成的候选人

FRAME Elections Phragmen pallet 在一些以Substrate为基础的链上使用同意投票作为管理委员会

author

指负责创建区块的节点,区块author也叫区块生产者,在工作量证明的区块链中,这些节点叫做矿工

authority

指的是节点的集合体,管理区块链网络的共识。在权益证明的区块链中,例如,在一条使用FRAMEStaking pallet 的区块链中,权限通过代币加权提名和投票系统决定

authorities和validators有时候指的是同一件事,但是,实际上validators是一个更广泛的概念,它包含了链维护的其它方面,例如平行链的验证。一般而言,validators包含authorities(并不是很严格),也就意味着许多validators是authorities

authority round (Aura)

它是一个确定的共识协议,在这个协议中,只有在轮转列表里的authorities才能够创建区块。在authority round (Aura)的共识中,大多数在线authorities都被认为是诚实的

有关于Aura 共识算法的更多内容请参考官方[wiki文章]( the official wiki article)

Aura协议通常和GRANDPA 被用于混合共识协议中。Aura 被用于区块的产生和短期的probabilistic finality,而GRANDPA用于提供deterministic finality

区块链扩展盲分配 (blind assignment of blockchain extension (BABE))

一个和Aura是相似的区块生产协议。但是,在区块链扩展盲分配协议下,authorities可以基于可验证的随机函数赢得插槽,而不是通过轮流选择的方式。获胜者可以选择一条链并为其提交一个新区块

更多关于区块链扩展盲分配的信息请参考Web3 基金会的官方研究文档

block

区块是区块链的单个组成元素,它会把一系列extrinsic数据以加密的的方式绑定到区块的头部,区块通过父指针排列成树结构,指向父区块的是父区块的哈希,使用fork-choice rule和可选的finality将树修剪成列表

blockchain

是一个分布式计算网络,它使用了密码学让参与者就系统的状态随着时间的推移达成共识。组成区块链网络的计算机被称为节点

拜占庭容错 (byzantine fault tolerance (BFT))

指的是在一定比例的节点或者authorities 不可信或者存在恶意行为时分布式计算机网络仍然能够保持正常运行的能力。通常情况下,如果分布式网络可以在多达三分之一的节点是有缺陷的、离线的、恶意的并且充当攻击的一部分的情况下仍旧能保持正常运行,则该网络被认为具有拜占庭容错性

byzantine failure

节点故障超过达成共识所需的节点比例而导致的网络服务不可用

practical byzantine fault tolerance (pBFT)

实现拜占庭容错的早期方法,pBFT系统可以容忍多达1/3的参与者不靠谱。此系统的通信开销是n^2,n是系统中节点(参与者的)的数量

consensus

区块链上下文中,共识是一个节点就链的规范分叉达成一致的过程。共识由authorship, finality,和fork-choice rule组成

在Substrate生态系统中,这三个要素彼此独立,并且共识通常特指authorship。在Substrate节点的上下文中,共识引擎指的是为共识任务担保的节点子系统

另见hybrid consensus

consensus algorithm

它是一个能确保参与者在彼此不互信的情况下就计算结果的状态达成一致意见的算法。因为大多数共识算法都假定达到1/3的参与者或者节点不诚实网络仍旧能正常运行是拜占庭容错的

共识算法主要关注两个重要的方面:

  • 安全性:所有诚实节点最终都同意链的状态
  • liveness:链具有持续更新的能力

关于 Polkadot network 共识策略的更多详细信息请参考Polkadot Consensus系列博客

也可以了解hybrid consensus

cryptographic primitives

密码学原语通常是用来描述基本加密概念的术语,如签名方案和哈希算法。密码学原语对于Substrate生态系统中的很多概念来说非常重要。例如:

  • 哈希算法产生哈希数据 blocks,并且每个区块引用它的父区块
  • 使用哈希加密 state 并且构成trie数据结构,以实现有效验证
  • 数字签名方案用来确保不同 consensus 模型的安全,如authorities
  • 密码学方案用于识别和验证在Substrate运行时执行交易accounts

council

如果Collective pallet是网络基于FRAME运行时的一部分,那council大多数情况下指的是基于Substrate网络的Collective pallet实例,如Kusama or Polkadot 。council主要的工作是优化和平衡更具包容性的公投系统

database backend

指的是当区块链节点应用程序被调用时保持区块链网络状态的方式,基于Substrate的链如何实现以及使用database backend,请参考 Advanced storage

dev phrase

故意公开的助记词,一些常见的用于开发的账户Alice, Bob, Charlie, Dave, Eve, and Ferdie都来源于相同的助记词,它是:

bottom drive obey lake curtain smoke basket hold race lonely fit walk

Substrate生态系统中的许多工具,比如 subkey,允许用户仅指定路径比如//Alice就可以隐式地确定开发短语

digest

区块 中的可扩展字段,编码了多个区块链网络中的参与者需要的信息,包括:

  • 用于链同步的轻客户端
  • 用于区块验证的共识引擎
  • pre-runtime摘要就是runtime 本身

dispatch

执行带有一组预定义参数的函数。在使用FRAME进行运行时开发的上下文中,dispatch采用纯数据,该类型就是之前所讲的的Call,并且使用该数据用预定义的参数调用运行时模块中已发布的函数,已发布的函数使用了额外的参数,如origin 。它允许函数安全的确定其执行的来源

equivocating

一种错误或者恶意的行为,涉及在consensus机制中支持多个互斥选项

ethash

一些 proof-of-work consensus 系统中所使用的一个功能。比如以太坊区块链。它由Tim Hughes带领的团队开发

events

它是一种记录链下世界利益的方法,尤其是一些state 交易的发生。在FRAME上下文中,events是组合数据类型,每个pallet可以自定义,在F RAME中,events被作为一系列暂存项目执行,在区块执行后会立即检查这些临时存储项,并且在区块初始化的时候重置

executor

在给定的运行时中执行函数调用的方法,这些运行时有一系列依赖。Substrate有两个executor实现:WebAssembly 和 native

  • native executor 使用嵌入在节点中原生编译的运行时来执行调用,最新的节点可以使用它来优化性能
  • WebAssembly executor使用Wasm 二进制文件和Wasm 编译器来执行调用,无论区块链节点的版本如何,二进制文件都是最新的,因为它的更新是基于Substrate链的

extrinsic

包含在区块链中的外部数据,通常有两类extrinsics:

existential deposit

在余额模块中,账户的最低余额。不能创建存款金额最低余额的账户,如果存款金额低于此金额,Balances pallet会使用FRAME System API丢弃账户的引用,如果一个账户的所有引用都被丢弃,可以重新获取

finality

区块链持续进程不可逆转共识的一部分。当一个区块完成后,在不硬分叉的情况下,它封装的所有改变都是不可逆的。共识算法必须保证最后完成的区块不需要逆转,但是不同的共识算法可以定义不同的区块完成方式

在一个使用deterministic finality的共识协议中,协议保证区块链中的每个块都是规范块。在完整的链无法获得的情况下,使用deterministic finality是可取的,例如轻客户端GRANDPA波卡网络使用的deterministic finality协议

在使用probabilistic finality的共识协议中,finality 被用概率术语p表示,由B表示的提议块将保留在规范链中,随着B上区块的增加,p接近1

在使用instant finality的共识协议中,finality在区块产生后立即会得到保证。这种类型的非概率共识倾向于使用practical byzantine fault tolerance (pBFT)并且它的通信要较高

fork

表明区块链可以选择的不同路径,如果两个或者两个以上的区块的父块相同但是它们本身状态却不同,在这个问题没有解决之前,区块链无法继续更新。分叉不解决将会把链分裂成两条独立的链,但通过解决分叉问题,可以保证只有一条规范的链存在

Flaming Fir

一个基于Substrate的区块链测试网络,主要用来开发和测试Substrate区块链开发框架,更多信息请参考Substrate网络和Flaming Fir, Polkadot wiki

FRAME

它是Framework for Runtime Aggregation of Modularized Entities的首字母缩写,可以让开发者用一系列叫做 pallets的组件创建区块链运行时环境

运行时开发人员可以使用像下面的宏来与FRAME交互

  • #[pallet::event],
  • #[pallet::error],
  • #[pallet::storage],
  • #[frame_support::pallet]

宏让定义个性化的pallet变得很容易。可以使用construct_runtime!宏构建pallet以创建可用的运行时并且将其部署在基于Substrate的区块链上

the Substrate codebase中的使用惯例是在核心模块前面加上pallet_*。例如之前的宏都定义在frame_support模块中并且所有基于FRAME的运行时必须包含在frame_system模块中,在frame_support::construct_runtime宏被用作来创建包含frame_system模块的运行时后,可以使用其它pallets比如Balances pallet来扩展运行时的核心功能

full client

一个可以以安全的方式同步区块链的节点,这种安全的方式是执行和验证所有逻辑,全节点客户端和 轻客户端正好相反

genesis configuration

指定区块链初始状态的一种机制,初始状态或者第一个区块通常被称为创世状态或者创世区块。基于Substrate的链的genesis configuration是通过chain specification 文件完成的,chain specification文件让使用单个的Substrate 代码库作为多个独立配置的链变得很容易

GRANDPA

区块链的 deterministic finality机制,由Rust语言来实现,The formal specificationWeb3基金会维护

header

汇总区块信息的结构,header主要包含轻客户端使用的加密信息,它虽然获得是最小的安全性,但能够实现链的高效同步

hybrid consensus

它是一个共识协议,由用于生成区块和确定finality的独立或者耦合的机制构成,Hybrid consensus既可以让链像概率共识协议一样快速发展,比如 Aura,又可以让链保持像deterministic finality 共识协议那样的安全性,比如GRANDPA.通常而言,区块生成算法比 finality 机制更快。将区块的生成和最终化分开让Substrate 开发者可以更好的控制其链的性能

JSON-RPC

以JASON格式编码的无状态的、轻量级的远程调用协议。JSON-RPC提供了一种使用JavaScript 对象符号的标准方式在远程系统上调用函数,对于Substrate,这个协议通过 Parity JSON-RPC 库实现

keystore

它是Substrate上的一个子系统,用于管理用来产生新区块的健

Kusama

Kusama是一条基于Substrate的区块链,它采用了和波卡网络相似的设计。它是一个 *canary*网络,被称为波卡网络的”野表亲“, 作为canary网络,Kusama预计会比像Westend这样的测试网络更加稳定,但是不会像波卡这样的生产网络稳定

作为canary网络,Kusama由它的网络参与者控制,主要为了让其变得更稳定以促进有意义的实验

libp2p

一个点对点的网络堆栈,允许使用多种传输机制,包括WebSockets(在Web浏览器中使用)。Substrate使用的是libp2p网络堆栈的Rust实现

light client

一种不会存储链状态和产生区块的区块链节点。一个轻客户端能够验证加密原语并暴露一个远程调用(RPC)服务器,能够让区块链用户和区块链进行交互

macro

编程语言的一种特性,能够让开发者编写一系列可以一起被命名和执行的命令。FRAME开发环境为Rust提供了几种,可以用来编译一个运行时

metadata

提供了关于系统多个方面的信息,metadata展示了关于Substrate 区块链的信息,它能够让你和系统交互

node

区块链客户端运行的实例,每个客户端都是对等网络的一部分,它能够让区块链参与者彼此交流,Substrate节点可以在区块链网络中扮演很多角色,比如,产生区块的节点可以充当区块链验证者的角色。运行轻客户端的节点能够在资源受限制的环境中如 user interfaces或在嵌入式设备中促进交互

nominated proof-of-stake (NPoS)

一个确定validators or authorities 的方式,基于他们stake的意愿,这能够维持一个或者多个区块链节点正常运行

origin

一种FRAME原语,用来标记调用进运行时的函数来源,FRAME系统模块定义了三个内置的来源来源,作为一个pallet开发者,你可以自定义origin,就像在Collective pallet定义的那些origin一样

pallet

一个可用于扩展基于FRAME运行时的能力的模块,它和特定领域的逻辑和运行时原语绑定在一起,比如eventsstorage items

parachain

平行链,它从中继链派生而来,并且与之共享安全性和基础设施,你可以通过波卡维基百科了解更多与之相关的信息

Polkadot networ****k

波卡是一个区块链网络,充当异构区块链网络的中心枢纽,作为中继链,它通过提供基础设施和安全性来支持其它链—如平行链

proof-of-finality

可用于证明特定区块已完成的数据

proof-of-work

一种共识机制,通过要求网络参与者的工作量来阻止攻击。例如,一些工作量证明系统要求参与者使用Ethash函数计算一个哈希值作为已完成工作量的证明

relay chain

多个区块链异构网络的中心枢纽,中继链是在网络中为其它链提供基础设施和安全性的区块链,尤其是为了提供共识,中继链可以让平行链相互交流和交换数字资产而无需彼此信任

remote procedure call (RPC)

一种和计算机程序交互的机制,remote procedure call能够让开发者请求远程计算机程序和用他们提供的参数调用程序逻辑,Substrate节点在HTTP和WebSocket端点上暴露了一个RPC服务器

rhododendron

即instant finality,byzantine fault tolerant (BFT) 共识算法,众多采用pBFT共识协议的区块链采用的共识算法之一,请参考它在GitHub上的实现

rococo

一个波卡网络平行链测试网络,基于Substrate,它还在不断地发展,用于测试异构区块链网络的性能

runtime

区块链中区块的执行逻辑,运行时为节点提供了状态转换功能,在Substrate中,在连状态中运行时被作为ebAssembly二进制文件存储

slot

像Aura 和 BABE等共识引擎使用固定的、相等的时间间隔。在每个插槽中, 对于创建区块可以或者必须创建权限子集

stake-weighted voting

一种民主投票系统,每个Token一票而不是一人一票

state

在块与块之间长久存在的加密数据,作为块状态转换函数的一部分,可以用来创建新区块。在以Substrate为基础的区块链中,状态存放在支持高效创建增量摘要的trie数据结构中。这个trie作为一种简单的键值map暴露给了运行时,其中健和值都可以是任意字节数组

state transition function (STF)

区块链的逻辑决定了在处理区块时state会如何变化。在Substrate中,状态转换函数实际上等同于运行时

storage item

FRAME primitives为运行时提供了类型安全数据持久性化的能力。请在runtime storage中了解更多关于storage item的信息

Substrate

用于构建模块化、高效和可升级区块链的灵活框架,它由Rust语言构建,由Parity Technologies维护

transaction

一种可以在网络节点间安全传播的extrinsic,可以被签名和签名扩展来验证

transaction era

一段被定义的时间,用于描述一系列区块的数字。在此期间,交易包含在区块中,transaction eras用来防止交易重复攻击,这种情况下账户会被重置,防止双重支付的随机数会被重置为0

transaction pool

一系列虽然还没包括在区块中但是已经被认定有效的交易集合。标记交易池是一个交易池的实现。它允许运行时指定给定的交易是否有效、应该如何确定它的优先级以及它与池中的其他事务在依赖性和互斥性方面的关系。标记交易池实现被设计为可扩展的和通用的,足以表达未花费的交易支出UTXO模型和基于账户的交易模型

trie (Patricia Merkle Tree)

一种表示键值对的数据结构

The Patricia Merkle trie数据结构能够让使用加密哈希存储和检索数据组合中的项目。由于数据集中增加的改变会产生新的哈希,所以即使数据集非常大,数据的检索也非常的有效,通过使用这种方式,你可以不用检索整个数据集就能证明数据集是否包含了特定的键值对

validator

帮助维护区块链网络的半可信或者不可信的参与者,他们在激励机制下会做出有益于整个网络的行为,在Substrate中,validators 大致等同于运行在共识系统中的authorities,在polkadot中,validators 也管理着一些其它事务,比如保证数据的可用性和验证平行链的候选区块

WebAssembly (Wasm)

一种执行架构,可以高效、跨平台的表示确定的、机器可以执行的逻辑。WebAssembly 可以用很多语言编译,包括Rust语言,基于Substrate的区块链使用WebAssembly 二进制文件提供可移植的运行时,这些运行时可以作为链状态的一部分

Westend

一个由 Parity维护的,基于Substrate的区块链,并且作为一个测试网络服务于波卡网络

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcgjbe
系列文章
更多 icon
同类精品
更多 icon
继续加载