Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Swapx Multis... | 1483467 | 16 days ago | IN | 0 S | 0.00003111 | ||||
Set Swapx Team M... | 1482515 | 16 days ago | IN | 0 S | 0.00003116 | ||||
Set Emergency Co... | 1482478 | 16 days ago | IN | 0 S | 0.00003123 | ||||
Set Role For | 1482413 | 16 days ago | IN | 0 S | 0.00013718 | ||||
Set Role For | 1482410 | 16 days ago | IN | 0 S | 0.00013706 | ||||
Set Role For | 1482408 | 16 days ago | IN | 0 S | 0.00011826 | ||||
Set Role For | 1482366 | 16 days ago | IN | 0 S | 0.00011826 | ||||
Set Role For | 1474441 | 16 days ago | IN | 0 S | 0.00013707 | ||||
Set Role For | 1474435 | 16 days ago | IN | 0 S | 0.00015588 | ||||
Set Role For | 1474429 | 16 days ago | IN | 0 S | 0.00015588 |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x8CeFA409...9950c30C8 The constructor portion of the code might be different and could alter the actual behaviour of the contract
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": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063818bedf1116100a25780639dce27ae116100715780639dce27ae1461026c578063adb0630a1461027d578063c193dbb214610290578063ddc48952146102a3578063e586875f146102c357600080fd5b8063818bedf114610228578063829797c514610246578063909102bf146102285780639c0589641461025957600080fd5b80634bf6c0cf116100e95780634bf6c0cf146101af5780636755d7b1146101c257806368aa9d1a146101ed5780637778960e1461020d5780637b59f03c1461022057600080fd5b80630d31e2ea1461011b578063392f5f64146101305780633e96e8681461014e5780634448e1eb14610161575b600080fd5b61012e6101293660046117f9565b6102d6565b005b61013861067b565b604051610145919061189f565b60405180910390f35b61012e61015c366004611901565b610754565b61019f61016f36600461193e565b81516020818401810180516003825292820194820194909420919093529091526000908152604090205460ff1681565b6040519015158152602001610145565b61012e6101bd36600461198c565b61088e565b6001546101d5906001600160a01b031681565b6040516001600160a01b039091168152602001610145565b6102006101fb36600461198c565b61098c565b60405161014591906119ae565b6002546101d5906001600160a01b031681565b610200610af7565b610239610236366004611901565b90565b6040516101459190611a03565b61012e610254366004611901565b610c32565b61012e6102673660046117f9565b61116c565b600754604051908152602001610145565b6000546101d5906001600160a01b031681565b61012e61029e36600461198c565b611355565b6102b66102b1366004611901565b611456565b6040516101459190611a16565b61012e6102d136600461198c565b6114d0565b6000546001600160a01b031633146103095760405162461bcd60e51b815260040161030090611a63565b60405180910390fd5b604051819060049061031c908390611a8a565b9081526040519081900360200190205460ff1661034b5760405162461bcd60e51b815260040161030090611aa6565b60038160405161035b9190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff166103be5760405162461bcd60e51b815260206004820152600c60248201526b1b9bdd08185cdcda59db995960a21b6044820152606401610300565b60006003826040516103d09190611a8a565b90815260408051602092819003830181206001600160a01b03881660009081529352908220805460ff19169315159390931790925590600590610414908490611a8a565b9081526020016040518091039020905060005b815481101561052957846001600160a01b031682828154811061044c5761044c611aca565b6000918252602090912001546001600160a01b031603610517578154829061047690600190611af6565b8154811061048657610486611aca565b9060005260206000200160009054906101000a90046001600160a01b03168282815481106104b6576104b6611aca565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818054806104f4576104f4611b0d565b600082815260209020810160001990810180546001600160a01b03191690550190555b8061052181611b23565b915050610427565b506001600160a01b0384166000908152600660205260408120905b815481101561062a57838051906020012082828154811061056757610567611aca565b9060005260206000200160405161057e9190611b76565b604051809103902003610618578154829061059b90600190611af6565b815481106105ab576105ab611aca565b906000526020600020018282815481106105c7576105c7611aca565b906000526020600020019080546105dd90611b3c565b6105e89291906115ed565b50818054806105f9576105f9611b0d565b6001900381819060005260206000200160006106159190611674565b90555b8061062281611b23565b915050610544565b50826040516106399190611a8a565b604051908190038120906001600160a01b038716907fa4ee8ba3d4fa99564490ccc0d24115c129e1d527ce326e2693fbc6066a42378790600090a35050505050565b60606007805480602002602001604051908101604052809291908181526020016000905b8282101561074b5783829060005260206000200180546106be90611b3c565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611b3c565b80156107375780601f1061070c57610100808354040283529160200191610737565b820191906000526020600020905b81548152906001019060200180831161071a57829003601f168201915b50505050508152602001906001019061069f565b50505050905090565b6000546001600160a01b0316331461077e5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610791908390611a8a565b9081526040519081900360200190205460ff16156107dd5760405162461bcd60e51b81526020600482015260096024820152686973206120726f6c6560b81b6044820152606401610300565b60016004826040516107ef9190611a8a565b90815260405160209181900382019020805460ff191692151592909217909155600780546001810182556000919091528251610852927fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688909201918401906116b1565b507f653c7fd6974afa5afbb64671ae46627f13633272e5fb2bd632ecf49713ebfe63816040516108829190611a03565b60405180910390a15050565b6000546001600160a01b031633146108b85760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166108f65760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6000546001600160a01b03908116908216036109445760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600080546001600160a01b0319166001600160a01b038316908117825560405190917fc033e3bf37d7ae29d78fb5f4480cf0a5664ad9e9ccdf1622be5967c3f579a8e191a250565b6001600160a01b0381166000908152600660205260408120546060919067ffffffffffffffff8111156109c1576109c1611756565b6040519080825280602002602001820160405280156109f457816020015b60608152602001906001900390816109df5790505b50905060005b8151811015610af0576001600160a01b0384166000908152600660205260409020805482908110610a2d57610a2d611aca565b906000526020600020018054610a4290611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6e90611b3c565b8015610abb5780601f10610a9057610100808354040283529160200191610abb565b820191906000526020600020905b815481529060010190602001808311610a9e57829003601f168201915b5050505050828281518110610ad257610ad2611aca565b60200260200101819052508080610ae890611b23565b9150506109fa565b5092915050565b60075460609067ffffffffffffffff811115610b1557610b15611756565b604051908082528060200260200182016040528015610b4857816020015b6060815260200190600190039081610b335790505b50905060005b600754811015610c2e5760078181548110610b6b57610b6b611aca565b906000526020600020018054610b8090611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bac90611b3c565b8015610bf95780601f10610bce57610100808354040283529160200191610bf9565b820191906000526020600020905b815481529060010190602001808311610bdc57829003601f168201915b5050505050828281518110610c1057610c10611aca565b60200260200101819052508080610c2690611b23565b915050610b4e565b5090565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b815260040161030090611a63565b6040518190600490610c6f908390611a8a565b9081526040519081900360200190205460ff16610c9e5760405162461bcd60e51b815260040161030090611aa6565b60005b600754811015610df757818051906020012060078281548110610cc657610cc6611aca565b90600052602060002001604051610cdd9190611b76565b604051809103902003610de55760078054610cfa90600190611af6565b81548110610d0a57610d0a611aca565b9060005260206000200160078281548110610d2757610d27611aca565b90600052602060002001908054610d3d90611b3c565b610d489291906115ed565b506007805480610d5a57610d5a611b0d565b600190038181906000526020600020016000610d769190611674565b90556000600483604051610d8a9190611a8a565b908152604051908190036020018120805492151560ff19909316929092179091557f2c48f81b3be6f2583bd7766be9bead1529f9759f846e854d191bcd3924673d7290610dd8908490611a03565b60405180910390a1610df7565b80610def81611b23565b915050610ca1565b506000600583604051610e0a9190611a8a565b9081526040805191829003602090810183208054808302850183019093528284529190830182828015610e6657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e48575b5050505050905060005b8151811015611166576000600385604051610e8b9190611a8a565b90815260200160405180910390206000848481518110610ead57610ead611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600060066000848481518110610f0457610f04611aca565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610ff8578382906000526020600020018054610f6b90611b3c565b80601f0160208091040260200160405190810160405280929190818152602001828054610f9790611b3c565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b505050505081526020019060010190610f4c565b50505050905060005b815181101561115157858051906020012082828151811061102457611024611aca565b6020026020010151805190602001200361113f576007805461104890600190611af6565b8154811061105857611058611aca565b906000526020600020016006600086868151811061107857611078611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002082815481106110b1576110b1611aca565b906000526020600020019080546110c790611b3c565b6110d29291906115ed565b50600660008585815181106110e9576110e9611aca565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002080548061112057611120611b0d565b60019003818190600052602060002001600061113c9190611674565b90555b8061114981611b23565b915050611001565b5050808061115e90611b23565b915050610e70565b50505050565b6000546001600160a01b031633146111965760405162461bcd60e51b815260040161030090611a63565b60405181906004906111a9908390611a8a565b9081526040519081900360200190205460ff166111d85760405162461bcd60e51b815260040161030090611aa6565b6003816040516111e89190611a8a565b90815260408051602092819003830190206001600160a01b0386166000908152925290205460ff16156112485760405162461bcd60e51b8152602060048201526008602482015267185cdcda59db995960c21b6044820152606401610300565b600160038260405161125a9190611a8a565b90815260408051602092819003830181206001600160a01b038816600090815293529120805460ff19169215159290921790915560059061129c908390611a8a565b9081526040805160209281900383019020805460018082018355600092835284832090910180546001600160a01b0319166001600160a01b0389169081179091558252600684529181208054928301815581528290208351611306939190920191908401906116b1565b50806040516113159190611a8a565b604051908190038120906001600160a01b038516907f22efbd5010fe3ab1daad601999aba290f97caf7856c253f4f8ec551873be6dee90600090a3505050565b6001546001600160a01b0316331461137f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b0381166113be5760405162461bcd60e51b815260206004820152600660248201526506164647220360d41b6044820152606401610300565b6001546001600160a01b039081169082160361140c5760405162461bcd60e51b815260206004820152600d60248201526c73616d65206d756c746973696760981b6044820152606401610300565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f266c9c09b9b435932992b96d7c3c05c61c93621e28994f6089020488e3b7d0ba90600090a250565b60606005826040516114689190611a8a565b90815260408051918290036020908101832080548083028501830190935282845291908301828280156114c457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114a6575b50505050509050919050565b6002546001600160a01b03163314806114f357506000546001600160a01b031633145b61150f5760405162461bcd60e51b815260040161030090611c11565b6001600160a01b03811661154d5760405162461bcd60e51b8152602060048201526005602482015264061646472360dc1b6044820152606401610300565b6002546001600160a01b03908116908216036115a35760405162461bcd60e51b81526020600482015260156024820152741cd85b5948195b595c99d95b98de50dbdd5b98da5b605a1b6044820152606401610300565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f6eba45b867b647f00a6a295ba1fdfc5929f1b38a68a3beda302d7eab77b9029a90600090a250565b8280546115f990611b3c565b90600052602060002090601f01602090048101928261161b5760008555611668565b82601f1061162c5780548555611668565b8280016001018555821561166857600052602060002091601f016020900482015b8281111561166857825482559160010191906001019061164d565b50610c2e929150611725565b50805461168090611b3c565b6000825580601f10611690575050565b601f0160209004906000526020600020908101906116ae9190611725565b50565b8280546116bd90611b3c565b90600052602060002090601f0160209004810192826116df5760008555611668565b82601f106116f857805160ff1916838001178555611668565b82800160010185558215611668579182015b8281111561166857825182559160200191906001019061170a565b5b80821115610c2e5760008155600101611726565b80356001600160a01b038116811461175157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177d57600080fd5b813567ffffffffffffffff8082111561179857611798611756565b604051601f8301601f19908116603f011681019082821181831017156117c0576117c0611756565b816040528381528660208588010111156117d957600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561180c57600080fd5b6118158361173a565b9150602083013567ffffffffffffffff81111561183157600080fd5b61183d8582860161176c565b9150509250929050565b60005b8381101561186257818101518382015260200161184a565b838111156111665750506000910152565b6000815180845261188b816020860160208601611847565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526118e2858351611873565b945092850192908501906001016118c6565b5092979650505050505050565b60006020828403121561191357600080fd5b813567ffffffffffffffff81111561192a57600080fd5b6119368482850161176c565b949350505050565b6000806040838503121561195157600080fd5b823567ffffffffffffffff81111561196857600080fd5b6119748582860161176c565b9250506119836020840161173a565b90509250929050565b60006020828403121561199e57600080fd5b6119a78261173a565b9392505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118f457603f198886030184526119f1858351611873565b945092850192908501906001016119d5565b6020815260006119a76020830184611873565b6020808252825182820181905260009190848201906040850190845b81811015611a575783516001600160a01b031683529284019291840191600101611a32565b50909695505050505050565b6020808252600d908201526c21737770784d756c746973696760981b604082015260600190565b60008251611a9c818460208701611847565b9190910192915050565b6020808252600a90820152696e6f74206120726f6c6560b01b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611b0857611b08611ae0565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201611b3557611b35611ae0565b5060010190565b600181811c90821680611b5057607f821691505b602082108103611b7057634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680611b9257607f831692505b60208084108203611bb157634e487b7160e01b86526022600452602486fd5b818015611bc55760018114611bd657611c03565b60ff19861689528489019650611c03565b60008a81526020902060005b86811015611bfb5781548b820152908501908301611be2565b505084890196505b509498975050505050505050565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b60408201526060019056fea264697066735822122025fa50a828b0753bdc0ae4486e67aa97aaf7fdde31220a564f6073ac8936c70264736f6c634300080d0033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.