More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,714 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Swap | 18335209 | 272 days ago | IN | 0 ETH | 0.00102305 | ||||
Swap | 18122926 | 301 days ago | IN | 0 ETH | 0.00063272 | ||||
Swap | 17582718 | 377 days ago | IN | 0 ETH | 0.00083452 | ||||
Swap | 17524468 | 385 days ago | IN | 0 ETH | 0.00064522 | ||||
Swap | 17345841 | 411 days ago | IN | 0 ETH | 0.00162049 | ||||
Swap | 17319853 | 414 days ago | IN | 0 ETH | 0.00226845 | ||||
Swap | 17305337 | 416 days ago | IN | 0 ETH | 0.00125946 | ||||
Swap | 17297702 | 417 days ago | IN | 0 ETH | 0.0014826 | ||||
Swap | 17297558 | 417 days ago | IN | 0 ETH | 0.00152781 | ||||
Swap | 17297487 | 417 days ago | IN | 0 ETH | 0.00164466 | ||||
Swap | 17124561 | 442 days ago | IN | 0 ETH | 0.00200791 | ||||
Swap | 17070102 | 449 days ago | IN | 0 ETH | 0.00145398 | ||||
Swap | 17070028 | 449 days ago | IN | 0 ETH | 0.00177173 | ||||
Swap | 17069994 | 449 days ago | IN | 0 ETH | 0.00178115 | ||||
Swap | 17068247 | 450 days ago | IN | 0 ETH | 0.00181832 | ||||
Swap | 17058913 | 451 days ago | IN | 0 ETH | 0.00161722 | ||||
Swap | 17051832 | 452 days ago | IN | 0 ETH | 0.00099235 | ||||
Swap | 17031626 | 455 days ago | IN | 0 ETH | 0.00097283 | ||||
Swap | 16978606 | 462 days ago | IN | 0 ETH | 0.00136523 | ||||
Swap | 16852946 | 480 days ago | IN | 0 ETH | 0.00082087 | ||||
Swap | 16813024 | 486 days ago | IN | 0 ETH | 0.00106369 | ||||
Swap | 16774025 | 491 days ago | IN | 0 ETH | 0.00147111 | ||||
Swap | 16743754 | 495 days ago | IN | 0 ETH | 0.00178233 | ||||
Swap | 16741342 | 496 days ago | IN | 0 ETH | 0.00125699 | ||||
Swap | 16716685 | 499 days ago | IN | 0 ETH | 0.00082138 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BridgeSlime
Compiler Version
v0.8.11+commit.d7f03943
Optimization Enabled:
Yes with 800 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// Squishiverse by FourLeafClover (www.squishiverse.com) - $SLIME Bridge // MMMMMW0dxxxdkXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM // MMMMM0cdKNNKloXMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM // MMMMMKolk00kloXMWNK0KKNWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM // MMMMMMXkxxddkXWKdoddxxxxkOKXXXNNWWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM // MMMMMMMMMWWMMMXllO000KKKOkxxxxkkkkkkkkkO0KNWMMMMMMMMMMMMMMMMMMMMMMMMMM // MMMMMMMMMMMMMMKccO000000KKXNNNNNNNXXXK0OkkkkkkOKNMMMMMMMMMMMMMMMMMMMMM // MMMMMMMMMMMN0xocck0000000000KKKKXXXNNNNWWWWNX0kkkkOKWMMMMMMMMMMMMMMMMM // MMMMMMMMWXkoodkOOO00000000000000000000KKXXNNWWWMWXOxxk0NMMMMMMMMMMMMMM // MMMMMMWKxlokO000000000000000000000000000000KXWMMMMMMN0kxkKWMMMMMMMMMMM // MMMMMXxlok0000000000000000000000000000000000KNMMMMMMMMMN0xxONMMMMMMMMM // MMMW0ook0000000000000000000000000000000000000XWMMMMMMMMMMWKxdONMMMMMMM // MMWkldO000000000000000000000000000000000000000KXNWMMWNNWMMMWKxd0WMMMMM // MNxcx00000000000000000000000000000000000000000000KXOc,':ONWWMW0dkNMMMM // Wkcd0000000000000000Oo;,:dO00000000000000000000000d. .oXWWMMXxdKMMM // KloO000000000000000k; .:k000000000000000000000O: ;'.dNNWWMNxoKMM // dck000000000000000Oc '..lO00000000000000000000O: ;KNNWWMNxoXM // lo0000000000000000x' .:;.;k00000000000000000000Ol. 'ONNNWWMXdxN // cd0000000000000000x' ,k000000000000000000000x' .xNNNNWWM0o0 // cd0000000000000000x' ;O000000000000000000000Oo. ;kXNNNNWMNdd // cd0000000000000000k; .lO0000000000000000000000Od:'.,ck0KXNNNWWWko // olO0000000000000000d' 'x000000000000000O0000000000Okxk000XNNNNWMOl // kcx00000000000000000x:...;xOOxkO00000OOxolc::cclooodolccok000KNNNNWMOl // XolO00000000000000000OkkkO00kollccclcc:;,,;;;;,,,,,'.,lk00000KNNNNWMko // M0loO0000000000000000000000000Oko:,''',,,,,,,,,,,;;:okO000000KNNNNWWxd // MWOloO000000000000000000000000000OkkxdddddddoodddxkO000000000XNNNWMKoO // MMW0lok00000000000000000000000000000000000000000000000000000KXNNWWNddN // MMMMXdlxO000000000000000000000000000000000000000000000000000XNNNWNxdXM // MMMMMWOolxO000000000000000000000000000000000000000000000000KNNNWKxdKMM // MMMMMMMNOoldO000000000000000000000000000000000000000000000KNNNXkdkNMMM // MMMMMMMMMN0dooxO00000000000000000000000000000000000000000KXKkxdkXWMMMM // MMMMMMMMMMMWXOxdooxkO0000000000000000000000000000000Okxxdxxxk0NMMMMMMM // MMMMMMMMMMMMMMMNKOxdddoooddxxxxkkkkkkkxxxxxddddoooodddxkOKNWMMMMMMMMMM // MMMMMMMMMMMMMMMMMMMWNKOxdollccccccccccccccccllodxk0KNWMMMMMMMMMMMMMMMM // Development help from @lozzereth (www.allthingsweb3.com) // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; error BridgePaused(); error InvalidClaimSignature(); error InvalidClaimNonce(); error CancellingDisabled(); contract BridgeSlime is Ownable { using ECDSA for bytes32; // Oracle to sign the addresses address public oracleAddress; // Token and chain we are bridging IERC20 public immutable tokenAddress; // Bridge Pausibility bool public paused; // Bridge Fee uint256 public feePercent = 100; // Claims nonces stored against addresses mapping(address => uint256) public claimNonce; // Cancellable bool public cancellable; // Events event BridgedToken(address from, uint256 amount, uint256 nonce); event CancelClaim(address from, uint256 oldBlock, uint256 newBlock); constructor(IERC20 _tokenAddress, address _oracleAddress) { tokenAddress = _tokenAddress; oracleAddress = _oracleAddress; } /** * @dev Swap a token into the the bridge */ function swap(uint256 amount, uint256 nonce) external notPaused { IERC20(tokenAddress).transferFrom(msg.sender, address(this), amount); emit BridgedToken(msg.sender, amount, nonce); } /** * @dev Claim an amount from the bridge */ function claim( address recipient, uint256 amount, uint256 oldBlock, uint256 newBlock, bytes calldata signature ) external notPaused hasValidNonce(recipient, oldBlock, newBlock) { bytes32 data = keccak256( abi.encodePacked(recipient, amount, oldBlock, newBlock) ); if (data.toEthSignedMessageHash().recover(signature) != oracleAddress) { revert InvalidClaimSignature(); } claimNonce[recipient] = newBlock; uint256 finalAmount = ((amount * (10000 - feePercent)) / 10000); IERC20(tokenAddress).transfer(recipient, finalAmount); } modifier hasValidNonce( address _recipient, uint256 _oldBlock, uint256 _newBlock ) { if ( _oldBlock != claimNonce[_recipient] || _oldBlock >= block.number || _newBlock <= _oldBlock ) { revert InvalidClaimNonce(); } _; } /** * @dev Cancels a claim for an address */ function cancelClaimAdmin( address _address, uint256 oldBlock, uint256 newBlock ) external onlyOwner hasValidNonce(_address, oldBlock, newBlock) { claimNonce[_address] = newBlock; emit CancelClaim(_address, oldBlock, newBlock); } /** * @dev Cancel claim as a user */ function cancelClaim(uint256 oldBlock, uint256 newBlock) external cancelEnabled hasValidNonce(msg.sender, oldBlock, newBlock) { claimNonce[msg.sender] = newBlock; emit CancelClaim(msg.sender, oldBlock, newBlock); } modifier cancelEnabled() { if (!cancellable) { revert CancellingDisabled(); } _; } /** * @dev Toggles the cancellable state */ function toggleCancellable() external onlyOwner { cancellable = !cancellable; } /** * @dev Set the oracle address to verify the data */ function setOracleAddress(address _oracleAddress) external onlyOwner { oracleAddress = _oracleAddress; } /** * @dev Set pause state of the bridge */ function togglePaused() external onlyOwner { paused = !paused; } modifier notPaused() { if (paused) revert BridgePaused(); _; } /** * @dev Adjustable fee for the bridge */ function setFeePercentage(uint256 _percent) external onlyOwner { require(_percent >= 0 && _percent <= 10000, "Invalid Percent"); feePercent = _percent; } /** * @dev Allows contract owner to withdraw token from the contract */ function withdrawTokens(uint256 amount) external onlyOwner { IERC20(tokenAddress).transfer(msg.sender, amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.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 Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (utils/cryptography/ECDSA.sol) pragma solidity ^0.8.0; import "../Strings.sol"; /** * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations. * * These functions can be used to verify that a message was signed by the holder * of the private keys of a given address. */ library ECDSA { enum RecoverError { NoError, InvalidSignature, InvalidSignatureLength, InvalidSignatureS, InvalidSignatureV } function _throwError(RecoverError error) private pure { if (error == RecoverError.NoError) { return; // no error: do nothing } else if (error == RecoverError.InvalidSignature) { revert("ECDSA: invalid signature"); } else if (error == RecoverError.InvalidSignatureLength) { revert("ECDSA: invalid signature length"); } else if (error == RecoverError.InvalidSignatureS) { revert("ECDSA: invalid signature 's' value"); } else if (error == RecoverError.InvalidSignatureV) { revert("ECDSA: invalid signature 'v' value"); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature` or error string. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] * * _Available since v4.3._ */ function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) { // Check the signature length // - case 65: r,s,v signature (standard) // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._ if (signature.length == 65) { bytes32 r; bytes32 s; uint8 v; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } return tryRecover(hash, v, r, s); } else if (signature.length == 64) { bytes32 r; bytes32 vs; // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. assembly { r := mload(add(signature, 0x20)) vs := mload(add(signature, 0x40)) } return tryRecover(hash, r, vs); } else { return (address(0), RecoverError.InvalidSignatureLength); } } /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, signature); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately. * * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures] * * _Available since v4.3._ */ function tryRecover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address, RecoverError) { bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff); uint8 v = uint8((uint256(vs) >> 255) + 27); return tryRecover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately. * * _Available since v4.2._ */ function recover( bytes32 hash, bytes32 r, bytes32 vs ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, r, vs); _throwError(error); return recovered; } /** * @dev Overload of {ECDSA-tryRecover} that receives the `v`, * `r` and `s` signature fields separately. * * _Available since v4.3._ */ function tryRecover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address, RecoverError) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { return (address(0), RecoverError.InvalidSignatureS); } if (v != 27 && v != 28) { return (address(0), RecoverError.InvalidSignatureV); } // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); if (signer == address(0)) { return (address(0), RecoverError.InvalidSignature); } return (signer, RecoverError.NoError); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover( bytes32 hash, uint8 v, bytes32 r, bytes32 s ) internal pure returns (address) { (address recovered, RecoverError error) = tryRecover(hash, v, r, s); _throwError(error); return recovered; } /** * @dev Returns an Ethereum Signed Message, created from a `hash`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } /** * @dev Returns an Ethereum Signed Message, created from `s`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s)); } /** * @dev Returns an Ethereum Signed Typed Data, created from a * `domainSeparator` and a `structHash`. This produces hash corresponding * to the one signed with the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] * JSON-RPC method as part of EIP-712. * * See {recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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 Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
{ "optimizer": { "enabled": true, "runs": 800 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_oracleAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BridgePaused","type":"error"},{"inputs":[],"name":"CancellingDisabled","type":"error"},{"inputs":[],"name":"InvalidClaimNonce","type":"error"},{"inputs":[],"name":"InvalidClaimSignature","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"BridgedToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"oldBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBlock","type":"uint256"}],"name":"CancelClaim","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":"uint256","name":"oldBlock","type":"uint256"},{"internalType":"uint256","name":"newBlock","type":"uint256"}],"name":"cancelClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"oldBlock","type":"uint256"},{"internalType":"uint256","name":"newBlock","type":"uint256"}],"name":"cancelClaimAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancellable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"oldBlock","type":"uint256"},{"internalType":"uint256","name":"newBlock","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracleAddress","type":"address"}],"name":"setOracleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleCancellable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"togglePaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a0604052606460025534801561001557600080fd5b50604051620013fd380380620013fd833981016040819052610036916100cf565b61003f33610067565b6001600160a01b03918216608052600180546001600160a01b03191691909216179055610109565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100cc57600080fd5b50565b600080604083850312156100e257600080fd5b82516100ed816100b7565b60208401519092506100fe816100b7565b809150509250929050565b6080516112c36200013a6000396000818161022301528181610447015281816109710152610a3b01526112c36000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80638da5cb5b116100b2578063ae06c1b711610081578063d96073cf11610066578063d96073cf1461028b578063f2fde38b1461029e578063f3b1863f146102b157600080fd5b8063ae06c1b714610265578063cf5034601461027857600080fd5b80638da5cb5b146101f95780639d76ea581461021e578063a386203e14610245578063a89ae4ba1461025257600080fd5b80633ee22fcd116101095780635c975abb116100ee5780635c975abb146101c4578063715018a6146101e85780637fd6f15c146101f057600080fd5b80633ee22fcd1461017e5780634c69c00f146101b157600080fd5b806323b04b171461013b578063315a095d146101505780633349415f1461016357806336566f0614610176575b600080fd5b61014e6101493660046110a0565b6102b9565b005b61014e61015e3660046110d3565b6103d1565b61014e6101713660046110ec565b6104c0565b61014e610587565b61019e61018c36600461110e565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b61014e6101bf36600461110e565b61061d565b6001546101d890600160a01b900460ff1681565b60405190151581526020016101a8565b61014e6106a6565b61019e60025481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101a8565b6102067f000000000000000000000000000000000000000000000000000000000000000081565b6004546101d89060ff1681565b600154610206906001600160a01b031681565b61014e6102733660046110d3565b61070c565b61014e610286366004611130565b6107bd565b61014e6102993660046110ec565b6109ee565b61014e6102ac36600461110e565b610af6565b61014e610bd8565b6000546001600160a01b031633146103185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038316600090815260036020526040902054839083908390821415806103455750438210155b806103505750818111155b1561036e576040516372c025e160e01b815260040160405180910390fd5b6001600160a01b0386166000818152600360209081526040918290208790558151928352820187905281018590527fd2cc471e93d024a61d77a9ae46fe38596e6fb862874eb4a6e85c023a5d350b7d9060600160405180910390a1505050505050565b6000546001600160a01b0316331461042b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b60405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bc91906111cf565b5050565b60045460ff166104e357604051630f927b9360e41b815260040160405180910390fd5b3360008181526003602052604090205483908390821415806105055750438210155b806105105750818111155b1561052e576040516372c025e160e01b815260040160405180910390fd5b336000818152600360209081526040918290208790558151928352820187905281018590527fd2cc471e93d024a61d77a9ae46fe38596e6fb862874eb4a6e85c023a5d350b7d9060600160405180910390a15050505050565b6000546001600160a01b031633146105e15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b6000546001600160a01b031633146106775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b61070a6000610c46565b565b6000546001600160a01b031633146107665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b6127108111156107b85760405162461bcd60e51b815260206004820152600f60248201527f496e76616c69642050657263656e740000000000000000000000000000000000604482015260640161030f565b600255565b600154600160a01b900460ff16156107e85760405163a792dfa360e01b815260040160405180910390fd5b6001600160a01b038616600090815260036020526040902054869085908590821415806108155750438210155b806108205750818111155b1561083e576040516372c025e160e01b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608b901b16602082015260348101899052605481018890526074810187905260009060940160408051601f198184030181528282528051602091820120600154601f8a0183900483028501830190935288845293506001600160a01b03909116916108e19189908990819084018382808284376000920191909152506108db9250869150610ca39050565b90610cf6565b6001600160a01b03161461090857604051638964e19b60e01b815260040160405180910390fd5b6001600160a01b038a166000908152600360205260408120889055600254612710906109349082611207565b61093e908c61121e565b610948919061123d565b60405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af11580156109bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e091906111cf565b505050505050505050505050565b600154600160a01b900460ff1615610a195760405163a792dfa360e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab091906111cf565b5060408051338152602081018490529081018290527f294df2f8d130b42c9abe40aedd41fc384586d3132095700423d4666157a4d5439060600160405180910390a15050565b6000546001600160a01b03163314610b505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b6001600160a01b038116610bcc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161030f565b610bd581610c46565b50565b6000546001600160a01b03163314610c325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b6004805460ff19811660ff90911615179055565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6000806000610d058585610d1a565b91509150610d1281610d8a565b509392505050565b600080825160411415610d515760208301516040840151606085015160001a610d4587828585610f45565b94509450505050610d83565b825160401415610d7b5760208301516040840151610d70868383611032565b935093505050610d83565b506000905060025b9250929050565b6000816004811115610d9e57610d9e61125f565b1415610da75750565b6001816004811115610dbb57610dbb61125f565b1415610e095760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161030f565b6002816004811115610e1d57610e1d61125f565b1415610e6b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161030f565b6003816004811115610e7f57610e7f61125f565b1415610ed85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161030f565b6004816004811115610eec57610eec61125f565b1415610bd55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161030f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610f7c5750600090506003611029565b8460ff16601b14158015610f9457508460ff16601c14155b15610fa55750600090506004611029565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661102257600060019250925050611029565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168161106860ff86901c601b611275565b905061107687828885610f45565b935093505050935093915050565b80356001600160a01b038116811461109b57600080fd5b919050565b6000806000606084860312156110b557600080fd5b6110be84611084565b95602085013595506040909401359392505050565b6000602082840312156110e557600080fd5b5035919050565b600080604083850312156110ff57600080fd5b50508035926020909101359150565b60006020828403121561112057600080fd5b61112982611084565b9392505050565b60008060008060008060a0878903121561114957600080fd5b61115287611084565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff8082111561118457600080fd5b818901915089601f83011261119857600080fd5b8135818111156111a757600080fd5b8a60208285010111156111b957600080fd5b6020830194508093505050509295509295509295565b6000602082840312156111e157600080fd5b8151801515811461112957600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611219576112196111f1565b500390565b6000816000190483118215151615611238576112386111f1565b500290565b60008261125a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b60008219821115611288576112886111f1565b50019056fea2646970667358221220da91aaaeb24de4f902b7f40f037d159a0a7664a541387d2b3e684cefb7edd5e564736f6c634300080b0033000000000000000000000000638f24096ff33e047e05e59fabc76325207090dc000000000000000000000000ecd0a0ea653be5c1f9936c3bcf06c7045b820a63
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101365760003560e01c80638da5cb5b116100b2578063ae06c1b711610081578063d96073cf11610066578063d96073cf1461028b578063f2fde38b1461029e578063f3b1863f146102b157600080fd5b8063ae06c1b714610265578063cf5034601461027857600080fd5b80638da5cb5b146101f95780639d76ea581461021e578063a386203e14610245578063a89ae4ba1461025257600080fd5b80633ee22fcd116101095780635c975abb116100ee5780635c975abb146101c4578063715018a6146101e85780637fd6f15c146101f057600080fd5b80633ee22fcd1461017e5780634c69c00f146101b157600080fd5b806323b04b171461013b578063315a095d146101505780633349415f1461016357806336566f0614610176575b600080fd5b61014e6101493660046110a0565b6102b9565b005b61014e61015e3660046110d3565b6103d1565b61014e6101713660046110ec565b6104c0565b61014e610587565b61019e61018c36600461110e565b60036020526000908152604090205481565b6040519081526020015b60405180910390f35b61014e6101bf36600461110e565b61061d565b6001546101d890600160a01b900460ff1681565b60405190151581526020016101a8565b61014e6106a6565b61019e60025481565b6000546001600160a01b03165b6040516001600160a01b0390911681526020016101a8565b6102067f000000000000000000000000638f24096ff33e047e05e59fabc76325207090dc81565b6004546101d89060ff1681565b600154610206906001600160a01b031681565b61014e6102733660046110d3565b61070c565b61014e610286366004611130565b6107bd565b61014e6102993660046110ec565b6109ee565b61014e6102ac36600461110e565b610af6565b61014e610bd8565b6000546001600160a01b031633146103185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b038316600090815260036020526040902054839083908390821415806103455750438210155b806103505750818111155b1561036e576040516372c025e160e01b815260040160405180910390fd5b6001600160a01b0386166000818152600360209081526040918290208790558151928352820187905281018590527fd2cc471e93d024a61d77a9ae46fe38596e6fb862874eb4a6e85c023a5d350b7d9060600160405180910390a1505050505050565b6000546001600160a01b0316331461042b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b60405163a9059cbb60e01b8152336004820152602481018290527f000000000000000000000000638f24096ff33e047e05e59fabc76325207090dc6001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bc91906111cf565b5050565b60045460ff166104e357604051630f927b9360e41b815260040160405180910390fd5b3360008181526003602052604090205483908390821415806105055750438210155b806105105750818111155b1561052e576040516372c025e160e01b815260040160405180910390fd5b336000818152600360209081526040918290208790558151928352820187905281018590527fd2cc471e93d024a61d77a9ae46fe38596e6fb862874eb4a6e85c023a5d350b7d9060600160405180910390a15050505050565b6000546001600160a01b031633146105e15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8116600160a01b9182900460ff1615909102179055565b6000546001600160a01b031633146106775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146107005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b61070a6000610c46565b565b6000546001600160a01b031633146107665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b6127108111156107b85760405162461bcd60e51b815260206004820152600f60248201527f496e76616c69642050657263656e740000000000000000000000000000000000604482015260640161030f565b600255565b600154600160a01b900460ff16156107e85760405163a792dfa360e01b815260040160405180910390fd5b6001600160a01b038616600090815260036020526040902054869085908590821415806108155750438210155b806108205750818111155b1561083e576040516372c025e160e01b815260040160405180910390fd5b6040516bffffffffffffffffffffffff1960608b901b16602082015260348101899052605481018890526074810187905260009060940160408051601f198184030181528282528051602091820120600154601f8a0183900483028501830190935288845293506001600160a01b03909116916108e19189908990819084018382808284376000920191909152506108db9250869150610ca39050565b90610cf6565b6001600160a01b03161461090857604051638964e19b60e01b815260040160405180910390fd5b6001600160a01b038a166000908152600360205260408120889055600254612710906109349082611207565b61093e908c61121e565b610948919061123d565b60405163a9059cbb60e01b81526001600160a01b038d81166004830152602482018390529192507f000000000000000000000000638f24096ff33e047e05e59fabc76325207090dc9091169063a9059cbb906044016020604051808303816000875af11580156109bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e091906111cf565b505050505050505050505050565b600154600160a01b900460ff1615610a195760405163a792dfa360e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390527f000000000000000000000000638f24096ff33e047e05e59fabc76325207090dc6001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab091906111cf565b5060408051338152602081018490529081018290527f294df2f8d130b42c9abe40aedd41fc384586d3132095700423d4666157a4d5439060600160405180910390a15050565b6000546001600160a01b03163314610b505760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b6001600160a01b038116610bcc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161030f565b610bd581610c46565b50565b6000546001600160a01b03163314610c325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161030f565b6004805460ff19811660ff90911615179055565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6000806000610d058585610d1a565b91509150610d1281610d8a565b509392505050565b600080825160411415610d515760208301516040840151606085015160001a610d4587828585610f45565b94509450505050610d83565b825160401415610d7b5760208301516040840151610d70868383611032565b935093505050610d83565b506000905060025b9250929050565b6000816004811115610d9e57610d9e61125f565b1415610da75750565b6001816004811115610dbb57610dbb61125f565b1415610e095760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161030f565b6002816004811115610e1d57610e1d61125f565b1415610e6b5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161030f565b6003816004811115610e7f57610e7f61125f565b1415610ed85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161030f565b6004816004811115610eec57610eec61125f565b1415610bd55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161030f565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610f7c5750600090506003611029565b8460ff16601b14158015610f9457508460ff16601c14155b15610fa55750600090506004611029565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610ff9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661102257600060019250925050611029565b9150600090505b94509492505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83168161106860ff86901c601b611275565b905061107687828885610f45565b935093505050935093915050565b80356001600160a01b038116811461109b57600080fd5b919050565b6000806000606084860312156110b557600080fd5b6110be84611084565b95602085013595506040909401359392505050565b6000602082840312156110e557600080fd5b5035919050565b600080604083850312156110ff57600080fd5b50508035926020909101359150565b60006020828403121561112057600080fd5b61112982611084565b9392505050565b60008060008060008060a0878903121561114957600080fd5b61115287611084565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff8082111561118457600080fd5b818901915089601f83011261119857600080fd5b8135818111156111a757600080fd5b8a60208285010111156111b957600080fd5b6020830194508093505050509295509295509295565b6000602082840312156111e157600080fd5b8151801515811461112957600080fd5b634e487b7160e01b600052601160045260246000fd5b600082821015611219576112196111f1565b500390565b6000816000190483118215151615611238576112386111f1565b500290565b60008261125a57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b60008219821115611288576112886111f1565b50019056fea2646970667358221220da91aaaeb24de4f902b7f40f037d159a0a7664a541387d2b3e684cefb7edd5e564736f6c634300080b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000638f24096ff33e047e05e59fabc76325207090dc000000000000000000000000ecd0a0ea653be5c1f9936c3bcf06c7045b820a63
-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0x638F24096fF33e047E05E59fabc76325207090dc
Arg [1] : _oracleAddress (address): 0xEcd0A0eA653BE5c1F9936C3BcF06c7045b820A63
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000638f24096ff33e047e05e59fabc76325207090dc
Arg [1] : 000000000000000000000000ecd0a0ea653be5c1f9936c3bcf06c7045b820a63
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.