Source Code
Overview
S Balance
0 S
More Info
ContractCreator
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Swapx Multis... | 5059558 | 3 days ago | IN | 0 S | 0.00003111 | ||||
Set Role For | 5059506 | 3 days ago | IN | 0 S | 0.00013706 | ||||
Set Role For | 3166398 | 10 days ago | IN | 0 S | 0.00011826 | ||||
Set Role For | 3166384 | 10 days ago | IN | 0 S | 0.00013707 | ||||
Set Role For | 790002 | 18 days ago | IN | 0 S | 0.00013706 | ||||
Set Role For | 789998 | 18 days ago | IN | 0 S | 0.00011826 | ||||
Set Role For | 789994 | 18 days ago | IN | 0 S | 0.00012014 | ||||
Set Role For | 789991 | 18 days ago | IN | 0 S | 0.00013707 | ||||
Set Role For | 786954 | 18 days ago | IN | 0 S | 0.00013707 | ||||
Set Role For | 786942 | 18 days ago | IN | 0 S | 0.00015588 | ||||
Set Role For | 786902 | 18 days ago | IN | 0 S | 0.00015588 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5067313 | 3 days ago | 0 S | ||||
5067313 | 3 days ago | 0 S | ||||
5067313 | 3 days ago | 0 S | ||||
5046455 | 3 days ago | 0 S | ||||
5046455 | 3 days ago | 0 S | ||||
5046455 | 3 days ago | 0 S | ||||
4801781 | 4 days ago | 0 S | ||||
4799549 | 4 days ago | 0 S | ||||
4798755 | 4 days ago | 0 S | ||||
4798755 | 4 days ago | 0 S | ||||
4798755 | 4 days ago | 0 S | ||||
4798393 | 4 days ago | 0 S | ||||
4798393 | 4 days ago | 0 S | ||||
4798393 | 4 days ago | 0 S | ||||
4798164 | 4 days ago | 0 S | ||||
4798149 | 4 days ago | 0 S | ||||
3147529 | 10 days ago | 0 S | ||||
3147529 | 10 days ago | 0 S | ||||
3147529 | 10 days ago | 0 S | ||||
1083098 | 17 days ago | 0 S | ||||
1083098 | 17 days ago | 0 S | ||||
1083098 | 17 days ago | 0 S | ||||
1082577 | 17 days ago | 0 S | ||||
1082577 | 17 days ago | 0 S | ||||
1082577 | 17 days ago | 0 S |
Loading...
Loading
Contract Name:
PermissionsRegistry
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.13; /* This contract handles the accesses to the various SwapX contracts. */ contract PermissionsRegistry { /// @notice Control this contract. This is the main multisig 4/6 address public swpxMultisig; /// @notice This is the swpx team multisig 2/2 address public swpxTeamMultisig; /// @notice Control emergency functions (set to multisig) address public emergencyCouncil; /// @notice Check if caller has a role active (role -> caller -> true/false) mapping(bytes => mapping(address => bool)) public hasRole; mapping(bytes => bool) internal _checkRole; mapping(bytes => address[]) internal _roleToAddresses; mapping(address => bytes[]) internal _addressToRoles; /// @notice Roles array bytes[] internal _roles; event RoleAdded(bytes role); event RoleRemoved(bytes role); event RoleSetFor(address indexed user, bytes indexed role); event RoleRemovedFor(address indexed user, bytes indexed role); event SetEmergencyCouncil(address indexed council); event SetSwapxTeamMultisig(address indexed multisig); event SetSwapxMultisig(address indexed multisig); constructor() { swpxTeamMultisig = msg.sender; swpxMultisig = msg.sender; emergencyCouncil = msg.sender; _roles.push(bytes("GOVERNANCE")); _checkRole[(bytes("GOVERNANCE"))] = true; _roles.push(bytes("VOTER_ADMIN")); _checkRole[(bytes("VOTER_ADMIN"))] = true; _roles.push(bytes("GAUGE_ADMIN")); _checkRole[(bytes("GAUGE_ADMIN"))] = true; _roles.push(bytes("BRIBE_ADMIN")); _checkRole[(bytes("BRIBE_ADMIN"))] = true; _roles.push(bytes("FEE_MANAGER")); _checkRole[(bytes("FEE_MANAGER"))] = true; _roles.push(bytes("CL_FEES_VAULT_ADMIN")); _checkRole[(bytes("CL_FEES_VAULT_ADMIN"))] = true; } modifier onlySwapxMultisig() { require(msg.sender == swpxMultisig, "!swpxMultisig"); _; } /* ----------------------------------------------------------------------------- -------------------------------------------------------------------------------- ROLES SETTINGS -------------------------------------------------------------------------------- ----------------------------------------------------------------------------- */ /// @notice add a new role /// @param role new role's string (eg role = "GAUGE_ADMIN") function addRole(string memory role) external onlySwapxMultisig { bytes memory _role = bytes(role); require(!_checkRole[_role], 'is a role'); _checkRole[_role] = true; _roles.push(_role); emit RoleAdded(_role); } /// @notice Remove a role /// @dev set last one to i_th position then .pop() function removeRole(string memory role) external onlySwapxMultisig { bytes memory _role = bytes(role); require(_checkRole[_role], 'not a role'); for(uint i = 0; i < _roles.length; i++){ if(keccak256(_roles[i]) == keccak256(_role)){ _roles[i] = _roles[_roles.length -1]; _roles.pop(); _checkRole[_role] = false; emit RoleRemoved(_role); break; } } address[] memory rta = _roleToAddresses[bytes(role)]; for(uint i = 0; i < rta.length; i++){ hasRole[bytes(role)][rta[i]] = false; bytes[] memory __roles = _addressToRoles[rta[i]]; for(uint k = 0; k < __roles.length; k++){ if(keccak256(__roles[k]) == keccak256(bytes(role))){ _addressToRoles[rta[i]][k] = _roles[_roles.length -1]; _addressToRoles[rta[i]].pop(); } } } } /// @notice Set a role for an address function setRoleFor(address c, string memory role) external onlySwapxMultisig { bytes memory _role = bytes(role); require(_checkRole[_role], 'not a role'); require(!hasRole[_role][c], 'assigned'); hasRole[_role][c] = true; _roleToAddresses[_role].push(c); _addressToRoles[c].push(_role); emit RoleSetFor(c, _role); } /// @notice remove a role from an address function removeRoleFrom(address c, string memory role) external onlySwapxMultisig { bytes memory _role = bytes(role); require(_checkRole[_role], 'not a role'); require(hasRole[_role][c], 'not assigned'); hasRole[_role][c] = false; address[] storage rta = _roleToAddresses[_role]; for(uint i = 0; i < rta.length; i++){ if(rta[i] == c){ rta[i] = rta[rta.length -1]; rta.pop(); } } bytes[] storage atr = _addressToRoles[c]; for(uint i = 0; i < atr.length; i++){ if(keccak256(atr[i]) == keccak256(_role)){ atr[i] = atr[atr.length -1]; atr.pop(); } } emit RoleRemovedFor(c, _role); } /************************************************************ VIEW *************************************************************/ /// @notice Read roles and return strings function rolesToString() external view returns(string[] memory __roles){ __roles = new string[](_roles.length); for(uint i = 0; i < _roles.length; i++){ __roles[i] = string(_roles[i]); } } /// @notice Read roles array and return bytes function roles() external view returns(bytes[] memory){ return _roles; } /// @notice Read roles length function rolesLength() external view returns(uint){ return _roles.length; } /// @notice Return addresses for a given role function roleToAddresses(string memory role) external view returns(address[] memory _addresses){ return _roleToAddresses[bytes(role)]; } /// @notice Return roles for a given address function addressToRole(address _user) external view returns(string[] memory){ string[] memory _temp = new string[](_addressToRoles[_user].length); uint i = 0; for(i; i < _temp.length; i++){ _temp[i] = string(_addressToRoles[_user][i]); } return _temp; } /************************************************************ HELPERS *************************************************************/ /// @notice Helper function to get bytes from a string function helper_stringToBytes(string memory _input) public pure returns(bytes memory){ return bytes(_input); } /// @notice Helper function to get string from bytes function helper_bytesToString(bytes memory _input) public pure returns(string memory){ return string(_input); } /* ----------------------------------------------------------------------------- -------------------------------------------------------------------------------- EMERGENCY AND MULTISIG -------------------------------------------------------------------------------- ----------------------------------------------------------------------------- */ /// @notice set emergency counsil /// @param _new new address function setEmergencyCouncil(address _new) external { require(msg.sender == emergencyCouncil || msg.sender == swpxMultisig, "not allowed"); require(_new != address(0), "addr0"); require(_new != emergencyCouncil, "same emergencyCouncil"); emergencyCouncil = _new; emit SetEmergencyCouncil(_new); } /// @notice set SwapX team multisig /// @param _new new address function setSwapxTeamMultisig(address _new) external { require(msg.sender == swpxTeamMultisig, "not allowed"); require(_new != address(0), "addr 0"); require(_new != swpxTeamMultisig, "same multisig"); swpxTeamMultisig = _new; emit SetSwapxTeamMultisig(_new); } /// @notice set SwapX multisig /// @param _new new address function setSwapxMultisig(address _new) external { require(msg.sender == swpxMultisig, "not allowed"); require(_new != address(0), "addr0"); require(_new != swpxMultisig, "same multisig"); swpxMultisig = _new; emit SetSwapxMultisig(_new); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"role","type":"bytes"}],"name":"RoleAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"role","type":"bytes"}],"name":"RoleRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bytes","name":"role","type":"bytes"}],"name":"RoleRemovedFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"bytes","name":"role","type":"bytes"}],"name":"RoleSetFor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"council","type":"address"}],"name":"SetEmergencyCouncil","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"multisig","type":"address"}],"name":"SetSwapxMultisig","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"multisig","type":"address"}],"name":"SetSwapxTeamMultisig","type":"event"},{"inputs":[{"internalType":"string","name":"role","type":"string"}],"name":"addRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addressToRole","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyCouncil","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_input","type":"bytes"}],"name":"helper_bytesToString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_input","type":"string"}],"name":"helper_stringToBytes","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"role","type":"string"}],"name":"removeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"c","type":"address"},{"internalType":"string","name":"role","type":"string"}],"name":"removeRoleFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"role","type":"string"}],"name":"roleToAddresses","outputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"roles","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rolesLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rolesToString","outputs":[{"internalType":"string[]","name":"__roles","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setEmergencyCouncil","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"c","type":"address"},{"internalType":"string","name":"role","type":"string"}],"name":"setRoleFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setSwapxMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setSwapxTeamMultisig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swpxMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swpxTeamMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060018054336001600160a01b031991821681178355600080548316821781556002805490931690911790915560408051808201909152600a815269474f5645524e414e434560b01b60208201908152600780549485018155909252516200008c92600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600a815260200169474f5645524e414e434560b01b815250604051620000c39190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052600b82526a2b27aa22a92fa0a226a4a760a91b9082019081526007805460018101825560009190915291516200013292600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600b81526020016a2b27aa22a92fa0a226a4a760a91b8152506040516200016a9190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052600b82526a23a0aaa3a2afa0a226a4a760a91b908201908152600780546001810182556000919091529151620001d992600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600b81526020016a23a0aaa3a2afa0a226a4a760a91b815250604051620002119190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052600b82526a212924a122afa0a226a4a760a91b9082019081526007805460018101825560009190915291516200028092600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600b81526020016a212924a122afa0a226a4a760a91b815250604051620002b89190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052600b82526a2322a2afa6a0a720a3a2a960a91b9082019081526007805460018101825560009190915291516200032792600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280600b81526020016a2322a2afa6a0a720a3a2a960a91b8152506040516200035f9190620004e2565b9081526040805160209281900383018120805460ff1916941515949094179093558281019052601382527221a62fa322a2a9afab20aaa62a2fa0a226a4a760691b908201908152600780546001810182556000919091529151620003d692600080516020620021d88339815191520191906200043c565b50600160046040518060400160405280601381526020017221a62fa322a2a9afab20aaa62a2fa0a226a4a760691b815250604051620004169190620004e2565b908152604051908190036020019020805491151560ff199092169190911790556200055c565b8280546200044a9062000520565b90600052602060002090601f0160209004810192826200046e5760008555620004b9565b82601f106200048957805160ff1916838001178555620004b9565b82800160010185558215620004b9579182015b82811115620004b95782518255916020019190600101906200049c565b50620004c7929150620004cb565b5090565b5b80821115620004c75760008155600101620004cc565b6000825160005b81811015620005055760208186018101518583015201620004e9565b8181111562000515576000828501525b509190910192915050565b600181811c908216806200053557607f821691505b6020821081036200055657634e487b7160e01b600052602260045260246000fd5b50919050565b611c6c806200056c6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063818bedf1116100a25780639dce27ae116100715780639dce27ae1461026c578063adb0630a1461027d578063c193dbb214610290578063ddc48952146102a3578063e586875f146102c357600080fd5b8063818bedf114610228578063829797c514610246578063909102bf146102285780639c0589641461025957600080fd5b80634bf6c0cf116100e95780634bf6c0cf146101af5780636755d7b1146101c257806368aa9d1a146101ed5780637778960e1461020d5780637b59f03c1461022057600080fd5b80630d31e2ea1461011b578063392f5f64146101305780633e96e8681461014e5780634448e1eb14610161575b600080fd5b61012e6101293660046117f9565b6102d6565b005b61013861067b565b604051610145919061189f565b60405180910390f35b61012e61015c366004611901565b610754565b61019f61016f36600461193e565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b6040519015158152602001610145565b61012e6101bd36600461198c565b61088e565b6001546101d5906001600160a01b031681565b6040516001600160a01b039091168152602001610145565b6102006101fb36600461198c565b61098c565b60405161014591906119ae565b6002546101d5906001600160a01b031681565b610200610af7565b610239610236366004611901565b90565b6040516101459190611a03565b61012e610254366004611901565b610c32565b61012e6102673660046117f9565b61116c565b600754604051908152602001610145565b6000546101d5906001600160a01b031681565b61012e61029e36600461198c565b611355565b6102b66102b1366004611901565b611456565b6040516101459190611a16565b61012e6102d136600461198c565b6114d0565b6000546001600160a01b031633146103095760405162461bcd60e51b815260040161030090611a63565b60405180910390fd5b604051819060049061031c908390611a8a565b9081526040519081900360200190205460ff1661034b5760405162461bcd60e51b815260040161030090611aa6565b60038160405161035b9190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff166103be5760405162461bcd60e51b815260206004820152600c60248201526b1b9bdd08185cdcda59db995960a21b6044820152606401610300565b60006003826040516103d09190611a8a565b90815260408051602092819003830181206001600160a01b03881660009081529352908220805460ff19169315159390931790925590600590610414908490611a8a565b9081526020016040518091039020905060005b815481101561052957846001600160a01b031682828154811061044c5761044c611aca565b6000918252602090912001546001600160a01b031603610517578154829061047690600190611af6565b8154811061048657610486611aca565b9060005260206000200160009054906101000a90046001600160a01b03168282815481106104b6576104b6611aca565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806104f4576104f4611b0d565b600082815260209020810160001990810180546001600160a01b03191690550190555b8061052181611b23565b915050610427565b506001600160a01b0384166000908152600660205260408120905b815481101561062a57838051906020012082828154811061056757610567611aca565b9060005260206000200160405161057e9190611b76565b604051809103902003610618578154829061059b90600190611af6565b815481106105ab576105ab611aca565b906000526020600020018282815481106105c7576105c7611aca565b906000526020600020019080546105dd90611b3c565b6105e89291906115ed565b50818054806105f9576105f9611b0d565b6001900381819060005260206000200160006106159190611674565b90555b8061062281611b23565b915050610544565b50826040516106399190611a8a565b604051908190038120906001600160a01b038716907fa4ee8ba3d4fa99564490ccc0d24115c129e1d527ce326e2693fbc6066a42378790600090a35050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561074b5783829060005260206000200180546106be90611b3c565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611b3c565b80156107375780601f1061070c57610100808354040283529160200191610737565b820191906000526020600020905b81548152906001019060200180831161071a57829003601f168201915b50505050508152602001906001019061069f565b50505050905090565b6000546001600160a01b0316331461077e5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610791908390611a8a565b9081526040519081900360200190205460ff16156107dd5760405162461bcd60e51b81526020600482015260096024820152686973206120726f6c6560b81b6044820152606401610300565b60016004826040516107ef9190611a8a565b90815260405160209181900382019020805460ff191692151592909217909155600780546001810182556000919091528251610852927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688909201918401906116b1565b507f653c7fd6974afa5afbb64671ae46627f13633272e5fb2bd632ecf49713ebfe63816040516108829190611a03565b60405180910390a15050565b6000546001600160a01b031633146108b85760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166108f65760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6000546001600160a01b03908116908216036109445760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600080546001600160a01b0319166001600160a01b038316908117825560405190917fc033e3bf37d7ae29d78fb5f4480cf0a5664ad9e9ccdf1622be5967c3f579a8e191a250565b6001600160a01b0381166000908152600660205260408120546060919067ffffffffffffffff8111156109c1576109c1611756565b6040519080825280602002602001820160405280156109f457816020015b60608152602001906001900390816109df5790505b50905060005b8151811015610af0576001600160a01b0384166000908152600660205260409020805482908110610a2d57610a2d611aca565b906000526020600020018054610a4290611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90611b3c565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b5050505050828281518110610ad257610ad2611aca565b60200260200101819052508080610ae890611b23565b9150506109fa565b5092915050565b60075460609067ffffffffffffffff811115610b1557610b15611756565b604051908082528060200260200182016040528015610b4857816020015b6060815260200190600190039081610b335790505b50905060005b600754811015610c2e5760078181548110610b6b57610b6b611aca565b906000526020600020018054610b8090611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bac90611b3c565b8015610bf95780601f10610bce57610100808354040283529160200191610bf9565b820191906000526020600020905b815481529060010190602001808311610bdc57829003601f168201915b5050505050828281518110610c1057610c10611aca565b60200260200101819052508080610c2690611b23565b915050610b4e565b5090565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610c6f908390611a8a565b9081526040519081900360200190205460ff16610c9e5760405162461bcd60e51b815260040161030090611aa6565b60005b600754811015610df757818051906020012060078281548110610cc657610cc6611aca565b90600052602060002001604051610cdd9190611b76565b604051809103902003610de55760078054610cfa90600190611af6565b81548110610d0a57610d0a611aca565b9060005260206000200160078281548110610d2757610d27611aca565b90600052602060002001908054610d3d90611b3c565b610d489291906115ed565b506007805480610d5a57610d5a611b0d565b600190038181906000526020600020016000610d769190611674565b90556000600483604051610d8a9190611a8a565b908152604051908190036020018120805492151560ff19909316929092179091557f2c48f81b3be6f2583bd7766be9bead1529f9759f846e854d191bcd3924673d7290610dd8908490611a03565b60405180910390a1610df7565b80610def81611b23565b915050610ca1565b506000600583604051610e0a9190611a8a565b9081526040805191829003602090810183208054808302850183019093528284529190830182828015610e6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e48575b5050505050905060005b8151811015611166576000600385604051610e8b9190611a8a565b90815260200160405180910390206000848481518110610ead57610ead611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600060066000848481518110610f0457610f04611aca565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610ff8578382906000526020600020018054610f6b90611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9790611b3c565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b505050505081526020019060010190610f4c565b50505050905060005b815181101561115157858051906020012082828151811061102457611024611aca565b6020026020010151805190602001200361113f576007805461104890600190611af6565b8154811061105857611058611aca565b906000526020600020016006600086868151811061107857611078611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002082815481106110b1576110b1611aca565b906000526020600020019080546110c790611b3c565b6110d29291906115ed565b50600660008585815181106110e9576110e9611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002080548061112057611120611b0d565b60019003818190600052602060002001600061113c9190611674565b90555b8061114981611b23565b915050611001565b5050808061115e90611b23565b915050610e70565b50505050565b6000546001600160a01b031633146111965760405162461bcd60e51b815260040161030090611a63565b60405181906004906111a9908390611a8a565b9081526040519081900360200190205460ff166111d85760405162461bcd60e51b815260040161030090611aa6565b6003816040516111e89190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff16156112485760405162461bcd60e51b8152602060048201526008602482015267185cdcda59db995960c21b6044820152606401610300565b600160038260405161125a9190611a8a565b90815260408051602092819003830181206001600160a01b038816600090815293529120805460ff19169215159290921790915560059061129c908390611a8a565b9081526040805160209281900383019020805460018082018355600092835284832090910180546001600160a01b0319166001600160a01b0389169081179091558252600684529181208054928301815581528290208351611306939190920191908401906116b1565b50806040516113159190611a8a565b604051908190038120906001600160a01b038516907f22efbd5010fe3ab1daad601999aba290f97caf7856c253f4f8ec551873be6dee90600090a3505050565b6001546001600160a01b0316331461137f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166113be5760405162461bcd60e51b815260206004820152600660248201526506164647220360d41b6044820152606401610300565b6001546001600160a01b039081169082160361140c5760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f266c9c09b9b435932992b96d7c3c05c61c93621e28994f6089020488e3b7d0ba90600090a250565b60606005826040516114689190611a8a565b90815260408051918290036020908101832080548083028501830190935282845291908301828280156114c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114a6575b50505050509050919050565b6002546001600160a01b03163314806114f357506000546001600160a01b031633145b61150f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b03811661154d5760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6002546001600160a01b03908116908216036115a35760405162461bcd60e51b81526020600482015260156024820152741cd85b5948195b595c99d95b98de50dbdd5b98da5b605a1b6044820152606401610300565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f6eba45b867b647f00a6a295ba1fdfc5929f1b38a68a3beda302d7eab77b9029a90600090a250565b8280546115f990611b3c565b90600052602060002090601f01602090048101928261161b5760008555611668565b82601f1061162c5780548555611668565b8280016001018555821561166857600052602060002091601f016020900482015b8281111561166857825482559160010191906001019061164d565b50610c2e929150611725565b50805461168090611b3c565b6000825580601f10611690575050565b601f0160209004906000526020600020908101906116ae9190611725565b50565b8280546116bd90611b3c565b90600052602060002090601f0160209004810192826116df5760008555611668565b82601f106116f857805160ff1916838001178555611668565b82800160010185558215611668579182015b8281111561166857825182559160200191906001019061170a565b5b80821115610c2e5760008155600101611726565b80356001600160a01b038116811461175157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177d57600080fd5b813567ffffffffffffffff8082111561179857611798611756565b604051601f8301601f19908116603f011681019082821181831017156117c0576117c0611756565b816040528381528660208588010111156117d957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561180c57600080fd5b6118158361173a565b9150602083013567ffffffffffffffff81111561183157600080fd5b61183d8582860161176c565b9150509250929050565b60005b8381101561186257818101518382015260200161184a565b838111156111665750506000910152565b6000815180845261188b816020860160208601611847565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526118e2858351611873565b945092850192908501906001016118c6565b5092979650505050505050565b60006020828403121561191357600080fd5b813567ffffffffffffffff81111561192a57600080fd5b6119368482850161176c565b949350505050565b6000806040838503121561195157600080fd5b823567ffffffffffffffff81111561196857600080fd5b6119748582860161176c565b9250506119836020840161173a565b90509250929050565b60006020828403121561199e57600080fd5b6119a78261173a565b9392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526119f1858351611873565b945092850192908501906001016119d5565b6020815260006119a76020830184611873565b6020808252825182820181905260009190848201906040850190845b81811015611a575783516001600160a01b031683529284019291840191600101611a32565b50909695505050505050565b6020808252600d908201526c21737770784d756c746973696760981b604082015260600190565b60008251611a9c818460208701611847565b9190910192915050565b6020808252600a90820152696e6f74206120726f6c6560b01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611b0857611b08611ae0565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201611b3557611b35611ae0565b5060010190565b600181811c90821680611b5057607f821691505b602082108103611b7057634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680611b9257607f831692505b60208084108203611bb157634e487b7160e01b86526022600452602486fd5b818015611bc55760018114611bd657611c03565b60ff19861689528489019650611c03565b60008a81526020902060005b86811015611bfb5781548b820152908501908301611be2565b505084890196505b509498975050505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b60408201526060019056fea264697066735822122025fa50a828b0753bdc0ae4486e67aa97aaf7fdde31220a564f6073ac8936c70264736f6c634300080d0033a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063818bedf1116100a25780639dce27ae116100715780639dce27ae1461026c578063adb0630a1461027d578063c193dbb214610290578063ddc48952146102a3578063e586875f146102c357600080fd5b8063818bedf114610228578063829797c514610246578063909102bf146102285780639c0589641461025957600080fd5b80634bf6c0cf116100e95780634bf6c0cf146101af5780636755d7b1146101c257806368aa9d1a146101ed5780637778960e1461020d5780637b59f03c1461022057600080fd5b80630d31e2ea1461011b578063392f5f64146101305780633e96e8681461014e5780634448e1eb14610161575b600080fd5b61012e6101293660046117f9565b6102d6565b005b61013861067b565b604051610145919061189f565b60405180910390f35b61012e61015c366004611901565b610754565b61019f61016f36600461193e565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b6040519015158152602001610145565b61012e6101bd36600461198c565b61088e565b6001546101d5906001600160a01b031681565b6040516001600160a01b039091168152602001610145565b6102006101fb36600461198c565b61098c565b60405161014591906119ae565b6002546101d5906001600160a01b031681565b610200610af7565b610239610236366004611901565b90565b6040516101459190611a03565b61012e610254366004611901565b610c32565b61012e6102673660046117f9565b61116c565b600754604051908152602001610145565b6000546101d5906001600160a01b031681565b61012e61029e36600461198c565b611355565b6102b66102b1366004611901565b611456565b6040516101459190611a16565b61012e6102d136600461198c565b6114d0565b6000546001600160a01b031633146103095760405162461bcd60e51b815260040161030090611a63565b60405180910390fd5b604051819060049061031c908390611a8a565b9081526040519081900360200190205460ff1661034b5760405162461bcd60e51b815260040161030090611aa6565b60038160405161035b9190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff166103be5760405162461bcd60e51b815260206004820152600c60248201526b1b9bdd08185cdcda59db995960a21b6044820152606401610300565b60006003826040516103d09190611a8a565b90815260408051602092819003830181206001600160a01b03881660009081529352908220805460ff19169315159390931790925590600590610414908490611a8a565b9081526020016040518091039020905060005b815481101561052957846001600160a01b031682828154811061044c5761044c611aca565b6000918252602090912001546001600160a01b031603610517578154829061047690600190611af6565b8154811061048657610486611aca565b9060005260206000200160009054906101000a90046001600160a01b03168282815481106104b6576104b6611aca565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806104f4576104f4611b0d565b600082815260209020810160001990810180546001600160a01b03191690550190555b8061052181611b23565b915050610427565b506001600160a01b0384166000908152600660205260408120905b815481101561062a57838051906020012082828154811061056757610567611aca565b9060005260206000200160405161057e9190611b76565b604051809103902003610618578154829061059b90600190611af6565b815481106105ab576105ab611aca565b906000526020600020018282815481106105c7576105c7611aca565b906000526020600020019080546105dd90611b3c565b6105e89291906115ed565b50818054806105f9576105f9611b0d565b6001900381819060005260206000200160006106159190611674565b90555b8061062281611b23565b915050610544565b50826040516106399190611a8a565b604051908190038120906001600160a01b038716907fa4ee8ba3d4fa99564490ccc0d24115c129e1d527ce326e2693fbc6066a42378790600090a35050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561074b5783829060005260206000200180546106be90611b3c565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611b3c565b80156107375780601f1061070c57610100808354040283529160200191610737565b820191906000526020600020905b81548152906001019060200180831161071a57829003601f168201915b50505050508152602001906001019061069f565b50505050905090565b6000546001600160a01b0316331461077e5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610791908390611a8a565b9081526040519081900360200190205460ff16156107dd5760405162461bcd60e51b81526020600482015260096024820152686973206120726f6c6560b81b6044820152606401610300565b60016004826040516107ef9190611a8a565b90815260405160209181900382019020805460ff191692151592909217909155600780546001810182556000919091528251610852927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688909201918401906116b1565b507f653c7fd6974afa5afbb64671ae46627f13633272e5fb2bd632ecf49713ebfe63816040516108829190611a03565b60405180910390a15050565b6000546001600160a01b031633146108b85760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166108f65760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6000546001600160a01b03908116908216036109445760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600080546001600160a01b0319166001600160a01b038316908117825560405190917fc033e3bf37d7ae29d78fb5f4480cf0a5664ad9e9ccdf1622be5967c3f579a8e191a250565b6001600160a01b0381166000908152600660205260408120546060919067ffffffffffffffff8111156109c1576109c1611756565b6040519080825280602002602001820160405280156109f457816020015b60608152602001906001900390816109df5790505b50905060005b8151811015610af0576001600160a01b0384166000908152600660205260409020805482908110610a2d57610a2d611aca565b906000526020600020018054610a4290611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90611b3c565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b5050505050828281518110610ad257610ad2611aca565b60200260200101819052508080610ae890611b23565b9150506109fa565b5092915050565b60075460609067ffffffffffffffff811115610b1557610b15611756565b604051908082528060200260200182016040528015610b4857816020015b6060815260200190600190039081610b335790505b50905060005b600754811015610c2e5760078181548110610b6b57610b6b611aca565b906000526020600020018054610b8090611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bac90611b3c565b8015610bf95780601f10610bce57610100808354040283529160200191610bf9565b820191906000526020600020905b815481529060010190602001808311610bdc57829003601f168201915b5050505050828281518110610c1057610c10611aca565b60200260200101819052508080610c2690611b23565b915050610b4e565b5090565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610c6f908390611a8a565b9081526040519081900360200190205460ff16610c9e5760405162461bcd60e51b815260040161030090611aa6565b60005b600754811015610df757818051906020012060078281548110610cc657610cc6611aca565b90600052602060002001604051610cdd9190611b76565b604051809103902003610de55760078054610cfa90600190611af6565b81548110610d0a57610d0a611aca565b9060005260206000200160078281548110610d2757610d27611aca565b90600052602060002001908054610d3d90611b3c565b610d489291906115ed565b506007805480610d5a57610d5a611b0d565b600190038181906000526020600020016000610d769190611674565b90556000600483604051610d8a9190611a8a565b908152604051908190036020018120805492151560ff19909316929092179091557f2c48f81b3be6f2583bd7766be9bead1529f9759f846e854d191bcd3924673d7290610dd8908490611a03565b60405180910390a1610df7565b80610def81611b23565b915050610ca1565b506000600583604051610e0a9190611a8a565b9081526040805191829003602090810183208054808302850183019093528284529190830182828015610e6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e48575b5050505050905060005b8151811015611166576000600385604051610e8b9190611a8a565b90815260200160405180910390206000848481518110610ead57610ead611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600060066000848481518110610f0457610f04611aca565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610ff8578382906000526020600020018054610f6b90611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9790611b3c565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b505050505081526020019060010190610f4c565b50505050905060005b815181101561115157858051906020012082828151811061102457611024611aca565b6020026020010151805190602001200361113f576007805461104890600190611af6565b8154811061105857611058611aca565b906000526020600020016006600086868151811061107857611078611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002082815481106110b1576110b1611aca565b906000526020600020019080546110c790611b3c565b6110d29291906115ed565b50600660008585815181106110e9576110e9611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002080548061112057611120611b0d565b60019003818190600052602060002001600061113c9190611674565b90555b8061114981611b23565b915050611001565b5050808061115e90611b23565b915050610e70565b50505050565b6000546001600160a01b031633146111965760405162461bcd60e51b815260040161030090611a63565b60405181906004906111a9908390611a8a565b9081526040519081900360200190205460ff166111d85760405162461bcd60e51b815260040161030090611aa6565b6003816040516111e89190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff16156112485760405162461bcd60e51b8152602060048201526008602482015267185cdcda59db995960c21b6044820152606401610300565b600160038260405161125a9190611a8a565b90815260408051602092819003830181206001600160a01b038816600090815293529120805460ff19169215159290921790915560059061129c908390611a8a565b9081526040805160209281900383019020805460018082018355600092835284832090910180546001600160a01b0319166001600160a01b0389169081179091558252600684529181208054928301815581528290208351611306939190920191908401906116b1565b50806040516113159190611a8a565b604051908190038120906001600160a01b038516907f22efbd5010fe3ab1daad601999aba290f97caf7856c253f4f8ec551873be6dee90600090a3505050565b6001546001600160a01b0316331461137f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166113be5760405162461bcd60e51b815260206004820152600660248201526506164647220360d41b6044820152606401610300565b6001546001600160a01b039081169082160361140c5760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f266c9c09b9b435932992b96d7c3c05c61c93621e28994f6089020488e3b7d0ba90600090a250565b60606005826040516114689190611a8a565b90815260408051918290036020908101832080548083028501830190935282845291908301828280156114c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114a6575b50505050509050919050565b6002546001600160a01b03163314806114f357506000546001600160a01b031633145b61150f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b03811661154d5760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6002546001600160a01b03908116908216036115a35760405162461bcd60e51b81526020600482015260156024820152741cd85b5948195b595c99d95b98de50dbdd5b98da5b605a1b6044820152606401610300565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f6eba45b867b647f00a6a295ba1fdfc5929f1b38a68a3beda302d7eab77b9029a90600090a250565b8280546115f990611b3c565b90600052602060002090601f01602090048101928261161b5760008555611668565b82601f1061162c5780548555611668565b8280016001018555821561166857600052602060002091601f016020900482015b8281111561166857825482559160010191906001019061164d565b50610c2e929150611725565b50805461168090611b3c565b6000825580601f10611690575050565b601f0160209004906000526020600020908101906116ae9190611725565b50565b8280546116bd90611b3c565b90600052602060002090601f0160209004810192826116df5760008555611668565b82601f106116f857805160ff1916838001178555611668565b82800160010185558215611668579182015b8281111561166857825182559160200191906001019061170a565b5b80821115610c2e5760008155600101611726565b80356001600160a01b038116811461175157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177d57600080fd5b813567ffffffffffffffff8082111561179857611798611756565b604051601f8301601f19908116603f011681019082821181831017156117c0576117c0611756565b816040528381528660208588010111156117d957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561180c57600080fd5b6118158361173a565b9150602083013567ffffffffffffffff81111561183157600080fd5b61183d8582860161176c565b9150509250929050565b60005b8381101561186257818101518382015260200161184a565b838111156111665750506000910152565b6000815180845261188b816020860160208601611847565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526118e2858351611873565b945092850192908501906001016118c6565b5092979650505050505050565b60006020828403121561191357600080fd5b813567ffffffffffffffff81111561192a57600080fd5b6119368482850161176c565b949350505050565b6000806040838503121561195157600080fd5b823567ffffffffffffffff81111561196857600080fd5b6119748582860161176c565b9250506119836020840161173a565b90509250929050565b60006020828403121561199e57600080fd5b6119a78261173a565b9392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526119f1858351611873565b945092850192908501906001016119d5565b6020815260006119a76020830184611873565b6020808252825182820181905260009190848201906040850190845b81811015611a575783516001600160a01b031683529284019291840191600101611a32565b50909695505050505050565b6020808252600d908201526c21737770784d756c746973696760981b604082015260600190565b60008251611a9c818460208701611847565b9190910192915050565b6020808252600a90820152696e6f74206120726f6c6560b01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611b0857611b08611ae0565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201611b3557611b35611ae0565b5060010190565b600181811c90821680611b5057607f821691505b602082108103611b7057634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680611b9257607f831692505b60208084108203611bb157634e487b7160e01b86526022600452602486fd5b818015611bc55760018114611bd657611c03565b60ff19861689528489019650611c03565b60008a81526020902060005b86811015611bfb5781548b820152908501908301611be2565b505084890196505b509498975050505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b60408201526060019056fea264697066735822122025fa50a828b0753bdc0ae4486e67aa97aaf7fdde31220a564f6073ac8936c70264736f6c634300080d0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ 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.