More Info
Private Name Tags
ContractCreator
Latest 20 from a total of 20 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 21795950 | 13 hrs ago | IN | 0 ETH | 0.00016697 | ||||
Deposit | 21795803 | 14 hrs ago | IN | 0 ETH | 0.00007611 | ||||
Deposit | 21792682 | 24 hrs ago | IN | 0 ETH | 0.00007957 | ||||
Deposit | 21774018 | 3 days ago | IN | 0 ETH | 0.00022994 | ||||
Deposit | 21772038 | 3 days ago | IN | 0 ETH | 0.00011298 | ||||
Deposit | 21764652 | 4 days ago | IN | 0 ETH | 0.00090885 | ||||
Deposit | 21727376 | 10 days ago | IN | 0 ETH | 0.00011687 | ||||
Withdraw | 21722944 | 10 days ago | IN | 0 ETH | 0.00029822 | ||||
Withdraw | 21722939 | 10 days ago | IN | 0 ETH | 0.00023098 | ||||
Deposit | 21721522 | 10 days ago | IN | 0 ETH | 0.00016627 | ||||
Deposit | 21695185 | 14 days ago | IN | 0 ETH | 0.00092874 | ||||
Withdraw | 21692265 | 15 days ago | IN | 0 ETH | 0.00027398 | ||||
Deposit | 21685164 | 16 days ago | IN | 0 ETH | 0.00031515 | ||||
Deposit | 21685162 | 16 days ago | IN | 0 ETH | 0.00028694 | ||||
Deposit | 21680068 | 16 days ago | IN | 0 ETH | 0.00055444 | ||||
Withdraw | 21675777 | 17 days ago | IN | 0 ETH | 0.00101634 | ||||
Deposit | 21675608 | 17 days ago | IN | 0 ETH | 0.00091277 | ||||
Deposit | 21675557 | 17 days ago | IN | 0 ETH | 0.00114189 | ||||
Deposit | 21675477 | 17 days ago | IN | 0 ETH | 0.00092408 | ||||
Initialize | 21636075 | 22 days ago | IN | 0 ETH | 0.00043368 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
MultipliBridger
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.4.22 <0.9.0; import {Initializable, ContextUpgradeable} from "Initializable.sol"; import "TransferHelper.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ function __Ownable_init() internal initializer { __Context_init_unchained(); __Ownable_init_unchained(); } function __Ownable_init_unchained() internal initializer { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } uint256[49] private __gap; } /** * Brine bridger for cross-chain interoperability */ contract MultipliBridger is OwnableUpgradeable { mapping(address => bool) public authorized; mapping(string => bool) public processedWithdrawalIds; modifier _isAuthorized() { require(authorized[msg.sender], "UNAUTHORIZED"); _; } modifier _validateWithdrawalId(string calldata withdrawalId) { require(bytes(withdrawalId).length > 0, "Withdrawal ID is required"); require( !processedWithdrawalIds[withdrawalId], "Withdrawal ID Already processed" ); _; } event BridgedDeposit( address indexed user, address indexed token, uint256 amount ); event BridgedWithdrawal( address indexed user, address indexed token, uint256 amount, string withdrawalId ); function initialize() public initializer { __Ownable_init(); authorized[_msgSender()] = true; } /** * @dev Deposit ERC20 tokens into the contract address, must be approved */ function deposit(address token, uint256 amount) external { TransferHelper.safeTransferFrom( token, msg.sender, address(this), amount ); emit BridgedDeposit(msg.sender, token, amount); } /** * @dev Deposit native chain currency into contract address */ function depositNative() external payable { emit BridgedDeposit(msg.sender, address(0), msg.value); // Maybe create new events for ETH deposit/withdraw } /** * @dev Deposit ERC20 token into the contract address * NOTE: Restricted deposit function for rebalancing */ function addFunds(address token, uint256 amount) external _isAuthorized { TransferHelper.safeTransferFrom( token, msg.sender, address(this), amount ); } /** * @dev Deposit native chain currency into the contract address * NOTE: Restricted deposit function for rebalancing */ function addFundsNative() external payable _isAuthorized {} /** * @dev withdraw ERC20 tokens from the contract address * NOTE: only for authorized users */ function withdraw( address token, address to, uint256 amount, string calldata withdrawalId ) external _isAuthorized _validateWithdrawalId(withdrawalId) { processedWithdrawalIds[withdrawalId] = true; TransferHelper.safeTransfer(token, to, amount); emit BridgedWithdrawal(to, token, amount, withdrawalId); } /** * @dev withdraw native chain currency from the contract address * NOTE: only for authorized users */ function withdrawNative( address payable to, uint256 amount, string calldata withdrawalId ) external _isAuthorized _validateWithdrawalId(withdrawalId) { processedWithdrawalIds[withdrawalId] = true; removeFundsNative(to, amount); emit BridgedWithdrawal(to, address(0), amount, withdrawalId); } /** * @dev withdraw ERC20 token from the contract address * NOTE: only for authorized users for rebalancing */ function removeFunds( address token, address to, uint256 amount ) external _isAuthorized { TransferHelper.safeTransfer(token, to, amount); } /** * @dev withdraw native chain currency from the contract address * NOTE: only for authorized users for rebalancing */ function removeFundsNative( address payable to, uint256 amount ) public _isAuthorized { require(address(this).balance >= amount, "INSUFFICIENT_BALANCE"); to.transfer(amount); } /** * @dev add or remove authorized users * NOTE: only owner */ function authorize(address user, bool value) external onlyOwner { authorized[user] = value; } function transferOwner(address newOwner) external onlyOwner { authorized[newOwner] = true; authorized[owner()] = false; transferOwnership(newOwner); } function renounceOwnership() public view override onlyOwner { require(false, "Unable to renounce ownership"); } }
// SPDX-License-Identifier: GPL-3.0 // solhint-disable-next-line compiler-version pragma solidity ^0.8.0; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require( _initializing || !_initialized, "Initializable: contract is already initialized" ); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract ContextUpgradeable is Initializable { function __Context_init() internal initializer { __Context_init_unchained(); } function __Context_init_unchained() internal initializer {} function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } uint256[50] private __gap; }
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.6.0; // Source: UniswapV2 // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x095ea7b3, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED" ); } function safeTransfer( address token, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0xa9059cbb, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED" ); } function safeTransferFrom( address token, address from, address to, uint256 value ) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call( abi.encodeWithSelector(0x23b872dd, from, to, value) ); require( success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED" ); } function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, "TransferHelper: ETH_TRANSFER_FAILED"); } }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "MultipliBridger.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BridgedDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"withdrawalId","type":"string"}],"name":"BridgedWithdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addFundsNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"processedWithdrawalIds","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeFundsNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"withdrawalId","type":"string"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"withdrawalId","type":"string"}],"name":"withdrawNative","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052348015600f57600080fd5b506112e78061001f6000396000f3fe6080604052600436106100f35760003560e01c80637a78b9c71161008a578063bc4b336511610059578063bc4b336514610294578063d6c9b6a5146102b4578063db6b5246146102d4578063f2fde38b146102dc57600080fd5b80637a78b9c7146102075780638129fc1c146102275780638da5cb5b1461023c578063b91816111461026457600080fd5b80634f065632116100c65780634f065632146101625780634fb2e45d14610182578063715018a6146101a25780637729d644146101b757600080fd5b8063143531c0146100f85780632d1fb3891461011a578063447e346f1461013a57806347e7ef2414610142575b600080fd5b34801561010457600080fd5b50610118610113366004610eb7565b6102fc565b005b34801561012657600080fd5b50610118610135366004610ef1565b6103b6565b61011861040b565b34801561014e57600080fd5b5061011861015d366004610eb7565b61043c565b34801561016e57600080fd5b5061011861017d366004610f73565b61048c565b34801561018e57600080fd5b5061011861019d366004610fe6565b61060f565b3480156101ae57600080fd5b506101186106a5565b3480156101c357600080fd5b506101f26101d2366004611020565b805160208183018101805160668252928201919093012091525460ff1681565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b506101186102223660046110d9565b610717565b34801561023357600080fd5b50610118610899565b34801561024857600080fd5b506033546040516001600160a01b0390911681526020016101fe565b34801561027057600080fd5b506101f261027f366004610fe6565b60656020526000908152604090205460ff1681565b3480156102a057600080fd5b506101186102af366004610eb7565b610926565b3480156102c057600080fd5b506101186102cf366004611135565b610965565b61011861099f565b3480156102e857600080fd5b506101186102f7366004610fe6565b6109d9565b3360009081526065602052604090205460ff166103345760405162461bcd60e51b815260040161032b90611176565b60405180910390fd5b8047101561037b5760405162461bcd60e51b8152602060048201526014602482015273494e53554646494349454e545f42414c414e434560601b604482015260640161032b565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156103b1573d6000803e3d6000fd5b505050565b6033546001600160a01b031633146103e05760405162461bcd60e51b815260040161032b9061119c565b6001600160a01b03919091166000908152606560205260409020805460ff1916911515919091179055565b3360009081526065602052604090205460ff1661043a5760405162461bcd60e51b815260040161032b90611176565b565b61044882333084610ac4565b6040518181526001600160a01b0383169033907f573284f4c36da6a8d8d84cd06662235f8a770cc98e8c80e304b8f382fdc3dca29060200160405180910390a35050565b3360009081526065602052604090205460ff166104bb5760405162461bcd60e51b815260040161032b90611176565b8181806105065760405162461bcd60e51b815260206004820152601960248201527815da5d1a191c985dd85b081251081a5cc81c995c5d5a5c9959603a1b604482015260640161032b565b606682826040516105189291906111d1565b9081526040519081900360200190205460ff16156105785760405162461bcd60e51b815260206004820152601f60248201527f5769746864726177616c20494420416c72656164792070726f63657373656400604482015260640161032b565b60016066858560405161058c9291906111d1565b908152604051908190036020019020805491151560ff199092169190911790556105b7878787610bf4565b866001600160a01b0316866001600160a01b03167fe4f4f1fb3534fe80225d336f6e5a73007dc992e5f6740152bf13ed2a08f3851a8787876040516105fe939291906111e1565b60405180910390a350505050505050565b6033546001600160a01b031633146106395760405162461bcd60e51b815260040161032b9061119c565b6001600160a01b03811660009081526065602081905260408220805460ff19166001179055816106716033546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556106a2816109d9565b50565b6033546001600160a01b031633146106cf5760405162461bcd60e51b815260040161032b9061119c565b60405162461bcd60e51b815260206004820152601c60248201527f556e61626c6520746f2072656e6f756e6365206f776e65727368697000000000604482015260640161032b565b3360009081526065602052604090205460ff166107465760405162461bcd60e51b815260040161032b90611176565b8181806107915760405162461bcd60e51b815260206004820152601960248201527815da5d1a191c985dd85b081251081a5cc81c995c5d5a5c9959603a1b604482015260640161032b565b606682826040516107a39291906111d1565b9081526040519081900360200190205460ff16156108035760405162461bcd60e51b815260206004820152601f60248201527f5769746864726177616c20494420416c72656164792070726f63657373656400604482015260640161032b565b6001606685856040516108179291906111d1565b908152604051908190036020019020805491151560ff1990921691909117905561084186866102fc565b60006001600160a01b0316866001600160a01b03167fe4f4f1fb3534fe80225d336f6e5a73007dc992e5f6740152bf13ed2a08f3851a878787604051610889939291906111e1565b60405180910390a3505050505050565b600054610100900460ff16806108b2575060005460ff16155b6108ce5760405162461bcd60e51b815260040161032b90611217565b600054610100900460ff161580156108f0576000805461ffff19166101011790555b6108f8610d0f565b336000908152606560205260409020805460ff1916600117905580156106a2576000805461ff001916905550565b3360009081526065602052604090205460ff166109555760405162461bcd60e51b815260040161032b90611176565b61096182333084610ac4565b5050565b3360009081526065602052604090205460ff166109945760405162461bcd60e51b815260040161032b90611176565b6103b1838383610bf4565b60405134815260009033907f573284f4c36da6a8d8d84cd06662235f8a770cc98e8c80e304b8f382fdc3dca29060200160405180910390a3565b6033546001600160a01b03163314610a035760405162461bcd60e51b815260040161032b9061119c565b6001600160a01b038116610a685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161032b565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610b289190611265565b6000604051808303816000865af19150503d8060008114610b65576040519150601f19603f3d011682016040523d82523d6000602084013e610b6a565b606091505b5091509150818015610b94575080511580610b94575080806020019051810190610b949190611294565b610bec5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b606482015260840161032b565b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610c509190611265565b6000604051808303816000865af19150503d8060008114610c8d576040519150601f19603f3d011682016040523d82523d6000602084013e610c92565b606091505b5091509150818015610cbc575080511580610cbc575080806020019051810190610cbc9190611294565b610d085760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015260640161032b565b5050505050565b600054610100900460ff1680610d28575060005460ff16155b610d445760405162461bcd60e51b815260040161032b90611217565b600054610100900460ff16158015610d66576000805461ffff19166101011790555b610d6e610d8a565b610d76610df4565b80156106a2576000805461ff001916905550565b600054610100900460ff1680610da3575060005460ff16155b610dbf5760405162461bcd60e51b815260040161032b90611217565b600054610100900460ff16158015610d76576000805461ffff191661010117905580156106a2576000805461ff001916905550565b600054610100900460ff1680610e0d575060005460ff16155b610e295760405162461bcd60e51b815260040161032b90611217565b600054610100900460ff16158015610e4b576000805461ffff19166101011790555b603380546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156106a2576000805461ff001916905550565b6001600160a01b03811681146106a257600080fd5b60008060408385031215610eca57600080fd5b8235610ed581610ea2565b946020939093013593505050565b80151581146106a257600080fd5b60008060408385031215610f0457600080fd5b8235610f0f81610ea2565b91506020830135610f1f81610ee3565b809150509250929050565b60008083601f840112610f3c57600080fd5b50813567ffffffffffffffff811115610f5457600080fd5b602083019150836020828501011115610f6c57600080fd5b9250929050565b600080600080600060808688031215610f8b57600080fd5b8535610f9681610ea2565b94506020860135610fa681610ea2565b935060408601359250606086013567ffffffffffffffff811115610fc957600080fd5b610fd588828901610f2a565b969995985093965092949392505050565b600060208284031215610ff857600080fd5b813561100381610ea2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561103257600080fd5b813567ffffffffffffffff81111561104957600080fd5b8201601f8101841361105a57600080fd5b803567ffffffffffffffff8111156110745761107461100a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156110a3576110a361100a565b6040528181528282016020018610156110bb57600080fd5b81602084016020830137600091810160200191909152949350505050565b600080600080606085870312156110ef57600080fd5b84356110fa81610ea2565b935060208501359250604085013567ffffffffffffffff81111561111d57600080fd5b61112987828801610f2a565b95989497509550505050565b60008060006060848603121561114a57600080fd5b833561115581610ea2565b9250602084013561116581610ea2565b929592945050506040919091013590565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000825160005b81811015611286576020818601810151858301520161126c565b506000920191825250919050565b6000602082840312156112a657600080fd5b815161100381610ee356fea2646970667358221220db4bb7647dc0dd1fca272a9be60b18e827f91d96c66391ae5fba4a0465e227a464736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106100f35760003560e01c80637a78b9c71161008a578063bc4b336511610059578063bc4b336514610294578063d6c9b6a5146102b4578063db6b5246146102d4578063f2fde38b146102dc57600080fd5b80637a78b9c7146102075780638129fc1c146102275780638da5cb5b1461023c578063b91816111461026457600080fd5b80634f065632116100c65780634f065632146101625780634fb2e45d14610182578063715018a6146101a25780637729d644146101b757600080fd5b8063143531c0146100f85780632d1fb3891461011a578063447e346f1461013a57806347e7ef2414610142575b600080fd5b34801561010457600080fd5b50610118610113366004610eb7565b6102fc565b005b34801561012657600080fd5b50610118610135366004610ef1565b6103b6565b61011861040b565b34801561014e57600080fd5b5061011861015d366004610eb7565b61043c565b34801561016e57600080fd5b5061011861017d366004610f73565b61048c565b34801561018e57600080fd5b5061011861019d366004610fe6565b61060f565b3480156101ae57600080fd5b506101186106a5565b3480156101c357600080fd5b506101f26101d2366004611020565b805160208183018101805160668252928201919093012091525460ff1681565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b506101186102223660046110d9565b610717565b34801561023357600080fd5b50610118610899565b34801561024857600080fd5b506033546040516001600160a01b0390911681526020016101fe565b34801561027057600080fd5b506101f261027f366004610fe6565b60656020526000908152604090205460ff1681565b3480156102a057600080fd5b506101186102af366004610eb7565b610926565b3480156102c057600080fd5b506101186102cf366004611135565b610965565b61011861099f565b3480156102e857600080fd5b506101186102f7366004610fe6565b6109d9565b3360009081526065602052604090205460ff166103345760405162461bcd60e51b815260040161032b90611176565b60405180910390fd5b8047101561037b5760405162461bcd60e51b8152602060048201526014602482015273494e53554646494349454e545f42414c414e434560601b604482015260640161032b565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156103b1573d6000803e3d6000fd5b505050565b6033546001600160a01b031633146103e05760405162461bcd60e51b815260040161032b9061119c565b6001600160a01b03919091166000908152606560205260409020805460ff1916911515919091179055565b3360009081526065602052604090205460ff1661043a5760405162461bcd60e51b815260040161032b90611176565b565b61044882333084610ac4565b6040518181526001600160a01b0383169033907f573284f4c36da6a8d8d84cd06662235f8a770cc98e8c80e304b8f382fdc3dca29060200160405180910390a35050565b3360009081526065602052604090205460ff166104bb5760405162461bcd60e51b815260040161032b90611176565b8181806105065760405162461bcd60e51b815260206004820152601960248201527815da5d1a191c985dd85b081251081a5cc81c995c5d5a5c9959603a1b604482015260640161032b565b606682826040516105189291906111d1565b9081526040519081900360200190205460ff16156105785760405162461bcd60e51b815260206004820152601f60248201527f5769746864726177616c20494420416c72656164792070726f63657373656400604482015260640161032b565b60016066858560405161058c9291906111d1565b908152604051908190036020019020805491151560ff199092169190911790556105b7878787610bf4565b866001600160a01b0316866001600160a01b03167fe4f4f1fb3534fe80225d336f6e5a73007dc992e5f6740152bf13ed2a08f3851a8787876040516105fe939291906111e1565b60405180910390a350505050505050565b6033546001600160a01b031633146106395760405162461bcd60e51b815260040161032b9061119c565b6001600160a01b03811660009081526065602081905260408220805460ff19166001179055816106716033546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556106a2816109d9565b50565b6033546001600160a01b031633146106cf5760405162461bcd60e51b815260040161032b9061119c565b60405162461bcd60e51b815260206004820152601c60248201527f556e61626c6520746f2072656e6f756e6365206f776e65727368697000000000604482015260640161032b565b3360009081526065602052604090205460ff166107465760405162461bcd60e51b815260040161032b90611176565b8181806107915760405162461bcd60e51b815260206004820152601960248201527815da5d1a191c985dd85b081251081a5cc81c995c5d5a5c9959603a1b604482015260640161032b565b606682826040516107a39291906111d1565b9081526040519081900360200190205460ff16156108035760405162461bcd60e51b815260206004820152601f60248201527f5769746864726177616c20494420416c72656164792070726f63657373656400604482015260640161032b565b6001606685856040516108179291906111d1565b908152604051908190036020019020805491151560ff1990921691909117905561084186866102fc565b60006001600160a01b0316866001600160a01b03167fe4f4f1fb3534fe80225d336f6e5a73007dc992e5f6740152bf13ed2a08f3851a878787604051610889939291906111e1565b60405180910390a3505050505050565b600054610100900460ff16806108b2575060005460ff16155b6108ce5760405162461bcd60e51b815260040161032b90611217565b600054610100900460ff161580156108f0576000805461ffff19166101011790555b6108f8610d0f565b336000908152606560205260409020805460ff1916600117905580156106a2576000805461ff001916905550565b3360009081526065602052604090205460ff166109555760405162461bcd60e51b815260040161032b90611176565b61096182333084610ac4565b5050565b3360009081526065602052604090205460ff166109945760405162461bcd60e51b815260040161032b90611176565b6103b1838383610bf4565b60405134815260009033907f573284f4c36da6a8d8d84cd06662235f8a770cc98e8c80e304b8f382fdc3dca29060200160405180910390a3565b6033546001600160a01b03163314610a035760405162461bcd60e51b815260040161032b9061119c565b6001600160a01b038116610a685760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161032b565b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610b289190611265565b6000604051808303816000865af19150503d8060008114610b65576040519150601f19603f3d011682016040523d82523d6000602084013e610b6a565b606091505b5091509150818015610b94575080511580610b94575080806020019051810190610b949190611294565b610bec5760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b606482015260840161032b565b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610c509190611265565b6000604051808303816000865af19150503d8060008114610c8d576040519150601f19603f3d011682016040523d82523d6000602084013e610c92565b606091505b5091509150818015610cbc575080511580610cbc575080806020019051810190610cbc9190611294565b610d085760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015260640161032b565b5050505050565b600054610100900460ff1680610d28575060005460ff16155b610d445760405162461bcd60e51b815260040161032b90611217565b600054610100900460ff16158015610d66576000805461ffff19166101011790555b610d6e610d8a565b610d76610df4565b80156106a2576000805461ff001916905550565b600054610100900460ff1680610da3575060005460ff16155b610dbf5760405162461bcd60e51b815260040161032b90611217565b600054610100900460ff16158015610d76576000805461ffff191661010117905580156106a2576000805461ff001916905550565b600054610100900460ff1680610e0d575060005460ff16155b610e295760405162461bcd60e51b815260040161032b90611217565b600054610100900460ff16158015610e4b576000805461ffff19166101011790555b603380546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156106a2576000805461ff001916905550565b6001600160a01b03811681146106a257600080fd5b60008060408385031215610eca57600080fd5b8235610ed581610ea2565b946020939093013593505050565b80151581146106a257600080fd5b60008060408385031215610f0457600080fd5b8235610f0f81610ea2565b91506020830135610f1f81610ee3565b809150509250929050565b60008083601f840112610f3c57600080fd5b50813567ffffffffffffffff811115610f5457600080fd5b602083019150836020828501011115610f6c57600080fd5b9250929050565b600080600080600060808688031215610f8b57600080fd5b8535610f9681610ea2565b94506020860135610fa681610ea2565b935060408601359250606086013567ffffffffffffffff811115610fc957600080fd5b610fd588828901610f2a565b969995985093965092949392505050565b600060208284031215610ff857600080fd5b813561100381610ea2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561103257600080fd5b813567ffffffffffffffff81111561104957600080fd5b8201601f8101841361105a57600080fd5b803567ffffffffffffffff8111156110745761107461100a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156110a3576110a361100a565b6040528181528282016020018610156110bb57600080fd5b81602084016020830137600091810160200191909152949350505050565b600080600080606085870312156110ef57600080fd5b84356110fa81610ea2565b935060208501359250604085013567ffffffffffffffff81111561111d57600080fd5b61112987828801610f2a565b95989497509550505050565b60008060006060848603121561114a57600080fd5b833561115581610ea2565b9250602084013561116581610ea2565b929592945050506040919091013590565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8183823760009101908152919050565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000825160005b81811015611286576020818601810151858301520161126c565b506000920191825250919050565b6000602082840312156112a657600080fd5b815161100381610ee356fea2646970667358221220db4bb7647dc0dd1fca272a9be60b18e827f91d96c66391ae5fba4a0465e227a464736f6c634300081a0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.