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:
<!-- DO NOT EDIT BELOW THIS LINE!! The below part is automatically generated from the governance-abi ci flow and any modification below will be lost. -->
<!-- [[ABI AUTOGEN START]] -->
```
[
{
"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"
}
]
```
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->
<!-- [[ABI AUTOGEN END]] -->