More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
TreasuryRecipient
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; import "src/base/fee/Recipient.sol"; /// @title TreasuryRecipient - Contract to receive accrued treasury fees. contract TreasuryRecipient is Recipient { constructor(address _governance) Recipient(_governance) {} }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; import {SafeTransferLib} from "solady/src/utils/SafeTransferLib.sol"; /// @title Recipient - Contract to receive tokens and outsource their management to allowlist. abstract contract Recipient { using SafeTransferLib for address; /// @notice Address of the governance contract. address public governance; /// @notice Address of the future governance contract. address public futureGovernance; /// @notice Address authorized to call the execute function. mapping(address => bool) public isAllowed; //////////////////////////////////////////////////////////////// /// --- EVENTS & ERRORS /////////////////////////////////////////////////////////////// /// @notice Event emitted when a new governance is proposed. event GovernanceProposed(address indexed newGovernance); /// @notice Event emitted when the governance is changed. event GovernanceChanged(address indexed newGovernance); /// @notice Throws if caller is not the governance. error GOVERNANCE(); /// @notice Throws if caller is not allowed. error NOT_ALLOWED(); /// @notice Throws if the length of the tokens and amounts arrays are not equal. error WRONG_LENGTH(); //////////////////////////////////////////////////////////////// /// --- MODIFIERS /////////////////////////////////////////////////////////////// modifier onlyGovernance() { if (msg.sender != governance) revert GOVERNANCE(); _; } modifier onlyAllowed() { if (!isAllowed[msg.sender]) revert NOT_ALLOWED(); _; } constructor(address _governance) { governance = _governance; } //////////////////////////////////////////////////////////////// /// --- ADMIN FUNCTIONS /////////////////////////////////////////////////////////////// /// @notice Allow an address to call the execute function. /// @param _address Address to allow. function allowAddress(address _address) external onlyGovernance { isAllowed[_address] = true; } /// @notice Disallow an address to call the execute function. /// @param _address Address to disallow. function disallowAddress(address _address) external onlyGovernance { isAllowed[_address] = false; } /// @notice Transfer the governance to a new address. /// @param _governance Address of the new governance. function transferGovernance(address _governance) external onlyGovernance { emit GovernanceProposed(futureGovernance = _governance); } /// @notice Accept the governance transfer. function acceptGovernance() external { if (msg.sender != futureGovernance) revert GOVERNANCE(); emit GovernanceChanged(governance = msg.sender); } /// @notice Withdraw ETH or ERC20 tokens from the contract. function withdraw(address[] calldata _tokens, uint256[] calldata _amount, address _recipient) external onlyAllowed { if (_tokens.length != _amount.length) revert WRONG_LENGTH(); for (uint256 i = 0; i < _tokens.length; i++) { if (_tokens[i] == address(0)) { SafeTransferLib.safeTransferETH(_recipient, _amount[i]); } else { SafeTransferLib.safeTransfer(_tokens[i], _recipient, _amount[i]); } } } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values. /// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol) /// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol) /// /// @dev Note: /// - For ETH transfers, please use `forceSafeTransferETH` for gas griefing protection. /// - For ERC20s, this implementation won't check that a token has code, /// responsibility is delegated to the caller. library SafeTransferLib { /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CUSTOM ERRORS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev The ETH transfer has failed. error ETHTransferFailed(); /// @dev The ERC20 `transferFrom` has failed. error TransferFromFailed(); /// @dev The ERC20 `transfer` has failed. error TransferFailed(); /// @dev The ERC20 `approve` has failed. error ApproveFailed(); /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* CONSTANTS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Suggested gas stipend for contract receiving ETH /// that disallows any storage writes. uint256 internal constant _GAS_STIPEND_NO_STORAGE_WRITES = 2300; /// @dev Suggested gas stipend for contract receiving ETH to perform a few /// storage reads and writes, but low enough to prevent griefing. /// Multiply by a small constant (e.g. 2), if needed. uint256 internal constant _GAS_STIPEND_NO_GRIEF = 100000; /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* ETH OPERATIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Sends `amount` (in wei) ETH to `to`. /// Reverts upon failure. /// /// Note: This implementation does NOT protect against gas griefing. /// Please use `forceSafeTransferETH` for gas griefing protection. function safeTransferETH(address to, uint256 amount) internal { /// @solidity memory-safe-assembly assembly { // Transfer the ETH and check if it succeeded or not. if iszero(call(gas(), to, amount, 0, 0, 0, 0)) { // Store the function selector of `ETHTransferFailed()`. mstore(0x00, 0xb12d13eb) // Revert with (offset, size). revert(0x1c, 0x04) } } } /// @dev Force sends `amount` (in wei) ETH to `to`, with a `gasStipend`. /// The `gasStipend` can be set to a low enough value to prevent /// storage writes or gas griefing. /// /// If sending via the normal procedure fails, force sends the ETH by /// creating a temporary contract which uses `SELFDESTRUCT` to force send the ETH. /// /// Reverts if the current contract has insufficient balance. function forceSafeTransferETH(address to, uint256 amount, uint256 gasStipend) internal { /// @solidity memory-safe-assembly assembly { // If insufficient balance, revert. if lt(selfbalance(), amount) { // Store the function selector of `ETHTransferFailed()`. mstore(0x00, 0xb12d13eb) // Revert with (offset, size). revert(0x1c, 0x04) } // Transfer the ETH and check if it succeeded or not. if iszero(call(gasStipend, to, amount, 0, 0, 0, 0)) { mstore(0x00, to) // Store the address in scratch space. mstore8(0x0b, 0x73) // Opcode `PUSH20`. mstore8(0x20, 0xff) // Opcode `SELFDESTRUCT`. // We can directly use `SELFDESTRUCT` in the contract creation. // Compatible with `SENDALL`: https://eips.ethereum.org/EIPS/eip-4758 if iszero(create(amount, 0x0b, 0x16)) { // To coerce gas estimation to provide enough gas for the `create` above. if iszero(gt(gas(), 1000000)) { revert(0, 0) } } } } } /// @dev Force sends `amount` (in wei) ETH to `to`, with a gas stipend /// equal to `_GAS_STIPEND_NO_GRIEF`. This gas stipend is a reasonable default /// for 99% of cases and can be overridden with the three-argument version of this /// function if necessary. /// /// If sending via the normal procedure fails, force sends the ETH by /// creating a temporary contract which uses `SELFDESTRUCT` to force send the ETH. /// /// Reverts if the current contract has insufficient balance. function forceSafeTransferETH(address to, uint256 amount) internal { // Manually inlined because the compiler doesn't inline functions with branches. /// @solidity memory-safe-assembly assembly { // If insufficient balance, revert. if lt(selfbalance(), amount) { // Store the function selector of `ETHTransferFailed()`. mstore(0x00, 0xb12d13eb) // Revert with (offset, size). revert(0x1c, 0x04) } // Transfer the ETH and check if it succeeded or not. if iszero(call(_GAS_STIPEND_NO_GRIEF, to, amount, 0, 0, 0, 0)) { mstore(0x00, to) // Store the address in scratch space. mstore8(0x0b, 0x73) // Opcode `PUSH20`. mstore8(0x20, 0xff) // Opcode `SELFDESTRUCT`. // We can directly use `SELFDESTRUCT` in the contract creation. // Compatible with `SENDALL`: https://eips.ethereum.org/EIPS/eip-4758 if iszero(create(amount, 0x0b, 0x16)) { // To coerce gas estimation to provide enough gas for the `create` above. if iszero(gt(gas(), 1000000)) { revert(0, 0) } } } } } /// @dev Sends `amount` (in wei) ETH to `to`, with a `gasStipend`. /// The `gasStipend` can be set to a low enough value to prevent /// storage writes or gas griefing. /// /// Simply use `gasleft()` for `gasStipend` if you don't need a gas stipend. /// /// Note: Does NOT revert upon failure. /// Returns whether the transfer of ETH is successful instead. function trySafeTransferETH(address to, uint256 amount, uint256 gasStipend) internal returns (bool success) { /// @solidity memory-safe-assembly assembly { // Transfer the ETH and check if it succeeded or not. success := call(gasStipend, to, amount, 0, 0, 0, 0) } } /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* ERC20 OPERATIONS */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ /// @dev Sends `amount` of ERC20 `token` from `from` to `to`. /// Reverts upon failure. /// /// The `from` account must have at least `amount` approved for /// the current contract to manage. function safeTransferFrom(address token, address from, address to, uint256 amount) internal { /// @solidity memory-safe-assembly assembly { let m := mload(0x40) // Cache the free memory pointer. mstore(0x60, amount) // Store the `amount` argument. mstore(0x40, to) // Store the `to` argument. mstore(0x2c, shl(96, from)) // Store the `from` argument. // Store the function selector of `transferFrom(address,address,uint256)`. mstore(0x0c, 0x23b872dd000000000000000000000000) if iszero( and( // The arguments of `and` are evaluated from right to left. // Set success to whether the call reverted, if not we check it either // returned exactly 1 (can't just be non-zero data), or had no return data. or(eq(mload(0x00), 1), iszero(returndatasize())), call(gas(), token, 0, 0x1c, 0x64, 0x00, 0x20) ) ) { // Store the function selector of `TransferFromFailed()`. mstore(0x00, 0x7939f424) // Revert with (offset, size). revert(0x1c, 0x04) } mstore(0x60, 0) // Restore the zero slot to zero. mstore(0x40, m) // Restore the free memory pointer. } } /// @dev Sends all of ERC20 `token` from `from` to `to`. /// Reverts upon failure. /// /// The `from` account must have their entire balance approved for /// the current contract to manage. function safeTransferAllFrom(address token, address from, address to) internal returns (uint256 amount) { /// @solidity memory-safe-assembly assembly { let m := mload(0x40) // Cache the free memory pointer. mstore(0x40, to) // Store the `to` argument. mstore(0x2c, shl(96, from)) // Store the `from` argument. // Store the function selector of `balanceOf(address)`. mstore(0x0c, 0x70a08231000000000000000000000000) if iszero( and( // The arguments of `and` are evaluated from right to left. gt(returndatasize(), 0x1f), // At least 32 bytes returned. staticcall(gas(), token, 0x1c, 0x24, 0x60, 0x20) ) ) { // Store the function selector of `TransferFromFailed()`. mstore(0x00, 0x7939f424) // Revert with (offset, size). revert(0x1c, 0x04) } // Store the function selector of `transferFrom(address,address,uint256)`. mstore(0x00, 0x23b872dd) // The `amount` argument is already written to the memory word at 0x60. amount := mload(0x60) if iszero( and( // The arguments of `and` are evaluated from right to left. // Set success to whether the call reverted, if not we check it either // returned exactly 1 (can't just be non-zero data), or had no return data. or(eq(mload(0x00), 1), iszero(returndatasize())), call(gas(), token, 0, 0x1c, 0x64, 0x00, 0x20) ) ) { // Store the function selector of `TransferFromFailed()`. mstore(0x00, 0x7939f424) // Revert with (offset, size). revert(0x1c, 0x04) } mstore(0x60, 0) // Restore the zero slot to zero. mstore(0x40, m) // Restore the free memory pointer. } } /// @dev Sends `amount` of ERC20 `token` from the current contract to `to`. /// Reverts upon failure. function safeTransfer(address token, address to, uint256 amount) internal { /// @solidity memory-safe-assembly assembly { mstore(0x14, to) // Store the `to` argument. mstore(0x34, amount) // Store the `amount` argument. // Store the function selector of `transfer(address,uint256)`. mstore(0x00, 0xa9059cbb000000000000000000000000) if iszero( and( // The arguments of `and` are evaluated from right to left. // Set success to whether the call reverted, if not we check it either // returned exactly 1 (can't just be non-zero data), or had no return data. or(eq(mload(0x00), 1), iszero(returndatasize())), call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20) ) ) { // Store the function selector of `TransferFailed()`. mstore(0x00, 0x90b8ec18) // Revert with (offset, size). revert(0x1c, 0x04) } // Restore the part of the free memory pointer that was overwritten. mstore(0x34, 0) } } /// @dev Sends all of ERC20 `token` from the current contract to `to`. /// Reverts upon failure. function safeTransferAll(address token, address to) internal returns (uint256 amount) { /// @solidity memory-safe-assembly assembly { mstore(0x00, 0x70a08231) // Store the function selector of `balanceOf(address)`. mstore(0x20, address()) // Store the address of the current contract. if iszero( and( // The arguments of `and` are evaluated from right to left. gt(returndatasize(), 0x1f), // At least 32 bytes returned. staticcall(gas(), token, 0x1c, 0x24, 0x34, 0x20) ) ) { // Store the function selector of `TransferFailed()`. mstore(0x00, 0x90b8ec18) // Revert with (offset, size). revert(0x1c, 0x04) } mstore(0x14, to) // Store the `to` argument. // The `amount` argument is already written to the memory word at 0x34. amount := mload(0x34) // Store the function selector of `transfer(address,uint256)`. mstore(0x00, 0xa9059cbb000000000000000000000000) if iszero( and( // The arguments of `and` are evaluated from right to left. // Set success to whether the call reverted, if not we check it either // returned exactly 1 (can't just be non-zero data), or had no return data. or(eq(mload(0x00), 1), iszero(returndatasize())), call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20) ) ) { // Store the function selector of `TransferFailed()`. mstore(0x00, 0x90b8ec18) // Revert with (offset, size). revert(0x1c, 0x04) } // Restore the part of the free memory pointer that was overwritten. mstore(0x34, 0) } } /// @dev Sets `amount` of ERC20 `token` for `to` to manage on behalf of the current contract. /// Reverts upon failure. function safeApprove(address token, address to, uint256 amount) internal { /// @solidity memory-safe-assembly assembly { mstore(0x14, to) // Store the `to` argument. mstore(0x34, amount) // Store the `amount` argument. // Store the function selector of `approve(address,uint256)`. mstore(0x00, 0x095ea7b3000000000000000000000000) if iszero( and( // The arguments of `and` are evaluated from right to left. // Set success to whether the call reverted, if not we check it either // returned exactly 1 (can't just be non-zero data), or had no return data. or(eq(mload(0x00), 1), iszero(returndatasize())), call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20) ) ) { // Store the function selector of `ApproveFailed()`. mstore(0x00, 0x3e3f8f73) // Revert with (offset, size). revert(0x1c, 0x04) } // Restore the part of the free memory pointer that was overwritten. mstore(0x34, 0) } } /// @dev Returns the amount of ERC20 `token` owned by `account`. /// Returns zero if the `token` does not exist. function balanceOf(address token, address account) internal view returns (uint256 amount) { /// @solidity memory-safe-assembly assembly { mstore(0x14, account) // Store the `account` argument. // Store the function selector of `balanceOf(address)`. mstore(0x00, 0x70a08231000000000000000000000000) amount := mul( mload(0x20), and( // The arguments of `and` are evaluated from right to left. gt(returndatasize(), 0x1f), // At least 32 bytes returned. staticcall(gas(), token, 0x10, 0x24, 0x20, 0x20) ) ) } } }
{ "remappings": [ "utils/=lib/utils/", "solady/=lib/solady/", "herdaddy/=lib/herdaddy/src/", "forge-std/=lib/forge-std/src/", "address-book/=lib/address-book/src/", "@openzeppelin/=lib/openzeppelin-contracts/", "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", "solidity-examples/=lib/solidity-examples/contracts/", "murky/=lib/murky/src/", "LayerZero-v2/=lib/LayerZero-v2/", "ds-test/=lib/forge-std/lib/ds-test/src/", "solmate/=lib/solmate/src/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"GOVERNANCE","type":"error"},{"inputs":[],"name":"NOT_ALLOWED","type":"error"},{"inputs":[],"name":"WRONG_LENGTH","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceProposed","type":"event"},{"inputs":[],"name":"acceptGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"allowAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"disallowAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"futureGovernance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"transferGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"},{"internalType":"address","name":"_recipient","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516106cb3803806106cb83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610638806100936000396000f3fe60806040526004361061007f5760003560e01c80638070c5031161004e5780638070c5031461011f578063b7c58d7a1461013f578063babcc5391461015f578063d38bfff41461019f57600080fd5b806308af4d881461008b578063238efcbc146100ad57806326f91506146100c25780635aa6e675146100e257600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a63660046104d6565b6101bf565b005b3480156100b957600080fd5b506100ab61020e565b3480156100ce57600080fd5b506100ab6100dd366004610544565b610277565b3480156100ee57600080fd5b50600054610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012b57600080fd5b50600154610102906001600160a01b031681565b34801561014b57600080fd5b506100ab61015a3660046104d6565b610393565b34801561016b57600080fd5b5061018f61017a3660046104d6565b60026020526000908152604090205460ff1681565b6040519015158152602001610116565b3480156101ab57600080fd5b506100ab6101ba3660046104d6565b6103df565b6000546001600160a01b031633146101ea576040516305189e0d60e21b815260040160405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6001546001600160a01b03163314610239576040516305189e0d60e21b815260040160405180910390fd5b600080546001600160a01b03191633908117825560405190917fa6a85f15b976d399f39ad43e515e75910bac714bc55eeff6131fb90780d6f74691a2565b3360009081526002602052604090205460ff166102a757604051634ae18d2b60e11b815260040160405180910390fd5b8382146102c757604051632aa3c3bf60e11b815260040160405180910390fd5b60005b8481101561038b5760008686838181106102e6576102e66105c5565b90506020020160208101906102fb91906104d6565b6001600160a01b0316036103305761032b8285858481811061031f5761031f6105c5565b90506020020135610454565b610379565b610379868683818110610345576103456105c5565b905060200201602081019061035a91906104d6565b8386868581811061036d5761036d6105c5565b90506020020135610474565b80610383816105db565b9150506102ca565b505050505050565b6000546001600160a01b031633146103be576040516305189e0d60e21b815260040160405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b0316331461040a576040516305189e0d60e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b6990600090a250565b60008060008084865af16104705763b12d13eb6000526004601cfd5b5050565b816014528060345263a9059cbb60601b60005260206000604460106000875af13d1560016000511417166104b0576390b8ec186000526004601cfd5b6000603452505050565b80356001600160a01b03811681146104d157600080fd5b919050565b6000602082840312156104e857600080fd5b6104f1826104ba565b9392505050565b60008083601f84011261050a57600080fd5b50813567ffffffffffffffff81111561052257600080fd5b6020830191508360208260051b850101111561053d57600080fd5b9250929050565b60008060008060006060868803121561055c57600080fd5b853567ffffffffffffffff8082111561057457600080fd5b61058089838a016104f8565b9097509550602088013591508082111561059957600080fd5b506105a6888289016104f8565b90945092506105b99050604087016104ba565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6000600182016105fb57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201c35ff823272d8a89c162c125fadb567ba765100a4649976c0d06a9e2437735864736f6c63430008130033000000000000000000000000000755fbe4a24d7478bfcfc1e561afce82d1ff62
Deployed Bytecode
0x60806040526004361061007f5760003560e01c80638070c5031161004e5780638070c5031461011f578063b7c58d7a1461013f578063babcc5391461015f578063d38bfff41461019f57600080fd5b806308af4d881461008b578063238efcbc146100ad57806326f91506146100c25780635aa6e675146100e257600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a63660046104d6565b6101bf565b005b3480156100b957600080fd5b506100ab61020e565b3480156100ce57600080fd5b506100ab6100dd366004610544565b610277565b3480156100ee57600080fd5b50600054610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561012b57600080fd5b50600154610102906001600160a01b031681565b34801561014b57600080fd5b506100ab61015a3660046104d6565b610393565b34801561016b57600080fd5b5061018f61017a3660046104d6565b60026020526000908152604090205460ff1681565b6040519015158152602001610116565b3480156101ab57600080fd5b506100ab6101ba3660046104d6565b6103df565b6000546001600160a01b031633146101ea576040516305189e0d60e21b815260040160405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19166001179055565b6001546001600160a01b03163314610239576040516305189e0d60e21b815260040160405180910390fd5b600080546001600160a01b03191633908117825560405190917fa6a85f15b976d399f39ad43e515e75910bac714bc55eeff6131fb90780d6f74691a2565b3360009081526002602052604090205460ff166102a757604051634ae18d2b60e11b815260040160405180910390fd5b8382146102c757604051632aa3c3bf60e11b815260040160405180910390fd5b60005b8481101561038b5760008686838181106102e6576102e66105c5565b90506020020160208101906102fb91906104d6565b6001600160a01b0316036103305761032b8285858481811061031f5761031f6105c5565b90506020020135610454565b610379565b610379868683818110610345576103456105c5565b905060200201602081019061035a91906104d6565b8386868581811061036d5761036d6105c5565b90506020020135610474565b80610383816105db565b9150506102ca565b505050505050565b6000546001600160a01b031633146103be576040516305189e0d60e21b815260040160405180910390fd5b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b0316331461040a576040516305189e0d60e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b6990600090a250565b60008060008084865af16104705763b12d13eb6000526004601cfd5b5050565b816014528060345263a9059cbb60601b60005260206000604460106000875af13d1560016000511417166104b0576390b8ec186000526004601cfd5b6000603452505050565b80356001600160a01b03811681146104d157600080fd5b919050565b6000602082840312156104e857600080fd5b6104f1826104ba565b9392505050565b60008083601f84011261050a57600080fd5b50813567ffffffffffffffff81111561052257600080fd5b6020830191508360208260051b850101111561053d57600080fd5b9250929050565b60008060008060006060868803121561055c57600080fd5b853567ffffffffffffffff8082111561057457600080fd5b61058089838a016104f8565b9097509550602088013591508082111561059957600080fd5b506105a6888289016104f8565b90945092506105b99050604087016104ba565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6000600182016105fb57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212201c35ff823272d8a89c162c125fadb567ba765100a4649976c0d06a9e2437735864736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000755fbe4a24d7478bfcfc1e561afce82d1ff62
-----Decoded View---------------
Arg [0] : _governance (address): 0x000755Fbe4A24d7478bfcFC1E561AfCE82d1ff62
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000755fbe4a24d7478bfcfc1e561afce82d1ff62
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 61.36% | $0.580397 | 13,543.5522 | $7,860.63 | |
ETH | 25.09% | $0.999629 | 3,214.6907 | $3,213.5 | |
ETH | 7.95% | $3,237.63 | 0.3147 | $1,019 | |
ETH | 2.87% | $3.61 | 101.7412 | $367.29 | |
ETH | 1.14% | $2.01 | 72.9237 | $146.58 | |
ETH | 0.95% | $1 | 122.1471 | $122.15 | |
ETH | 0.51% | $1.97 | 33.3588 | $65.72 | |
ETH | 0.07% | $258.73 | 0.0344 | $8.89 | |
ETH | 0.04% | $0.040932 | 139.9346 | $5.73 | |
ETH | <0.01% | $0.275879 | 1.1939 | $0.3293 |
Loading...
Loading
[ 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.