虚拟机 (EVM)

EVM 的物理实例不能像人们指向云或海浪那样描述,它是真实存在并由数以千计运行以太坊客户端的计算机共同维护的一个实体。

PolySmartChain协议本身的存在仅仅是为了保持这种特殊状态机的连续、不间断和永久的运行。 这是所有PolySmartChain帐户和智能合约赖以存在的环境。 在链中任何给定的区块上,PolySmartChain只有一个“规范”状态,而 EVM 定义了从一个区块计算产生下一个区块新的有效状态的规则。

从账本到状态机

通常使用“分布式账簿”的类比来描述像比特币这样的区块链,它使用密码学的基本工具来实现去中心化的货币。 加密货币的行为类似于“正常”货币,这是因为有规则支配着人们可以做什么和不可以做什么来修改账簿。 例如,比特币地址不能花费比之前收到的更多的比特币。 这些规则是比特币和许多其他区块链上所有交易的基础。

虽然PolySmartChain有自己的本机加密货币 (PSCETH),遵循几乎完全相同的直观规则,但它也支持更强大的功能:智能合约。 对于此更复杂的功能,需要一个更复杂的类比。 PolySmartChain不是分布式账本,而是分布式状态机器。 PolySmartChain的状态是一个大型数据结构,它不仅保存所有帐户和余额,而且还保存一个机器状态,它可以根据预定义的一组规则在不同的区块之间进行更改,并且可以执行任意的机器代码。 在区块中更改状态的具体规则由 EVM 定义。

PolySmartChain状态转换函数

EVM 的行为就像一个数学函数:在给定输入的情况下,它会产生确定性的输出。 因此,将以太坊更正式地描述为具有状态转换函数非常有帮助:

    Y(S, T)= S'

给定一个旧的有效状态 (S)> 和一组新的有效交易 (T),以太坊状态转换函数 Y(S,T) 产生新的有效输出状态 S'

状态

在PolySmartChain的上下文中,状态是一个巨大的数据结构,称为调整后的 Merkle Patricia Trie,使所有帐户通过哈希链接,并可回溯到存储在区块链上的单个根哈希。

交易

交易是来自帐户的密码学签名指令。 交易分为两种:一种是消息调用交易,另一种是合约创建交易。

合约创建交易会创建一个新的合约帐户,其中包含已编译的 智能合约 字节码。 每当另一个帐户对该合约进行消息调用时,它都会执行其字节码。

EVM 说明

EVM 作为一个堆栈机运行,其栈的深度为 1024 个项。 每个项目都是 256 位字,为了便于使用,选择了 256 位加密技术(如 Keccak-256 哈希或 secp256k1 签名)。

在执行期间,EVM 会维护一个瞬态内存(作为字可寻址的字节数组),该内存不会在交易之间持久存在。

然而,合约确实包含一个 Merkle Patricia 存储 trie(作为可字寻址的字数组),该 trie 与帐户和部分全局状态关联。

已编译的智能合约字节码作为许多 EVM opcodes 执行,它们执行标准的堆栈操作,例如 XOR AND ADDSUB等。 EVM 还实现了一些区块链特定的堆栈操作,如 ADDRESSBALANCEBLOCKHASH 等。

EVM 实现

EVM 的所有实现遵循以太坊黄皮书中描述的规范,感谢以太坊所做的贡献。

Last updated