[

{
  "constant": true,
  "inputs": [],
  "name": "singleStorage",
  "outputs": [
    {
      "name": "",
      "type": "address"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": false,
  "inputs": [],
  "name": "register",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "nonpayable",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "isRegistered",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": false,
  "inputs": [
    {
      "name": "_newInstance",
      "type": "address"
    }
  ],
  "name": "unregister",
  "outputs": [],
  "payable": false,
  "stateMutability": "nonpayable",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "getAllStorages",
  "outputs": [
    {
      "name": "",
      "type": "address[]"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": false,
  "inputs": [],
  "name": "renounceOwnership",
  "outputs": [],
  "payable": false,
  "stateMutability": "nonpayable",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "owner",
  "outputs": [
    {
      "name": "",
      "type": "address"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "isOwner",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "contractRegistry",
  "outputs": [
    {
      "name": "",
      "type": "address"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": false,
  "inputs": [
    {
      "name": "newOwner",
      "type": "address"
    }
  ],
  "name": "transferOwnership",
  "outputs": [],
  "payable": false,
  "stateMutability": "nonpayable",
  "type": "function"
},
{
  "inputs": [
    {
      "name": "_contractRegistry",
      "type": "address"
    },
    {
      "name": "_chainStorage",
      "type": "address"
    }
  ],
  "payable": false,
  "stateMutability": "nonpayable",
  "type": "constructor"
},
{
  "anonymous": false,
  "inputs": [
    {
      "indexed": true,
      "name": "previousOwner",
      "type": "address"
    },
    {
      "indexed": true,
      "name": "newOwner",
      "type": "address"
    }
  ],
  "name": "OwnershipTransferred",
  "type": "event"
},
{
  "anonymous": false,
  "inputs": [
    {
      "indexed": true,
      "name": "executor",
      "type": "address"
    },
    {
      "indexed": true,
      "name": "newStorageOwner",
      "type": "address"
    }
  ],
  "name": "LogDetachFromStorage",
  "type": "event"
},
{
  "anonymous": false,
  "inputs": [
    {
      "indexed": true,
      "name": "storageAddress",
      "type": "address"
    }
  ],
  "name": "LogNewStorage",
  "type": "event"
},
{
  "anonymous": false,
  "inputs": [
    {
      "indexed": true,
      "name": "executor",
      "type": "address"
    },
    {
      "indexed": true,
      "name": "registered",
      "type": "address"
    },
    {
      "indexed": false,
      "name": "isRegistered",
      "type": "bool"
    }
  ],
  "name": "LogRegister",
  "type": "event"
},
{
  "anonymous": false,
  "inputs": [
    {
      "indexed": false,
      "name": "balance",
      "type": "uint256"
    },
    {
      "indexed": true,
      "name": "balanceReceiver",
      "type": "address"
    }
  ],
  "name": "LogSuicide",
  "type": "event"
},
{
  "anonymous": false,
  "inputs": [
    {
      "indexed": true,
      "name": "sender",
      "type": "address"
    },
    {
      "indexed": false,
      "name": "blockHeight",
      "type": "uint256"
    },
    {
      "indexed": false,
      "name": "blindedProposal",
      "type": "bytes32"
    },
    {
      "indexed": false,
      "name": "shard",
      "type": "uint256"
    },
    {
      "indexed": false,
      "name": "balance",
      "type": "uint256"
    }
  ],
  "name": "LogPropose",
  "type": "event"
},
{
  "anonymous": false,
  "inputs": [
    {
      "indexed": true,
      "name": "sender",
      "type": "address"
    },
    {
      "indexed": false,
      "name": "blockHeight",
      "type": "uint256"
    },
    {
      "indexed": false,
      "name": "proposal",
      "type": "bytes32"
    }
  ],
  "name": "LogReveal",
  "type": "event"
},
{
  "anonymous": false,
  "inputs": [
    {
      "indexed": true,
      "name": "sender",
      "type": "address"
    },
    {
      "indexed": false,
      "name": "blockHeight",
      "type": "uint256"
    },
    {
      "indexed": false,
      "name": "shard",
      "type": "uint256"
    },
    {
      "indexed": false,
      "name": "proposal",
      "type": "bytes32"
    },
    {
      "indexed": false,
      "name": "counts",
      "type": "uint256"
    },
    {
      "indexed": false,
      "name": "balance",
      "type": "uint256"
    },
    {
      "indexed": false,
      "name": "newWinner",
      "type": "bool"
    },
    {
      "indexed": false,
      "name": "totalTokenBalanceForShard",
      "type": "uint256"
    }
  ],
  "name": "LogUpdateCounters",
  "type": "event"
},
{
  "constant": true,
  "inputs": [],
  "name": "contractName",
  "outputs": [
    {
      "name": "",
      "type": "bytes32"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": false,
  "inputs": [
    {
      "name": "_blindedProposal",
      "type": "bytes32"
    },
    {
      "name": "_blockHeight",
      "type": "uint256"
    }
  ],
  "name": "propose",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "nonpayable",
  "type": "function"
},
{
  "constant": false,
  "inputs": [
    {
      "name": "_proposal",
      "type": "bytes32"
    },
    {
      "name": "_secret",
      "type": "bytes32"
    }
  ],
  "name": "reveal",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "nonpayable",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "getBlockHeight",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_proposal",
      "type": "bytes32"
    },
    {
      "name": "_secret",
      "type": "bytes32"
    }
  ],
  "name": "createProof",
  "outputs": [
    {
      "name": "",
      "type": "bytes32"
    }
  ],
  "payable": false,
  "stateMutability": "pure",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_blockHeight",
      "type": "uint256"
    },
    {
      "name": "_shard",
      "type": "uint256"
    }
  ],
  "name": "getBlockRoot",
  "outputs": [
    {
      "name": "",
      "type": "bytes32"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_blockHeight",
      "type": "uint256"
    },
    {
      "name": "_voter",
      "type": "address"
    }
  ],
  "name": "getBlockVoter",
  "outputs": [
    {
      "name": "blindedProposal",
      "type": "bytes32"
    },
    {
      "name": "shard",
      "type": "uint256"
    },
    {
      "name": "proposal",
      "type": "bytes32"
    },
    {
      "name": "balance",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_blockHeight",
      "type": "uint256"
    },
    {
      "name": "_shard",
      "type": "uint256"
    }
  ],
  "name": "getBlockMaxVotes",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_blockHeight",
      "type": "uint256"
    },
    {
      "name": "_shard",
      "type": "uint256"
    },
    {
      "name": "_proposal",
      "type": "bytes32"
    }
  ],
  "name": "getBlockCount",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_blockHeight",
      "type": "uint256"
    },
    {
      "name": "_i",
      "type": "uint256"
    }
  ],
  "name": "getBlockAddress",
  "outputs": [
    {
      "name": "",
      "type": "address"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_blockHeight",
      "type": "uint256"
    }
  ],
  "name": "getBlockAddressCount",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_blockHeight",
      "type": "uint256"
    },
    {
      "name": "_shard",
      "type": "uint256"
    }
  ],
  "name": "getStakeTokenBalanceFor",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_blockHeight",
      "type": "uint256"
    },
    {
      "name": "_shard",
      "type": "uint256"
    }
  ],
  "name": "isElectionValid",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": false,
  "inputs": [
    {
      "name": "_minimumStakingTokenPercentage",
      "type": "uint8"
    }
  ],
  "name": "updateMinimumStakingTokenPercentage",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "nonpayable",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "updateMinimumStakingTokenPercentageEnabled",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "minimumStakingTokenPercentage",
  "outputs": [
    {
      "name": "",
      "type": "uint8"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "blocksPerPhase",
  "outputs": [
    {
      "name": "",
      "type": "uint8"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "getCurrentElectionCycleBlock",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "getFirstCycleBlock",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [],
  "name": "isProposePhase",
  "outputs": [
    {
      "name": "",
      "type": "bool"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
},
{
  "constant": true,
  "inputs": [
    {
      "name": "_shard",
      "type": "uint256"
    }
  ],
  "name": "initialBlockHeights",
  "outputs": [
    {
      "name": "",
      "type": "uint256"
    }
  ],
  "payable": false,
  "stateMutability": "view",
  "type": "function"
}

]