ETH Price: $3,055.60 (-7.62%)
Gas: 5.74 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Make Direct Offe...215111282024-12-29 22:30:5928 days ago1735511459IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000495656.97777396
Make Direct Offe...215011342024-12-28 13:02:5929 days ago1735390979IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000348474.90500198
Accept Direct Of...214963652024-12-27 21:04:2330 days ago1735333463IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.00027255.52771062
Make Direct Offe...214962872024-12-27 20:48:4730 days ago1735332527IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000470636.62442848
Make Direct Offe...214480492024-12-21 2:57:3537 days ago1734749855IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000599098.43546974
Accept Direct Of...214356742024-12-19 9:28:3539 days ago1734600515IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.0005186310.5204487
Make Direct Offe...214356552024-12-19 9:24:4739 days ago1734600287IN
0x96bd20f3...ae7e972Db
0.002 ETH0.0007811410.99507584
Make Direct Offe...214332622024-12-19 1:22:2339 days ago1734571343IN
0x96bd20f3...ae7e972Db
0.002 ETH0.0007107210.00385514
Make Direct Offe...214331712024-12-19 1:04:1139 days ago1734570251IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000807511.36990282
Make Global Offe...207496332024-09-14 15:06:47134 days ago1726326407IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.00023843.40177905
Accept Direct Of...207457392024-09-14 2:01:59135 days ago1726279319IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.00010852.20212178
Make Direct Offe...207442292024-09-13 20:58:35135 days ago1726261115IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000532037.49117952
Accept Direct Of...206960372024-09-07 3:29:35142 days ago1725679775IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.000083781.69955277
Make Direct Offe...206957142024-09-07 2:24:59142 days ago1725675899IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000085251.2
Accept Direct Of...206817792024-09-05 3:44:23144 days ago1725507863IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.000295786
Make Direct Offe...206817092024-09-05 3:30:23144 days ago1725507023IN
0x96bd20f3...ae7e972Db
0.002 ETH0.00063949
Accept Direct Of...206679882024-09-03 5:33:47146 days ago1725341627IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.000060441.22632098
Accept Direct Of...206679842024-09-03 5:32:59146 days ago1725341579IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.000053641.08810925
Make Direct Offe...206679642024-09-03 5:28:59146 days ago1725341339IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000048750.68632409
Make Direct Offe...206679552024-09-03 5:27:11146 days ago1725341231IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000047510.66889009
Accept Direct Of...206606322024-09-02 4:55:47147 days ago1725252947IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.00005351.08534758
Make Direct Offe...206606142024-09-02 4:52:11147 days ago1725252731IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000048980.68954068
Make Global Offe...206457262024-08-31 3:00:23149 days ago1725073223IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.000088791.2668563
Accept Direct Of...206330212024-08-29 8:23:11151 days ago1724919791IN
0x96bd20f3...ae7e972Db
0.0025 ETH0.000056471.1458248
Make Direct Offe...206329202024-08-29 8:02:47151 days ago1724918567IN
0x96bd20f3...ae7e972Db
0.002 ETH0.000097171.36778711
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
215111282024-12-29 22:30:5928 days ago1735511459
0x96bd20f3...ae7e972Db
0.002 ETH
215011342024-12-28 13:02:5929 days ago1735390979
0x96bd20f3...ae7e972Db
0.002 ETH
214963652024-12-27 21:04:2330 days ago1735333463
0x96bd20f3...ae7e972Db
0.0025 ETH
214962872024-12-27 20:48:4730 days ago1735332527
0x96bd20f3...ae7e972Db
0.002 ETH
214480492024-12-21 2:57:3537 days ago1734749855
0x96bd20f3...ae7e972Db
0.002 ETH
214356742024-12-19 9:28:3539 days ago1734600515
0x96bd20f3...ae7e972Db
0.0025 ETH
214356552024-12-19 9:24:4739 days ago1734600287
0x96bd20f3...ae7e972Db
0.002 ETH
214332622024-12-19 1:22:2339 days ago1734571343
0x96bd20f3...ae7e972Db
0.002 ETH
214331712024-12-19 1:04:1139 days ago1734570251
0x96bd20f3...ae7e972Db
0.002 ETH
207496332024-09-14 15:06:47134 days ago1726326407
0x96bd20f3...ae7e972Db
0.0025 ETH
207457392024-09-14 2:01:59135 days ago1726279319
0x96bd20f3...ae7e972Db
0.0025 ETH
207442292024-09-13 20:58:35135 days ago1726261115
0x96bd20f3...ae7e972Db
0.002 ETH
206960372024-09-07 3:29:35142 days ago1725679775
0x96bd20f3...ae7e972Db
0.0025 ETH
206957142024-09-07 2:24:59142 days ago1725675899
0x96bd20f3...ae7e972Db
0.002 ETH
206817792024-09-05 3:44:23144 days ago1725507863
0x96bd20f3...ae7e972Db
0.0025 ETH
206817092024-09-05 3:30:23144 days ago1725507023
0x96bd20f3...ae7e972Db
0.002 ETH
206679882024-09-03 5:33:47146 days ago1725341627
0x96bd20f3...ae7e972Db
0.0025 ETH
206679842024-09-03 5:32:59146 days ago1725341579
0x96bd20f3...ae7e972Db
0.0025 ETH
206679642024-09-03 5:28:59146 days ago1725341339
0x96bd20f3...ae7e972Db
0.002 ETH
206679552024-09-03 5:27:11146 days ago1725341231
0x96bd20f3...ae7e972Db
0.002 ETH
206606322024-09-02 4:55:47147 days ago1725252947
0x96bd20f3...ae7e972Db
0.0025 ETH
206606142024-09-02 4:52:11147 days ago1725252731
0x96bd20f3...ae7e972Db
0.002 ETH
206457262024-08-31 3:00:23149 days ago1725073223
0x96bd20f3...ae7e972Db
0.0025 ETH
206330212024-08-29 8:23:11151 days ago1724919791
0x96bd20f3...ae7e972Db
0.0025 ETH
206329202024-08-29 8:02:47151 days ago1724918567
0x96bd20f3...ae7e972Db
0.002 ETH
View All Internal Transactions
Loading...
Loading

Minimal Proxy Contract for 0x0000b77fb305b97d405dd7a25759d3f4a0b3b3f9

Contract Name:
NewDawnPaymentForwarder

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : NewDawnPaymentForwarder.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

/**
 * @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 // Deprecated in v4.8
    }

    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");
        }
    }

    /**
     * @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) {
        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.
            /// @solidity memory-safe-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 {
            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 `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 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 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));
    }
}

contract NewDawnPaymentForwarder {

    mapping(bytes32 => bool) public verifiedOffer;
    mapping(address => uint) userNonce;
    
    address public admin;
    address payable public treasury;
    bool public tradingToggle;
    bool initialized;

    uint internal _directOfferPrice;
    uint internal _directAcceptancePrice;
    uint internal _globalOfferPrice;
    uint internal _globalAcceptancePrice;

    event NewAdmin(address oldAdmin, address newAdmin);
    event NewTreasury(address oldTreasury, address newTreasury);
    event UpdatedTradingStatus(bool status);
    event PriceChange(string indexed _type, uint newPrice);
    event NewNonce(address indexed user, uint nonce);
    event DirectOffer(uint indexed txnId, address indexed to, address indexed from_poster);
    event DirectOfferAcceptance(uint indexed txnId, address indexed to_accepter, address indexed from);
    event GlobalOffer(uint indexed txnId, address indexed from_poster);
    event GlobalOfferAcceptance(uint indexed txnId, address indexed from, address indexed caller);

    modifier onlyAdmin {
        require(msg.sender == admin, "Only Admin");
        _;
    }

    // requires `tradingToggle` to be true
    modifier tradingEnabled {
        require(tradingToggle, "Trading is disabled");
        _;
    }

    function initialize(
        address payable treasuryAddress,
        address _admin,
        uint directOfferPriceInWei,
        uint directAcceptancePriceInWei,
        uint globalOfferPriceInWei,
        uint globalAcceptancePriceInWei
    ) external {
        require(!initialized, "Already initialized");
        admin = _admin;
        require(treasuryAddress != address(0), "treasury cannot be set to zero");
        treasury = treasuryAddress;
        initialized = true;
        _setAllPrices(directOfferPriceInWei, directAcceptancePriceInWei, globalOfferPriceInWei, globalAcceptancePriceInWei);
    }

    function makeDirectOffer(uint txnId, uint nftId, address to, bytes calldata sig) external payable tradingEnabled {
        bytes32 ethSignedMsgHash = getHashDirect(txnId, nftId, to, msg.sender);
        require(ECDSA.recover(ethSignedMsgHash, sig) == msg.sender, "Signer not transaction sender");
        require(msg.value == _directOfferPrice, "Invalid Eth Amount");
        verifiedOffer[ethSignedMsgHash] = true;
        emit DirectOffer(txnId, to, msg.sender);
        _transferMsgValueToTreasury();
    }

    function acceptDirectOffer(uint txnId, uint nftId, address from, bytes calldata sig) external payable tradingEnabled {
        bytes32 ethSignedMsgHash = getHashDirect(txnId, nftId, msg.sender, from);
        require(ECDSA.recover(ethSignedMsgHash, sig) == from, "Signer is not the from address");
        require(verifiedOffer[ethSignedMsgHash], "Offer not verified!");
        require(msg.value == _directAcceptancePrice, "Invalid Eth Amount");
        verifiedOffer[ethSignedMsgHash] = false;
        emit DirectOfferAcceptance(txnId, msg.sender, from);
        _transferMsgValueToTreasury();
    }

    function makeGlobalOffer(uint txnId, uint nftId, bytes calldata sig) external payable tradingEnabled {
        bytes32 ethSignedMsgHash = getHashGlobal(txnId, nftId, msg.sender);
        require(ECDSA.recover(ethSignedMsgHash, sig) == msg.sender, "Invalid signature!");
        require(msg.value == _globalOfferPrice, "Invalid Eth Amount");
        verifiedOffer[ethSignedMsgHash] = true;
        emit GlobalOffer(txnId, msg.sender);
        _transferMsgValueToTreasury();
    }

    function acceptGlobalOffer(uint txnId, uint nftId, address from, bytes calldata sig) external payable tradingEnabled {
        bytes32 ethSignedMsgHash = getHashGlobal(txnId, nftId, from);
        require(ECDSA.recover(ethSignedMsgHash, sig) == from, "Signer is not the from address");
        require(verifiedOffer[ethSignedMsgHash], "Offer not verified!");
        require(msg.value == _globalAcceptancePrice, "Invalid Eth Amount");
        verifiedOffer[ethSignedMsgHash] = false;
        emit GlobalOfferAcceptance(txnId, from, msg.sender);
        _transferMsgValueToTreasury();
    }

    function cancelOffer(bytes32 ethSignedMsgHash, bytes calldata signature) external {
        require(ECDSA.recover(ethSignedMsgHash, signature) == msg.sender, "Signer is not the from address");
        verifiedOffer[ethSignedMsgHash] = false;
    }

    function cancelAllActiveOfferes() external {
        emit NewNonce(msg.sender, ++userNonce[msg.sender]);
    }

    // ADMIN FUNCTIONS
    
    function changeAdmin(address newAdmin) external onlyAdmin {
        require(newAdmin != address(0), "Admin cannot be set to zero");
        address oldAdmin = admin;
        admin = newAdmin;
        emit NewAdmin(oldAdmin, newAdmin);
    }

    function setTreasuryAddress(address payable newAddress) external onlyAdmin {
        require(newAddress != address(0), "Treasury cannot be set to zero");
        address oldTreasury = treasury;
        treasury = newAddress;
        emit NewTreasury(oldTreasury, newAddress);
    }

    // switch for trading toggle
    function toggleTrading() external onlyAdmin {
        tradingToggle = !tradingToggle;
        emit UpdatedTradingStatus(tradingToggle);
    }

    function changeDirectOfferPrice(uint priceInWei) external onlyAdmin {
        _directOfferPrice = priceInWei;
        emit PriceChange("Direct Offer", priceInWei);
    }

    function changeDirectAcceptancePrice(uint priceInWei) external onlyAdmin {
        _directAcceptancePrice = priceInWei;
        emit PriceChange("Direct Acceptance", priceInWei);
    }

    function changeGlobalOfferPrice(uint priceInWei) external onlyAdmin {
        _globalOfferPrice = priceInWei;
        emit PriceChange("Global Offer", priceInWei);
    }

    function changeGlobalAcceptancePrice(uint priceInWei) external onlyAdmin {
        _globalAcceptancePrice = priceInWei;
        emit PriceChange("Global Acceptance", priceInWei);
    }

    function changeAllPrices(
        uint directOfferPriceInWei,
        uint directAcceptancePriceInWei,
        uint globalOfferPriceInWei,
        uint globalAcceptancePriceInWei
    ) external onlyAdmin {
        _setAllPrices(directOfferPriceInWei, directAcceptancePriceInWei, globalOfferPriceInWei, globalAcceptancePriceInWei);
        emit PriceChange("Direct Offer", directOfferPriceInWei);
        emit PriceChange("Direct Acceptance", directAcceptancePriceInWei);
        emit PriceChange("Global Offer", globalOfferPriceInWei);
        emit PriceChange("Global Acceptance", globalAcceptancePriceInWei);
    }

    
    // GETTERS
    /*
     * @dev returns all price values
     */
    function returnPrices() external view returns(uint directOffer, uint directAcceptance, uint globalOffer, uint globalAcceptance) {
        directOffer = _directOfferPrice;
        directAcceptance = _directAcceptancePrice;
        globalOffer = _globalOfferPrice;
        globalAcceptance = _globalAcceptancePrice;
    }

    // PRIVATE FUNCTIONS

    function _transferMsgValueToTreasury() private {
        (bool success, ) = treasury.call{value: msg.value, gas: 3000}("");
        require(success, "Transfer to treasury failed");
    }

    function getHashDirect(uint txnId, uint nftId, address to, address signer) private view returns(bytes32) {
        return ECDSA.toEthSignedMessageHash(keccak256(abi.encodePacked(txnId, nftId, to, userNonce[signer])));
    }

    function getHashGlobal(uint txnId, uint nftId, address signer) private view returns(bytes32) {
        return ECDSA.toEthSignedMessageHash(keccak256(abi.encodePacked(txnId, nftId, userNonce[signer])));
    }

    function _setAllPrices(
        uint directOfferPriceInWei,
        uint directAcceptancePriceInWei,
        uint globalOfferPriceInWei,
        uint globalAcceptancePriceInWei
    ) private {
        _directOfferPrice = directOfferPriceInWei;
        _directAcceptancePrice = directAcceptancePriceInWei;
        _globalOfferPrice = globalOfferPriceInWei;
        _globalAcceptancePrice = globalAcceptancePriceInWei;
    }

    // UTILS
    function getMsgDirect(uint txnId, uint nftId, address to, address signer) external view returns(bytes32) {
        return keccak256(abi.encodePacked(txnId, nftId, to, userNonce[signer]));
    }

    function getMsgGlobal(uint txnId, uint nftId, address signer) external view returns(bytes32) {
        return keccak256(abi.encodePacked(txnId, nftId, userNonce[signer]));
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "evmVersion": "london",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txnId","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"from_poster","type":"address"}],"name":"DirectOffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txnId","type":"uint256"},{"indexed":true,"internalType":"address","name":"to_accepter","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"}],"name":"DirectOfferAcceptance","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txnId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from_poster","type":"address"}],"name":"GlobalOffer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"txnId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"caller","type":"address"}],"name":"GlobalOfferAcceptance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"NewNonce","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTreasury","type":"address"},{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"NewTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"_type","type":"string"},{"indexed":false,"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"PriceChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdatedTradingStatus","type":"event"},{"inputs":[{"internalType":"uint256","name":"txnId","type":"uint256"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"acceptDirectOffer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txnId","type":"uint256"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"address","name":"from","type":"address"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"acceptGlobalOffer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelAllActiveOfferes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"ethSignedMsgHash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"cancelOffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"directOfferPriceInWei","type":"uint256"},{"internalType":"uint256","name":"directAcceptancePriceInWei","type":"uint256"},{"internalType":"uint256","name":"globalOfferPriceInWei","type":"uint256"},{"internalType":"uint256","name":"globalAcceptancePriceInWei","type":"uint256"}],"name":"changeAllPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceInWei","type":"uint256"}],"name":"changeDirectAcceptancePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceInWei","type":"uint256"}],"name":"changeDirectOfferPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceInWei","type":"uint256"}],"name":"changeGlobalAcceptancePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceInWei","type":"uint256"}],"name":"changeGlobalOfferPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txnId","type":"uint256"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"signer","type":"address"}],"name":"getMsgDirect","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"txnId","type":"uint256"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"address","name":"signer","type":"address"}],"name":"getMsgGlobal","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"treasuryAddress","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"uint256","name":"directOfferPriceInWei","type":"uint256"},{"internalType":"uint256","name":"directAcceptancePriceInWei","type":"uint256"},{"internalType":"uint256","name":"globalOfferPriceInWei","type":"uint256"},{"internalType":"uint256","name":"globalAcceptancePriceInWei","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txnId","type":"uint256"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"makeDirectOffer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txnId","type":"uint256"},{"internalType":"uint256","name":"nftId","type":"uint256"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"makeGlobalOffer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"returnPrices","outputs":[{"internalType":"uint256","name":"directOffer","type":"uint256"},{"internalType":"uint256","name":"directAcceptance","type":"uint256"},{"internalType":"uint256","name":"globalOffer","type":"uint256"},{"internalType":"uint256","name":"globalAcceptance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"newAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tradingToggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"verifiedOffer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.