Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 483 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Atomic Match | 14962580 | 1350 days ago | IN | 0.77 ETH | 0.01113741 | ||||
| Atomic Match | 14962260 | 1350 days ago | IN | 0.0148 ETH | 0.00989352 | ||||
| Atomic Match | 14958649 | 1351 days ago | IN | 0.11 ETH | 0.02373228 | ||||
| Atomic Match | 14956334 | 1351 days ago | IN | 0.065 ETH | 0.01765106 | ||||
| Atomic Match | 14953363 | 1352 days ago | IN | 0.135 ETH | 0.02793831 | ||||
| Atomic Match | 14952476 | 1352 days ago | IN | 0.185 ETH | 0.00587037 | ||||
| Atomic Match | 14947814 | 1353 days ago | IN | 1.488 ETH | 0.01788984 | ||||
| Atomic Match | 14947773 | 1353 days ago | IN | 0.133 ETH | 0.01941309 | ||||
| Atomic Match | 14945121 | 1353 days ago | IN | 0.088 ETH | 0.01847789 | ||||
| Atomic Match | 14945043 | 1353 days ago | IN | 0.070725 ETH | 0.01473981 | ||||
| Atomic Match | 14944606 | 1353 days ago | IN | 0.85 ETH | 0.00571862 | ||||
| Atomic Match | 14941305 | 1354 days ago | IN | 0.097375 ETH | 0.01637152 | ||||
| Atomic Match | 14935049 | 1355 days ago | IN | 0.052 ETH | 0.02054825 | ||||
| Atomic Match | 14935041 | 1355 days ago | IN | 0.055 ETH | 0.00734415 | ||||
| Atomic Match | 14934041 | 1355 days ago | IN | 0.194 ETH | 0.02037885 | ||||
| Atomic Match | 14933973 | 1355 days ago | IN | 0.205 ETH | 0.04394498 | ||||
| Atomic Match | 14933951 | 1355 days ago | IN | 0.20377 ETH | 0.00993913 | ||||
| Atomic Match | 14933945 | 1355 days ago | IN | 0.19885 ETH | 0.02444636 | ||||
| Atomic Match | 14933939 | 1355 days ago | IN | 0.1968 ETH | 0.02594755 | ||||
| Atomic Match | 14933926 | 1355 days ago | IN | 0.160925 ETH | 0.01234667 | ||||
| Atomic Match | 14933918 | 1355 days ago | IN | 0.17425 ETH | 0.00748616 | ||||
| Atomic Match | 14933916 | 1355 days ago | IN | 0.1845 ETH | 0.0061452 | ||||
| Atomic Match | 14933915 | 1355 days ago | IN | 0.17425 ETH | 0.0057412 | ||||
| Atomic Match | 14933914 | 1355 days ago | IN | 0.17 ETH | 0.01587386 | ||||
| Atomic Match | 14933909 | 1355 days ago | IN | 0.189625 ETH | 0.01649767 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14962580 | 1350 days ago | 0.77 ETH | ||||
| - | 14962260 | 1350 days ago | 0.0148 ETH | ||||
| - | 14958649 | 1351 days ago | 0.11 ETH | ||||
| - | 14956334 | 1351 days ago | 0.065 ETH | ||||
| - | 14953363 | 1352 days ago | 0.135 ETH | ||||
| - | 14952476 | 1352 days ago | 0.185 ETH | ||||
| - | 14947814 | 1353 days ago | 1.488 ETH | ||||
| - | 14947773 | 1353 days ago | 0.133 ETH | ||||
| - | 14945121 | 1353 days ago | 0.088 ETH | ||||
| - | 14945043 | 1353 days ago | 0.001725 ETH | ||||
| - | 14945043 | 1353 days ago | 0.069 ETH | ||||
| - | 14944606 | 1353 days ago | 0.85 ETH | ||||
| - | 14941305 | 1354 days ago | 0.002375 ETH | ||||
| - | 14941305 | 1354 days ago | 0.095 ETH | ||||
| - | 14935049 | 1355 days ago | 0.052 ETH | ||||
| - | 14935041 | 1355 days ago | 0.055 ETH | ||||
| - | 14934041 | 1355 days ago | 0.194 ETH | ||||
| - | 14933973 | 1355 days ago | 0.005 ETH | ||||
| - | 14933973 | 1355 days ago | 0.2 ETH | ||||
| - | 14933951 | 1355 days ago | 0.1988 ETH | ||||
| - | 14933945 | 1355 days ago | 0.00485 ETH | ||||
| - | 14933945 | 1355 days ago | 0.194 ETH | ||||
| - | 14933939 | 1355 days ago | 0.0048 ETH | ||||
| - | 14933939 | 1355 days ago | 0.192 ETH | ||||
| - | 14933926 | 1355 days ago | 0.157 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TelescopeManual
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.10;
import "openzeppelin-contracts/contracts/access/Ownable.sol";
import "openzeppelin-contracts/contracts/security/ReentrancyGuard.sol";
import "openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol";
contract TelescopeManual is Ownable, ReentrancyGuard {
string public name = "sunspot.gg telescope (manual)";
address payable public feeArbiter;
address payable public wyvernExchange;
bool public enabled;
error Disabled();
error InvalidValue();
error InvalidSignature();
modifier isEnabled() {
if (!enabled) {
revert Disabled();
}
_;
}
modifier hasCorrectValue(
uint256 value,
uint256 feeValue,
uint256 wyvernExchangeValue
) {
if (value != feeValue + wyvernExchangeValue) {
revert InvalidValue();
}
_;
}
modifier hasFeeArbiterSignature(bytes32 hash, bytes memory signature) {
(address signingAddress, ) = ECDSA.tryRecover(hash, signature);
if (signingAddress != feeArbiter) {
revert InvalidSignature();
}
_;
}
constructor(address payable _feeArbiter, address payable _wyvernExchange) {
feeArbiter = _feeArbiter;
wyvernExchange = _wyvernExchange;
enabled = true;
}
function atomicMatchHash(
uint256 feeValue,
uint256 wyvernExchangeValue,
bytes memory wyvernExchangeData
) public pure returns (bytes32) {
return
keccak256(
abi.encodePacked(
feeValue,
wyvernExchangeValue,
wyvernExchangeData
)
);
}
function checkedCall(
address payable addr,
uint256 value,
bytes memory data
) internal {
(bool success, bytes memory returnData) = addr.call{value: value}(data);
if (!success) {
if (returnData.length == 0) revert();
assembly {
// forward error from call
revert(add(32, returnData), mload(returnData))
}
}
}
function atomicMatch(
uint256 feeValue,
uint256 wyvernExchangeValue,
bytes memory wyvernExchangeData,
bytes memory signature
)
external
payable
nonReentrant
isEnabled
hasCorrectValue(msg.value, feeValue, wyvernExchangeValue)
hasFeeArbiterSignature(
ECDSA.toEthSignedMessageHash(
atomicMatchHash(
feeValue,
wyvernExchangeValue,
wyvernExchangeData
)
),
signature
)
{
// execute trade
checkedCall(wyvernExchange, wyvernExchangeValue, wyvernExchangeData);
// transfer fee to feeArbiter
checkedCall(feeArbiter, feeValue, "");
}
function setFeeArbiter(address payable _feeArbiter) external onlyOwner {
feeArbiter = _feeArbiter;
}
function setEnabled(bool _enabled) external onlyOwner {
enabled = _enabled;
}
}// 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 v4.4.1 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// 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);
}
}// 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));
}
}{
"remappings": [
"ds-test/=lib/ds-test/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"src/=src/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"bytecodeHash": "ipfs"
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "london"
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address payable","name":"_feeArbiter","type":"address"},{"internalType":"address payable","name":"_wyvernExchange","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"Disabled","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[],"name":"InvalidValue","type":"error"},{"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":"feeValue","type":"uint256"},{"internalType":"uint256","name":"wyvernExchangeValue","type":"uint256"},{"internalType":"bytes","name":"wyvernExchangeData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"atomicMatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeValue","type":"uint256"},{"internalType":"uint256","name":"wyvernExchangeValue","type":"uint256"},{"internalType":"bytes","name":"wyvernExchangeData","type":"bytes"}],"name":"atomicMatchHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeArbiter","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_feeArbiter","type":"address"}],"name":"setFeeArbiter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wyvernExchange","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c0604052601d60808190527f73756e73706f742e67672074656c6573636f706520286d616e75616c2900000060a09081526200004091600291906200010f565b503480156200004e57600080fd5b5060405162000df138038062000df18339810160408190526200007191620001d2565b6200007c33620000bf565b60018055600380546001600160a01b039384166001600160a01b0319909116179055600480546001600160a81b0319169190921617600160a01b17905562000247565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200011d906200020a565b90600052602060002090601f0160209004810192826200014157600085556200018c565b82601f106200015c57805160ff19168380011785556200018c565b828001600101855582156200018c579182015b828111156200018c5782518255916020019190600101906200016f565b506200019a9291506200019e565b5090565b5b808211156200019a57600081556001016200019f565b80516001600160a01b0381168114620001cd57600080fd5b919050565b60008060408385031215620001e657600080fd5b620001f183620001b5565b91506200020160208401620001b5565b90509250929050565b600181811c908216806200021f57607f821691505b602082108114156200024157634e487b7160e01b600052602260045260246000fd5b50919050565b610b9a80620002576000396000f3fe60806040526004361061009c5760003560e01c8063715018a611610064578063715018a61461016d5780637740a7fd146101825780638da5cb5b14610195578063b82dbacb146101c7578063c9f0a2fa146101e7578063f2fde38b1461020757600080fd5b806306fdde03146100a1578063238dafe0146100cc578063328d8f72146100fd5780634ed5f9db1461011f5780636a085fc01461013f575b600080fd5b3480156100ad57600080fd5b506100b6610227565b6040516100c3919061088d565b60405180910390f35b3480156100d857600080fd5b506004546100ed90600160a01b900460ff1681565b60405190151581526020016100c3565b34801561010957600080fd5b5061011d6101183660046108c0565b6102b5565b005b34801561012b57600080fd5b5061011d61013a3660046108fe565b610306565b34801561014b57600080fd5b5061015f61015a3660046109be565b610352565b6040519081526020016100c3565b34801561017957600080fd5b5061011d610388565b61011d610190366004610a0e565b6103be565b3480156101a157600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016100c3565b3480156101d357600080fd5b506003546101af906001600160a01b031681565b3480156101f357600080fd5b506004546101af906001600160a01b031681565b34801561021357600080fd5b5061011d6102223660046108fe565b61055a565b6002805461023490610a85565b80601f016020809104026020016040519081016040528092919081815260200182805461026090610a85565b80156102ad5780601f10610282576101008083540402835291602001916102ad565b820191906000526020600020905b81548152906001019060200180831161029057829003601f168201915b505050505081565b6000546001600160a01b031633146102e85760405162461bcd60e51b81526004016102df90610ac0565b60405180910390fd5b60048054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146103305760405162461bcd60e51b81526004016102df90610ac0565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600083838360405160200161036993929190610af5565b6040516020818303038152906040528051906020012090509392505050565b6000546001600160a01b031633146103b25760405162461bcd60e51b81526004016102df90610ac0565b6103bc60006105f5565b565b600260015414156104115760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102df565b6002600155600454600160a01b900460ff1661044057604051633ac4266d60e11b815260040160405180910390fd5b34848461044d8183610b22565b831461046c57604051632a9ffab760e21b815260040160405180910390fd5b6104cd61047a888888610352565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b8460006104da8383610645565b506003549091506001600160a01b0380831691161461050c57604051638baa579f60e01b815260040160405180910390fd5b600454610523906001600160a01b03168a8a6106b5565b60035460408051602081019091526000815261054a916001600160a01b0316908c906106b5565b5050600180555050505050505050565b6000546001600160a01b031633146105845760405162461bcd60e51b81526004016102df90610ac0565b6001600160a01b0381166105e95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102df565b6105f2816105f5565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082516041141561067c5760208301516040840151606085015160001a61067087828585610737565b945094505050506106ae565b8251604014156106a6576020830151604084015161069b868383610824565b9350935050506106ae565b506000905060025b9250929050565b600080846001600160a01b031684846040516106d19190610b48565b60006040518083038185875af1925050503d806000811461070e576040519150601f19603f3d011682016040523d82523d6000602084013e610713565b606091505b50915091508161073057805161072857600080fd5b805181602001fd5b5050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561076e575060009050600361081b565b8460ff16601b1415801561078657508460ff16601c14155b15610797575060009050600461081b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156107eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166108145760006001925092505061081b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161084160ff86901c601b610b22565b905061084f87828885610737565b935093505050935093915050565b60005b83811015610878578181015183820152602001610860565b83811115610887576000848401525b50505050565b60208152600082518060208401526108ac81604085016020870161085d565b601f01601f19169190910160400192915050565b6000602082840312156108d257600080fd5b813580151581146108e257600080fd5b9392505050565b6001600160a01b03811681146105f257600080fd5b60006020828403121561091057600080fd5b81356108e2816108e9565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261094257600080fd5b813567ffffffffffffffff8082111561095d5761095d61091b565b604051601f8301601f19908116603f011681019082821181831017156109855761098561091b565b8160405283815286602085880101111561099e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156109d357600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156109f857600080fd5b610a0486828701610931565b9150509250925092565b60008060008060808587031215610a2457600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610a4a57600080fd5b610a5688838901610931565b93506060870135915080821115610a6c57600080fd5b50610a7987828801610931565b91505092959194509250565b600181811c90821680610a9957607f821691505b60208210811415610aba57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b83815282602082015260008251610b1381604085016020870161085d565b91909101604001949350505050565b60008219821115610b4357634e487b7160e01b600052601160045260246000fd5b500190565b60008251610b5a81846020870161085d565b919091019291505056fea26469706673582212207e003f7976f788c4221aa614040ed1c10ef557cdcd253d9bc83c3d181e681c0864736f6c634300080a0033000000000000000000000000edc74441fb21d34766e44ad6d19855d567caa7600000000000000000000000007f268357a8c2552623316e2562d90e642bb538e5
Deployed Bytecode
0x60806040526004361061009c5760003560e01c8063715018a611610064578063715018a61461016d5780637740a7fd146101825780638da5cb5b14610195578063b82dbacb146101c7578063c9f0a2fa146101e7578063f2fde38b1461020757600080fd5b806306fdde03146100a1578063238dafe0146100cc578063328d8f72146100fd5780634ed5f9db1461011f5780636a085fc01461013f575b600080fd5b3480156100ad57600080fd5b506100b6610227565b6040516100c3919061088d565b60405180910390f35b3480156100d857600080fd5b506004546100ed90600160a01b900460ff1681565b60405190151581526020016100c3565b34801561010957600080fd5b5061011d6101183660046108c0565b6102b5565b005b34801561012b57600080fd5b5061011d61013a3660046108fe565b610306565b34801561014b57600080fd5b5061015f61015a3660046109be565b610352565b6040519081526020016100c3565b34801561017957600080fd5b5061011d610388565b61011d610190366004610a0e565b6103be565b3480156101a157600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016100c3565b3480156101d357600080fd5b506003546101af906001600160a01b031681565b3480156101f357600080fd5b506004546101af906001600160a01b031681565b34801561021357600080fd5b5061011d6102223660046108fe565b61055a565b6002805461023490610a85565b80601f016020809104026020016040519081016040528092919081815260200182805461026090610a85565b80156102ad5780601f10610282576101008083540402835291602001916102ad565b820191906000526020600020905b81548152906001019060200180831161029057829003601f168201915b505050505081565b6000546001600160a01b031633146102e85760405162461bcd60e51b81526004016102df90610ac0565b60405180910390fd5b60048054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146103305760405162461bcd60e51b81526004016102df90610ac0565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600083838360405160200161036993929190610af5565b6040516020818303038152906040528051906020012090509392505050565b6000546001600160a01b031633146103b25760405162461bcd60e51b81526004016102df90610ac0565b6103bc60006105f5565b565b600260015414156104115760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102df565b6002600155600454600160a01b900460ff1661044057604051633ac4266d60e11b815260040160405180910390fd5b34848461044d8183610b22565b831461046c57604051632a9ffab760e21b815260040160405180910390fd5b6104cd61047a888888610352565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b8460006104da8383610645565b506003549091506001600160a01b0380831691161461050c57604051638baa579f60e01b815260040160405180910390fd5b600454610523906001600160a01b03168a8a6106b5565b60035460408051602081019091526000815261054a916001600160a01b0316908c906106b5565b5050600180555050505050505050565b6000546001600160a01b031633146105845760405162461bcd60e51b81526004016102df90610ac0565b6001600160a01b0381166105e95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102df565b6105f2816105f5565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008082516041141561067c5760208301516040840151606085015160001a61067087828585610737565b945094505050506106ae565b8251604014156106a6576020830151604084015161069b868383610824565b9350935050506106ae565b506000905060025b9250929050565b600080846001600160a01b031684846040516106d19190610b48565b60006040518083038185875af1925050503d806000811461070e576040519150601f19603f3d011682016040523d82523d6000602084013e610713565b606091505b50915091508161073057805161072857600080fd5b805181602001fd5b5050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561076e575060009050600361081b565b8460ff16601b1415801561078657508460ff16601c14155b15610797575060009050600461081b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156107eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166108145760006001925092505061081b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161084160ff86901c601b610b22565b905061084f87828885610737565b935093505050935093915050565b60005b83811015610878578181015183820152602001610860565b83811115610887576000848401525b50505050565b60208152600082518060208401526108ac81604085016020870161085d565b601f01601f19169190910160400192915050565b6000602082840312156108d257600080fd5b813580151581146108e257600080fd5b9392505050565b6001600160a01b03811681146105f257600080fd5b60006020828403121561091057600080fd5b81356108e2816108e9565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261094257600080fd5b813567ffffffffffffffff8082111561095d5761095d61091b565b604051601f8301601f19908116603f011681019082821181831017156109855761098561091b565b8160405283815286602085880101111561099e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156109d357600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156109f857600080fd5b610a0486828701610931565b9150509250925092565b60008060008060808587031215610a2457600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610a4a57600080fd5b610a5688838901610931565b93506060870135915080821115610a6c57600080fd5b50610a7987828801610931565b91505092959194509250565b600181811c90821680610a9957607f821691505b60208210811415610aba57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b83815282602082015260008251610b1381604085016020870161085d565b91909101604001949350505050565b60008219821115610b4357634e487b7160e01b600052601160045260246000fd5b500190565b60008251610b5a81846020870161085d565b919091019291505056fea26469706673582212207e003f7976f788c4221aa614040ed1c10ef557cdcd253d9bc83c3d181e681c0864736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000edc74441fb21d34766e44ad6d19855d567caa7600000000000000000000000007f268357a8c2552623316e2562d90e642bb538e5
-----Decoded View---------------
Arg [0] : _feeArbiter (address): 0xeDC74441FB21D34766e44aD6D19855D567caa760
Arg [1] : _wyvernExchange (address): 0x7f268357A8c2552623316e2562D90e642bB538E5
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000edc74441fb21d34766e44ad6d19855d567caa760
Arg [1] : 0000000000000000000000007f268357a8c2552623316e2562d90e642bb538e5
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.