// Copyright 2019 The dexon-consensus Authors // This file is part of the dexon-consensus library. // // The dexon-consensus library is free software: you can redistribute it // and/or modify it under the terms of the GNU Lesser General Public License as // published by the Free Software Foundation, either version 3 of the License, // or (at your option) any later version. // // The dexon-consensus library is distributed in the hope that it will be // useful, but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser // General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with the dexon-consensus library. If not, see // . package vm // The governance ABI is generated from: // https://github.com/dexon-foundation/governance-abi const GovernanceABIJSON = ` [ { "constant": true, "inputs": [ { "name": "", "type": "address" }, { "name": "", "type": "address" } ], "name": "delegatorsOffset", "outputs": [ { "name": "", "type": "int256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" }, { "name": "", "type": "uint256" } ], "name": "dkgComplaints", "outputs": [ { "name": "", "type": "bytes" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "notarySetSize", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "dkgSetSize", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "DKGResetCount", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "nodes", "outputs": [ { "name": "owner", "type": "address" }, { "name": "publicKey", "type": "bytes" }, { "name": "staked", "type": "uint256" }, { "name": "fined", "type": "uint256" }, { "name": "name", "type": "string" }, { "name": "email", "type": "string" }, { "name": "location", "type": "string" }, { "name": "url", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "miningVelocity", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "lambdaBA", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "minStake", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "crs", "outputs": [ { "name": "", "type": "bytes32" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "dkgMPKReadysCount", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" }, { "name": "", "type": "address" } ], "name": "dkgMPKReadys", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" }, { "name": "", "type": "uint256" } ], "name": "delegators", "outputs": [ { "name": "owner", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "undelegated_at", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "blockGasLimit", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "nodesOffsetByID", "outputs": [ { "name": "", "type": "int256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "totalStaked", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "nodesOffsetByAddress", "outputs": [ { "name": "", "type": "int256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "roundLength", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "nextHalvingSupply", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "owner", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "lastHalvedAmount", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "finedRecords", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "lambdaDKG", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "fineValues", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "roundHeight", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "minBlockInterval", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" }, { "name": "", "type": "uint256" } ], "name": "dkgMasterPublicKeys", "outputs": [ { "name": "", "type": "bytes" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" }, { "name": "", "type": "address" } ], "name": "dkgFinalizeds", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "lockupPeriod", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "uint256" } ], "name": "dkgFinalizedsCount", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "anonymous": false, "inputs": [], "name": "ConfigurationChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "Round", "type": "uint256" }, { "indexed": false, "name": "CRS", "type": "bytes32" } ], "name": "CRSProposed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" } ], "name": "Staked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" } ], "name": "Unstaked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" } ], "name": "NodeRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": true, "name": "DelegatorAddress", "type": "address" }, { "indexed": false, "name": "Amount", "type": "uint256" } ], "name": "Delegated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": true, "name": "DelegatorAddress", "type": "address" }, { "indexed": false, "name": "Amount", "type": "uint256" } ], "name": "Undelegated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": true, "name": "DelegatorAddress", "type": "address" }, { "indexed": false, "name": "Amount", "type": "uint256" } ], "name": "Withdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": false, "name": "Type", "type": "uint256" }, { "indexed": false, "name": "Arg1", "type": "bytes" }, { "indexed": false, "name": "Arg2", "type": "bytes" } ], "name": "ForkReported", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": false, "name": "Amount", "type": "uint256" } ], "name": "Fined", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": false, "name": "Amount", "type": "uint256" } ], "name": "FinePaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "Round", "type": "uint256" }, { "indexed": false, "name": "BlockHeight", "type": "uint256" } ], "name": "DKGReset", "type": "event" }, { "constant": false, "inputs": [ { "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "MinStake", "type": "uint256" }, { "name": "LockupPeriod", "type": "uint256" }, { "name": "BlockGasLimit", "type": "uint256" }, { "name": "LambdaBA", "type": "uint256" }, { "name": "LambdaDKG", "type": "uint256" }, { "name": "NotarySetSize", "type": "uint256" }, { "name": "DKGSetSize", "type": "uint256" }, { "name": "RoundLength", "type": "uint256" }, { "name": "MinBlockInterval", "type": "uint256" }, { "name": "FineValues", "type": "uint256[]" } ], "name": "updateConfiguration", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "nodesLength", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "NodeAddress", "type": "address" } ], "name": "delegatorsLength", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "name": "Round", "type": "uint256" }, { "name": "SignedCRS", "type": "bytes" } ], "name": "proposeCRS", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "Round", "type": "uint256" }, { "name": "Complaint", "type": "bytes" } ], "name": "addDKGComplaint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "Round", "type": "uint256" }, { "name": "PublicKey", "type": "bytes" } ], "name": "addDKGMasterPublicKey", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "Round", "type": "uint256" }, { "name": "MPKReady", "type": "bytes" } ], "name": "addDKGMPKReady", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "Round", "type": "uint256" }, { "name": "Finalize", "type": "bytes" } ], "name": "addDKGFinalize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "PublicKey", "type": "bytes" }, { "name": "Name", "type": "string" }, { "name": "Email", "type": "string" }, { "name": "Location", "type": "string" }, { "name": "Url", "type": "string" } ], "name": "stake", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [], "name": "unstake", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "NodeAddress", "type": "address" } ], "name": "delegate", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "name": "NodeAddress", "type": "address" } ], "name": "undelegate", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "NodeAddress", "type": "address" } ], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "NodeAddress", "type": "address" } ], "name": "payFine", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "name": "Type", "type": "uint256" }, { "name": "Arg1", "type": "bytes" }, { "name": "Arg2", "type": "bytes" } ], "name": "report", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "NewSignedCRS", "type": "bytes" } ], "name": "resetDKG", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ] ` const NodeInfoOracleABIJSON = ` [ { "constant": true, "inputs": [ { "name": "Round", "type": "uint256" }, { "name": "NodeAddress", "type": "address" }, { "name": "Index", "type": "uint256" } ], "name": "delegators", "outputs": [ { "name": "owner", "type": "address" }, { "name": "value", "type": "uint256" }, { "name": "undelegated_at", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "Round", "type": "uint256" }, { "name": "NodeAddress", "type": "address" } ], "name": "delegatorsLength", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "Round", "type": "uint256" }, { "name": "NodeAddress", "type": "address" }, { "name": "DelegatorAddress", "type": "address" } ], "name": "delegatorsOffset", "outputs": [ { "name": "", "type": "int256" } ], "payable": false, "stateMutability": "view", "type": "function" } ] `