https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/stateManager.md

StateManager

要与本博客的ethereumjs/ethereumjs-account-1-简介和API结合学习,然后你就能够发现StateManager其实就是得到账户中的值。账户 = 账户地址address + 账户状态(有nonce,balance,stateRoot,codeHash)。下面的方法得到或处理的就是账户中对应的这些数据信息

Interface for getting and setting data from an underlying state trie

从下面的状态前缀树得到和设置数据的接口

getAccount

Gets the ethereumjs-account associated with address. Returns an empty account if the account does not exist.

得到ethereumjs-account关联的地址。如果账户不存在则返回空账户

Parameters参数

  • address Buffer Address of the account to get 要得到的账户的地址
  • cb getAccount~callback 回调函数

getAccount~callback

Callback for getAccount method

Type: Function

Parameters

  • error Error an error that may have happened or null  出现的错误或者null
  • account Account An ethereumjs-account instance corresponding to the provided address 与提供的地址关联的ethereumjs-account实例

putAccount

Saves an ethereumjs-account into state under the provided address

将 ethereumjs-account保存在提供的地址下的状态中

Parameters

putContractCode

Adds value to the state trie as code, and sets codeHash on the account corresponding to address to reference this.

把值作为代码存储到状态前缀树中,并设置关联地址的账户的codeHash来引用它

Parameters

  • address Buffer Address of the account to add the code for  为了该账户地址添加代码
  • value Buffer The value of the code  代码的值
  • cb Function Callback function 回调函数

getContractCode

Gets the code corresponding to the provided address

得到与提供的地址相关联的代码

Parameters参数

getContractCode~callback

Callback for getContractCode method

getContractCode方法的回调函数

Type: Function

Parameters

  • error Error an error that may have happened or null 出现的错误或者null
  • code Buffer The code corresponding to the provided address. Returns an empty Buffer if the account has no associated code. 与提供的代码相关联的代码。如果该账户没有相关联的代码就返回空Buffer

getContractStorage

Gets the storage value associated with the provided address and key

得到与提供的地址和key相关联的存储值

Parameters

  • address Buffer Address of the account to get the storage for  为了该账户地址取得存储值
  • key Buffer Key in the account's storage to get the value for   得到值需要的账户存储中的key
  • cb getContractCode~callback

getContractStorage~callback

Callback for getContractStorage method

getContractStorage方法的回调

Type: Function

Parameters

  • error Error an error that may have happened or null 出现的错误或者null
  • storageValue Buffer The storage value for the account corresponding to the provided address at the provided key. If this does not exists an empty Buffer is returned  与提供的地址相关联的账户在提供的key处得到的存储值。如果不存在则返回空Buffer

putContractStorage

Adds value to the state trie for the account corresponding to address at the provided key

为了与地址相关联的账户在提供的key上给状态树添加值

Parameters

  • address Buffer Address to set a storage value for 为了该地址设置值
  • key Buffer Key to set the value at  将值设置在该key上
  • value Buffer Value to set at key for account corresponding to address 为了与地址相关联的账户在key上设置的值
  • cb Function Callback function 回调

clearContractStorage

Clears all storage entries for the account corresponding to address

为了与地址相关联的账户清理所有存储条目

Parameters

  • address Buffer Address to clear the storage of  清理的存储所在的地址
  • cb Function Callback function 回调函数

checkpoint检查点

Checkpoints the current state of the StateManager instance. State changes that follow can then be committed by calling commit or reverted by calling rollback.

检查点是StateManager实例的当前状态。随后的状态更改可以通过调用commit提交,也可以通过调用rollback返回

Parameters

  • cb Function Callback function 回调函数

commit提交

Commits the current change-set to the instance since the last call to checkpoint.

提交目前的状态-设置为从上次调用检查点以来的实例

Parameters

revert

Reverts the current change-set to the instance since the last call to checkpoint.

恢复当前的变化-设置为从上次调用检查点以来的实例

Parameters

getStateRoot

Gets the state-root of the Merkle-Patricia trie representation of the state of this StateManager. Will error if there are uncommitted checkpoints on the instance.

得到StateManager状态的Merkle-Patricia前缀树表示的状态根。如果在实例中有未提交的检查点将出错

Parameters

getStateRoot~callback

Callback for getStateRoot method

getStateRoot方法的回调

Type: Function

Parameters

  • error Error an error that may have happened or null. Will be an error if the un-committed checkpoints on the instance.  出现的错误或null。如果在示例中有没提交的检查点将会变成一个错误
  • stateRoot Buffer The state-root of the StateManager StateManager的状态根

setStateRoot

Sets the state of the instance to that represented by the provided stateRoot. Will error if there are uncommitted checkpoints on the instance or if the state root does not exist in the state trie.

设置通过提供的stateRoot表示的实例的状态。如果在实例中有未提交的检查点或在状态前缀树中状态根不存在将出错

Parameters

  • stateRoot Buffer The state-root to reset the instance to  重置的实例的状态根
  • cb Function Callback function 回调函数

generateCanonicalGenesis

Generates a canonical genesis state on the instance based on the configured chain parameters. Will error if there are uncommitted checkpoints on the instance.

基于在配置链参数在实例上生成规范生成状态。如果在实例上有未提交的检查点则出错

Parameters

  • cb Function Callback function 回调函数

accountIsEmpty

Checks if the account corresponding to address is empty as defined in EIP-161 (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-161.md)

查看与地址相关联的账户是否为空,就像 EIP-161中定义的一样。可看本博客(ethereum/EIPs-161 State trie clearing

Parameters

accountIsEmpty~callback

Callback for accountIsEmpty method

accountIsEmpty方法的回调

Type: Function

Parameters

  • error Error an error that may have happened or null  出现的错误或者null
  • empty Boolean True if the account is empty false otherwise  如果账户为空则返回true,否则为false

cleanupTouchedAccounts

Removes accounts form the state trie that have been touched, as defined in EIP-161 (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-161.md).

从状态前缀树中删除已修改的帐户,就像 EIP-161中定义的一样。可看本博客(ethereum/EIPs-161 State trie clearing

Parameters

DefaultStateManager默认的StateManager

Default implementation of the StateManager interface

StateManager接口的默认实现

Parameters

copy

Copies the current instance of the DefaultStateManager at the last fully committed point, i.e. as if all current checkpoints were reverted

在最后的完全提交点复制当前的DefaultStateManager实例,比如好像所有当前检查点都恢复了

dumpStorage

Dumps the the storage values for an account specified by address

为了被地址指定的账户倾倒存储值

Parameters

  • address Buffer The address of the account to return storage for  为了改账户地址返回存储值
  • cb dumpStorage~callback

dumpStorage~callback

Callback for dumpStorage method

dumpStorage方法的回调

Type: Function

Parameters

  • error Error an error that may have happened or null  出现的错误或null
  • accountState Object The state of the account as an Object map. Keys are are the storage keys, values are the storage values as strings. Both are represented as hex strings without the 0x prefix.作为对象映射的账户状态。Keys是存储键,values是字符串的存储值。都是没有0x前缀的十六进制表示的

hasGenesisState

Checks whether the current instance has the canonical genesis state for the configured chain parameters.

为了配置链参数查看是否当前的实例有规范生成状态

Parameters

hasGenesisState~callback

Callback for hasGenesisState method

hasGenesisState方法的回调

Type: Function

Parameters

  • error Error an error that may have happened or null出现的错误或null
  • hasGenesisState Boolean Whether the storage trie contains the canonical genesis state for the configured chain parameters.  存储前缀树是否为了配置链参数包含了规范生成状态

generateGenesis

Initializes the provided genesis state into the state trie

将提供的生成状态初始化到状态前缀树中

Parameters

ethereumjs/ethereumjs-vm-3-StateManager的更多相关文章

  1. ethereumjs/ethereumjs-vm-1-简介

    https://github.com/ethereumjs/ethereumjs-vm 其实这就是怎么自己使用该模块来生成一个类似geth客户端的以太坊虚拟机,然后进行各类区块链操作 SYNOPSIS ...

  2. ethereumjs/ethereumjs-vm-2-API文档

    https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/index.md vm.runBlockchain Processes blo ...

  3. ethereumjs/ethereumjs-vm-4-tests

    根据代码发现还要了解的模块有: ethereumjs/merkle-patricia-tree -对应数据存储的数据结构 ethereumjs-blockchain —— 区块链 ethereumjs ...

  4. ethereumjs/ethereumjs-util

    ethereumjs/ethereumjs-util Most of the string manipulation methods are provided by ethjs-util 更多的字符串 ...

  5. ethereumjs/ethereumjs-common-1-简介

    为了了解ethereumjs/ethereumjs-block-3-代码的使用需要了解的一个模块 https://github.com/ethereumjs/ethereumjs-common Com ...

  6. ethereumjs/ethereumjs-common-2-API文档

    https://github.com/ethereumjs/ethereumjs-common/blob/master/docs/index.md 该API的调用的详细例子可见ethereumjs/e ...

  7. ethereumjs/browser-builds

    https://github.com/ethereumjs/browser-builds ethereumjs - Browser Builds This repository contains br ...

  8. ethereumjs/ethereumjs-blockchain-2-test

    https://github.com/ethereumjs/ethereumjs-blockchain/tree/master/test 'use strict' const test = requi ...

  9. ethereumjs/ethereumjs-blockchain-1-简介和API

    https://github.com/ethereumjs/ethereumjs-blockchain SYNOPSIS概要 A module to store and interact with b ...

随机推荐

  1. 【Java学习经历系列-1】19岁的我,没遇见生命中的她,却遇见了java

    [写在前面]正直青春年少的你,遇到了你的她了吗?还是你也和我们今天的主人公一样,在最美好的年级,正在为你的初衷努力着,坚持着,奔波着..... 作者:李伟   我的黑客时代 01 大学专业是电子信息工 ...

  2. 工作经验:mybatis 处理 oracle Long 类型

    前言:mybatis 接收 oracle 中 LONG 类型的,报错:无效的列类型: getCLOB not implemented for class oracle.jdbc.driver.T4CL ...

  3. 安装和使用phpstorm

    下载网址:https://www.jetbrains.com/phpstorm/ 第一步:解压在官网上所下的文件,双击 Phpstorm10.0.3.exe 第二步:安装目录选择,自定义选择安装目录, ...

  4. PC端-上传头像并裁剪

    界面一: <link href="../theme/js/layui.layim/src/css/layui.css" rel="stylesheet"/ ...

  5. 【VS2012】F5不能自动编译新修改

    VS2012正常使用时,如果文件有修改,按F5运行时,会自动对修改的文件进行重新编译.今天遇到的情况却并没有.度娘了下,网上有相同的问题,解决办法是“工具->选项->项目和解决方案-> ...

  6. CAD增强属性块的还原(转)

    来自:http://blog.3snews.net/space.php?uid=13924959&do=blog&id=70174 作者:毛毛虫 Demo下载:CAD增强属性块的还原 ...

  7. Nuget Tips

    Install-Package时老是提示找不到Available Source,研究了下Nuget Package Manager的配置.发现有两个地方可以改: 1.Visual Studio中Too ...

  8. python学习笔记之——正则表达式

    1.re模块 Python通过re模块提供对正则表达式的支持,re 模块使 Python 语言拥有全部的正则表达式功能.使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用 ...

  9. 《APP移动终端决胜之道视觉设计艺术》学习笔记

    1.20-2.9 1.合理的层级化2.信息的整合(短信收发件箱),信息的整合就像创建文件夹,可以将相关的东西放在一起,以便于使用者搜索与查找3.(微信聊天界面)相比之下使用了对话框图形的界面,元素更加 ...

  10. 当EditText编辑时 hint 在 6.0 手机上显示不出来

    当EditText编辑时  hint 在 6.0 手机上显示不出来.... 就要增加一句话去重新设置颜色值   Android:textColorHint = "#707070"