More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Initialize | 17416876 | 1023 days ago | IN | 0 ETH | 0.000030477853 |
View more zero value Internal Transactions in Advanced View mode
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-FileCopyrightText: 2022 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; import {IERC20Bridged} from "./interfaces/IERC20Bridged.sol"; import {ERC20Core} from "./ERC20Core.sol"; import {ERC20Metadata} from "./ERC20Metadata.sol"; /// @author psirex /// @notice Extends the ERC20 functionality that allows the bridge to mint/burn tokens contract ERC20Bridged is IERC20Bridged, ERC20Core, ERC20Metadata { /// @inheritdoc IERC20Bridged address public immutable bridge; /// @param name_ The name of the token /// @param symbol_ The symbol of the token /// @param decimals_ The decimals places of the token /// @param bridge_ The bridge address which allowd to mint/burn tokens constructor( string memory name_, string memory symbol_, uint8 decimals_, address bridge_ ) ERC20Metadata(name_, symbol_, decimals_) { bridge = bridge_; } /// @notice Sets the name and the symbol of the tokens if they both are empty /// @param name_ The name of the token /// @param symbol_ The symbol of the token function initialize(string memory name_, string memory symbol_) external { _setERC20MetadataName(name_); _setERC20MetadataSymbol(symbol_); } /// @inheritdoc IERC20Bridged function bridgeMint(address account_, uint256 amount_) external onlyBridge { _mint(account_, amount_); } /// @inheritdoc IERC20Bridged function bridgeBurn(address account_, uint256 amount_) external onlyBridge { _burn(account_, amount_); } /// @dev Validates that sender of the transaction is the bridge modifier onlyBridge() { if (msg.sender != bridge) { revert ErrorNotBridge(); } _; } error ErrorNotBridge(); }
// SPDX-FileCopyrightText: 2022 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /// @author psirex /// @notice Extends the ERC20 functionality that allows the bridge to mint/burn tokens interface IERC20Bridged is IERC20 { /// @notice Returns bridge which can mint and burn tokens on L2 function bridge() external view returns (address); /// @notice Creates amount_ tokens and assigns them to account_, increasing the total supply /// @param account_ An address of the account to mint tokens /// @param amount_ An amount of tokens to mint function bridgeMint(address account_, uint256 amount_) external; /// @notice Destroys amount_ tokens from account_, reducing the total supply /// @param account_ An address of the account to burn tokens /// @param amount_ An amount of tokens to burn function bridgeBurn(address account_, uint256 amount_) external; }
// SPDX-FileCopyrightText: 2022 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; /// @author psirex /// @notice Contains the required logic of the ERC20 standard as defined in the EIP. Additionally /// provides methods for direct allowance increasing/decreasing. contract ERC20Core is IERC20 { /// @inheritdoc IERC20 uint256 public totalSupply; /// @inheritdoc IERC20 mapping(address => uint256) public balanceOf; /// @inheritdoc IERC20 mapping(address => mapping(address => uint256)) public allowance; /// @inheritdoc IERC20 function approve(address spender_, uint256 amount_) external returns (bool) { _approve(msg.sender, spender_, amount_); return true; } /// @inheritdoc IERC20 function transfer(address to_, uint256 amount_) external returns (bool) { _transfer(msg.sender, to_, amount_); return true; } /// @inheritdoc IERC20 function transferFrom( address from_, address to_, uint256 amount_ ) external returns (bool) { _spendAllowance(from_, msg.sender, amount_); _transfer(from_, to_, amount_); return true; } /// @notice Atomically increases the allowance granted to spender by the caller. /// @param spender_ An address of the tokens spender /// @param addedValue_ An amount to increase the allowance function increaseAllowance(address spender_, uint256 addedValue_) external returns (bool) { _approve( msg.sender, spender_, allowance[msg.sender][spender_] + addedValue_ ); return true; } /// @notice Atomically decreases the allowance granted to spender by the caller. /// @param spender_ An address of the tokens spender /// @param subtractedValue_ An amount to decrease the allowance function decreaseAllowance(address spender_, uint256 subtractedValue_) external returns (bool) { uint256 currentAllowance = allowance[msg.sender][spender_]; if (currentAllowance < subtractedValue_) { revert ErrorDecreasedAllowanceBelowZero(); } unchecked { _approve(msg.sender, spender_, currentAllowance - subtractedValue_); } return true; } /// @dev Moves amount_ of tokens from sender_ to recipient_ /// @param from_ An address of the sender of the tokens /// @param to_ An address of the recipient of the tokens /// @param amount_ An amount of tokens to transfer function _transfer( address from_, address to_, uint256 amount_ ) internal onlyNonZeroAccount(from_) onlyNonZeroAccount(to_) { _decreaseBalance(from_, amount_); balanceOf[to_] += amount_; emit Transfer(from_, to_, amount_); } /// @dev Updates owner_'s allowance for spender_ based on spent amount_. Does not update /// the allowance amount in case of infinite allowance /// @param owner_ An address of the account to spend allowance /// @param spender_ An address of the spender of the tokens /// @param amount_ An amount of allowance spend function _spendAllowance( address owner_, address spender_, uint256 amount_ ) internal { uint256 currentAllowance = allowance[owner_][spender_]; if (currentAllowance == type(uint256).max) { return; } if (amount_ > currentAllowance) { revert ErrorNotEnoughAllowance(); } unchecked { _approve(owner_, spender_, currentAllowance - amount_); } } /// @dev Sets amount_ as the allowance of spender_ over the owner_'s tokens /// @param owner_ An address of the account to set allowance /// @param spender_ An address of the tokens spender /// @param amount_ An amount of tokens to allow to spend function _approve( address owner_, address spender_, uint256 amount_ ) internal virtual onlyNonZeroAccount(owner_) onlyNonZeroAccount(spender_) { allowance[owner_][spender_] = amount_; emit Approval(owner_, spender_, amount_); } /// @dev Creates amount_ tokens and assigns them to account_, increasing the total supply /// @param account_ An address of the account to mint tokens /// @param amount_ An amount of tokens to mint function _mint(address account_, uint256 amount_) internal onlyNonZeroAccount(account_) { totalSupply += amount_; balanceOf[account_] += amount_; emit Transfer(address(0), account_, amount_); } /// @dev Destroys amount_ tokens from account_, reducing the total supply. /// @param account_ An address of the account to mint tokens /// @param amount_ An amount of tokens to mint function _burn(address account_, uint256 amount_) internal onlyNonZeroAccount(account_) { _decreaseBalance(account_, amount_); totalSupply -= amount_; emit Transfer(account_, address(0), amount_); } /// @dev Decreases the balance of the account_ /// @param account_ An address of the account to decrease balance /// @param amount_ An amount of balance decrease function _decreaseBalance(address account_, uint256 amount_) internal { uint256 balance = balanceOf[account_]; if (amount_ > balance) { revert ErrorNotEnoughBalance(); } unchecked { balanceOf[account_] = balance - amount_; } } /// @dev validates that account_ is not zero address modifier onlyNonZeroAccount(address account_) { if (account_ == address(0)) { revert ErrorAccountIsZeroAddress(); } _; } error ErrorNotEnoughBalance(); error ErrorNotEnoughAllowance(); error ErrorAccountIsZeroAddress(); error ErrorDecreasedAllowanceBelowZero(); }
// SPDX-FileCopyrightText: 2022 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; import {IERC20Metadata} from "./interfaces/IERC20Metadata.sol"; /// @author psirex /// @notice Contains the optional metadata functions from the ERC20 standard /// @dev Uses the UnstructuredStorage pattern to store dynamic name and symbol data. Might be used /// with the upgradable proxies contract ERC20Metadata is IERC20Metadata { /// @dev Stores the dynamic metadata of the ERC20 token. Allows safely use of this /// contract with upgradable proxies struct DynamicMetadata { string name; string symbol; } /// @dev Location of the slot with DynamicMetdata bytes32 private constant DYNAMIC_METADATA_SLOT = keccak256("ERC20Metdata.dynamicMetadata"); /// @inheritdoc IERC20Metadata uint8 public immutable decimals; /// @param name_ Name of the token /// @param symbol_ Symbol of the token /// @param decimals_ Decimals places of the token constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { decimals = decimals_; _setERC20MetadataName(name_); _setERC20MetadataSymbol(symbol_); } /// @inheritdoc IERC20Metadata function name() public view returns (string memory) { return _loadDynamicMetadata().name; } /// @inheritdoc IERC20Metadata function symbol() public view returns (string memory) { return _loadDynamicMetadata().symbol; } /// @dev Sets the name of the token. Might be called only when the name is empty function _setERC20MetadataName(string memory name_) internal { if (bytes(name()).length > 0) { revert ErrorNameAlreadySet(); } _loadDynamicMetadata().name = name_; } /// @dev Sets the symbol of the token. Might be called only when the symbol is empty function _setERC20MetadataSymbol(string memory symbol_) internal { if (bytes(symbol()).length > 0) { revert ErrorSymbolAlreadySet(); } _loadDynamicMetadata().symbol = symbol_; } /// @dev Returns the reference to the slot with DynamicMetadta struct function _loadDynamicMetadata() private pure returns (DynamicMetadata storage r) { bytes32 slot = DYNAMIC_METADATA_SLOT; assembly { r.slot := slot } } error ErrorNameAlreadySet(); error ErrorSymbolAlreadySet(); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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 amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-FileCopyrightText: 2022 Lido <[email protected]> // SPDX-License-Identifier: GPL-3.0 pragma solidity 0.8.10; /// @author psirex /// @notice Interface for the optional metadata functions from the ERC20 standard. interface IERC20Metadata { /// @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); }
{ "optimizer": { "enabled": true, "runs": 100000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"address","name":"bridge_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ErrorAccountIsZeroAddress","type":"error"},{"inputs":[],"name":"ErrorDecreasedAllowanceBelowZero","type":"error"},{"inputs":[],"name":"ErrorNameAlreadySet","type":"error"},{"inputs":[],"name":"ErrorNotBridge","type":"error"},{"inputs":[],"name":"ErrorNotEnoughAllowance","type":"error"},{"inputs":[],"name":"ErrorNotEnoughBalance","type":"error"},{"inputs":[],"name":"ErrorSymbolAlreadySet","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"bridgeBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"bridgeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender_","type":"address"},{"internalType":"uint256","name":"subtractedValue_","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender_","type":"address"},{"internalType":"uint256","name":"addedValue_","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b50604051620014653803806200146583398101604081905262000034916200035e565b60ff821660805283838362000049836200006d565b6200005482620000c0565b5050506001600160a01b031660a052506200043f915050565b60006200007962000121565b5111156200009a5760405163377d5ae560e01b815260040160405180910390fd5b80600080516020620014458339815191528151620000bc9260200190620001eb565b5050565b6000620000cc620001c9565b511115620000ed57604051631e0e985160e11b815260040160405180910390fd5b8051620000bc907f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68f906020840190620001eb565b6060600080516020620014458339815191528054620001409062000402565b80601f01602080910402602001604051908101604052809291908181526020018280546200016e9062000402565b8015620001bf5780601f106200019357610100808354040283529160200191620001bf565b820191906000526020600020905b815481529060010190602001808311620001a157829003601f168201915b5050505050905090565b6060600080516020620014458339815191526001018054620001409062000402565b828054620001f99062000402565b90600052602060002090601f0160209004810192826200021d576000855562000268565b82601f106200023857805160ff191683800117855562000268565b8280016001018555821562000268579182015b82811115620002685782518255916020019190600101906200024b565b50620002769291506200027a565b5090565b5b808211156200027657600081556001016200027b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002b957600080fd5b81516001600160401b0380821115620002d657620002d662000291565b604051601f8301601f19908116603f0116810190828211818310171562000301576200030162000291565b816040528381526020925086838588010111156200031e57600080fd5b600091505b8382101562000342578582018301518183018401529082019062000323565b83821115620003545760008385830101525b9695505050505050565b600080600080608085870312156200037557600080fd5b84516001600160401b03808211156200038d57600080fd5b6200039b88838901620002a7565b95506020870151915080821115620003b257600080fd5b50620003c187828801620002a7565b935050604085015160ff81168114620003d957600080fd5b60608601519092506001600160a01b0381168114620003f757600080fd5b939692955090935050565b600181811c908216806200041757607f821691505b602082108114156200043957634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051610fd2620004736000396000818161026a01528181610411015261048a0152600061016a0152610fd26000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610214578063a9059cbb14610227578063dd62ed3e1461023a578063e78cea921461026557600080fd5b806370a08231146101c657806374f4f547146101e65780638c2a993e146101f957806395d89b411461020c57600080fd5b806323b872dd116100d357806323b872dd14610152578063313ce56714610165578063395093511461019e5780634cd88b76146101b157600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102b1565b60405161010f9190610c55565b60405180910390f35b61012b610126366004610cf1565b610362565b604051901515815260200161010f565b61014460005481565b60405190815260200161010f565b61012b610160366004610d1b565b610378565b61018c7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161010f565b61012b6101ac366004610cf1565b61039a565b6101c46101bf366004610e31565b6103e3565b005b6101446101d4366004610e95565b60016020526000908152604090205481565b6101c46101f4366004610cf1565b6103f9565b6101c4610207366004610cf1565b610472565b6101026104eb565b61012b610222366004610cf1565b61051c565b61012b610235366004610cf1565b610594565b610144610248366004610eb7565b600260209081526000928352604080842090915290825290205481565b61028c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b60607f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68e80546102df90610eea565b80601f016020809104026020016040519081016040528092919081815260200182805461030b90610eea565b80156103585780601f1061032d57610100808354040283529160200191610358565b820191906000526020600020905b81548152906001019060200180831161033b57829003601f168201915b5050505050905090565b600061036f3384846105a1565b50600192915050565b60006103858433846106ae565b61039084848461075c565b5060019392505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161036f9185906103de908690610f6d565b6105a1565b6103ec8261089d565b6103f581610911565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610468576040517fb5f1e21f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f58282610986565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146104e1576040517fb5f1e21f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f58282610a48565b60607f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68e60010180546102df90610eea565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610587576040517f82e5f5dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61039033858584036105a1565b600061036f33848461075c565b8273ffffffffffffffffffffffffffffffffffffffff81166105ef576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff811661063d576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85811660008181526002602090815260408083209489168084529482529182902087905590518681527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81141561070f5750505050565b80821115610749576040517fc213972500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075684848484036105a1565b50505050565b8273ffffffffffffffffffffffffffffffffffffffff81166107aa576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff81166107f8576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108028584610b31565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054859290610837908490610f6d565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161069f91815260200190565b60006108a76102b1565b5111156108e0576040517f377d5ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68e81516103f59260200190610bbc565b600061091b6104eb565b511115610954576040517f3c1d30a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516103f5907f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68f906020840190610bbc565b8173ffffffffffffffffffffffffffffffffffffffff81166109d4576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109de8383610b31565b816000808282546109ef9190610f85565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b8173ffffffffffffffffffffffffffffffffffffffff8116610a96576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600080828254610aa79190610f6d565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081208054849290610ae1908490610f6d565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a3b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205480821115610b90576040517eb284f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909216600090815260016020526040902091039055565b828054610bc890610eea565b90600052602060002090601f016020900481019282610bea5760008555610c30565b82601f10610c0357805160ff1916838001178555610c30565b82800160010185558215610c30579182015b82811115610c30578251825591602001919060010190610c15565b50610c3c929150610c40565b5090565b5b80821115610c3c5760008155600101610c41565b600060208083528351808285015260005b81811015610c8257858101830151858201604001528201610c66565b81811115610c94576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cec57600080fd5b919050565b60008060408385031215610d0457600080fd5b610d0d83610cc8565b946020939093013593505050565b600080600060608486031215610d3057600080fd5b610d3984610cc8565b9250610d4760208501610cc8565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610d9757600080fd5b813567ffffffffffffffff80821115610db257610db2610d57565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610df857610df8610d57565b81604052838152866020858801011115610e1157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215610e4457600080fd5b823567ffffffffffffffff80821115610e5c57600080fd5b610e6886838701610d86565b93506020850135915080821115610e7e57600080fd5b50610e8b85828601610d86565b9150509250929050565b600060208284031215610ea757600080fd5b610eb082610cc8565b9392505050565b60008060408385031215610eca57600080fd5b610ed383610cc8565b9150610ee160208401610cc8565b90509250929050565b600181811c90821680610efe57607f821691505b60208210811415610f38577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f8057610f80610f3e565b500190565b600082821015610f9757610f97610f3e565b50039056fea26469706673582212203cf7a7195c4e1da47689e3c0364bd185b2e60637d8444ccc7d885c6f00b3fae064736f6c634300080a00333470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68e000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000fc3de4b1bbcb315880d328e3f9c81d742d73d01000000000000000000000000000000000000000000000000000000000000001f57726170706564206c6971756964207374616b656420457468657220322e300000000000000000000000000000000000000000000000000000000000000000067773744554480000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610214578063a9059cbb14610227578063dd62ed3e1461023a578063e78cea921461026557600080fd5b806370a08231146101c657806374f4f547146101e65780638c2a993e146101f957806395d89b411461020c57600080fd5b806323b872dd116100d357806323b872dd14610152578063313ce56714610165578063395093511461019e5780634cd88b76146101b157600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102b1565b60405161010f9190610c55565b60405180910390f35b61012b610126366004610cf1565b610362565b604051901515815260200161010f565b61014460005481565b60405190815260200161010f565b61012b610160366004610d1b565b610378565b61018c7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff909116815260200161010f565b61012b6101ac366004610cf1565b61039a565b6101c46101bf366004610e31565b6103e3565b005b6101446101d4366004610e95565b60016020526000908152604090205481565b6101c46101f4366004610cf1565b6103f9565b6101c4610207366004610cf1565b610472565b6101026104eb565b61012b610222366004610cf1565b61051c565b61012b610235366004610cf1565b610594565b610144610248366004610eb7565b600260209081526000928352604080842090915290825290205481565b61028c7f0000000000000000000000000fc3de4b1bbcb315880d328e3f9c81d742d73d0181565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b60607f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68e80546102df90610eea565b80601f016020809104026020016040519081016040528092919081815260200182805461030b90610eea565b80156103585780601f1061032d57610100808354040283529160200191610358565b820191906000526020600020905b81548152906001019060200180831161033b57829003601f168201915b5050505050905090565b600061036f3384846105a1565b50600192915050565b60006103858433846106ae565b61039084848461075c565b5060019392505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161036f9185906103de908690610f6d565b6105a1565b6103ec8261089d565b6103f581610911565b5050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000fc3de4b1bbcb315880d328e3f9c81d742d73d011614610468576040517fb5f1e21f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f58282610986565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000fc3de4b1bbcb315880d328e3f9c81d742d73d0116146104e1576040517fb5f1e21f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103f58282610a48565b60607f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68e60010180546102df90610eea565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610587576040517f82e5f5dc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61039033858584036105a1565b600061036f33848461075c565b8273ffffffffffffffffffffffffffffffffffffffff81166105ef576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff811661063d576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85811660008181526002602090815260408083209489168084529482529182902087905590518681527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600260209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81141561070f5750505050565b80821115610749576040517fc213972500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61075684848484036105a1565b50505050565b8273ffffffffffffffffffffffffffffffffffffffff81166107aa576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff81166107f8576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108028584610b31565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054859290610837908490610f6d565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161069f91815260200190565b60006108a76102b1565b5111156108e0576040517f377d5ae500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b807f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68e81516103f59260200190610bbc565b600061091b6104eb565b511115610954576040517f3c1d30a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516103f5907f3470f8373d566de7ab61e14a030ae865a1f164b610b931eb8aa08ad044e2e68f906020840190610bbc565b8173ffffffffffffffffffffffffffffffffffffffff81166109d4576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109de8383610b31565b816000808282546109ef9190610f85565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b8173ffffffffffffffffffffffffffffffffffffffff8116610a96576040517fef6b416200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600080828254610aa79190610f6d565b909155505073ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081208054849290610ae1908490610f6d565b909155505060405182815273ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a3b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205480821115610b90576040517eb284f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff909216600090815260016020526040902091039055565b828054610bc890610eea565b90600052602060002090601f016020900481019282610bea5760008555610c30565b82601f10610c0357805160ff1916838001178555610c30565b82800160010185558215610c30579182015b82811115610c30578251825591602001919060010190610c15565b50610c3c929150610c40565b5090565b5b80821115610c3c5760008155600101610c41565b600060208083528351808285015260005b81811015610c8257858101830151858201604001528201610c66565b81811115610c94576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cec57600080fd5b919050565b60008060408385031215610d0457600080fd5b610d0d83610cc8565b946020939093013593505050565b600080600060608486031215610d3057600080fd5b610d3984610cc8565b9250610d4760208501610cc8565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610d9757600080fd5b813567ffffffffffffffff80821115610db257610db2610d57565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610df857610df8610d57565b81604052838152866020858801011115610e1157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060408385031215610e4457600080fd5b823567ffffffffffffffff80821115610e5c57600080fd5b610e6886838701610d86565b93506020850135915080821115610e7e57600080fd5b50610e8b85828601610d86565b9150509250929050565b600060208284031215610ea757600080fd5b610eb082610cc8565b9392505050565b60008060408385031215610eca57600080fd5b610ed383610cc8565b9150610ee160208401610cc8565b90509250929050565b600181811c90821680610efe57607f821691505b60208210811415610f38577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f8057610f80610f3e565b500190565b600082821015610f9757610f97610f3e565b50039056fea26469706673582212203cf7a7195c4e1da47689e3c0364bd185b2e60637d8444ccc7d885c6f00b3fae064736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000fc3de4b1bbcb315880d328e3f9c81d742d73d01000000000000000000000000000000000000000000000000000000000000001f57726170706564206c6971756964207374616b656420457468657220322e300000000000000000000000000000000000000000000000000000000000000000067773744554480000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Wrapped liquid staked Ether 2.0
Arg [1] : symbol_ (string): wstETH
Arg [2] : decimals_ (uint8): 18
Arg [3] : bridge_ (address): 0x0fc3De4B1bbcB315880d328e3f9C81d742D73d01
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000fc3de4b1bbcb315880d328e3f9c81d742d73d01
Arg [4] : 000000000000000000000000000000000000000000000000000000000000001f
Arg [5] : 57726170706564206c6971756964207374616b656420457468657220322e3000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [7] : 7773744554480000000000000000000000000000000000000000000000000000
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.966502 | 163.2828 | $157.81 |
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.