The DEXON governance contract is implemented in Go, but it's ABI compatible with Solidity. The governance contract address is located at `0x63751838d6485578b23e8b051d40861ecc416794` The equivalent solidity interface can be found in the [dexon-foundation/governance-abi](https://github.com/dexon-foundation/governance-abi/blob/master/contracts/Governance.sol) repo. The governance contract ABI is as follows: ``` [ { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "dkgSuccesses", "outputs": [ { "name": "", "type": "bool" } ], "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": "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" }, { "name": "unstaked", "type": "uint256" }, { "name": "unstakedAt", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "notaryParamBeta", "outputs": [ { "name": "", "type": "uint256" } ], "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": "crsRound", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "notaryParamAlpha", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "dkgSuccessesCount", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "dkgFinalizeds", "outputs": [ { "name": "", "type": "bool" } ], "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": "dkgRound", "outputs": [ { "name": "", "type": "uint256" } ], "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": "crs", "outputs": [ { "name": "", "type": "bytes32" } ], "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": "", "type": "uint256" } ], "name": "dkgComplaints", "outputs": [ { "name": "", "type": "bytes" } ], "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": "", "type": "bytes32" } ], "name": "dkgMasterPublicKeyOffset", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "dkgMPKReadys", "outputs": [ { "name": "", "type": "bool" } ], "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": "dkgMPKReadysCount", "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": "dkgMasterPublicKeys", "outputs": [ { "name": "", "type": "bytes" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "lastProposedHeight", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "minGasPrice", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "dkgFinalizedsCount", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "bytes32" } ], "name": "dkgComplaintsProposed", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "nodesOffsetByNodeKeyAddress", "outputs": [ { "name": "", "type": "int256" } ], "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": "dkgResetCount", "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" }, { "indexed": true, "name": "NewOwnerAddress", "type": "address" } ], "name": "NodeOwnershipTransfered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": false, "name": "PublicKey", "type": "bytes" } ], "name": "NodePublicKeyReplaced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": false, "name": "Amount", "type": "uint256" } ], "name": "Staked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": false, "name": "Amount", "type": "uint256" } ], "name": "Unstaked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" }, { "indexed": false, "name": "Amount", "type": "uint256" } ], "name": "Withdrawn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "NodeAddress", "type": "address" } ], "name": "NodeAdded", "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": false, "name": "Type", "type": "uint256" }, { "indexed": false, "name": "Arg1", "type": "bytes" }, { "indexed": false, "name": "Arg2", "type": "bytes" } ], "name": "Reported", "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": "MinGasPrice", "type": "uint256" }, { "name": "BlockGasLimit", "type": "uint256" }, { "name": "LambdaBA", "type": "uint256" }, { "name": "LambdaDKG", "type": "uint256" }, { "name": "NotaryParamAlpha", "type": "uint256" }, { "name": "NotaryParamBeta", "type": "uint256" }, { "name": "RoundLength", "type": "uint256" }, { "name": "MinBlockInterval", "type": "uint256" }, { "name": "FineValues", "type": "uint256[]" } ], "name": "updateConfiguration", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "NewOwner", "type": "address" } ], "name": "transferNodeOwnership", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "NewPublicKey", "type": "bytes" } ], "name": "replaceNodePublicKey", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "nodesLength", "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": "Complaint", "type": "bytes" } ], "name": "addDKGComplaint", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "PublicKey", "type": "bytes" } ], "name": "addDKGMasterPublicKey", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "MPKReady", "type": "bytes" } ], "name": "addDKGMPKReady", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "Finalize", "type": "bytes" } ], "name": "addDKGFinalize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "Success", "type": "bytes" } ], "name": "addDKGSuccess", "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": "register", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [], "name": "stake", "outputs": [], "payable": true, "stateMutability": "payable", "type": "function" }, { "constant": false, "inputs": [ { "name": "Amount", "type": "uint256" } ], "name": "unstake", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "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" } ] ```