summaryrefslogblamecommitdiffstats
path: root/contracts/Governance.sol
blob: e93ec87926729ce760bc6e1fe0b3d8590a789777 (plain) (tree)








































                                                    



                            

                               
                         

                                 
                           


                             
         

                            


                              
         

                     


                                                          
         

                                 


                              
         

                                 





















                                                            
                         














































                                                                           
pragma solidity ^0.4.11;

contract Governance {
    // Nodes
    struct Node {
        address owner;
        bytes publicKey;
        uint256 staked;
        string name;
        string email;
        string location;
        string url;
    }

    // 0: round to blockHeight mapping.
    uint256[] public roundHeight;

    // 1: nodes.
    Node[] public nodes;

    // 2: stores the array index of nodes + 1
    mapping(address => uint256) public offset;

    // 3: CRS.
    bytes32[] public crs;

    // 4: dkgMasterPublicKeys
    bytes[][] public dkgMasterPublicKeys;

    // 5: dkgComplaints
    bytes[][] public dkgComplaints;

    // 6: dkgFinalizeds
    mapping(address => bool)[] public dkgFinalizeds;

    // 7: dkgFinalizedsCount
    uint256[] public dkgFinalizedsCount;

    // 8: owner address.
    address public owner;

    // 9: minStake
    uint256 public minStake;

    // 10: blockReward.
    uint256 public blockReward;

    // 11: blockGasLimit.
    uint256 public blockGasLimit;

    // 12: Network related.
    uint256 public numChains;

    // Lambda related.
    // 13
    uint256 public lambdaBA;
    // 14
    uint256 public lambdaDKG;

    // Total ordering related.
    // 15
    uint256 public k;
    // 16
    uint256 public phiRatio;  // stored as PhiRatio * 10^6

    // Set related.
    // 17
    uint256 public notarySetSize;
    // 18
    uint256 public dkgSetSize;

    // Time related.
    // 19
    uint256 public roundInterval;
    // 20
    uint256 public minBlockInterval;

    // ----------
    // Modifiers.
    // ----------
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    // ----------
    // Events.
    // ----------
    event ConfigurationChanged();
    event CRSProposed(uint256 indexed round, bytes32 crs);

    // transferOwnership()
    function transferOwnership(address newOwner) onlyOwner {
    }

    // UpdateConfiguration(...)
    function updateConfiguration(
        uint256 MinStake,
        uint256 BlockReward,
        uint256 BlockGasLimit,
        uint256 NumChains,
        uint256 LambdaBA,
        uint256 LambdaDKG,
        uint256 K,
        uint256 PhiRatio,
        uint256 NotarySetSize,
        uint256 DKGSetSize,
        uint256 RoundInterval,
        uint256 MinBlockInterval)
        public onlyOwner {
    }

    // SnapshotRound(round, height)
    function snapshotRound(uint256 Round, uint256 Height) public {
    }

    // ProposeCRS(signedCRS)
    function proposeCRS(uint256 Round, bytes SignedCRS) public {
    }

    // AddDKGComplaint(round, complaint)
    function addDKGComplaint(uint256 Round, bytes Complaint) public {
    }

    // AddDKGMasterPublicKey(round, key)
    function addDKGMasterPublicKey(uint256 Round, bytes PublicKey) public {
    }

    // AddDKGFinalize(round, finalize)
    function addDKGFinalize(uint256 Round, bytes Finalize) public {
    }

    // Stake(public_key)
    function stake(bytes PublicKey, string Name, string Email,
                   string Location, string Url) public payable {
    }

    // Unstake()
    function unstake() public {
    }

    // Return number of nodes.
    function nodesLength() view public returns (uint256) {
    }
}