https://github.com/ethereumjs/ethereumjs-common/blob/master/docs/index.mdhtml
该API的调用的详细例子可见ethereumjs/ethereumjs-common-3-testnode
Common class to access chain and hardfork parametersgit
访问链和硬分叉参数的Common类github
Parameters输入参数json
chain
(String | Number | Dictionary) String ('mainnet') or Number (1) chain 能够使用字符串(如'mainnet')或数字(如1)表示链hardfork
String String identifier ('byzantium') for hardfork (optional) (可选项)使用字符串标识('byzantium')表示supportedHardforks
Array Limit parameter returns to the given hardforks (optional) (可选项)返回给硬分叉的限制参数let c = new Common('mainnet')//使用的是mainnet链 let c = new Common('mainnet', 'byzantium') let c = new Common('mainnet', 'byzantium', ['byzantium', 'constantinople'])
⚠️若是你链接的是本身私有的chain,初始化的方式是:bootstrap
let chainParams = require('./testnet.json') //testnet.json中是具体的链描述信息 let c = new Common(chainParams, 'byzantium')
testnet.json为:数组
{
"name": "testnet", "chainId": 12345, "networkId": 12345, "comment": "Private test network", "genesis": { "hash": "0xaa00000000000000000000000000000000000000000000000000000000000000", "timestamp": null, "gasLimit": 1000000, "difficulty": 1, "nonce": "0xbb00000000000000", "extraData": "0xcc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "stateRoot": "0xdd00000000000000000000000000000000000000000000000000000000000000" }, "hardforks": [ { "name": "chainstart", "block": 0, "consensus": "poa", "finality": null }, { "name": "homestead", "block": 1, "consensus": "poa", "finality": null }, { "name": "tangerineWhistle", "block": 2, "consensus": "poa", "finality": null }, { "name": "spuriousDragon", "block": 3, "consensus": "poa", "finality": null }, { "name": "byzantium", "block": 4, "consensus": "poa", "finality": null } ], "bootstrapNodes": [ { "ip": "10.0.0.1", "port": 30303, "id": "11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "location": "", "comment": "" }, { "ip": "10.0.0.2", "port": 30303, "id": "22000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "location": "", "comment": "" } ] }
注意:网络
let chainParams = require('./testnet.json') delete chainParams['hardforks'] //若是有任何内容的缺失,初始化时将报错 let c = new Common(chainParams, 'byzantium') //报错
Sets the chain 设置链ide
Parameters函数
chain
(String | Number | Dictionary) String ('mainnet') or Number (1) chain representation. Or, a Dictionary of chain parameters for a private network. 能够使用字符串(如'mainnet')或数字(如1)表示链。或者对于私有网络则使用链参数字典调用:
let c = new Common('mainnet') c.setChain('ropsten') //从新将链设置为ropsten
Sets the hardfork to get params for
设置硬叉以获取参数
Parameters
hardfork
String String identifier ('byzantium')使用字符串标识('byzantium')表示let c = new Common('mainnet') c.param('gasPrices', 'ecAdd', 'byzantium') //500 c.setHardfork('byzantium') st.equal(c.param('gasPrices', 'ecAdd') //500
Internal helper function to choose between hardfork set and hardfork provided as param
内部帮助函数,用于在硬分叉集中选择并提供其为参数
Parameters
hardfork
String Hardfork given to function as a parameter 做为函数参数的硬分叉onlySupported
Returns String Hardfork chosen to be used 返回选择使用的硬分叉
Internal helper function, returns the params for the given hardfork for the chain set
内部帮助函数,返回链集的给定硬分叉的参数
Parameters
hardfork
String Hardfork name 硬分叉名字Returns Dictionary
Internal helper function to check if a hardfork is set to be supported by the library
内部帮助函数,查看设置的硬分叉是否被库支持
Parameters
hardfork
String Hardfork name 硬分叉的名字Returns Boolean True if hardfork is supported 若是硬分叉被支持则返回true
调用:
let c = new Common('mainnet', 'byzantium', ['byzantium', 'constantinople']) c._isSupportedHardfork('byzantium') //返回true c._isSupportedHardfork('spuriousDragon') //返回false
Returns the parameter corresponding to a hardfork
返回与硬分叉相关联的参数
Parameters
topic
String Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow', 'casper', 'sharding') 参数主题(有'gasConfig', 'gasPrices', 'vm', 'pow', 'casper', 'sharding') name
String Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic) 参数名字 (好比'gasConfig' 主题中的 'minGasLimit' )hardfork
String Hardfork name, optional if hardfork set 影分叉的名字,若是硬分叉集可选let c = new Common('mainnet') c.param('gasPrices', 'ecAdd', 'byzantium') //500 c.setHardfork('byzantium') st.equal(c.param('gasPrices', 'ecAdd') //500
Returns a parameter for the hardfork active on block number
返回在区块数中活跃硬分叉的参数
Parameters
topic
String Parameter topic 参数主体name
String Parameter name 参数名blockNumber
Number Block number 区块数let c = new Common('mainnet', 'byzantium') c.paramByBlock('pow', 'minerReward', 4370000) //'3000000000000000000'
Checks if set or provided hardfork is active on block number
查看是否设置了或提供的硬分叉在区块数中是活跃的
Parameters
hardfork
String Hardfork name or null (for HF set) 硬分叉名字或nullblockNumber
Number 区块数opts
Array
opts.onlySupported
Array.Boolean optional, only allow supported HFs (default: false) (可选的)表示只支持HFs ,即初始化时本身设置的supportedHardforks
(默认为false)Returns Boolean
let c = new Common('ropsten') c.hardforkIsActiveOnBlock('byzantium', 1700000) //返回true,等价于下面的 c.activeOnBlock(1700000) //返回true c.hardforkIsActiveOnBlock('byzantium', 1700005)//返回true c.hardforkIsActiveOnBlock('byzantium', 1699999) //返回false
c = new Common('ropsten', 'byzantium') c.hardforkIsActiveOnBlock(null, 1700000) //true,由于上面已经设置链分叉为 'byzantium',因此这里使用的是null c.hardforkIsActiveOnBlock(null, 1700005) //true c.hardforkIsActiveOnBlock(null, 1699999) //false
Alias to hardforkIsActiveOnBlock when hardfork is set
当硬分叉被设置时,其为hardforkIsActiveOnBlock的别名
Parameters
blockNumber
Number区块数opts
Array
opts.onlySupported
Array.Boolean optional, only allow supported HFs (default: false)(可选的)表示只支持HFs ,即初始化时本身设置的supportedHardforks
(默认为false)Returns Boolean
c = new Common('ropsten', 'byzantium')//当分叉已经设置时 c.hardforkIsActiveOnBlock(null, 1700000) //true,或使用 c.activeOnBlock(1700000)
Sequence based check if given or set HF1 is greater than or equal HF2
基于序列的检查是否给定的或设置的硬分叉1强过或等同于硬分叉2时
Parameters
hardfork1
String Hardfork name or null (if set) 硬分叉名字或nullhardfork2
String Hardfork name 硬分叉名字opts
Array
opts.onlyActive
Array.Boolean optional, only active HFs (default: false)(可选的)表示活跃HFs(默认为false)opts.onlySupported
Array.Boolean optional, only allow supported HFs (default: false)(可选的)表示只支持HFs ,即初始化时本身设置的supportedHardforks
(默认为false)Returns Boolean
let c = new Common('ropsten') c.hardforkGteHardfork('constantinople', 'byzantium') //返回true,由于constantinople >= byzantium (provided) c.hardforkGteHardfork('spuriousDragon', 'byzantium') //false
Alias to hardforkGteHardfork when hardfork is set
当硬分叉被设置时其为hardforkGteHardfork别名
Parameters
hardfork
String Hardfork name硬分叉名字opts
Array
opts.onlyActive
Array.Boolean optional, only active HFs (default: false)(可选的)表示活跃HFs(默认为false)opts.onlySupported
Array.Boolean optional, only allow supported HFs (default: false)(可选的)表示只支持HFs ,即初始化时本身设置的supportedHardforks
(默认为false)Returns Boolean
c = new Common('ropsten', 'byzantium') //当分叉已经被设置时 c.hardforkGteHardfork(null, 'spuriousDragon') //返回true,或使用下面 c.gteHardfork('spuriousDragon') //true
Checks if given or set hardfork is active on the chain
检查是否给定的或设置的硬分叉在链上是活跃的
Parameters
hardfork
String Hardfork name, optional if HF set 硬分叉名字opts
Array
opts.onlySupported
Array.Boolean optional, only allow supported HFs (default: false) 可选的)表示只支持HFs ,即初始化时本身设置的supportedHardforks
(默认为false)Returns Boolean
let c = new Common('ropsten') c.hardforkIsActiveOnChain('byzantium') //true c.hardforkIsActiveOnChain('dao') //false c.hardforkIsActiveOnChain('spuriousDragon', { onlySupported: true })//由于这里并无设置,可是使用了onlySupported: true,因此会报出"spuriousDragon"为不支持的分叉的错误 c = new Common('ropsten', 'byzantium') c.hardforkIsActiveOnChain() //true,即设置的'byzantium'在ropsten链中活跃
Returns the active hardfork switches for the current chain
返回当前链的活跃硬分叉开关
Parameters
blockNumber
Number up to block if provided, otherwise for the whole chain 若是提供则查询至该指定区块,不然为整条链opts
Array
opts.onlySupported
Array.Boolean optional, limit results to supported HFs (default: false)(可选的)表示只支持HFs ,即初始化时本身设置的supportedHardforks
(默认为false)Returns Array Array with hardfork arrays 硬分叉数组
let c = new Common('ropsten') c.activeHardforks().length //返回5,说明ropsten链中有5个活跃分叉类型 c.activeHardforks()[3]['name'] //'spuriousDragon' c.activeHardforks(9).length //返回3,即直到区块9有的活跃分叉个数为3
c = new Common('ropsten', null, ['spuriousDragon', 'byzantium', 'constantinople']) c.activeHardforks(null, { onlySupported: true }).length //返回2 ,onlySupported: true说明只支持supportedHardforks里面的分叉,因此返回的结果就从5变成了2,只包含了2个活跃分叉类型
Returns the latest active hardfork name for chain or block or throws if unavailable
返回链或区块最新的活跃硬分叉的名字,若是不可行则抛出错误
Parameters
blockNumber
Number up to block if provided, otherwise for the whole chain若是提供则查询至该指定区块,不然为整条链opts
Array
opts.onlySupported
Array.Boolean optional, limit results to supported HFs (default: false)(可选的)表示只支持HFs ,即初始化时本身设置的supportedHardforks
(默认为false)Returns String Hardfork name 硬分叉名
let c = new Common('ropsten') c.activeHardfork() //返回byzantium ,说明整条链最新的分叉为byzantium c.activeHardfork(10) //返回spuriousDragon,即到区块10的最新分叉类型为spuriousDragon
c = new Common('ropsten', null, ['tangerineWhistle', 'spuriousDragon']) c.activeHardfork(null, { onlySupported: true }) //返回'spuriousDragon',由于里最新的类型为它supportedHardforks
Returns the hardfork change block for hardfork provided or set
为提供或设置的硬分叉返回硬分叉改变块
Parameters
hardfork
String Hardfork name, optional if HF set 硬分叉名,若是硬分叉集设置则可选Returns Number Block number 返回区块数
let c = new Common('ropsten') c.hardforkBlock('byzantium') //返回1700000,获得byzantium分叉开始的区块数
True if block number provided is the hardfork (given or set) change block of the current chain
若是提供的区块数是目前链的硬分叉(给定或设置的)改变区块,则返回true
Parameters
blockNumber
Number Number of the block to check 查看的区块数hardfork
String Hardfork name, optional if HF set 硬分叉名,若是硬分叉集设置则可选Returns Boolean
let c = new Common('ropsten') c.isHardforkBlock(1700000) //返回true c.isHardforkBlock(1700001) //返回false
Provide the consensus type for the hardfork set or provided as param
为设置或提供的硬分叉集提供共识类型做为参数
Parameters
hardfork
String Hardfork name, optional if hardfork set 硬分叉名,若是硬分叉集设置则可选Returns String Consensus type (e.g. 'pow', 'poa') 返回共识类型(如'pow', 'poa')
let c = new Common('mainnet') c.consensus('byzantium') //返回byzantium分叉共识为'pow'
Provide the finality type for the hardfork set or provided as param
为设置或提供的硬分叉集提供结束类型做为参数
Parameters
hardfork
String Hardfork name, optional if hardfork set 硬分叉名,若是硬分叉集设置则可选Returns String Finality type (e.g. 'pos', null of no finality) 结束类型(如'pos',没有则为null)
let c = new Common('mainnet') c.finality('byzantium') //null
Returns the Genesis parameters of current chain
返回当前链的初始状态参数
Returns Dictionary Genesis dict 初始字典
如:
"genesis": { "hash": "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3", "timestamp": null, "gasLimit": 5000, "difficulty": 17179869184, "nonce": "0x0000000000000042", "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", "stateRoot": "0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544" }
调用:
let c = new Common('mainnet') c.genesis().hash //返回"0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3"
Returns the hardforks for current chain返回当前链的硬分叉
Returns Array Array with arrays of hardforks 硬分叉的数组
如:
"hardforks": [ { "name": "chainstart", "block": 0, "consensus": "pow", "finality": null }, { "name": "homestead", "block": 1150000, "consensus": "pow", "finality": null } ]
调用:
let c = new Common('mainnet') c.hardforks()[1]['block']//返回1150000
Returns the hardfork set 返回硬分叉集
Returns String Hardfork name 硬分叉名字
调用:
let c = new Common('mainnet', 'byzantium') c.hardfork() //返回'byzantium'
Returns bootstrap nodes for the current chain 返回当前链的bootstrap节点
Returns Dictionary Dict with bootstrap nodes bootstrap节点字典
如:
"bootstrapNodes": [ { "ip": "13.93.211.84", "port": 30303, "id": "3f1d12044546b76342d59d4a05532c14b85aa669704bfe1f864fe079415aa2c02d743e03218e57a33fb94523adb54032871a6c51b2cc5514cb7c7e35b3ed0a99", "location": "US-WEST", "comment": "Go Bootnode" }, { "ip": "191.235.84.50", "port": 30303, "id": "78de8a0916848093c73790ead81d1928bec737d565119932b98c6b100d944b7a95e94f847f689fc723399d2e31129d182f7ef3863f2b4c820abbf3ab2722344d", "location": "BR", "comment": "Go Bootnode" } ]
调用:
let c = new Common('mainnet') c.bootstrapNodes()[0].port //返回:30303
Returns the Id of current chain 返回当前链的ID
Returns Number chain Id
调用:
let c = new Common('mainnet')
c.chainId() //返回1
Returns the name of current chain 返回当前链的名字
Returns String chain name (lower case) (小写)
调用:
let c = new Common('mainnet') c.chainName() //返回'mainnet'
Returns the Id of current network 返回当前网络的ID
Returns Number network Id
调用:
let c = new Common('mainnet') c.networkId() //返回1