Source Code
Latest 25 from a total of 447 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Sweep | 18972390 | 257 days ago | IN | 0 ETH | 0.00000204 | ||||
| Zap And Stake | 16231106 | 335 days ago | IN | 0.85433002 ETH | 0.00005591 | ||||
| Zap And Stake | 16095072 | 338 days ago | IN | 0.101 ETH | 0.00009547 | ||||
| Zap And Stake | 15441360 | 355 days ago | IN | 0.05 ETH | 0.00000842 | ||||
| Zap And Stake | 15219098 | 360 days ago | IN | 0.1 ETH | 0.00006173 | ||||
| Zap And Stake | 15158332 | 362 days ago | IN | 0.015 ETH | 0.00001271 | ||||
| Zap And Stake | 15158316 | 362 days ago | IN | 0.013 ETH | 0.00001259 | ||||
| Zap And Stake | 14242848 | 384 days ago | IN | 0.1 ETH | 0.00005612 | ||||
| Zap And Stake | 13805441 | 395 days ago | IN | 0.105 ETH | 0.00013483 | ||||
| Zap And Stake | 13504962 | 402 days ago | IN | 0.101 ETH | 0.00006543 | ||||
| Zap And Stake | 13504928 | 402 days ago | IN | 0.1 ETH | 0.00011799 | ||||
| Zap And Stake | 13423212 | 404 days ago | IN | 0.17 ETH | 0.00004689 | ||||
| Zap And Stake | 13388796 | 405 days ago | IN | 0.1 ETH | 0.0001643 | ||||
| Zap And Stake | 13329891 | 407 days ago | IN | 0.15 ETH | 0.00008082 | ||||
| Zap And Stake | 13257310 | 408 days ago | IN | 0.1 ETH | 0.00052495 | ||||
| Zap And Stake | 13153849 | 411 days ago | IN | 0.53 ETH | 0.0004572 | ||||
| Zap And Stake | 13138227 | 411 days ago | IN | 1.02 ETH | 0.00159275 | ||||
| Zap And Stake | 13025163 | 414 days ago | IN | 0.1 ETH | 0.00058165 | ||||
| Zap And Stake | 12996793 | 415 days ago | IN | 0.25 ETH | 0.00004435 | ||||
| Zap And Stake | 12987229 | 415 days ago | IN | 0.12 ETH | 0.00005291 | ||||
| Zap And Stake | 12978908 | 415 days ago | IN | 0.9 ETH | 0.00147843 | ||||
| Zap And Stake | 12950655 | 416 days ago | IN | 0.16 ETH | 0.00034651 | ||||
| Zap And Stake | 12681928 | 422 days ago | IN | 0.3 ETH | 0.00014038 | ||||
| Zap And Stake | 12532805 | 426 days ago | IN | 0.2 ETH | 0.00329295 | ||||
| Zap And Stake | 12432992 | 428 days ago | IN | 1 ETH | 0.0000589 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 18972390 | 257 days ago | 0 ETH | ||||
| 18972390 | 257 days ago | 0 ETH | ||||
| 16231106 | 335 days ago | 0 ETH | ||||
| 16231106 | 335 days ago | 0 ETH | ||||
| 16231106 | 335 days ago | 0 ETH | ||||
| 16231106 | 335 days ago | 0 ETH | ||||
| 16231106 | 335 days ago | 0 ETH | ||||
| 16231106 | 335 days ago | 0.85433002 ETH | ||||
| 16095072 | 338 days ago | 0 ETH | ||||
| 16095072 | 338 days ago | 0 ETH | ||||
| 16095072 | 338 days ago | 0 ETH | ||||
| 16095072 | 338 days ago | 0 ETH | ||||
| 16095072 | 338 days ago | 0 ETH | ||||
| 16095072 | 338 days ago | 0 ETH | ||||
| 16095072 | 338 days ago | 0.101 ETH | ||||
| 15441360 | 355 days ago | 0 ETH | ||||
| 15441360 | 355 days ago | 0.05 ETH | ||||
| 15219098 | 360 days ago | 0 ETH | ||||
| 15219098 | 360 days ago | 0 ETH | ||||
| 15219098 | 360 days ago | 0 ETH | ||||
| 15219098 | 360 days ago | 0 ETH | ||||
| 15219098 | 360 days ago | 0 ETH | ||||
| 15219098 | 360 days ago | 0.1 ETH | ||||
| 15158332 | 362 days ago | 0 ETH | ||||
| 15158332 | 362 days ago | 0.015 ETH |
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xaeC644Fe...9F251146b The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
ZapLockerLP
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 100000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {ILocker} from "../interfaces/ILocker.sol";
import {IERC20, IWETH} from "../interfaces/IWETH.sol";
/**
* @title ZapLockerLP
* @dev This contract allows users to perform a Zap operation by swapping ETH for Zero tokens, adding liquidity to Nile LP, and locking LP tokens.
*/
contract ZapLockerLP {
address public odos;
ILocker public locker;
IERC20 public zero;
IWETH public weth;
IERC20 public lp;
address private me;
error OdosSwapFailed();
error EthSendFailed();
error ZeroTransferFailed();
/**
* @dev Initializes the contract with required parameters.
* @param _odos The address of the Odos Router contract.
* @param _locker The address of the LP Token Locker contract.
* @param _zero The address of the Zero Token contract.
* @param _weth The address of WETH.
*/
constructor(address _odos, address _locker, address _zero, address _weth) {
odos = _odos;
locker = ILocker(_locker);
zero = IERC20(_zero);
weth = IWETH(_weth);
lp = locker.underlying();
// give approvals
weth.approve(odos, type(uint256).max);
zero.approve(odos, type(uint256).max);
lp.approve(_locker, type(uint256).max);
me = address(this);
}
/**
* @dev Executes the Zap operation by swapping ETH for Zero tokens, adding liquidity to Nile LP, and locking LP tokens.
* @param duration The duration for which the LP tokens will be locked.
* @param zeroAmount How much ZERO the user will pass into the LP token
* @param wethAmount How much WETH the user will pass into the LP token
* @param odosSwapData The data required for the Odos swap.
*/
function zapAndStake(
uint256 duration,
uint256 zeroAmount,
uint256 wethAmount,
bytes calldata odosSwapData
) external payable {
// fetch tokens and wrap eth
if (msg.value > 0) weth.deposit{value: msg.value}();
if (zeroAmount > 0) zero.transferFrom(msg.sender, me, zeroAmount);
if (wethAmount > 0) weth.transferFrom(msg.sender, me, wethAmount);
// odos should be able to swap into LP tokens directly.
(bool success, ) = odos.call(odosSwapData);
if (!success) revert OdosSwapFailed();
// stake the LP tokens that we get back from odos
uint256 lpTokens = lp.balanceOf(address(this));
locker.createLockFor(lpTokens, duration, msg.sender, true);
// sweep any dust
sweep();
}
function sweep() public {
uint256 eth = address(this).balance;
uint256 zeroB = zero.balanceOf(address(this));
uint256 wethB = weth.balanceOf(address(this));
if (eth > 0) {
(bool ethSendSuccess, ) = msg.sender.call{value: eth}("");
if (!ethSendSuccess) revert EthSendFailed();
}
if (zeroB > 0 && !zero.transfer(msg.sender, zeroB))
revert ZeroTransferFailed();
if (wethB > 0 && !weth.transfer(msg.sender, wethB))
revert EthSendFailed();
}
}// 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";// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @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 value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` 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 value) external returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Enumerable.sol)
pragma solidity ^0.8.20;
import {IERC721} from "../IERC721.sol";
/**
* @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
* @dev See https://eips.ethereum.org/EIPS/eip-721
*/
interface IERC721Enumerable is IERC721 {
/**
* @dev Returns the total amount of tokens stored by the contract.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns a token ID owned by `owner` at a given `index` of its token list.
* Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
*/
function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);
/**
* @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
* Use along with {totalSupply} to enumerate all tokens.
*/
function tokenByIndex(uint256 index) external view returns (uint256);
}// 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 ERC721 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);
/**
* @dev Returns the number of tokens in ``owner``'s account.
*/
function balanceOf(address owner) external view returns (uint256 balance);
/**
* @dev Returns the owner of the `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function ownerOf(uint256 tokenId) external view returns (address owner);
/**
* @dev Safely transfers `tokenId` token from `from` to `to`.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon
* a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
/**
* @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
* are aware of the ERC721 protocol to prevent tokens from being forever locked.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must exist and be owned by `from`.
* - If the caller is not `from`, it must have been allowed to move this token by either {approve} or
* {setApprovalForAll}.
* - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon
* a safe transfer.
*
* Emits a {Transfer} event.
*/
function safeTransferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Transfers `tokenId` token from `from` to `to`.
*
* WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721
* or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must
* understand this adds an external call which potentially creates a reentrancy vulnerability.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `tokenId` token must be owned by `from`.
* - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 tokenId) external;
/**
* @dev Gives permission to `to` to transfer `tokenId` token to another account.
* The approval is cleared when the token is transferred.
*
* Only a single account can be approved at a time, so approving the zero address clears previous approvals.
*
* Requirements:
*
* - The caller must own the token or be an approved operator.
* - `tokenId` must exist.
*
* Emits an {Approval} event.
*/
function approve(address to, uint256 tokenId) external;
/**
* @dev Approve or remove `operator` as an operator for the caller.
* Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
*
* Requirements:
*
* - The `operator` cannot be the address zero.
*
* Emits an {ApprovalForAll} event.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns the account approved for `tokenId` token.
*
* Requirements:
*
* - `tokenId` must exist.
*/
function getApproved(uint256 tokenId) external view returns (address operator);
/**
* @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
*
* See {setApprovalForAll}
*/
function isApprovedForAll(address owner, address operator) external view returns (bool);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* 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[EIP 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);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;
import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol";
interface ILocker is IERC721Enumerable {
struct LockedBalance {
uint256 amount;
uint256 end;
uint256 start;
uint256 power;
}
function underlying() external view returns (IERC20);
function balanceOfNFTAt(
uint256 _tokenId,
uint256 _t
) external view returns (uint256);
function locked(
uint256 _tokenId
) external view returns (LockedBalance memory);
function supportsInterface(
bytes4 _interfaceID
) external view returns (bool);
function lockedEnd(uint256 _tokenId) external view returns (uint256);
function votingPowerOf(
address _owner
) external view returns (uint256 _power);
function merge(uint256 _from, uint256 _to) external;
function depositFor(uint256 _tokenId, uint256 _value) external;
function createLockFor(
uint256 _value,
uint256 _lockDuration,
address _to,
bool _stakeNFT
) external returns (uint256);
function createLock(
uint256 _value,
uint256 _lockDuration,
bool _stakeNFT
) external returns (uint256);
function increaseAmount(uint256 _tokenId, uint256 _value) external;
/// @notice Extend the unlock time for `_tokenId`
/// @param _lockDuration New number of seconds until tokens unlock
function increaseUnlockTime(
uint256 _tokenId,
uint256 _lockDuration
) external;
function withdraw(uint256 _tokenId) external;
function withdraw(uint256[] calldata _tokenIds) external;
function withdraw(address _user) external;
function balanceOfNFT(uint256 _tokenId) external view returns (uint256);
}// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.20;
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
interface IWETH is IERC20 {
function deposit() external payable;
function withdraw(uint256 wad) external;
}{
"optimizer": {
"enabled": true,
"runs": 100000
},
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_odos","type":"address"},{"internalType":"address","name":"_locker","type":"address"},{"internalType":"address","name":"_zero","type":"address"},{"internalType":"address","name":"_weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EthSendFailed","type":"error"},{"inputs":[],"name":"OdosSwapFailed","type":"error"},{"inputs":[],"name":"ZeroTransferFailed","type":"error"},{"inputs":[],"name":"locker","outputs":[{"internalType":"contract ILocker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"odos","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"uint256","name":"zeroAmount","type":"uint256"},{"internalType":"uint256","name":"wethAmount","type":"uint256"},{"internalType":"bytes","name":"odosSwapData","type":"bytes"}],"name":"zapAndStake","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"zero","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
0x60806040523480156200001157600080fd5b5060405162000d8e38038062000d8e8339810160408190526200003491620002a9565b600080546001600160a01b038087166001600160a01b03199283161790925560018054868416908316811790915560028054868516908416179055600380549385169390921692909217905560408051636f307dc360e01b81529051636f307dc3916004808201926020929091908290030181865afa158015620000bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e2919062000311565b600480546001600160a01b0319166001600160a01b0392831617815560035460005460405163095ea7b360e01b81529084169281019290925260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000176919062000338565b5060025460005460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015620001ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f4919062000338565b506004805460405163095ea7b360e01b81526001600160a01b0386811693820193909352600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200024c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000272919062000338565b5050600580546001600160a01b03191630179055506200035c915050565b6001600160a01b0381168114620002a657600080fd5b50565b60008060008060808587031215620002c057600080fd5b8451620002cd8162000290565b6020860151909450620002e08162000290565b6040860151909350620002f38162000290565b6060860151909250620003068162000290565b939692955090935050565b6000602082840312156200032457600080fd5b8151620003318162000290565b9392505050565b6000602082840312156200034b57600080fd5b815180151581146200033157600080fd5b610a22806200036c6000396000f3fe6080604052600436106100705760003560e01c806335faa4161161004e57806335faa4161461010d5780633fc8cef314610122578063bc1b392d1461014f578063d7b96d4e1461017c57600080fd5b80631eba02ec146100755780632ee2b12b146100cb578063313c06a0146100e0575b600080fd5b34801561008157600080fd5b506000546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100de6100d936600461090d565b6101a9565b005b3480156100ec57600080fd5b506004546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b34801561011957600080fd5b506100de61058f565b34801561012e57600080fd5b506003546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b34801561015b57600080fd5b506002546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b34801561018857600080fd5b506001546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b341561023357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561021957600080fd5b505af115801561022d573d6000803e3d6000fd5b50505050505b83156102e0576002546005546040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9182166024820152604481018790529116906323b872dd906064016020604051808303816000875af11580156102ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102de919061099a565b505b821561038d576003546005546040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9182166024820152604481018690529116906323b872dd906064016020604051808303816000875af1158015610367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038b919061099a565b505b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116906103ba90859085906109c3565b6000604051808303816000865af19150503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b5050905080610437576040517f45d4013e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480546040517f70a08231000000000000000000000000000000000000000000000000000000008152309281019290925260009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156104ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cf91906109d3565b600180546040517f0a2abdb300000000000000000000000000000000000000000000000000000000815260048101849052602481018b9052336044820152606481019290925291925073ffffffffffffffffffffffffffffffffffffffff90911690630a2abdb3906084016020604051808303816000875af1158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d91906109d3565b5061058661058f565b50505050505050565b6002546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152479160009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062691906109d3565b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa15801561069a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106be91906109d3565b9050821561074a57604051600090339085908381818185875af1925050503d8060008114610708576040519150601f19603f3d011682016040523d82523d6000602084013e61070d565b606091505b5050905080610748576040517f98248e6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000821180156107f257506002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810184905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f0919061099a565b155b15610829576040517f5a91840400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811180156108d157506003546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af11580156108ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cf919061099a565b155b15610908576040517f98248e6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60008060008060006080868803121561092557600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8082111561095257600080fd5b818801915088601f83011261096657600080fd5b81358181111561097557600080fd5b89602082850101111561098757600080fd5b9699959850939650602001949392505050565b6000602082840312156109ac57600080fd5b815180151581146109bc57600080fd5b9392505050565b8183823760009101908152919050565b6000602082840312156109e557600080fd5b505191905056fea264697066735822122052593306e68182d2f0756459cf3f2407effc8afc6775256957d4e87ff4c67c6c64736f6c634300081400330000000000000000000000002d8879046f1559e53eb052e949e9544bcb72f4140000000000000000000000008bb8b092f3f872a887f377f73719c665dd20ab0600000000000000000000000078354f8dccb269a615a7e0a24f9b0718fdc3c7a7000000000000000000000000e5d7c2a44ffddf6b295a15c148167daaaf5cf34f
Deployed Bytecode
0x6080604052600436106100705760003560e01c806335faa4161161004e57806335faa4161461010d5780633fc8cef314610122578063bc1b392d1461014f578063d7b96d4e1461017c57600080fd5b80631eba02ec146100755780632ee2b12b146100cb578063313c06a0146100e0575b600080fd5b34801561008157600080fd5b506000546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100de6100d936600461090d565b6101a9565b005b3480156100ec57600080fd5b506004546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b34801561011957600080fd5b506100de61058f565b34801561012e57600080fd5b506003546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b34801561015b57600080fd5b506002546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b34801561018857600080fd5b506001546100a29073ffffffffffffffffffffffffffffffffffffffff1681565b341561023357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561021957600080fd5b505af115801561022d573d6000803e3d6000fd5b50505050505b83156102e0576002546005546040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9182166024820152604481018790529116906323b872dd906064016020604051808303816000875af11580156102ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102de919061099a565b505b821561038d576003546005546040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9182166024820152604481018690529116906323b872dd906064016020604051808303816000875af1158015610367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038b919061099a565b505b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116906103ba90859085906109c3565b6000604051808303816000865af19150503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b5050905080610437576040517f45d4013e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480546040517f70a08231000000000000000000000000000000000000000000000000000000008152309281019290925260009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156104ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cf91906109d3565b600180546040517f0a2abdb300000000000000000000000000000000000000000000000000000000815260048101849052602481018b9052336044820152606481019290925291925073ffffffffffffffffffffffffffffffffffffffff90911690630a2abdb3906084016020604051808303816000875af1158015610559573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057d91906109d3565b5061058661058f565b50505050505050565b6002546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152479160009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610602573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062691906109d3565b6003546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa15801561069a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106be91906109d3565b9050821561074a57604051600090339085908381818185875af1925050503d8060008114610708576040519150601f19603f3d011682016040523d82523d6000602084013e61070d565b606091505b5050905080610748576040517f98248e6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b6000821180156107f257506002546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810184905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af11580156107cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f0919061099a565b155b15610829576040517f5a91840400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811180156108d157506003546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff9091169063a9059cbb906044016020604051808303816000875af11580156108ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cf919061099a565b155b15610908576040517f98248e6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60008060008060006080868803121561092557600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8082111561095257600080fd5b818801915088601f83011261096657600080fd5b81358181111561097557600080fd5b89602082850101111561098757600080fd5b9699959850939650602001949392505050565b6000602082840312156109ac57600080fd5b815180151581146109bc57600080fd5b9392505050565b8183823760009101908152919050565b6000602082840312156109e557600080fd5b505191905056fea264697066735822122052593306e68182d2f0756459cf3f2407effc8afc6775256957d4e87ff4c67c6c64736f6c63430008140033
Loading...
Loading
Loading...
Loading
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.