diff options
author | Wei-Ning Huang <w@cobinhood.com> | 2018-10-11 10:57:44 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@byzantine-lab.io> | 2019-06-12 17:23:38 +0800 |
commit | b30675ce058e2c0b4f06a1e814eea7ac9c165555 (patch) | |
tree | b487962931c7b5dbd535213b399aa3c982451d3b /core | |
parent | 03f0a6a6a140d2286300e821cbca8b049b3fcec7 (diff) | |
download | go-tangerine-b30675ce058e2c0b4f06a1e814eea7ac9c165555.tar go-tangerine-b30675ce058e2c0b4f06a1e814eea7ac9c165555.tar.gz go-tangerine-b30675ce058e2c0b4f06a1e814eea7ac9c165555.tar.bz2 go-tangerine-b30675ce058e2c0b4f06a1e814eea7ac9c165555.tar.lz go-tangerine-b30675ce058e2c0b4f06a1e814eea7ac9c165555.tar.xz go-tangerine-b30675ce058e2c0b4f06a1e814eea7ac9c165555.tar.zst go-tangerine-b30675ce058e2c0b4f06a1e814eea7ac9c165555.zip |
core: vm: expose nodes as public
Diffstat (limited to 'core')
-rw-r--r-- | core/vm/governance.go | 66 |
1 files changed, 52 insertions, 14 deletions
diff --git a/core/vm/governance.go b/core/vm/governance.go index a60e99b95..e4c3b31e3 100644 --- a/core/vm/governance.go +++ b/core/vm/governance.go @@ -74,6 +74,33 @@ const abiJSON = ` }, { "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "nodes", + "outputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "publicKey", + "type": "bytes" + }, + { + "name": "staked", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, "inputs": [], "name": "lambdaBA", "outputs": [ @@ -581,6 +608,16 @@ func RunGovernanceContract(evm *EVM, input []byte, contract *Contract) ( // Solidity auto generated methods. // -------------------------------- + case "crs": + round := new(big.Int) + if err := method.Inputs.Unpack(&round, arguments); err != nil { + return nil, errExecutionReverted + } + res, err := method.Outputs.Pack(g.state.crs(round)) + if err != nil { + return nil, errExecutionReverted + } + return res, nil case "dkgComplaints": round, index := new(big.Int), new(big.Int) args := []interface{}{&round, &index} @@ -636,18 +673,8 @@ func RunGovernanceContract(evm *EVM, input []byte, contract *Contract) ( return nil, errExecutionReverted } return res, nil - case "crs": - round := new(big.Int) - if err := method.Inputs.Unpack(&round, arguments); err != nil { - return nil, errExecutionReverted - } - res, err := method.Outputs.Pack(g.state.crs(round)) - if err != nil { - return nil, errExecutionReverted - } - return res, nil - case "owner": - res, err := method.Outputs.Pack(g.state.owner()) + case "dkgSetSize": + res, err := method.Outputs.Pack(g.state.dkgSetSize()) if err != nil { return nil, errExecutionReverted } @@ -688,8 +715,13 @@ func RunGovernanceContract(evm *EVM, input []byte, contract *Contract) ( return nil, errExecutionReverted } return res, nil - case "dkgSetSize": - res, err := method.Outputs.Pack(g.state.dkgSetSize()) + case "nodes": + index := new(big.Int) + if err := method.Inputs.Unpack(&index, arguments); err != nil { + return nil, errExecutionReverted + } + info := g.state.node(index) + res, err := method.Outputs.Pack(info.owner, info.publicKey, info.staked) if err != nil { return nil, errExecutionReverted } @@ -710,6 +742,12 @@ func RunGovernanceContract(evm *EVM, input []byte, contract *Contract) ( return nil, errExecutionReverted } return res, nil + case "owner": + res, err := method.Outputs.Pack(g.state.owner()) + if err != nil { + return nil, errExecutionReverted + } + return res, nil case "phiRatio": res, err := method.Outputs.Pack(g.state.phiRatio()) if err != nil { |