Source Code
Overview
S Balance
More Info
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
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)
// 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; } }
// 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; } }
// 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); }
// 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; }
// 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; }
// 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); } }
{ "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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.