Sonic Blaze Testnet

Contract

0x9e03CF4A7e67677dCFc4195EEeEBf137d8c74041

Overview

S Balance

Sonic Blaze LogoSonic Blaze LogoSonic Blaze Logo0 S

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

3 Internal Transactions found.

Latest 3 internal transactions

Parent Transaction Hash Block From To
247076692025-03-05 8:49:025 days ago1741164542
0x9e03CF4A...7d8c74041
0 S
247076692025-03-05 8:49:025 days ago1741164542
0x9e03CF4A...7d8c74041
0 S
247076692025-03-05 8:49:025 days ago1741164542
0x9e03CF4A...7d8c74041
0 S
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x05D20E36...17B007377
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
ProposalCategory

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : ProposalCategory.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity ^0.5.0;

import "../../abstract/LegacyMasterAware.sol";
import "../../interfaces/IMemberRoles.sol";
import "../../interfaces/IProposalCategory.sol";
import "./external/Governed.sol";

contract ProposalCategory is IProposalCategory, Governed, LegacyMasterAware {

  bool public constructorCheck;
  IMemberRoles internal mr;

  struct CategoryStruct {
    uint memberRoleToVote;
    uint majorityVotePerc;
    uint quorumPerc;
    uint[] allowedToCreateProposal;
    uint closingTime;
    uint minStake;
  }

  struct CategoryAction {
    uint defaultIncentive;
    address contractAddress;
    bytes2 contractName;
  }

  CategoryStruct[] internal allCategory;
  mapping(uint => CategoryAction) internal categoryActionData;
  mapping(uint => uint) public categoryABReq;
  mapping(uint => uint) public isSpecialResolution;
  mapping(uint => bytes) public categoryActionHashes;

  bool public categoryActionHashUpdated;

  /**
  * @dev Adds new category (Discontinued, moved functionality to newCategory)
  * @param _name Category name
  * @param _memberRoleToVote Voting Layer sequence in which the voting has to be performed.
  * @param _majorityVotePerc Majority Vote threshold for Each voting layer
  * @param _quorumPerc minimum threshold percentage required in voting to calculate result
  * @param _allowedToCreateProposal Member roles allowed to create the proposal
  * @param _closingTime Vote closing time for Each voting layer
  * @param _actionHash hash of details containing the action that has to be performed after proposal is accepted
  * @param _contractAddress address of contract to call after proposal is accepted
  * @param _contractName name of contract to be called after proposal is accepted
  * @param _incentives rewards to distributed after proposal is accepted
  */
  function addCategory(
    string calldata _name,
    uint _memberRoleToVote,
    uint _majorityVotePerc,
    uint _quorumPerc,
    uint[] calldata _allowedToCreateProposal,
    uint _closingTime,
    string calldata _actionHash,
    address _contractAddress,
    bytes2 _contractName,
    uint[] calldata _incentives
  ) external {}

  /**
  * @dev Initiates Default settings for Proposal Category contract (Adding default categories)
  */
  function proposalCategoryInitiate() external {}

  /**
  * @dev Gets Total number of categories added till now
  */
  function totalCategories() external view returns (uint) {
    return allCategory.length;
  }

  /**
  * @dev Gets category details
  */
  function category(uint _categoryId) external view returns (uint, uint, uint, uint, uint[] memory, uint, uint) {
    return (
    _categoryId,
    allCategory[_categoryId].memberRoleToVote,
    allCategory[_categoryId].majorityVotePerc,
    allCategory[_categoryId].quorumPerc,
    allCategory[_categoryId].allowedToCreateProposal,
    allCategory[_categoryId].closingTime,
    allCategory[_categoryId].minStake
    );
  }

  /**
  * @dev Gets category ab required and isSpecialResolution
  * @return the category id
  * @return if AB voting is required
  * @return is category a special resolution
  */
  function categoryExtendedData(uint _categoryId) external view returns (uint, uint, uint) {
    return (
    _categoryId,
    categoryABReq[_categoryId],
    isSpecialResolution[_categoryId]
    );
  }

  /**
   * @dev Gets the category acion details
   * @param _categoryId is the category id in concern
   * @return the category id
   * @return the contract address
   * @return the contract name
   * @return the default incentive
   */
  function categoryAction(uint _categoryId) external view returns (uint, address, bytes2, uint) {

    return (
    _categoryId,
    categoryActionData[_categoryId].contractAddress,
    categoryActionData[_categoryId].contractName,
    categoryActionData[_categoryId].defaultIncentive
    );
  }

  /**
   * @dev Gets the category acion details of a category id
   * @param _categoryId is the category id in concern
   * @return the category id
   * @return the contract address
   * @return the contract name
   * @return the default incentive
   * @return action function hash
   */
  function categoryActionDetails(uint _categoryId) external view returns (uint, address, bytes2, uint, bytes memory) {
    return (
    _categoryId,
    categoryActionData[_categoryId].contractAddress,
    categoryActionData[_categoryId].contractName,
    categoryActionData[_categoryId].defaultIncentive,
    categoryActionHashes[_categoryId]
    );
  }

  /**
  * @dev Updates dependant contract addresses
  */
  function changeDependentContractAddress() public {
    mr = IMemberRoles(ms.getLatestAddress("MR"));
  }

  /**
  * @dev Adds new category
  * @param _name Category name
  * @param _memberRoleToVote Voting Layer sequence in which the voting has to be performed.
  * @param _majorityVotePerc Majority Vote threshold for Each voting layer
  * @param _quorumPerc minimum threshold percentage required in voting to calculate result
  * @param _allowedToCreateProposal Member roles allowed to create the proposal
  * @param _closingTime Vote closing time for Each voting layer
  * @param _actionHash hash of details containing the action that has to be performed after proposal is accepted
  * @param _contractAddress address of contract to call after proposal is accepted
  * @param _contractName name of contract to be called after proposal is accepted
  * @param _incentives rewards to distributed after proposal is accepted
  * @param _functionHash function signature to be executed
  */
  function newCategory(
    string memory _name,
    uint _memberRoleToVote,
    uint _majorityVotePerc,
    uint _quorumPerc,
    uint[] memory _allowedToCreateProposal,
    uint _closingTime,
    string memory _actionHash,
    address _contractAddress,
    bytes2 _contractName,
    uint[] memory _incentives,
    string memory _functionHash
  )
  public
  onlyAuthorizedToGovern
  {

    require(_quorumPerc <= 100 && _majorityVotePerc <= 100, "Invalid percentage");

    require((_contractName == "EX" && _contractAddress == address(0)) || bytes(_functionHash).length > 0);

    require(_incentives[3] <= 1, "Invalid special resolution flag");

    //If category is special resolution role authorized should be member
    if (_incentives[3] == 1) {
      require(_memberRoleToVote == uint(IMemberRoles.Role.Member));
      _majorityVotePerc = 0;
      _quorumPerc = 0;
    }

    _addCategory(
      _name,
      _memberRoleToVote,
      _majorityVotePerc,
      _quorumPerc,
      _allowedToCreateProposal,
      _closingTime,
      _actionHash,
      _contractAddress,
      _contractName,
      _incentives
    );


    if (bytes(_functionHash).length > 0 && abi.encodeWithSignature(_functionHash).length == 4) {
      categoryActionHashes[allCategory.length - 1] = abi.encodeWithSignature(_functionHash);
    }
  }

  /**
   * @dev Changes the master address and update it's instance
   * @param _masterAddress is the new master address
   */
  function changeMasterAddress(address _masterAddress) public {
    if (masterAddress != address(0))
      require(masterAddress == msg.sender);
    masterAddress = _masterAddress;
    ms = ISAFURAMaster(_masterAddress);
    nxMasterAddress = _masterAddress;

  }

  /**
  * @dev Updates category details (Discontinued, moved functionality to editCategory)
  * @param _categoryId Category id that needs to be updated
  * @param _name Category name
  * @param _memberRoleToVote Voting Layer sequence in which the voting has to be performed.
  * @param _allowedToCreateProposal Member roles allowed to create the proposal
  * @param _majorityVotePerc Majority Vote threshold for Each voting layer
  * @param _quorumPerc minimum threshold percentage required in voting to calculate result
  * @param _closingTime Vote closing time for Each voting layer
  * @param _actionHash hash of details containing the action that has to be performed after proposal is accepted
  * @param _contractAddress address of contract to call after proposal is accepted
  * @param _contractName name of contract to be called after proposal is accepted
  * @param _incentives rewards to distributed after proposal is accepted
  */
  function updateCategory(
    uint _categoryId,
    string memory _name,
    uint _memberRoleToVote,
    uint _majorityVotePerc,
    uint _quorumPerc,
    uint[] memory _allowedToCreateProposal,
    uint _closingTime,
    string memory _actionHash,
    address _contractAddress,
    bytes2 _contractName,
    uint[] memory _incentives
  ) public {}

  /**
  * @dev Updates category details
  * @param _categoryId Category id that needs to be updated
  * @param _name Category name
  * @param _memberRoleToVote Voting Layer sequence in which the voting has to be performed.
  * @param _allowedToCreateProposal Member roles allowed to create the proposal
  * @param _majorityVotePerc Majority Vote threshold for Each voting layer
  * @param _quorumPerc minimum threshold percentage required in voting to calculate result
  * @param _closingTime Vote closing time for Each voting layer
  * @param _actionHash hash of details containing the action that has to be performed after proposal is accepted
  * @param _contractAddress address of contract to call after proposal is accepted
  * @param _contractName name of contract to be called after proposal is accepted
  * @param _incentives rewards to distributed after proposal is accepted
  * @param _functionHash function signature to be executed
  */
  function editCategory(
    uint _categoryId,
    string memory _name,
    uint _memberRoleToVote,
    uint _majorityVotePerc,
    uint _quorumPerc,
    uint[] memory _allowedToCreateProposal,
    uint _closingTime,
    string memory _actionHash,
    address _contractAddress,
    bytes2 _contractName,
    uint[] memory _incentives,
    string memory _functionHash
  )
  public
  onlyAuthorizedToGovern
  {
    require(_verifyMemberRoles(_memberRoleToVote, _allowedToCreateProposal) == 1, "Invalid Role");

    require(_quorumPerc <= 100 && _majorityVotePerc <= 100, "Invalid percentage");

    require((_contractName == "EX" && _contractAddress == address(0)) || bytes(_functionHash).length > 0);

    require(_incentives[3] <= 1, "Invalid special resolution flag");

    //If category is special resolution role authorized should be member
    if (_incentives[3] == 1) {
      require(_memberRoleToVote == uint(IMemberRoles.Role.Member));
      _majorityVotePerc = 0;
      _quorumPerc = 0;
    }

    delete categoryActionHashes[_categoryId];
    if (bytes(_functionHash).length > 0 && abi.encodeWithSignature(_functionHash).length == 4) {
      categoryActionHashes[_categoryId] = abi.encodeWithSignature(_functionHash);
    }
    allCategory[_categoryId].memberRoleToVote = _memberRoleToVote;
    allCategory[_categoryId].majorityVotePerc = _majorityVotePerc;
    allCategory[_categoryId].closingTime = _closingTime;
    allCategory[_categoryId].allowedToCreateProposal = _allowedToCreateProposal;
    allCategory[_categoryId].minStake = _incentives[0];
    allCategory[_categoryId].quorumPerc = _quorumPerc;
    categoryActionData[_categoryId].defaultIncentive = _incentives[1];
    categoryActionData[_categoryId].contractName = _contractName;
    categoryActionData[_categoryId].contractAddress = _contractAddress;
    categoryABReq[_categoryId] = _incentives[2];
    isSpecialResolution[_categoryId] = _incentives[3];
    emit Category(_categoryId, _name, _actionHash);
  }

  /**
  * @dev Internal call to add new category
  * @param _name Category name
  * @param _memberRoleToVote Voting Layer sequence in which the voting has to be performed.
  * @param _majorityVotePerc Majority Vote threshold for Each voting layer
  * @param _quorumPerc minimum threshold percentage required in voting to calculate result
  * @param _allowedToCreateProposal Member roles allowed to create the proposal
  * @param _closingTime Vote closing time for Each voting layer
  * @param _actionHash hash of details containing the action that has to be performed after proposal is accepted
  * @param _contractAddress address of contract to call after proposal is accepted
  * @param _contractName name of contract to be called after proposal is accepted
  * @param _incentives rewards to distributed after proposal is accepted
  */
  function _addCategory(
    string memory _name,
    uint _memberRoleToVote,
    uint _majorityVotePerc,
    uint _quorumPerc,
    uint[] memory _allowedToCreateProposal,
    uint _closingTime,
    string memory _actionHash,
    address _contractAddress,
    bytes2 _contractName,
    uint[] memory _incentives
  )
  internal
  {
    require(_verifyMemberRoles(_memberRoleToVote, _allowedToCreateProposal) == 1, "Invalid Role");
    allCategory.push(
      CategoryStruct(
        _memberRoleToVote,
        _majorityVotePerc,
        _quorumPerc,
        _allowedToCreateProposal,
        _closingTime,
        _incentives[0]
      )
    );
    uint categoryId = allCategory.length - 1;
    categoryActionData[categoryId] = CategoryAction(_incentives[1], _contractAddress, _contractName);
    categoryABReq[categoryId] = _incentives[2];
    isSpecialResolution[categoryId] = _incentives[3];
    emit Category(categoryId, _name, _actionHash);
  }

  /**
  * @dev Internal call to check if given roles are valid or not
  */
  function _verifyMemberRoles(uint _memberRoleToVote, uint[] memory _allowedToCreateProposal)
  internal view returns (uint) {
    uint totalRoles = mr.totalRoles();
    if (_memberRoleToVote >= totalRoles) {
      return 0;
    }
    for (uint i = 0; i < _allowedToCreateProposal.length; i++) {
      if (_allowedToCreateProposal[i] >= totalRoles) {
        return 0;
      }
    }
    return 1;
  }

}

File 2 of 6 : LegacyMasterAware.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity >=0.5.0;

import "../interfaces/ISAFURAMaster.sol";

contract LegacyMasterAware {

  ISAFURAMaster public ms;
  address public nxMasterAddress;

  modifier onlyInternal {
    require(ms.isInternal(msg.sender));
    _;
  }

  modifier onlyGovernance {
    require(msg.sender == ms.getLatestAddress("GV"));
    _;
  }


  modifier isMemberAndcheckPause {
    require(ms.isPause() == false && ms.isMember(msg.sender) == true);
    _;
  }

  modifier checkPause {
    require(ms.isPause() == false);
    _;
  }

  /**
   * @dev change master address
   * @param _masterAddress is the new address
   */
  function changeMasterAddress(address _masterAddress) public {
    if (address(ms) != address(0)) {
      require(address(ms) == msg.sender, "Not master");
    }

    ms = ISAFURAMaster(_masterAddress);
    nxMasterAddress = _masterAddress;
  }

}

File 3 of 6 : IMemberRoles.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity >=0.5.0;

interface IMemberRoles {

  enum Role {Unassigned, AdvisoryBoard, Member, Owner, Auditor}

  function join(address _userAddress, uint nonce, bytes calldata signature) external payable;

  function switchMembership(address _newAddress) external;

  function switchMembershipAndAssets(
    address newAddress,
    uint[] calldata coverIds,
    uint[] calldata stakingTokenIds
  ) external;

  function switchMembershipOf(address member, address _newAddress) external;

  function totalRoles() external view returns (uint256);

  function changeAuthorized(uint _roleId, address _newAuthorized) external;

  function setKycAuthAddress(address _add) external;

  function members(uint _memberRoleId) external view returns (uint, address[] memory memberArray);

  function numberOfMembers(uint _memberRoleId) external view returns (uint);

  function authorized(uint _memberRoleId) external view returns (address);

  function roles(address _memberAddress) external view returns (uint[] memory);

  function checkRole(address _memberAddress, uint _roleId) external view returns (bool);

  function getMemberLengthForAllRoles() external view returns (uint[] memory totalMembers);

  function memberAtIndex(uint _memberRoleId, uint index) external view returns (address, bool);

  function membersLength(uint _memberRoleId) external view returns (uint);

  event MemberRole(uint256 indexed roleId, bytes32 roleName, string roleDescription);

  event MemberJoined(address indexed newMember, uint indexed nonce);

  event switchedMembership(address indexed previousMember, address indexed newMember, uint timeStamp);
  
  event MembershipWithdrawn(address indexed member, uint timestamp);
}

File 4 of 6 : IProposalCategory.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity >=0.5.0;

interface IProposalCategory {

  event Category(
    uint indexed categoryId,
    string categoryName,
    string actionHash
  );

  function categoryABReq(uint) external view returns (uint);
  function isSpecialResolution(uint) external view returns (uint);
  function categoryActionHashes(uint) external view returns (bytes memory);

  function categoryExtendedData(uint _categoryId) external view returns (uint, uint, uint);

  /// @dev Adds new category
  /// @param _name Category name
  /// @param _memberRoleToVote Voting Layer sequence in which the voting has to be performed.
  /// @param _allowedToCreateProposal Member roles allowed to create the proposal
  /// @param _majorityVotePerc Majority Vote threshold for Each voting layer
  /// @param _quorumPerc minimum threshold percentage required in voting to calculate result
  /// @param _closingTime Vote closing time for Each voting layer
  /// @param _actionHash hash of details containing the action that has to be performed after proposal is accepted
  /// @param _contractAddress address of contract to call after proposal is accepted
  /// @param _contractName name of contract to be called after proposal is accepted
  /// @param _incentives rewards to distributed after proposal is accepted
  function addCategory(
    string calldata _name,
    uint _memberRoleToVote,
    uint _majorityVotePerc,
    uint _quorumPerc,
    uint[] calldata _allowedToCreateProposal,
    uint _closingTime,
    string calldata _actionHash,
    address _contractAddress,
    bytes2 _contractName,
    uint[] calldata _incentives
  )
  external;

  /// @dev gets category details
  function category(uint _categoryId)
  external
  view
  returns (
    uint categoryId,
    uint memberRoleToVote,
    uint majorityVotePerc,
    uint quorumPerc,
    uint[] memory allowedToCreateProposal,
    uint closingTime,
    uint minStake
  );

  ///@dev gets category action details
  function categoryAction(uint _categoryId)
  external
  view
  returns (
    uint categoryId,
    address contractAddress,
    bytes2 contractName,
    uint defaultIncentive
  );

  function categoryActionDetails(uint _categoryId) external view returns (uint, address, bytes2, uint, bytes memory);

  /// @dev Gets Total number of categories added till now
  function totalCategories() external view returns (uint numberOfCategories);

  /// @dev Updates category details
  /// @param _categoryId Category id that needs to be updated
  /// @param _name Category name
  /// @param _memberRoleToVote Voting Layer sequence in which the voting has to be performed.
  /// @param _allowedToCreateProposal Member roles allowed to create the proposal
  /// @param _majorityVotePerc Majority Vote threshold for Each voting layer
  /// @param _quorumPerc minimum threshold percentage required in voting to calculate result
  /// @param _closingTime Vote closing time for Each voting layer
  /// @param _actionHash hash of details containing the action that has to be performed after proposal is accepted
  /// @param _contractAddress address of contract to call after proposal is accepted
  /// @param _contractName name of contract to be called after proposal is accepted
  /// @param _incentives rewards to distributed after proposal is accepted
  function updateCategory(
    uint _categoryId,
    string calldata _name,
    uint _memberRoleToVote,
    uint _majorityVotePerc,
    uint _quorumPerc,
    uint[] calldata _allowedToCreateProposal,
    uint _closingTime,
    string calldata _actionHash,
    address _contractAddress,
    bytes2 _contractName,
    uint[] calldata _incentives
  ) external;

}

File 5 of 6 : ISAFURAMaster.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity >=0.5.0;

interface ISAFURAMaster {

  function tokenAddress() external view returns (address);

  function owner() external view returns (address);

  function emergencyAdmin() external view returns (address);

  function masterInitialized() external view returns (bool);

  function isInternal(address _add) external view returns (bool);

  function isPause() external view returns (bool check);

  function isMember(address _add) external view returns (bool);

  function checkIsAuthToGoverned(address _add) external view returns (bool);

  function getLatestAddress(bytes2 _contractName) external view returns (address payable contractAddress);

  function contractAddresses(bytes2 code) external view returns (address payable);

  function upgradeMultipleContracts(
    bytes2[] calldata _contractCodes,
    address payable[] calldata newAddresses
  ) external;

  function removeContracts(bytes2[] calldata contractCodesToRemove) external;

  function addNewInternalContracts(
    bytes2[] calldata _contractCodes,
    address payable[] calldata newAddresses,
    uint[] calldata _types
  ) external;

  function updateOwnerParameters(bytes8 code, address payable val) external;
}

File 6 of 6 : Governed.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity >=0.5.0;

interface IMaster {
  function getLatestAddress(bytes2 _module) external view returns (address);
}

contract Governed {

  address public masterAddress; // Name of the dApp, needs to be set by contracts inheriting this contract

  /// @dev modifier that allows only the authorized addresses to execute the function
  modifier onlyAuthorizedToGovern() {
    IMaster ms = IMaster(masterAddress);
    require(ms.getLatestAddress("GV") == msg.sender, "Not authorized");
    _;
  }

  /// @dev checks if an address is authorized to govern
  function isAuthorizedToGovern(address _toCheck) public view returns (bool) {
    IMaster ms = IMaster(masterAddress);
    return (ms.getLatestAddress("GV") == _toCheck);
  }

}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"categoryId","type":"uint256"},{"indexed":false,"internalType":"string","name":"categoryName","type":"string"},{"indexed":false,"internalType":"string","name":"actionHash","type":"string"}],"name":"Category","type":"event"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_memberRoleToVote","type":"uint256"},{"internalType":"uint256","name":"_majorityVotePerc","type":"uint256"},{"internalType":"uint256","name":"_quorumPerc","type":"uint256"},{"internalType":"uint256[]","name":"_allowedToCreateProposal","type":"uint256[]"},{"internalType":"uint256","name":"_closingTime","type":"uint256"},{"internalType":"string","name":"_actionHash","type":"string"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"bytes2","name":"_contractName","type":"bytes2"},{"internalType":"uint256[]","name":"_incentives","type":"uint256[]"}],"name":"addCategory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_categoryId","type":"uint256"}],"name":"category","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"categoryABReq","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_categoryId","type":"uint256"}],"name":"categoryAction","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes2","name":"","type":"bytes2"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_categoryId","type":"uint256"}],"name":"categoryActionDetails","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes2","name":"","type":"bytes2"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"categoryActionHashUpdated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"categoryActionHashes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_categoryId","type":"uint256"}],"name":"categoryExtendedData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"changeDependentContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_masterAddress","type":"address"}],"name":"changeMasterAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"constructorCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_categoryId","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_memberRoleToVote","type":"uint256"},{"internalType":"uint256","name":"_majorityVotePerc","type":"uint256"},{"internalType":"uint256","name":"_quorumPerc","type":"uint256"},{"internalType":"uint256[]","name":"_allowedToCreateProposal","type":"uint256[]"},{"internalType":"uint256","name":"_closingTime","type":"uint256"},{"internalType":"string","name":"_actionHash","type":"string"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"bytes2","name":"_contractName","type":"bytes2"},{"internalType":"uint256[]","name":"_incentives","type":"uint256[]"},{"internalType":"string","name":"_functionHash","type":"string"}],"name":"editCategory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_toCheck","type":"address"}],"name":"isAuthorizedToGovern","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isSpecialResolution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"masterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ms","outputs":[{"internalType":"contract ISAFURAMaster","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_memberRoleToVote","type":"uint256"},{"internalType":"uint256","name":"_majorityVotePerc","type":"uint256"},{"internalType":"uint256","name":"_quorumPerc","type":"uint256"},{"internalType":"uint256[]","name":"_allowedToCreateProposal","type":"uint256[]"},{"internalType":"uint256","name":"_closingTime","type":"uint256"},{"internalType":"string","name":"_actionHash","type":"string"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"bytes2","name":"_contractName","type":"bytes2"},{"internalType":"uint256[]","name":"_incentives","type":"uint256[]"},{"internalType":"string","name":"_functionHash","type":"string"}],"name":"newCategory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nxMasterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"proposalCategoryInitiate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalCategories","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_categoryId","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"uint256","name":"_memberRoleToVote","type":"uint256"},{"internalType":"uint256","name":"_majorityVotePerc","type":"uint256"},{"internalType":"uint256","name":"_quorumPerc","type":"uint256"},{"internalType":"uint256[]","name":"_allowedToCreateProposal","type":"uint256[]"},{"internalType":"uint256","name":"_closingTime","type":"uint256"},{"internalType":"string","name":"_actionHash","type":"string"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"bytes2","name":"_contractName","type":"bytes2"},{"internalType":"uint256[]","name":"_incentives","type":"uint256[]"}],"name":"updateCategory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c806386957731116100b8578063cf3acfbc1161007c578063cf3acfbc14610c11578063d365a08e14610c19578063d46655f414610c21578063d4aaafb414610c47578063da3f7bd114610d1e578063f17a3bec14610eb257610137565b8063869577311461038357806395566ebd146103a0578063a0b2d57f1461060e578063aef8123614610632578063b02bc3161461091e57610137565b8063525050e1116100ff578063525050e11461027057806354911e121461027857806357c7bec114610280578063674aa71214610312578063780052971461036657610137565b806307149ba31461013c5780630ea9c9841461017757806322ce725414610181578063253eca1f146101bb57806339275b0a14610256575b600080fd5b6101596004803603602081101561015257600080fd5b5035610eba565b60408051938452602084019290925282820152519081900360600190f35b61017f610edc565b005b6101a76004803603602081101561019757600080fd5b50356001600160a01b0316610f78565b604080519115158252519081900360200190f35b6101d8600480360360208110156101d157600080fd5b503561100a565b6040518088815260200187815260200186815260200185815260200180602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561023c578181015183820152602001610224565b505050509050019850505050505050505060405180910390f35b61025e61113a565b60408051918252519081900360200190f35b6101a7611141565b6101a7611151565b61029d6004803603602081101561029657600080fd5b503561115a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d75781810151838201526020016102bf565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61032f6004803603602081101561032857600080fd5b50356111f5565b604080519485526001600160a01b0390931660208501526001600160f01b0319909116838301526060830152519081900360800190f35b61025e6004803603602081101561037c57600080fd5b5035611226565b61025e6004803603602081101561039957600080fd5b5035611238565b61017f60048036036101608110156103b757600080fd5b81359190810190604081016020820135600160201b8111156103d857600080fd5b8201836020820111156103ea57600080fd5b803590602001918460018302840111600160201b8311171561040b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295843595602086013595604081013595509193509150608081019060600135600160201b81111561046f57600080fd5b82018360208201111561048157600080fd5b803590602001918460208302840111600160201b831117156104a257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092958435959094909350604081019250602001359050600160201b8111156104f957600080fd5b82018360208201111561050b57600080fd5b803590602001918460018302840111600160201b8311171561052c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516956001600160f01b031960208701351695919450925060608101915060400135600160201b81111561059d57600080fd5b8201836020820111156105af57600080fd5b803590602001918460208302840111600160201b831117156105d057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061124a945050505050565b610616611257565b604080516001600160a01b039092168252519081900360200190f35b61017f600480360361016081101561064957600080fd5b810190602081018135600160201b81111561066357600080fd5b82018360208201111561067557600080fd5b803590602001918460018302840111600160201b8311171561069657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295843595602086013595604081013595509193509150608081019060600135600160201b8111156106fa57600080fd5b82018360208201111561070c57600080fd5b803590602001918460208302840111600160201b8311171561072d57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561078457600080fd5b82018360208201111561079657600080fd5b803590602001918460018302840111600160201b831117156107b757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516956001600160f01b031960208701351695919450925060608101915060400135600160201b81111561082857600080fd5b82018360208201111561083a57600080fd5b803590602001918460208302840111600160201b8311171561085b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156108aa57600080fd5b8201836020820111156108bc57600080fd5b803590602001918460018302840111600160201b831117156108dd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611266945050505050565b61017f600480360361018081101561093557600080fd5b81359190810190604081016020820135600160201b81111561095657600080fd5b82018360208201111561096857600080fd5b803590602001918460018302840111600160201b8311171561098957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295843595602086013595604081013595509193509150608081019060600135600160201b8111156109ed57600080fd5b8201836020820111156109ff57600080fd5b803590602001918460208302840111600160201b83111715610a2057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092958435959094909350604081019250602001359050600160201b811115610a7757600080fd5b820183602082011115610a8957600080fd5b803590602001918460018302840111600160201b83111715610aaa57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516956001600160f01b031960208701351695919450925060608101915060400135600160201b811115610b1b57600080fd5b820183602082011115610b2d57600080fd5b803590602001918460208302840111600160201b83111715610b4e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b811115610b9d57600080fd5b820183602082011115610baf57600080fd5b803590602001918460018302840111600160201b83111715610bd057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506115d5945050505050565b61017f611c4a565b610616611c4c565b61017f60048036036020811015610c3757600080fd5b50356001600160a01b0316611c5b565b610c6460048036036020811015610c5d57600080fd5b5035611cb9565b60405180868152602001856001600160a01b03166001600160a01b03168152602001846001600160f01b0319166001600160f01b031916815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610cdf578181015183820152602001610cc7565b50505050905090810190601f168015610d0c5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61017f6004803603610140811015610d3557600080fd5b810190602081018135600160201b811115610d4f57600080fd5b820183602082011115610d6157600080fd5b803590602001918460018302840111600160201b83111715610d8257600080fd5b919390928235926020810135926040820135929091608081019060600135600160201b811115610db157600080fd5b820183602082011115610dc357600080fd5b803590602001918460208302840111600160201b83111715610de457600080fd5b91939092823592604081019060200135600160201b811115610e0557600080fd5b820183602082011115610e1757600080fd5b803590602001918460018302840111600160201b83111715610e3857600080fd5b919390926001600160a01b03833516926001600160f01b0319602082013516929190606081019060400135600160201b811115610e7457600080fd5b820183602082011115610e8657600080fd5b803590602001918460208302840111600160201b83111715610ea757600080fd5b509092509050611d99565b610616611da9565b6000818152600660209081526040808320546007909252909120549192909190565b600154604080516227050b60e31b81526126a960f11b600482015290516001600160a01b0390921691630138285891602480820192602092909190829003018186803b158015610f2b57600080fd5b505afa158015610f3f573d6000803e3d6000fd5b505050506040513d6020811015610f5557600080fd5b5051600380546001600160a01b0319166001600160a01b03909216919091179055565b60008054604080516227050b60e31b81526123ab60f11b600482015290516001600160a01b03928316928516918391630138285891602480820192602092909190829003018186803b158015610fcd57600080fd5b505afa158015610fe1573d6000803e3d6000fd5b505050506040513d6020811015610ff757600080fd5b50516001600160a01b0316149392505050565b6000806000806060600080876004898154811061102357fe5b90600052602060002090600602016000015460048a8154811061104257fe5b90600052602060002090600602016001015460048b8154811061106157fe5b90600052602060002090600602016002015460048c8154811061108057fe5b906000526020600020906006020160030160048d8154811061109e57fe5b90600052602060002090600602016004015460048e815481106110bd57fe5b9060005260206000209060060201600501548280548060200260200160405190810160405280929190818152602001828054801561111a57602002820191906000526020600020905b815481526020019060010190808311611106575b505050505092509650965096509650965096509650919395979092949650565b6004545b90565b600254600160a01b900460ff1681565b60095460ff1681565b60086020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156111ed5780601f106111c2576101008083540402835291602001916111ed565b820191906000526020600020905b8154815290600101906020018083116111d057829003601f168201915b505050505081565b60008181526005602052604090206001810154905491926001600160a01b03821692600160a01b90920460f01b9190565b60066020526000908152604090205481565b60076020526000908152604090205481565b5050505050505050505050565b6001546001600160a01b031681565b600054604080516227050b60e31b81526123ab60f11b600482015290516001600160a01b039092169133918391630138285891602480820192602092909190829003018186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d60208110156112e357600080fd5b50516001600160a01b031614611331576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b60648911158015611343575060648a11155b611389576040805162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b604482015290519081900360640190fd5b6108ab60f31b6001600160f01b031985161480156113ae57506001600160a01b038516155b806113ba575060008251115b6113c357600080fd5b6001836003815181106113d257fe5b6020026020010151111561142d576040805162461bcd60e51b815260206004820152601f60248201527f496e76616c6964207370656369616c207265736f6c7574696f6e20666c616700604482015290519081900360640190fd5b8260038151811061143a57fe5b6020026020010151600114156114605760028b1461145757600080fd5b60009950600098505b6114728c8c8c8c8c8c8c8c8c8c611db8565b60008251118015611511575060408051600481526024810191829052835190918491819060208401908083835b602083106114be5780518252601f19909201916020918201910161149f565b51815160209384036101000a600019018019909216911617905260405191909301819003902091850180516001600160e01b03199093166001600160e01b03909316929092179091525050905160041490505b156115c75760408051600481526024810191829052835190918491819060208401908083835b602083106115565780518252601f199092019160209182019101611537565b51815160001960209485036101000a810191821691199290921617909152604080519590930185900390942087820180516001600160e01b03166001600160e01b0319909216919091178152600454909401600090815260089091522094516115c595945091925061218b9050565b505b505050505050505050505050565b600054604080516227050b60e31b81526123ab60f11b600482015290516001600160a01b039092169133918391630138285891602480820192602092909190829003018186803b15801561162857600080fd5b505afa15801561163c573d6000803e3d6000fd5b505050506040513d602081101561165257600080fd5b50516001600160a01b0316146116a0576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6116aa8b896120b5565b6001146116ed576040805162461bcd60e51b815260206004820152600c60248201526b496e76616c696420526f6c6560a01b604482015290519081900360640190fd5b606489111580156116ff575060648a11155b611745576040805162461bcd60e51b8152602060048201526012602482015271496e76616c69642070657263656e7461676560701b604482015290519081900360640190fd5b6108ab60f31b6001600160f01b0319851614801561176a57506001600160a01b038516155b80611776575060008251115b61177f57600080fd5b60018360038151811061178e57fe5b602002602001015111156117e9576040805162461bcd60e51b815260206004820152601f60248201527f496e76616c6964207370656369616c207265736f6c7574696f6e20666c616700604482015290519081900360640190fd5b826003815181106117f657fe5b60200260200101516001141561181c5760028b1461181357600080fd5b60009950600098505b60008d815260086020526040812061183391612209565b600082511180156118d2575060408051600481526024810191829052835190918491819060208401908083835b6020831061187f5780518252601f199092019160209182019101611860565b51815160209384036101000a600019018019909216911617905260405191909301819003902091850180516001600160e01b03199093166001600160e01b03909316929092179091525050905160041490505b1561198f5760408051600481526024810191829052835190918491819060208401908083835b602083106119175780518252601f1990920191602091820191016118f8565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206001600160e01b0319166020820180516001600160e01b038381831617835250505050600860008f8152602001908152602001600020908051906020019061198d92919061218b565b505b8a60048e8154811061199d57fe5b9060005260206000209060060201600001819055508960048e815481106119c057fe5b9060005260206000209060060201600101819055508660048e815481106119e357fe5b9060005260206000209060060201600401819055508760048e81548110611a0657fe5b90600052602060002090600602016003019080519060200190611a2a929190612250565b5082600081518110611a3857fe5b602002602001015160048e81548110611a4d57fe5b9060005260206000209060060201600501819055508860048e81548110611a7057fe5b90600052602060002090600602016002018190555082600181518110611a9257fe5b60209081029190910181015160008f815260059092526040909120908155600101805461ffff60a01b1916600160a01b60f087901c02176001600160a01b0319166001600160a01b038716179055825183906002908110611aef57fe5b6020026020010151600660008f81526020019081526020016000208190555082600381518110611b1b57fe5b6020026020010151600760008f8152602001908152602001600020819055508c7f2a65d0fe76508fb4e604d4804927dce75b70f82e64a2025e3bffb2fc003418508d88604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015611b9f578181015183820152602001611b87565b50505050905090810190601f168015611bcc5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611bff578181015183820152602001611be7565b50505050905090810190601f168015611c2c5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050505050505050505050565b565b6000546001600160a01b031681565b6000546001600160a01b031615611c83576000546001600160a01b03163314611c8357600080fd5b600080546001600160a01b039092166001600160a01b031992831681179091556001805483168217905560028054909216179055565b600081815260056020908152604080832060018082015491546008855283862080548551600261010095831615959095026000190190911693909304601f81018790048702840187019095528483528695869586956060958b956001600160a01b03831695600160a01b90930460f01b9490938391830182828015611d7f5780601f10611d5457610100808354040283529160200191611d7f565b820191906000526020600020905b815481529060010190602001808311611d6257829003601f168201915b505050505090509450945094509450945091939590929450565b5050505050505050505050505050565b6002546001600160a01b031681565b611dc289876120b5565b600114611e05576040805162461bcd60e51b815260206004820152600c60248201526b496e76616c696420526f6c6560a01b604482015290519081900360640190fd5b60046040518060c001604052808b81526020018a815260200189815260200188815260200187815260200183600081518110611e3d57fe5b602090810291909101810151909152825460018181018086556000958652948390208451600690930201918255838301519082015560408301516002820155606083015180519192611e9792600385019290910190612250565b506080820151816004015560a0820151816005015550505060006001600480549050039050604051806060016040528083600181518110611ed457fe5b60209081029190910181015182526001600160a01b03808816838301526001600160f01b03198716604093840152600085815260058352839020845181559184015160019092018054949093015160f01c600160a01b0261ffff60a01b19929091166001600160a01b03199094169390931716919091179055815182906002908110611f5c57fe5b6020026020010151600660008381526020019081526020016000208190555081600381518110611f8857fe5b60200260200101516007600083815260200190815260200160002081905550807f2a65d0fe76508fb4e604d4804927dce75b70f82e64a2025e3bffb2fc003418508c87604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561200c578181015183820152602001611ff4565b50505050905090810190601f1680156120395780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561206c578181015183820152602001612054565b50505050905090810190601f1680156120995780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a25050505050505050505050565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663790e118c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561210657600080fd5b505afa15801561211a573d6000803e3d6000fd5b505050506040513d602081101561213057600080fd5b50519050808410612145576000915050612185565b60005b835181101561217e578184828151811061215e57fe5b60200260200101511061217657600092505050612185565b600101612148565b5060019150505b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106121cc57805160ff19168380011785556121f9565b828001600101855582156121f9579182015b828111156121f95782518255916020019190600101906121de565b5061220592915061228a565b5090565b50805460018160011615610100020316600290046000825580601f1061222f575061224d565b601f01602090049060005260206000209081019061224d919061228a565b50565b8280548282559060005260206000209081019282156121f957916020028201828111156121f95782518255916020019190600101906121de565b61113e91905b80821115612205576000815560010161229056fea265627a7a7231582059a8e761d7a3fbf078c930dbc789100e4d070ac4b02db1cbb74085c3926c3e4a64736f6c63430005110032

Block Transaction Gas Used Reward
view all blocks ##produced##

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.