https://github.com/ethereumjs/ethereumjs-vm/blob/master/docs/index.md
vm.runBlockchain
Processes blocks and adds them to the blockchain
处理区块并将其添加到区块链中
Parameters输入参数
-
blockchain
Blockchain A blockchain that to process 一个处理的区块链 -
cb
Function the callback function 回调函数
VM
VM Class, new VM(opts)
creates a new VM object
VM类,VM(opts)
将创建一个VM对象,运行起来实现的感觉与ganache相似
Parameters输入参数
-
opts
Object-
opts.stateManager
StateManager aStateManager
instance to use as the state store (Beta API) 用于状态存储的StateManager
实例(还在实验阶段)其实这个就是区块上的state merkle-patricia树,用于存储区块上的所有账户的信息 -
opts.state
Trie a merkle-patricia-tree instance for the state tree (ignored if stateManager is passed) 用于状态树的一个merkle-patricia树(如果上面的stateManager已经传递,这个就可以忽略) -
opts.blockchain
Blockchain a blockchain object for storing/retrieving blocks (ignored if stateManager is passed) 为了存储/检索区块的区块链对象(如果上面的stateManager已经传递,这个就可以忽略) -
opts.chain
(String | Number) the chain the VM operates on [default: 'mainnet'] VM操作在那个链上(默认是mainnet链) -
opts.hardfork
String hardfork rules to be used [default: 'byzantium', supported: 'byzantium', 'constantinople' (will throw on unsupported)] 使用的硬分支规则(默认是byzantium',还支持'byzantium', 'constantinople',如果输入的是不支持的将抛出错误) -
opts.activatePrecompiles
Boolean create entries in the state tree for the precompiled contracts 为了预编译合约在状态树上创建条目,其实就是在state merkle-patricia树上手动添加一些账户的信息,就跟ganache一样,一开始就有可用的账户 -
opts.allowUnlimitedContractSize
Boolean allows unlimited contract sizes while debugging. By setting this totrue
, the check for contract size limit of 24KB (see EIP-170) is bypassed. (default:false
; ONLY set totrue
during debugging) 当调试时,允许不限制的合约大小。通过将其设置为true,来忽视合约大小设置为24KB的检查(细节看本博客ethereum/EIPs-170 Contract code size limit)。(默认为false,只在调试时设置为true) -
opts.emitFreeLogs
Boolean Changes the behavior of the LOG opcode, the gas cost of the opcode becomes zero and calling it using STATICCALL won't throw. (default:false
; ONLY set totrue
during debugging) 改变日志操作吗的行为,gas开销的操作码变为0,使用STATICCALL操作码调用它将抛出错误(默认为false,只有在调试时设置为true)
-
vm.runBlock
Processes the block
running all of the transactions it contains and updating the miner's account
处理区块,运行其中的所有交易并更新矿工账户
Parameters输入参数
-
opts
-
cb
runBlock~callback callback 回调函数
runBlock~callback
Callback for runBlock
method
runBlock
的回调
Type: Function
Parameters输入参数
-
error
Error an error that may have happened ornull 发生的错误或null
-
results
Object-
results.receipts
Array the receipts from the transactions in the block 区块中来自交易的receipt -
results.results
Array 返回结果
-
vm.runTx
Process a transaction. Run the vm. Transfers eth. Checks balances.
处理交易。运行虚拟机。交易eth。查看余额。
Parameters输入参数
-
opts
-
opts.tx
Transaction aTransaction
to run 运行的交易 -
opts.skipNonce
Boolean skips the nonce check 跳过nonce检查 -
opts.skipBalance
Boolean skips the balance check 跳过余额检查 -
opts.block
Block the block to which thetx
belongs, if no block is given a default one is created 交易属于的区块,如果没有,则创建一个默认块
-
-
cb
runTx~callback the callback 回调函数
runTx~callback
Callback for runTx
method
runTx
方法的回调
Type: Function
Parameters输入参数
-
error
Error an error that may have happened ornull
发生的错误或null
-
results
Object-
results.amountSpent
BN the amount of ether used by this transaction as abignum 被这个交易使用的ether的数量,BN格式
-
results.gasUsed
BN the amount of gas as abignum
used by the transaction 被这个交易使用的gas,BN格式 -
results.gasRefund
BN the amount of gas as abignum
that was refunded during the transaction (i.e.gasUsed = totalGasConsumed - gasRefund
) 在交易中被退还的gas,BN格式(使用的gas = 总使用的gas - 退还的gas)
-
-
vm
VM contains the results from running the code, if any, as described invm.runCode(params, cb) 虚拟机,如果存在,包含通过运行代码得到的结果,就像
vm.runCode(params, cb)
所说
vm.runCode
Runs EVM code
运行以太坊虚拟机代码
Parameters输入参数
-
opts
Object-
opts.account
Account theAccount
that the executing code belongs to. If omitted an empty account will be used 执行的代码属于的账户。如果省略则使用空账户 -
opts.address
Buffer the address of the account that is executing this code. The address should be aBuffer
of bytes. Defaults to0 执行这个代码的账户的地址。地址应该是字节的buffer格式。默认为0
-
opts.block
Block theBlock
thetx
belongs to. If omitted a blank block will be used 这个交易属于的区块。如果省略则使用一个黑块 -
opts.caller
Buffer the address that ran this code. The address should be aBuffer
of 20bits. Defaults to0 运行这个代码的地址。这个地址应该为20bits的buffer格式,默认为0
-
opts.code
Buffer the EVM code to run given as aBuffer 以buffer格式给出的用来运行的以太坊虚拟机的代码
-
opts.data
Buffer the input data 输入的数据 -
opts.gasLimit
Buffer the gas limit for the code 这个代码使用的gas的限制 -
opts.origin
Buffer the address where the call originated from. The address should be aBuffer
of 20bits. Defaults to0 这个调用起源的地址。
这个地址应该为20bits的buffer格式,默认为0
-
opts.value
Buffer the value in ether that is being sent toopt.address
. Defaults to0 被送给
opt.address
的ether。默认为0
-
-
cb
runCode~callback callback 回调函数
runCode~callback
Callback for runCode
method
runCode
方法的回调
Type: Function
Parameters输入参数
-
error
Error an error that may have happened ornull
发生的错误或null
-
results
Object-
results.gas
BN the amount of gas left 剩下的gas数量 -
results.gasUsed
BN the amount of gas as abignum
the code used to run 以bignum
格式给出的这个代码用来运行的gas数量 -
results.gasRefund
BN abignum
containing the amount of gas to refund from deleting storage values从删除的存储值中得到包含退还的gas的数量的大数 -
results.selfdestruct
Object anObject
with keys for accounts that have selfdestructed and values for balance transfer recipient accounts 包含自我毁灭的账户密钥和转移接收账户余额的值的对象 -
results.logs
Array anArray
of logs that the contract emitted 合约发出的日志数组 -
results.exception
Number0
if the contract encountered an exception,1
otherwise 如果合约遇到了异常则为0,否则为1 -
results.exceptionError
String aString
describing the exception if there was one 如果有异常则用来描述异常的字符串 -
results.return
Buffer aBuffer
containing the value that was returned by the contract 包含被合约返回的值的buffer
-
Event: beforeBlock
The beforeBlock
event beforeBlock
事件
Type: Object
Properties属性
-
block
Block emits the block that is about to be processed 发出关于将要被处理的区块
Event: afterBlock
The afterBlock
event afterBlock
事件
Type: Object
Properties属性
-
result
Object emits the results of processing a block 发出处理的区块的结果
Event: beforeTx
The beforeTx
event
Type: Object
Properties
-
tx
Transaction emits the Transaction that is about to be processed 发出将要被处理的交易
Event: afterTx
The afterTx
event
Type: Object
Properties
-
result
Object result of the transaction 交易的结果
Event: step
The step
event for trace output追踪输出的step
事件
Type: Object
Properties
-
pc
Number representing the program counter 代表项目的计数 -
opcode
String the next opcode to be ran 下一个运行的操作码 -
gasLeft
BN amount of gasLeft 剩下的gas数量 -
stack
Array anArray
ofBuffers
containing the stack 包含堆栈的Buffers
数组 -
account
Account theAccount
which owns the code running 拥有运行代码的账户 -
address
Buffer the address of theaccount 账户的地址
-
depth
Number the current number of calls deep the contract is 合约所在的目前的调用深度数 -
memory
Buffer the memory of the VM as abuffer 虚拟机的内存
-
stateManager
StateManager aStateManager
instance (Beta API) 一个StateManager
实例