py-evm之Guides翻译-架构
py-evm系列译文,有不当之处请联系改正,原文如下:https://py-evm.readthedocs.io/en/latest/guides/architecture.html
py-evm系列译文之2-Guides翻译2:py-evm架构
架构
Py-EVM的主要用例是支持公共以太坊区块链。
但是,它的架构主要集中在可配置性和可扩展性上。在没有对核心库进行任何更改的情况下,应该可以将Py-EVM用于诸如私有链,联盟链甚至具有根本不同的VM语义的链的替代用例。
以下抽象用于表示基于Py-EVM的区块链的完整共识规则。
- 链:用于与区块链交互的高级API。
- 虚拟机:Chain中单个fork的高级API,(我理解的fork应该是分叉的意思)
- VMState:VM的当前状态,事务执行逻辑和状态转换函数。
- 消息:表示与VM执行相关的事务部分。
- 计算:VM执行的计算状态和结果。
- 操作码:单个操作码的逻辑。
链
术语**链(Chain)**用于封装:
- 状态转换功能(例如VM操作码和执行逻辑)
- 协议规则(例如块奖励,头奖励,难度计算,交易执行)
- 链数据(例如头,区块,交易和收据)
- 状态数据(例如余额,随机数,代码和存储)
- 链状态(例如跟踪链头,规范块)
!注意
虽然链用于包装这些概念,但其中许多实际上是在较低层定义的,例如底层虚拟机。
所述Chain
对象本身主要是一个接口和协调层。大多数Chain
API仅仅作为适当的传递 VM
。
链具有一个或多个底层虚拟机或VM。该链包含一个映射,该映射定义哪个VM应对哪些块有效。
公共主网以太坊区块链的链将为每个fork规则集定义一个单独的VM(例如Frontier,Homestead,Tangerine Whistle, Spurious Dragon,Byzantium)。
虚拟机
术语**虚拟机(VM)**用于封装:
- 单个fork规则集的状态转换函数。
- 用于事务执行的编排逻辑。
- 区块的构建和验证。
- 链数据存储和检索API
该VM
对象松散地映射了许多Chain API,用于检索链状态,例如块,头,事务和收据。它还负责块级协议逻辑,例如块创建和验证。
VMState
术语VMState用于封装:
- VM的执行上下文(例如
coinbase
或gas_limit
) - 状态根定义当前VM状态。
- 一些块验证
消息
术语**消息(Message)**来自于黄皮书。它封装了启动VM最外层执行所需的事务信息。
- 一些参数像
sender
,value
,to
消息可以被视为事务在VM的内部表示。
计算
术语**计算(Computation)**用于封装:
- VM执行期间的计算状态(例如内存,堆栈,gas计量)
- VM执行的计算结果(例如返回数据,gas消耗和退款,执行错误)
该抽象是实现操作码逻辑的接口。
操作码
术语**操作码(opcode)**被用于封装:
- VM中的单个指令,例如
ADD
或MUL
操作码。
操作码以TODO实现。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CapybaraJ!
评论