More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Execute | 21495637 | 34 mins ago | IN | 0 S | 0.00768271 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | Age | From | To | Amount | |
---|---|---|---|---|---|---|
21339402 | 21 hrs ago | 1,210.26284613 S | ||||
21339215 | 21 hrs ago | 2,004.57456332 S | ||||
21339070 | 21 hrs ago | 3,011.50706733 S | ||||
21338917 | 21 hrs ago | 0.61425468 S | ||||
21338917 | 21 hrs ago | 4,160.41659225 S | ||||
21005113 | 2 days ago | 360.85914135 S | ||||
20893258 | 3 days ago | 88.89296615 S | ||||
20842561 | 4 days ago | 259 S | ||||
20680614 | 5 days ago | 6,400 S | ||||
20640625 | 5 days ago | 217.18346545 S | ||||
20640486 | 5 days ago | 230.53408431 S | ||||
20640368 | 5 days ago | 222.92927764 S | ||||
20575920 | 5 days ago | 907 S | ||||
20568053 | 5 days ago | 2,762.69653587 S | ||||
20563585 | 5 days ago | 77,700 S | ||||
20562478 | 5 days ago | 250 S | ||||
20562466 | 5 days ago | 250 S | ||||
20562446 | 5 days ago | 250 S | ||||
20562425 | 5 days ago | 250 S | ||||
20562406 | 5 days ago | 250 S | ||||
20562383 | 5 days ago | 250 S | ||||
20562363 | 5 days ago | 250 S | ||||
20562352 | 5 days ago | 250 S | ||||
20562333 | 5 days ago | 250 S | ||||
20562318 | 5 days ago | 250 S |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SiloRouter
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity 0.8.28;import {IERC20} from "openzeppelin5/token/ERC20/IERC20.sol";import {SafeERC20} from "openzeppelin5/token/ERC20/utils/SafeERC20.sol";import {IWrappedNativeToken} from "./interfaces/IWrappedNativeToken.sol";import {ISilo} from "./interfaces/ISilo.sol";import {TokenHelper} from "./lib/TokenHelper.sol";/// @title SiloRouter/// @notice Silo Router is a utility contract that aims to improve UX. It can batch any number or combination/// of actions (Deposit, Withdraw, Borrow, Repay) and execute them in a single transaction./// @dev SiloRouter requires only first action asset to be approved/// @custom:security-contact security@silo.financecontract SiloRouter {using SafeERC20 for IERC20;// @notice Action types that are supportedenum ActionType {Deposit,Mint,Repay,RepayShares}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-20 standard as defined in the ERC.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the value of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/utils/SafeERC20.sol)pragma solidity ^0.8.20;import {IERC20} from "../IERC20.sol";import {IERC1363} from "../../../interfaces/IERC1363.sol";import {Address} from "../../../utils/Address.sol";/*** @title SafeERC20* @dev Wrappers around ERC-20 operations that throw on failure (when the token* contract returns false). Tokens that return no value (and instead revert or* throw on failure) are also supported, non-reverting calls are assumed to be* successful.* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.*/library SafeERC20 {using Address for address;/*** @dev An operation with an ERC-20 token failed.*/error SafeERC20FailedOperation(address token);
123456789// SPDX-License-Identifier: MITpragma solidity >=0.5.0;import {IERC20} from "openzeppelin5/token/ERC20/IERC20.sol";interface IWrappedNativeToken is IERC20 {function deposit() external payable;function withdraw(uint256 amount) external;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.5.0;import {IERC4626, IERC20, IERC20Metadata} from "openzeppelin5/interfaces/IERC4626.sol";import {IERC3156FlashLender} from "./IERC3156FlashLender.sol";import {ISiloConfig} from "./ISiloConfig.sol";import {ISiloFactory} from "./ISiloFactory.sol";import {IHookReceiver} from "./IHookReceiver.sol";// solhint-disable orderinginterface ISilo is IERC20, IERC4626, IERC3156FlashLender {/// @dev Interest accrual happens on each deposit/withdraw/borrow/repay. View methods work on storage that might be/// outdate. Some calculations require accrued interest to return current state of Silo. This struct is used/// to make a decision inside functions if interest should be accrued in memory to work on updated values.enum AccrueInterestInMemory {No,Yes}/// @dev Silo has two separate oracles for solvency and maxLtv calculations. MaxLtv oracle is optional. Solvency/// oracle can also be optional if asset is used as denominator in Silo config. For example, in ETH/USDC Silo/// one could setup only solvency oracle for ETH that returns price in USDC. Then USDC does not need an oracle/// because it's used as denominator for ETH and it's "price" can be assume as 1.enum OracleType {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity ^0.8.28;import {IERC20Metadata} from "openzeppelin5/token/ERC20/extensions/IERC20Metadata.sol";import {IsContract} from "./IsContract.sol";library TokenHelper {uint256 private constant _BYTES32_SIZE = 32;error TokenIsNotAContract();function assertAndGetDecimals(address _token) internal view returns (uint256) {(bool hasMetadata, bytes memory data) =_tokenMetadataCall(_token, abi.encodeCall(IERC20Metadata.decimals, ()));// decimals() is optional in the ERC20 standard, so if metadata is not accessible// we assume there are no decimals and use 0.if (!hasMetadata) {return 0;}return abi.decode(data, (uint8));}/// @dev Returns the symbol for the provided ERC20 token.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1363.sol)pragma solidity ^0.8.20;import {IERC20} from "./IERC20.sol";import {IERC165} from "./IERC165.sol";/*** @title IERC1363* @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].** Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract* after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.*/interface IERC1363 is IERC20, IERC165 {/** Note: the ERC-165 identifier for this interface is 0xb0202a11.* 0xb0202a11 ===* bytes4(keccak256('transferAndCall(address,uint256)')) ^* bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^* bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^* bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^* bytes4(keccak256('approveAndCall(address,uint256)')) ^* bytes4(keccak256('approveAndCall(address,uint256,bytes)'))*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)pragma solidity ^0.8.20;import {Errors} from "./Errors.sol";/*** @dev Collection of functions related to the address type*/library Address {/*** @dev There's no code at `target` (it is not a contract).*/error AddressEmptyCode(address target);/*** @dev Replacement for Solidity's `transfer`: sends `amount` wei to* `recipient`, forwarding all available gas and reverting on errors.** https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost* of certain opcodes, possibly making contracts go over the 2300 gas limit* imposed by `transfer`, making them unable to receive funds via* `transfer`. {sendValue} removes this limitation.** https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC4626.sol)pragma solidity ^0.8.20;import {IERC20} from "../token/ERC20/IERC20.sol";import {IERC20Metadata} from "../token/ERC20/extensions/IERC20Metadata.sol";/*** @dev Interface of the ERC-4626 "Tokenized Vault Standard", as defined in* https://eips.ethereum.org/EIPS/eip-4626[ERC-4626].*/interface IERC4626 is IERC20, IERC20Metadata {event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares);event Withdraw(address indexed sender,address indexed receiver,address indexed owner,uint256 assets,uint256 shares);/*** @dev Returns the address of the underlying token used for the Vault for accounting, depositing, and withdrawing.*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.5.0;import {IERC3156FlashBorrower} from "./IERC3156FlashBorrower.sol";/// @notice https://eips.ethereum.org/EIPS/eip-3156interface IERC3156FlashLender {/// @notice Protected deposits are not available for a flash loan./// During the execution of the flashloan, Silo methods are not taking into consideration the fact,/// that some (or all) tokens were transferred as flashloan, therefore some methods can return invalid state/// eg. maxWithdraw can return amount that are not available to withdraw during flashlon./// @dev Initiate a flash loan./// @param _receiver The receiver of the tokens in the loan, and the receiver of the callback./// @param _token The loan currency./// @param _amount The amount of tokens lent./// @param _data Arbitrary data structure, intended to contain user-defined parameters.function flashLoan(IERC3156FlashBorrower _receiver, address _token, uint256 _amount, bytes calldata _data)externalreturns (bool);/// @dev The amount of currency available to be lent./// @param _token The loan currency./// @return The amount of `token` that can be borrowed.function maxFlashLoan(address _token) external view returns (uint256);/// @dev The fee to be charged for a given loan.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.5.0;import {ISilo} from "./ISilo.sol";import {ICrossReentrancyGuard} from "./ICrossReentrancyGuard.sol";interface ISiloConfig is ICrossReentrancyGuard {struct InitData {/// @notice Can be address zero if deployer fees are not to be collected. If deployer address is zero then/// deployer fee must be zero as well. Deployer will be minted an NFT that gives the right to claim deployer/// fees. NFT can be transferred with the right to claim.address deployer;/// @notice Address of the hook receiver called on every before/after action on Silo. Hook contract also/// implements liquidation logic and veSilo gauge connection.address hookReceiver;/// @notice Deployer's fee in 18 decimals points. Deployer will earn this fee based on the interest earned/// by the Silo. Max deployer fee is set by the DAO. At deployment it is 15%.uint256 deployerFee;/// @notice DAO's fee in 18 decimals points. DAO will earn this fee based on the interest earned/// by the Silo. Acceptable fee range fee is set by the DAO. Default at deployment is 5% - 50%.uint256 daoFee;/// @notice Address of the first token
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.5.0;import {IERC721} from "openzeppelin5/interfaces/IERC721.sol";import {ISiloConfig} from "./ISiloConfig.sol";interface ISiloFactory is IERC721 {struct Range {uint128 min;uint128 max;}/// @notice Emitted on the creation of a Silo./// @param implementation Address of the Silo implementation./// @param token0 Address of the first Silo token./// @param token1 Address of the second Silo token./// @param silo0 Address of the first Silo./// @param silo1 Address of the second Silo./// @param siloConfig Address of the SiloConfig.event NewSilo(address indexed implementation,address indexed token0,address indexed token1,address silo0,address silo1,address siloConfig
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity >=0.5.0;import {ISiloConfig} from "./ISiloConfig.sol";interface IHookReceiver {struct HookConfig {uint24 hooksBefore;uint24 hooksAfter;}event HookConfigured(address silo, uint24 hooksBefore, uint24 hooksAfter);/// @notice Initialize a hook receiver/// @param _siloConfig Silo configuration with all the details about the silo/// @param _data Data to initialize the hook receiver (if needed)function initialize(ISiloConfig _siloConfig, bytes calldata _data) external;/// @notice state of Silo before action, can be also without interest, if you need them, call silo.accrueInterest()function beforeAction(address _silo, uint256 _action, bytes calldata _input) external;function afterAction(address _silo, uint256 _action, bytes calldata _inputAndOutput) external;/// @notice return hooksBefore and hooksAfter configurationfunction hookReceiverConfig(address _silo) external view returns (uint24 hooksBefore, uint24 hooksAfter);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol)pragma solidity ^0.8.20;import {IERC20} from "../IERC20.sol";/*** @dev Interface for the optional metadata functions from the ERC-20 standard.*/interface IERC20Metadata is IERC20 {/*** @dev Returns the name of the token.*/function name() external view returns (string memory);/*** @dev Returns the symbol of the token.*/function symbol() external view returns (string memory);/*** @dev Returns the decimals places of the token.*/function decimals() external view returns (uint8);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: BUSL-1.1pragma solidity ^0.8.24;library IsContract {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed** Furthermore, `isContract` will also return true if the target contract within* the same transaction is already scheduled for destruction by `SELFDESTRUCT`,* which only has an effect at the end of a transaction.* ====** [IMPORTANT]
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)pragma solidity ^0.8.20;import {IERC20} from "../token/ERC20/IERC20.sol";
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)pragma solidity ^0.8.20;import {IERC165} from "../utils/introspection/IERC165.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.20;/*** @dev Collection of common custom errors used in multiple contracts** IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.* It is recommended to avoid relying on the error API for critical functionality.*/library Errors {/*** @dev The ETH balance of the account is not enough to perform the operation.*/error InsufficientBalance(uint256 balance, uint256 needed);/*** @dev A call to an address target failed. The target may have reverted.*/error FailedCall();/*** @dev The deployment failed.*/error FailedDeployment();}
123456789101112131415161718// SPDX-License-Identifier: MITpragma solidity >=0.5.0;interface IERC3156FlashBorrower {/// @notice During the execution of the flashloan, Silo methods are not taking into consideration the fact,/// that some (or all) tokens were transferred as flashloan, therefore some methods can return invalid state/// eg. maxWithdraw can return amount that are not available to withdraw during flashlon./// @dev Receive a flash loan./// @param _initiator The initiator of the loan./// @param _token The loan currency./// @param _amount The amount of tokens lent./// @param _fee The additional amount of tokens to repay./// @param _data Arbitrary data structure, intended to contain user-defined parameters./// @return The keccak256 hash of "ERC3156FlashBorrower.onFlashLoan"function onFlashLoan(address _initiator, address _token, uint256 _amount, uint256 _fee, bytes calldata _data)externalreturns (bytes32);}
123456789101112131415161718// SPDX-License-Identifier: MITpragma solidity >=0.5.0;interface ICrossReentrancyGuard {error CrossReentrantCall();error CrossReentrancyNotActive();/// @notice only silo method for cross Silo reentrancyfunction turnOnReentrancyProtection() external;/// @notice only silo method for cross Silo reentrancyfunction turnOffReentrancyProtection() external;/// @notice view method for checking cross Silo reentrancy flag/// @return entered true if the reentrancy guard is currently set to "entered", which indicates there is a/// `nonReentrant` function in the call stack.function reentrancyGuardEntered() external view returns (bool entered);}
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)pragma solidity ^0.8.20;import {IERC721} from "../token/ERC721/IERC721.sol";
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[ERC].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/IERC721.sol)pragma solidity ^0.8.20;import {IERC165} from "../../utils/introspection/IERC165.sol";/*** @dev Required interface of an ERC-721 compliant contract.*/interface IERC721 is IERC165 {/*** @dev Emitted when `tokenId` token is transferred from `from` to `to`.*/event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.*/event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);/*** @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.*/event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
1234567891011121314151617181920212223242526{"remappings": ["forge-std/=gitmodules/forge-std/src/","silo-foundry-utils/=gitmodules/silo-foundry-utils/contracts/","properties/=gitmodules/crytic/properties/contracts/","silo-core/=silo-core/","silo-oracles/=silo-oracles/","silo-vaults/=silo-vaults/","ve-silo/=ve-silo/","@openzeppelin/=gitmodules/openzeppelin-contracts-5/contracts/","morpho-blue/=gitmodules/morpho-blue/src/","openzeppelin5/=gitmodules/openzeppelin-contracts-5/contracts/","openzeppelin5-upgradeable/=gitmodules/openzeppelin-contracts-upgradeable-5/contracts/","chainlink/=gitmodules/chainlink/contracts/src/","chainlink-ccip/=gitmodules/chainlink-ccip/contracts/src/","uniswap/=gitmodules/uniswap/","@uniswap/v3-core/=gitmodules/uniswap/v3-core/","balancer-labs/v2-solidity-utils/=external/balancer-v2-monorepo/pkg/solidity-utils/contracts/","balancer-labs/v2-interfaces/=external/balancer-v2-monorepo/pkg/interfaces/contracts/","balancer-labs/v2-liquidity-mining/=external/balancer-v2-monorepo/pkg/liquidity-mining/contracts/","@balancer-labs/=node_modules/@balancer-labs/","@ensdomains/=node_modules/@ensdomains/","@openzeppelin/contracts-upgradeable/=gitmodules/openzeppelin-contracts-upgradeable-5/contracts/","@openzeppelin/contracts/=gitmodules/openzeppelin-contracts-5/contracts/","@solidity-parser/=node_modules/@solidity-parser/","ERC4626/=gitmodules/crytic/properties/lib/ERC4626/contracts/",
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_wrappedNativeToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"ApprovalFailed","type":"error"},{"inputs":[],"name":"ERC20TransferFailed","type":"error"},{"inputs":[],"name":"EthTransferFailed","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidSilo","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"TokenIsNotAContract","type":"error"},{"inputs":[],"name":"WRAPPED_NATIVE_TOKEN","outputs":[{"internalType":"contract IWrappedNativeToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"enum SiloRouter.ActionType","name":"actionType","type":"uint8"},{"internalType":"contract ISilo","name":"silo","type":"address"},{"internalType":"contract IERC20","name":"asset","type":"address"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct SiloRouter.Action[]","name":"_actions","type":"tuple[]"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405234801561000f575f5ffd5b5060405161117638038061117683398101604081905261002e9161016f565b61003781610049565b506001600160a01b03166080526101d2565b6040805160048152602481019091526020810180516001600160e01b0390811663313ce56760e01b179091525f9182918291610088918691906100b916565b915091508161009a57505f9392505050565b808060200190518101906100ae919061019c565b60ff16949350505050565b5f60606001600160a01b0384163b6100e4576040516373d39f9d60e01b815260040160405180910390fd5b5f5f856001600160a01b0316856040516100fe91906101bc565b5f60405180830381855afa9150503d805f8114610136576040519150601f19603f3d011682016040523d82523d5f602084013e61013b565b606091505b509150915081610160575f60405180602001604052805f815250935093505050610168565b600193509150505b9250929050565b5f6020828403121561017f575f5ffd5b81516001600160a01b0381168114610195575f5ffd5b9392505050565b5f602082840312156101ac575f5ffd5b815160ff81168114610195575f5ffd5b5f82518060208501845e5f920191825250919050565b608051610f716102055f395f81816047015281816106bb0152818161070801528181610a3f0152610a7a0152610f715ff3fe60806040526004361061002b575f3560e01c80631b3f8c5e14610036578063c3cd3eda14610085575f5ffd5b3661003257005b5f5ffd5b348015610041575f5ffd5b506100697f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b610098610093366004610cdd565b61009a565b005b805f5b818110156100d9576100d18484838181106100ba576100ba610d4e565b90506020028101906100cc9190610d62565b610222565b60010161009d565b505f5b818110156101a1575f8484838181106100f7576100f7610d4e565b90506020028101906101099190610d62565b61011a906060810190604001610d94565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610161573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101859190610daf565b905080156101975761019782826106b9565b50506001016100dc565b5034158015906101b057504715155b1561021d576040515f90339047908381818185875af1925050503d805f81146101f4576040519150601f19603f3d011682016040523d82523d5f602084013e6101f9565b606091505b505090508061021b57604051630db2c7f160e31b815260040160405180910390fd5b505b505050565b5f6102306020830183610dda565b600381111561024157610241610dc6565b0361032d575f6102546060830183610df8565b8101906102619190610e42565b905061027d6102766060840160408501610d94565b82516107e5565b6102a76102906060840160408501610d94565b6102a06040850160208601610d94565b8351610878565b6102b76040830160208401610d94565b6001600160a01b031663b7ec8d4b825f01513384602001516040518463ffffffff1660e01b81526004016102ed93929190610ea7565b6020604051808303815f875af1158015610309573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021d9190610daf565b600161033c6020830183610dda565b600381111561034d5761034d610dc6565b036104bb575f6103606060830183610df8565b81019061036d9190610e42565b90505f6103806040840160208501610d94565b825160405163b3d7f6b960e01b81526001600160a01b03929092169163b3d7f6b9916103b29160040190815260200190565b602060405180830381865afa1580156103cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f19190610daf565b905061040c6104066060850160408601610d94565b826107e5565b61043561041f6060850160408601610d94565b61042f6040860160208701610d94565b83610878565b6104456040840160208501610d94565b6001600160a01b031663c061ddc7835f01513385602001516040518463ffffffff1660e01b815260040161047b93929190610ea7565b6020604051808303815f875af1158015610497573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021b9190610daf565b60026104ca6020830183610dda565b60038111156104db576104db610dc6565b0361056b575f6104ee6060830183610df8565b8101906104fb9190610e42565b90506105106102766060840160408501610d94565b6105236102906060840160408501610d94565b6105336040830160208401610d94565b815160405163acb7081560e01b815260048101919091523360248201526001600160a01b03919091169063acb70815906044016102ed565b600361057a6020830183610dda565b600381111561058b5761058b610dc6565b036106b6575f61059e6060830183610df8565b8101906105ab9190610e42565b90505f6105be6040840160208501610d94565b825160405163e72bec5760e01b81526001600160a01b03929092169163e72bec57916105f09160040190815260200190565b602060405180830381865afa15801561060b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f9190610daf565b90506106446104066060850160408601610d94565b61065761041f6060850160408601610d94565b6106676040840160208501610d94565b825160405163e36754eb60e01b815260048101919091523360248201526001600160a01b03919091169063e36754eb906044016020604051808303815f875af1158015610497573d5f5f3e3d5ffd5b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036107cd57604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015610751575f5ffd5b505af1158015610763573d5f5f3e3d5ffd5b50506040515f925033915083908381818185875af1925050503d805f81146107a6576040519150601f19603f3d011682016040523d82523d5f602084013e6107ab565b606091505b505090508061021d57604051633c9fd93960e21b815260040160405180910390fd5b6107e16001600160a01b03831633836109d4565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610829573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084d9190610daf565b905081811061085c575f610866565b6108668183610ee7565b9150811561021d5761021d8383610a33565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015282919085169063dd62ed3e90604401602060405180830381865afa1580156108c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e99190610daf565b101561021d576040516001600160a01b0383811660248301525f1960448301525f91829186169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516109489190610f06565b5f604051808303815f865af19150503d805f8114610981576040519150601f19603f3d011682016040523d82523d5f602084013e610986565b606091505b50915091508180156109b05750805115806109b05750808060200190518101906109b09190610f1c565b6109cd576040516340b27c2160e11b815260040160405180910390fd5b5050505050565b6040516001600160a01b0383811660248301526044820183905261021d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610b01565b3415801590610a7357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15610aec577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015610ad1575f5ffd5b505af1158015610ae3573d5f5f3e3d5ffd5b50505050505050565b6107e16001600160a01b038316333084610b67565b5f610b156001600160a01b03841683610ba0565b905080515f14158015610b39575080806020019051810190610b379190610f1c565b155b1561021d57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261021b9186918216906323b872dd90608401610a01565b6060610bad83835f610bb6565b90505b92915050565b606081471015610be25760405163cf47918160e01b815247600482015260248101839052604401610b5e565b5f5f856001600160a01b03168486604051610bfd9190610f06565b5f6040518083038185875af1925050503d805f8114610c37576040519150601f19603f3d011682016040523d82523d5f602084013e610c3c565b606091505b5091509150610c4c868383610c58565b925050505b9392505050565b606082610c6d57610c6882610cb4565b610c51565b8151158015610c8457506001600160a01b0384163b155b15610cad57604051639996b31560e01b81526001600160a01b0385166004820152602401610b5e565b5080610c51565b805115610cc45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f5f60208385031215610cee575f5ffd5b823567ffffffffffffffff811115610d04575f5ffd5b8301601f81018513610d14575f5ffd5b803567ffffffffffffffff811115610d2a575f5ffd5b8560208260051b8401011115610d3e575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112610d76575f5ffd5b9190910192915050565b6001600160a01b03811681146106b6575f5ffd5b5f60208284031215610da4575f5ffd5b8135610c5181610d80565b5f60208284031215610dbf575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610dea575f5ffd5b813560048110610c51575f5ffd5b5f5f8335601e19843603018112610e0d575f5ffd5b83018035915067ffffffffffffffff821115610e27575f5ffd5b602001915036819003821315610e3b575f5ffd5b9250929050565b5f6040828403128015610e53575f5ffd5b506040805190810167ffffffffffffffff81118282101715610e8357634e487b7160e01b5f52604160045260245ffd5b60405282358152602083013560028110610e9b575f5ffd5b60208201529392505050565b8381526001600160a01b03831660208201526060810160028310610ed957634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b81810381811115610bb057634e487b7160e01b5f52601160045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215610f2c575f5ffd5b81518015158114610c51575f5ffdfea26469706673582212203d54a22f989f4ec074e7ed39ae7071da7a23b558f8eee439bd7f3adae06c58b364736f6c634300081c0033000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Deployed Bytecode
0x60806040526004361061002b575f3560e01c80631b3f8c5e14610036578063c3cd3eda14610085575f5ffd5b3661003257005b5f5ffd5b348015610041575f5ffd5b506100697f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881565b6040516001600160a01b03909116815260200160405180910390f35b610098610093366004610cdd565b61009a565b005b805f5b818110156100d9576100d18484838181106100ba576100ba610d4e565b90506020028101906100cc9190610d62565b610222565b60010161009d565b505f5b818110156101a1575f8484838181106100f7576100f7610d4e565b90506020028101906101099190610d62565b61011a906060810190604001610d94565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610161573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101859190610daf565b905080156101975761019782826106b9565b50506001016100dc565b5034158015906101b057504715155b1561021d576040515f90339047908381818185875af1925050503d805f81146101f4576040519150601f19603f3d011682016040523d82523d5f602084013e6101f9565b606091505b505090508061021b57604051630db2c7f160e31b815260040160405180910390fd5b505b505050565b5f6102306020830183610dda565b600381111561024157610241610dc6565b0361032d575f6102546060830183610df8565b8101906102619190610e42565b905061027d6102766060840160408501610d94565b82516107e5565b6102a76102906060840160408501610d94565b6102a06040850160208601610d94565b8351610878565b6102b76040830160208401610d94565b6001600160a01b031663b7ec8d4b825f01513384602001516040518463ffffffff1660e01b81526004016102ed93929190610ea7565b6020604051808303815f875af1158015610309573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021d9190610daf565b600161033c6020830183610dda565b600381111561034d5761034d610dc6565b036104bb575f6103606060830183610df8565b81019061036d9190610e42565b90505f6103806040840160208501610d94565b825160405163b3d7f6b960e01b81526001600160a01b03929092169163b3d7f6b9916103b29160040190815260200190565b602060405180830381865afa1580156103cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f19190610daf565b905061040c6104066060850160408601610d94565b826107e5565b61043561041f6060850160408601610d94565b61042f6040860160208701610d94565b83610878565b6104456040840160208501610d94565b6001600160a01b031663c061ddc7835f01513385602001516040518463ffffffff1660e01b815260040161047b93929190610ea7565b6020604051808303815f875af1158015610497573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021b9190610daf565b60026104ca6020830183610dda565b60038111156104db576104db610dc6565b0361056b575f6104ee6060830183610df8565b8101906104fb9190610e42565b90506105106102766060840160408501610d94565b6105236102906060840160408501610d94565b6105336040830160208401610d94565b815160405163acb7081560e01b815260048101919091523360248201526001600160a01b03919091169063acb70815906044016102ed565b600361057a6020830183610dda565b600381111561058b5761058b610dc6565b036106b6575f61059e6060830183610df8565b8101906105ab9190610e42565b90505f6105be6040840160208501610d94565b825160405163e72bec5760e01b81526001600160a01b03929092169163e72bec57916105f09160040190815260200190565b602060405180830381865afa15801561060b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f9190610daf565b90506106446104066060850160408601610d94565b61065761041f6060850160408601610d94565b6106676040840160208501610d94565b825160405163e36754eb60e01b815260048101919091523360248201526001600160a01b03919091169063e36754eb906044016020604051808303815f875af1158015610497573d5f5f3e3d5ffd5b50565b7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316826001600160a01b0316036107cd57604051632e1a7d4d60e01b8152600481018290527f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015610751575f5ffd5b505af1158015610763573d5f5f3e3d5ffd5b50506040515f925033915083908381818185875af1925050503d805f81146107a6576040519150601f19603f3d011682016040523d82523d5f602084013e6107ab565b606091505b505090508061021d57604051633c9fd93960e21b815260040160405180910390fd5b6107e16001600160a01b03831633836109d4565b5050565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610829573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084d9190610daf565b905081811061085c575f610866565b6108668183610ee7565b9150811561021d5761021d8383610a33565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015282919085169063dd62ed3e90604401602060405180830381865afa1580156108c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e99190610daf565b101561021d576040516001600160a01b0383811660248301525f1960448301525f91829186169060640160408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516109489190610f06565b5f604051808303815f865af19150503d805f8114610981576040519150601f19603f3d011682016040523d82523d5f602084013e610986565b606091505b50915091508180156109b05750805115806109b05750808060200190518101906109b09190610f1c565b6109cd576040516340b27c2160e11b815260040160405180910390fd5b5050505050565b6040516001600160a01b0383811660248301526044820183905261021d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610b01565b3415801590610a7357507f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316826001600160a01b0316145b15610aec577f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015610ad1575f5ffd5b505af1158015610ae3573d5f5f3e3d5ffd5b50505050505050565b6107e16001600160a01b038316333084610b67565b5f610b156001600160a01b03841683610ba0565b905080515f14158015610b39575080806020019051810190610b379190610f1c565b155b1561021d57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b6040516001600160a01b03848116602483015283811660448301526064820183905261021b9186918216906323b872dd90608401610a01565b6060610bad83835f610bb6565b90505b92915050565b606081471015610be25760405163cf47918160e01b815247600482015260248101839052604401610b5e565b5f5f856001600160a01b03168486604051610bfd9190610f06565b5f6040518083038185875af1925050503d805f8114610c37576040519150601f19603f3d011682016040523d82523d5f602084013e610c3c565b606091505b5091509150610c4c868383610c58565b925050505b9392505050565b606082610c6d57610c6882610cb4565b610c51565b8151158015610c8457506001600160a01b0384163b155b15610cad57604051639996b31560e01b81526001600160a01b0385166004820152602401610b5e565b5080610c51565b805115610cc45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f5f60208385031215610cee575f5ffd5b823567ffffffffffffffff811115610d04575f5ffd5b8301601f81018513610d14575f5ffd5b803567ffffffffffffffff811115610d2a575f5ffd5b8560208260051b8401011115610d3e575f5ffd5b6020919091019590945092505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235607e19833603018112610d76575f5ffd5b9190910192915050565b6001600160a01b03811681146106b6575f5ffd5b5f60208284031215610da4575f5ffd5b8135610c5181610d80565b5f60208284031215610dbf575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610dea575f5ffd5b813560048110610c51575f5ffd5b5f5f8335601e19843603018112610e0d575f5ffd5b83018035915067ffffffffffffffff821115610e27575f5ffd5b602001915036819003821315610e3b575f5ffd5b9250929050565b5f6040828403128015610e53575f5ffd5b506040805190810167ffffffffffffffff81118282101715610e8357634e487b7160e01b5f52604160045260245ffd5b60405282358152602083013560028110610e9b575f5ffd5b60208201529392505050565b8381526001600160a01b03831660208201526060810160028310610ed957634e487b7160e01b5f52602160045260245ffd5b826040830152949350505050565b81810381811115610bb057634e487b7160e01b5f52601160045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215610f2c575f5ffd5b81518015158114610c51575f5ffdfea26469706673582212203d54a22f989f4ec074e7ed39ae7071da7a23b558f8eee439bd7f3adae06c58b364736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
-----Decoded View---------------
Arg [0] : _wrappedNativeToken (address): 0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad38
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
SONIC | 100.00% | $0.459385 | 0.11 | $0.050532 |
Loading...
Loading
Loading...
Loading
[ 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.