ETH Price: $3,320.41 (+0.36%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...215702692025-01-07 4:41:232 days ago1736224883IN
Fake_Phishing297955
0 ETH0.000258035.60809757
Summon158368252022-10-27 3:48:35805 days ago1666842515IN
Fake_Phishing297955
0 ETH0.000724598
Summon156999612022-10-08 1:02:59824 days ago1665190979IN
Fake_Phishing297955
0 ETH0.000623915.79718939
Summon156999412022-10-08 0:58:59824 days ago1665190739IN
Fake_Phishing297955
0 ETH0.00056965.37408447
Summon156999312022-10-08 0:56:59824 days ago1665190619IN
Fake_Phishing297955
0 ETH0.000623215.79003435
Summon156999242022-10-08 0:55:35824 days ago1665190535IN
Fake_Phishing297955
0 ETH0.000706986.56911759
Summon156999182022-10-08 0:54:23824 days ago1665190463IN
Fake_Phishing297955
0 ETH0.000562956.2181284
Summon156999102022-10-08 0:52:47824 days ago1665190367IN
Fake_Phishing297955
0 ETH0.000590986.52627817
Summon156999002022-10-08 0:50:47824 days ago1665190247IN
Fake_Phishing297955
0 ETH0.000580295.38958672
Summon156972642022-10-07 15:59:35824 days ago1665158375IN
Fake_Phishing297955
0 ETH0.002164720.09752361
Set Approval For...156945302022-10-07 6:47:35825 days ago1665125255IN
Fake_Phishing297955
0 ETH0.000347447.55130581
Summon156916902022-10-06 21:17:23825 days ago1665091043IN
Fake_Phishing297955
0 ETH0.0010805610.0362571
Summon156916802022-10-06 21:15:23825 days ago1665090923IN
Fake_Phishing297955
0 ETH0.0011706410.87253192
Summon156915312022-10-06 20:45:23825 days ago1665089123IN
Fake_Phishing297955
0 ETH0.0012008611.15444998
Summon156914792022-10-06 20:34:59825 days ago1665088499IN
Fake_Phishing297955
0 ETH0.001825816.96250356
Summon156913972022-10-06 20:18:35825 days ago1665087515IN
Fake_Phishing297955
0 ETH0.0018651617.32358507
Summon156913652022-10-06 20:11:59825 days ago1665087119IN
Fake_Phishing297955
0 ETH0.0011655412.8661185
Summon156913472022-10-06 20:08:23825 days ago1665086903IN
Fake_Phishing297955
0 ETH0.001487813.82029176
Summon156913342022-10-06 20:05:47825 days ago1665086747IN
Fake_Phishing297955
0 ETH0.0016665915.47904168
Summon156909892022-10-06 18:56:47825 days ago1665082607IN
Fake_Phishing297955
0 ETH0.0017063715.84995428
Summon156909522022-10-06 18:49:11825 days ago1665082151IN
Fake_Phishing297955
0 ETH0.0016224215.07832505
Summon156909322022-10-06 18:45:11825 days ago1665081911IN
Fake_Phishing297955
0 ETH0.0014848316.39681884
Summon156907252022-10-06 18:03:35825 days ago1665079415IN
Fake_Phishing297955
0 ETH0.0013686412.71079554
Summon156906302022-10-06 17:44:35825 days ago1665078275IN
Fake_Phishing297955
0 ETH0.0014809116.35359671
Summon156906222022-10-06 17:42:59825 days ago1665078179IN
Fake_Phishing297955
0 ETH0.0015652114.5435895
View all transactions

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CreaturaeArmy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : CreaturaeArmy.sol
// contracts/CreaturaeArmy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "solmate/src/tokens/ERC721.sol";
import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
import "./external/IPFS.sol";

contract CreaturaeArmy is ERC721 {
    // Army's General
    address payable public general;

    // General location
    string generalLocation;
    
    // The great signature of the spell book
    bytes32 public immutable spellBookSignature;

    // A spell to set location in stone
    event PermanentURI(string _value, uint256 indexed _id);

    // Fees to summon
    uint256[2] summonFees = [
        0 ether, // Conscript
        0.25 ether  // Mercenary
    ];

    // The Creator blessed the Creatures from the underworuld and assigned a
    // fearless General to lead the great war.
    constructor(bytes32 _signature, address _general, string memory _generalLocation) ERC721("CreaturaeArmy", "ARMY") {
        // The Creator added signature to the Book of Spells.
        spellBookSignature = _signature;

        // General of the Army has been summoned by the Creator.
        general = payable(msg.sender);
        generalLocation = _generalLocation;
        _mint(_general, 0);

        // General is the only one and cannot be changed.
        emit PermanentURI(generalLocation, 0);
    }

    // Raise my child from the ashes
    function summon(
        uint256 tokenId,
        uint8 rankIndex,
        address to,
        bytes32[] calldata spell
    ) external payable {
        require(rankIndex == 0 || rankIndex == 1, "CreaturaeArmy#summon: Unknown recruit");
        require(msg.value >= summonFees[rankIndex], "CreaturaeArmy#summon: Pay More");
        require(
            MerkleProof.verify(
                spell,
                spellBookSignature,
                keccak256(abi.encodePacked(tokenId, rankIndex))
            )
        , "CreaturaeArmy#summon: Invalid spell");

        // it is happening, behold the new Soldier of the realm
        // infinitely summoned to the world of people
        _mint(to, tokenId);
        emit PermanentURI(string(abi.encodePacked("ipfs://", IPFS.encode(tokenId))), tokenId);
    }
    
    // Ah the location of our Soldiers is permanent and well known
    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        // Only General has a unique location.
        if(tokenId == 0) {
            return generalLocation;
        }

        // The entire army resides on the battlefield.
        return string(abi.encodePacked("ipfs://", IPFS.encode(tokenId)));
    }

    function reap(address payable to) external {
        require(msg.sender == general);

        uint amount = address(this).balance;
        require(amount > 0);

        (bool success, ) = to.call{value: amount}("");
        require(success);
    }
}

File 2 of 4 : IPFS.sol
// File: contracts/external/IPFS.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;

/// @title IPFS
/// @author Brecht Devos - <[email protected]>
library IPFS
{
    bytes constant ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';

    // Encodes the 32 byte data as an IPFS v0 CID
    function encode(uint256 data)
        internal
        pure
        returns (string memory)
    {
        // We'll be always be encoding 34 bytes
        bytes memory out = new bytes(46);

        // Copy alphabet to memory
        bytes memory alphabet = ALPHABET;

        // We have to encode 0x1220data, which is 34 bytes and doesn't fit in a single uint256.
        // Keep the first 32 bytes in the uint, but do the encoding as if 0x1220 was part of the data value.
        // 0 = (0x12200000000000000000000000000000000000000000000000000000000000000000) % 58
        out[45] = alphabet[data % 58];
        data /= 58;
        // 4 = (0x12200000000000000000000000000000000000000000000000000000000000000000 / 58) % 58
        data += 4;
        out[44] = alphabet[data % 58];
        data /= 58;
        // 40 = (0x12200000000000000000000000000000000000000000000000000000000000000000 / 58 / 58) % 58
        data += 40;
        out[43] = alphabet[data % 58];
        data /= 58;

        // Add the top bytes now there is anough space in the uint256
        // This constant is 0x12200000000000000000000000000000000000000000000000000000000000000000 / 58 / 58 / 58
        data += 2753676319555676466672318311740497214108679778017611511045364661305900823779;

        // The rest is just simple base58 encoding
        for (uint i = 3; i < 46; i++) {
            out[45 - i] = alphabet[data % 58];
            data /= 58;
        }

        return string(out);
    }
}

File 3 of 4 : ERC721.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*//////////////////////////////////////////////////////////////
                         METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    function tokenURI(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                      ERC721 BALANCE/OWNER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256) internal _balanceOf;

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        require((owner = _ownerOf[id]) != address(0), "NOT_MINTED");
    }

    function balanceOf(address owner) public view virtual returns (uint256) {
        require(owner != address(0), "ZERO_ADDRESS");

        return _balanceOf[owner];
    }

    /*//////////////////////////////////////////////////////////////
                         ERC721 APPROVAL STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*//////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 id) public virtual {
        address owner = _ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == _ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            _balanceOf[from]--;

            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(_ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = _ownerOf[id];

        require(owner != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            _balanceOf[owner]--;
        }

        delete _ownerOf[id];

        delete getApproved[id];

        emit Transfer(owner, address(0), id);
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL SAFE MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _safeMint(
        address to,
        uint256 id,
        bytes memory data
    ) internal virtual {
        _mint(to, id);

        require(
            to.code.length == 0 ||
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
                ERC721TokenReceiver.onERC721Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721TokenReceiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721TokenReceiver.onERC721Received.selector;
    }
}

File 4 of 4 : MerkleProof.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/MerkleProof.sol)

pragma solidity ^0.8.0;

/**
 * @dev These functions deal with verification of Merkle Tree proofs.
 *
 * The proofs can be generated using the JavaScript library
 * https://github.com/miguelmota/merkletreejs[merkletreejs].
 * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled.
 *
 * See `test/utils/cryptography/MerkleProof.test.js` for some examples.
 *
 * WARNING: You should avoid using leaf values that are 64 bytes long prior to
 * hashing, or use a hash function other than keccak256 for hashing leaves.
 * This is because the concatenation of a sorted pair of internal nodes in
 * the merkle tree could be reinterpreted as a leaf value.
 */
library MerkleProof {
    /**
     * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree
     * defined by `root`. For this, a `proof` must be provided, containing
     * sibling hashes on the branch from the leaf to the root of the tree. Each
     * pair of leaves and each pair of pre-images are assumed to be sorted.
     */
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    /**
     * @dev Calldata version of {verify}
     *
     * _Available since v4.7._
     */
    function verifyCalldata(
        bytes32[] calldata proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProofCalldata(proof, leaf) == root;
    }

    /**
     * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up
     * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt
     * hash matches the root of the tree. When processing the proof, the pairs
     * of leafs & pre-images are assumed to be sorted.
     *
     * _Available since v4.4._
     */
    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            computedHash = _hashPair(computedHash, proof[i]);
        }
        return computedHash;
    }

    /**
     * @dev Calldata version of {processProof}
     *
     * _Available since v4.7._
     */
    function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            computedHash = _hashPair(computedHash, proof[i]);
        }
        return computedHash;
    }

    /**
     * @dev Returns true if the `leaves` can be proved to be a part of a Merkle tree defined by
     * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}.
     *
     * _Available since v4.7._
     */
    function multiProofVerify(
        bytes32[] memory proof,
        bool[] memory proofFlags,
        bytes32 root,
        bytes32[] memory leaves
    ) internal pure returns (bool) {
        return processMultiProof(proof, proofFlags, leaves) == root;
    }

    /**
     * @dev Calldata version of {multiProofVerify}
     *
     * _Available since v4.7._
     */
    function multiProofVerifyCalldata(
        bytes32[] calldata proof,
        bool[] calldata proofFlags,
        bytes32 root,
        bytes32[] memory leaves
    ) internal pure returns (bool) {
        return processMultiProofCalldata(proof, proofFlags, leaves) == root;
    }

    /**
     * @dev Returns the root of a tree reconstructed from `leaves` and the sibling nodes in `proof`,
     * consuming from one or the other at each step according to the instructions given by
     * `proofFlags`.
     *
     * _Available since v4.7._
     */
    function processMultiProof(
        bytes32[] memory proof,
        bool[] memory proofFlags,
        bytes32[] memory leaves
    ) internal pure returns (bytes32 merkleRoot) {
        // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by
        // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the
        // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of
        // the merkle tree.
        uint256 leavesLen = leaves.length;
        uint256 totalHashes = proofFlags.length;

        // Check proof validity.
        require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof");

        // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using
        // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop".
        bytes32[] memory hashes = new bytes32[](totalHashes);
        uint256 leafPos = 0;
        uint256 hashPos = 0;
        uint256 proofPos = 0;
        // At each step, we compute the next hash using two values:
        // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we
        //   get the next hash.
        // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the
        //   `proof` array.
        for (uint256 i = 0; i < totalHashes; i++) {
            bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];
            bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];
            hashes[i] = _hashPair(a, b);
        }

        if (totalHashes > 0) {
            return hashes[totalHashes - 1];
        } else if (leavesLen > 0) {
            return leaves[0];
        } else {
            return proof[0];
        }
    }

    /**
     * @dev Calldata version of {processMultiProof}
     *
     * _Available since v4.7._
     */
    function processMultiProofCalldata(
        bytes32[] calldata proof,
        bool[] calldata proofFlags,
        bytes32[] memory leaves
    ) internal pure returns (bytes32 merkleRoot) {
        // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by
        // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the
        // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of
        // the merkle tree.
        uint256 leavesLen = leaves.length;
        uint256 totalHashes = proofFlags.length;

        // Check proof validity.
        require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof");

        // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using
        // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop".
        bytes32[] memory hashes = new bytes32[](totalHashes);
        uint256 leafPos = 0;
        uint256 hashPos = 0;
        uint256 proofPos = 0;
        // At each step, we compute the next hash using two values:
        // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we
        //   get the next hash.
        // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the
        //   `proof` array.
        for (uint256 i = 0; i < totalHashes; i++) {
            bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++];
            bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++];
            hashes[i] = _hashPair(a, b);
        }

        if (totalHashes > 0) {
            return hashes[totalHashes - 1];
        } else if (leavesLen > 0) {
            return leaves[0];
        } else {
            return proof[0];
        }
    }

    function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) {
        return a < b ? _efficientHash(a, b) : _efficientHash(b, a);
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        /// @solidity memory-safe-assembly
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"bytes32","name":"_signature","type":"bytes32"},{"internalType":"address","name":"_general","type":"address"},{"internalType":"string","name":"_generalLocation","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_value","type":"string"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"}],"name":"PermanentURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"general","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"}],"name":"reap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spellBookSignature","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint8","name":"rankIndex","type":"uint8"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes32[]","name":"spell","type":"bytes32[]"}],"name":"summon","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e0604052600060a09081526703782dace9d9000060c0526200002790600890600262000254565b503480156200003557600080fd5b5060405162001bf738038062001bf7833981016040819052620000589162000336565b604080518082018252600d81526c43726561747572616541726d7960981b60208083019182528351808501909452600484526341524d5960e01b908401528151919291620000a991600091620002a2565b508051620000bf906001906020840190620002a2565b5050506080839052600680546001600160a01b031916331790558051620000ee906007906020840190620002a2565b50620000fc82600062000141565b60007fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b55657207600760405162000130919062000440565b60405180910390a250505062000543565b6001600160a01b038216620001915760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001e95760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640162000188565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b826002810192821562000290579160200282015b828111156200029057825182906001600160401b031690559160200191906001019062000268565b506200029e9291506200031f565b5090565b828054620002b090620004f0565b90600052602060002090601f016020900481019282620002d4576000855562000290565b82601f10620002ef57805160ff191683800117855562000290565b8280016001018555821562000290579182015b828111156200029057825182559160200191906001019062000302565b5b808211156200029e576000815560010162000320565b6000806000606084860312156200034c57600080fd5b8351602080860151919450906001600160a01b03811681146200036e57600080fd5b60408601519093506001600160401b03808211156200038c57600080fd5b818701915087601f830112620003a157600080fd5b815181811115620003b657620003b66200052d565b604051601f8201601f19908116603f01168101908382118183101715620003e157620003e16200052d565b816040528281528a86848701011115620003fa57600080fd5b600093505b828410156200041e5784840186015181850187015292850192620003ff565b82841115620004305760008684830101525b8096505050505050509250925092565b600060208083526000845481600182811c9150808316806200046357607f831692505b8583108114156200048257634e487b7160e01b85526022600452602485fd5b878601838152602001818015620004a25760018114620004b457620004e1565b60ff19861682528782019650620004e1565b60008b81526020902060005b86811015620004db57815484820152908501908901620004c0565b83019750505b50949998505050505050505050565b600181811c908216806200050557607f821691505b602082108114156200052757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6080516116916200056660003960008181610115015261082a01526116916000f3fe6080604052600436106100fe5760003560e01c80636352211e116100955780639993e3c8116100645780639993e3c8146102d4578063a22cb465146102f4578063b88d4fde14610314578063c87b56dd14610334578063e985e9c51461035457600080fd5b80636352211e1461025f57806370a082311461027f5780638af9f4931461029f57806395d89b41146102bf57600080fd5b8063095ea7b3116100d1578063095ea7b3146101ea57806323b872dd1461020c5780633f19cb2e1461022c57806342842e0e1461023f57600080fd5b80630143e0531461010357806301ffc9a71461014a57806306fdde031461017a578063081812fc1461019c575b600080fd5b34801561010f57600080fd5b506101377f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561015657600080fd5b5061016a610165366004611336565b61038f565b6040519015158152602001610141565b34801561018657600080fd5b5061018f6103e1565b60405161014191906114a1565b3480156101a857600080fd5b506101d26101b7366004611370565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610141565b3480156101f657600080fd5b5061020a61020536600461130a565b61046f565b005b34801561021857600080fd5b5061020a6102273660046111f7565b610556565b61020a61023a366004611389565b61071d565b34801561024b57600080fd5b5061020a61025a3660046111f7565b610953565b34801561026b57600080fd5b506101d261027a366004611370565b610a5a565b34801561028b57600080fd5b5061013761029a3660046111a1565b610ab1565b3480156102ab57600080fd5b5061020a6102ba3660046111a1565b610b14565b3480156102cb57600080fd5b5061018f610b96565b3480156102e057600080fd5b506006546101d2906001600160a01b031681565b34801561030057600080fd5b5061020a61030f3660046112d7565b610ba3565b34801561032057600080fd5b5061020a61032f366004611238565b610c0f565b34801561034057600080fd5b5061018f61034f366004611370565b610d06565b34801561036057600080fd5b5061016a61036f3660046111be565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806103c057506380ac58cd60e01b6001600160e01b03198316145b806103db5750635b5e139f60e01b6001600160e01b03198316145b92915050565b600080546103ee90611547565b80601f016020809104026020016040519081016040528092919081815260200182805461041a90611547565b80156104675780601f1061043c57610100808354040283529160200191610467565b820191906000526020600020905b81548152906001019060200180831161044a57829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b0316338114806104b857506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104fa5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105ac5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016104f1565b6001600160a01b0382166105f65760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016104f1565b336001600160a01b038416148061063057506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061065157506000818152600460205260409020546001600160a01b031633145b61068e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016104f1565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60ff8416158061073057508360ff166001145b61078a5760405162461bcd60e51b815260206004820152602560248201527f43726561747572616541726d792373756d6d6f6e3a20556e6b6e6f776e20726560448201526418dc9d5a5d60da1b60648201526084016104f1565b60088460ff16600281106107a0576107a06115dd565b01543410156107f15760405162461bcd60e51b815260206004820152601e60248201527f43726561747572616541726d792373756d6d6f6e3a20506179204d6f7265000060448201526064016104f1565b61088d828280806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040517f0000000000000000000000000000000000000000000000000000000000000000925061087291508990899060200191825260f81b6001600160f81b031916602082015260210190565b60405160208183030381529060405280519060200120610dce565b6108e55760405162461bcd60e51b815260206004820152602360248201527f43726561747572616541726d792373756d6d6f6e3a20496e76616c6964207370604482015262195b1b60ea1b60648201526084016104f1565b6108ef8386610de4565b847fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b5565720761091a87610eef565b60405160200161092a919061141e565b60408051601f1981840301815290829052610944916114a1565b60405180910390a25050505050565b61095e838383610556565b6001600160a01b0382163b1580610a165750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a401602060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a9190611353565b6001600160e01b031916145b610a555760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016104f1565b505050565b6000818152600260205260409020546001600160a01b031680610aac5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b60448201526064016104f1565b919050565b60006001600160a01b038216610af85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016104f1565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610b2b57600080fd5b4780610b3657600080fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610b83576040519150601f19603f3d011682016040523d82523d6000602084013e610b88565b606091505b5050905080610a5557600080fd5b600180546103ee90611547565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c1a858585610556565b6001600160a01b0384163b1580610cc05750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610c629033908a9089908990899060040161144d565b602060405180830381600087803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190611353565b6001600160e01b031916145b610cff5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016104f1565b5050505050565b606081610d9f5760078054610d1a90611547565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4690611547565b8015610d935780601f10610d6857610100808354040283529160200191610d93565b820191906000526020600020905b815481529060010190602001808311610d7657829003601f168201915b50505050509050919050565b610da882610eef565b604051602001610db8919061141e565b6040516020818303038152906040529050919050565b600082610ddb8584611122565b14949350505050565b6001600160a01b038216610e2e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016104f1565b6000818152600260205260409020546001600160a01b031615610e845760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b60448201526064016104f1565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60408051602e80825260608281019093526000919060208201818036833701905050905060006040518060600160405280603a8152602001611622603a9139905080610f3c603a8661159d565b81518110610f4c57610f4c6115dd565b602001015160f81c60f81b82602d81518110610f6a57610f6a6115dd565b60200101906001600160f81b031916908160001a905350610f8c603a856114ec565b9350610f996004856114d4565b935080610fa7603a8661159d565b81518110610fb757610fb76115dd565b602001015160f81c60f81b82602c81518110610fd557610fd56115dd565b60200101906001600160f81b031916908160001a905350610ff7603a856114ec565b93506110046028856114d4565b935080611012603a8661159d565b81518110611022576110226115dd565b602001015160f81c60f81b82602b81518110611040576110406115dd565b60200101906001600160f81b031916908160001a905350611062603a856114ec565b935061108e7f0616868b6a3c45673102217be3fec84b7db78d8bb82965f94d9f33718a8074e3856114d4565b935060035b602e81101561111957816110a8603a8761159d565b815181106110b8576110b86115dd565b01602001516001600160f81b031916836110d383602d611500565b815181106110e3576110e36115dd565b60200101906001600160f81b031916908160001a905350611105603a866114ec565b94508061111181611582565b915050611093565b50909392505050565b600081815b84518110156111675761115382868381518110611146576111466115dd565b602002602001015161116f565b91508061115f81611582565b915050611127565b509392505050565b600081831061118b57600082815260208490526040902061119a565b60008381526020839052604090205b9392505050565b6000602082840312156111b357600080fd5b813561119a816115f3565b600080604083850312156111d157600080fd5b82356111dc816115f3565b915060208301356111ec816115f3565b809150509250929050565b60008060006060848603121561120c57600080fd5b8335611217816115f3565b92506020840135611227816115f3565b929592945050506040919091013590565b60008060008060006080868803121561125057600080fd5b853561125b816115f3565b9450602086013561126b816115f3565b935060408601359250606086013567ffffffffffffffff8082111561128f57600080fd5b818801915088601f8301126112a357600080fd5b8135818111156112b257600080fd5b8960208285010111156112c457600080fd5b9699959850939650602001949392505050565b600080604083850312156112ea57600080fd5b82356112f5816115f3565b9150602083013580151581146111ec57600080fd5b6000806040838503121561131d57600080fd5b8235611328816115f3565b946020939093013593505050565b60006020828403121561134857600080fd5b813561119a8161160b565b60006020828403121561136557600080fd5b815161119a8161160b565b60006020828403121561138257600080fd5b5035919050565b6000806000806000608086880312156113a157600080fd5b85359450602086013560ff811681146113b957600080fd5b935060408601356113c9816115f3565b9250606086013567ffffffffffffffff808211156113e657600080fd5b818801915088601f8301126113fa57600080fd5b81358181111561140957600080fd5b8960208260051b85010111156112c457600080fd5b66697066733a2f2f60c81b815260008251611440816007850160208701611517565b9190910160070192915050565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60208152600082518060208401526114c0816040850160208701611517565b601f01601f19169190910160400192915050565b600082198211156114e7576114e76115b1565b500190565b6000826114fb576114fb6115c7565b500490565b600082821015611512576115126115b1565b500390565b60005b8381101561153257818101518382015260200161151a565b83811115611541576000848401525b50505050565b600181811c9082168061155b57607f821691505b6020821081141561157c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611596576115966115b1565b5060010190565b6000826115ac576115ac6115c7565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461160857600080fd5b50565b6001600160e01b03198116811461160857600080fdfe31323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220aefe25edae0a34886f681a793e3b18cadabb5a828fff73660770b783f19381a264736f6c63430008070033a6ba7effc8764e1ed66dde9a94278774645ea980f37fea11e7e239ab7e4c11170000000000000000000000003f8ef4715989502f742f80d7bbdad85171bfd37300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d56675a446e6f7439344d54516b793358525071753978727056507456346f6e4b6434656b64596959464d73660000000000000000000000

Deployed Bytecode

0x6080604052600436106100fe5760003560e01c80636352211e116100955780639993e3c8116100645780639993e3c8146102d4578063a22cb465146102f4578063b88d4fde14610314578063c87b56dd14610334578063e985e9c51461035457600080fd5b80636352211e1461025f57806370a082311461027f5780638af9f4931461029f57806395d89b41146102bf57600080fd5b8063095ea7b3116100d1578063095ea7b3146101ea57806323b872dd1461020c5780633f19cb2e1461022c57806342842e0e1461023f57600080fd5b80630143e0531461010357806301ffc9a71461014a57806306fdde031461017a578063081812fc1461019c575b600080fd5b34801561010f57600080fd5b506101377fa6ba7effc8764e1ed66dde9a94278774645ea980f37fea11e7e239ab7e4c111781565b6040519081526020015b60405180910390f35b34801561015657600080fd5b5061016a610165366004611336565b61038f565b6040519015158152602001610141565b34801561018657600080fd5b5061018f6103e1565b60405161014191906114a1565b3480156101a857600080fd5b506101d26101b7366004611370565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610141565b3480156101f657600080fd5b5061020a61020536600461130a565b61046f565b005b34801561021857600080fd5b5061020a6102273660046111f7565b610556565b61020a61023a366004611389565b61071d565b34801561024b57600080fd5b5061020a61025a3660046111f7565b610953565b34801561026b57600080fd5b506101d261027a366004611370565b610a5a565b34801561028b57600080fd5b5061013761029a3660046111a1565b610ab1565b3480156102ab57600080fd5b5061020a6102ba3660046111a1565b610b14565b3480156102cb57600080fd5b5061018f610b96565b3480156102e057600080fd5b506006546101d2906001600160a01b031681565b34801561030057600080fd5b5061020a61030f3660046112d7565b610ba3565b34801561032057600080fd5b5061020a61032f366004611238565b610c0f565b34801561034057600080fd5b5061018f61034f366004611370565b610d06565b34801561036057600080fd5b5061016a61036f3660046111be565b600560209081526000928352604080842090915290825290205460ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806103c057506380ac58cd60e01b6001600160e01b03198316145b806103db5750635b5e139f60e01b6001600160e01b03198316145b92915050565b600080546103ee90611547565b80601f016020809104026020016040519081016040528092919081815260200182805461041a90611547565b80156104675780601f1061043c57610100808354040283529160200191610467565b820191906000526020600020905b81548152906001019060200180831161044a57829003601f168201915b505050505081565b6000818152600260205260409020546001600160a01b0316338114806104b857506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104fa5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105ac5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016104f1565b6001600160a01b0382166105f65760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016104f1565b336001600160a01b038416148061063057506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b8061065157506000818152600460205260409020546001600160a01b031633145b61068e5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016104f1565b6001600160a01b0380841660008181526003602090815260408083208054600019019055938616808352848320805460010190558583526002825284832080546001600160a01b03199081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60ff8416158061073057508360ff166001145b61078a5760405162461bcd60e51b815260206004820152602560248201527f43726561747572616541726d792373756d6d6f6e3a20556e6b6e6f776e20726560448201526418dc9d5a5d60da1b60648201526084016104f1565b60088460ff16600281106107a0576107a06115dd565b01543410156107f15760405162461bcd60e51b815260206004820152601e60248201527f43726561747572616541726d792373756d6d6f6e3a20506179204d6f7265000060448201526064016104f1565b61088d828280806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040517fa6ba7effc8764e1ed66dde9a94278774645ea980f37fea11e7e239ab7e4c1117925061087291508990899060200191825260f81b6001600160f81b031916602082015260210190565b60405160208183030381529060405280519060200120610dce565b6108e55760405162461bcd60e51b815260206004820152602360248201527f43726561747572616541726d792373756d6d6f6e3a20496e76616c6964207370604482015262195b1b60ea1b60648201526084016104f1565b6108ef8386610de4565b847fa109ba539900bf1b633f956d63c96fc89b814c7287f7aa50a9216d0b5565720761091a87610eef565b60405160200161092a919061141e565b60408051601f1981840301815290829052610944916114a1565b60405180910390a25050505050565b61095e838383610556565b6001600160a01b0382163b1580610a165750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a401602060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0a9190611353565b6001600160e01b031916145b610a555760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016104f1565b505050565b6000818152600260205260409020546001600160a01b031680610aac5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b60448201526064016104f1565b919050565b60006001600160a01b038216610af85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016104f1565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b03163314610b2b57600080fd5b4780610b3657600080fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610b83576040519150601f19603f3d011682016040523d82523d6000602084013e610b88565b606091505b5050905080610a5557600080fd5b600180546103ee90611547565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610c1a858585610556565b6001600160a01b0384163b1580610cc05750604051630a85bd0160e11b808252906001600160a01b0386169063150b7a0290610c629033908a9089908990899060040161144d565b602060405180830381600087803b158015610c7c57600080fd5b505af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb49190611353565b6001600160e01b031916145b610cff5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016104f1565b5050505050565b606081610d9f5760078054610d1a90611547565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4690611547565b8015610d935780601f10610d6857610100808354040283529160200191610d93565b820191906000526020600020905b815481529060010190602001808311610d7657829003601f168201915b50505050509050919050565b610da882610eef565b604051602001610db8919061141e565b6040516020818303038152906040529050919050565b600082610ddb8584611122565b14949350505050565b6001600160a01b038216610e2e5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016104f1565b6000818152600260205260409020546001600160a01b031615610e845760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b60448201526064016104f1565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60408051602e80825260608281019093526000919060208201818036833701905050905060006040518060600160405280603a8152602001611622603a9139905080610f3c603a8661159d565b81518110610f4c57610f4c6115dd565b602001015160f81c60f81b82602d81518110610f6a57610f6a6115dd565b60200101906001600160f81b031916908160001a905350610f8c603a856114ec565b9350610f996004856114d4565b935080610fa7603a8661159d565b81518110610fb757610fb76115dd565b602001015160f81c60f81b82602c81518110610fd557610fd56115dd565b60200101906001600160f81b031916908160001a905350610ff7603a856114ec565b93506110046028856114d4565b935080611012603a8661159d565b81518110611022576110226115dd565b602001015160f81c60f81b82602b81518110611040576110406115dd565b60200101906001600160f81b031916908160001a905350611062603a856114ec565b935061108e7f0616868b6a3c45673102217be3fec84b7db78d8bb82965f94d9f33718a8074e3856114d4565b935060035b602e81101561111957816110a8603a8761159d565b815181106110b8576110b86115dd565b01602001516001600160f81b031916836110d383602d611500565b815181106110e3576110e36115dd565b60200101906001600160f81b031916908160001a905350611105603a866114ec565b94508061111181611582565b915050611093565b50909392505050565b600081815b84518110156111675761115382868381518110611146576111466115dd565b602002602001015161116f565b91508061115f81611582565b915050611127565b509392505050565b600081831061118b57600082815260208490526040902061119a565b60008381526020839052604090205b9392505050565b6000602082840312156111b357600080fd5b813561119a816115f3565b600080604083850312156111d157600080fd5b82356111dc816115f3565b915060208301356111ec816115f3565b809150509250929050565b60008060006060848603121561120c57600080fd5b8335611217816115f3565b92506020840135611227816115f3565b929592945050506040919091013590565b60008060008060006080868803121561125057600080fd5b853561125b816115f3565b9450602086013561126b816115f3565b935060408601359250606086013567ffffffffffffffff8082111561128f57600080fd5b818801915088601f8301126112a357600080fd5b8135818111156112b257600080fd5b8960208285010111156112c457600080fd5b9699959850939650602001949392505050565b600080604083850312156112ea57600080fd5b82356112f5816115f3565b9150602083013580151581146111ec57600080fd5b6000806040838503121561131d57600080fd5b8235611328816115f3565b946020939093013593505050565b60006020828403121561134857600080fd5b813561119a8161160b565b60006020828403121561136557600080fd5b815161119a8161160b565b60006020828403121561138257600080fd5b5035919050565b6000806000806000608086880312156113a157600080fd5b85359450602086013560ff811681146113b957600080fd5b935060408601356113c9816115f3565b9250606086013567ffffffffffffffff808211156113e657600080fd5b818801915088601f8301126113fa57600080fd5b81358181111561140957600080fd5b8960208260051b85010111156112c457600080fd5b66697066733a2f2f60c81b815260008251611440816007850160208701611517565b9190910160070192915050565b6001600160a01b038681168252851660208201526040810184905260806060820181905281018290526000828460a0840137600060a0848401015260a0601f19601f85011683010190509695505050505050565b60208152600082518060208401526114c0816040850160208701611517565b601f01601f19169190910160400192915050565b600082198211156114e7576114e76115b1565b500190565b6000826114fb576114fb6115c7565b500490565b600082821015611512576115126115b1565b500390565b60005b8381101561153257818101518382015260200161151a565b83811115611541576000848401525b50505050565b600181811c9082168061155b57607f821691505b6020821081141561157c57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611596576115966115b1565b5060010190565b6000826115ac576115ac6115c7565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461160857600080fd5b50565b6001600160e01b03198116811461160857600080fdfe31323334353637383941424344454647484a4b4c4d4e505152535455565758595a6162636465666768696a6b6d6e6f707172737475767778797aa2646970667358221220aefe25edae0a34886f681a793e3b18cadabb5a828fff73660770b783f19381a264736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

a6ba7effc8764e1ed66dde9a94278774645ea980f37fea11e7e239ab7e4c11170000000000000000000000003f8ef4715989502f742f80d7bbdad85171bfd37300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d56675a446e6f7439344d54516b793358525071753978727056507456346f6e4b6434656b64596959464d73660000000000000000000000

-----Decoded View---------------
Arg [0] : _signature (bytes32): 0xa6ba7effc8764e1ed66dde9a94278774645ea980f37fea11e7e239ab7e4c1117
Arg [1] : _general (address): 0x3f8ef4715989502F742F80d7BbDAd85171bFd373
Arg [2] : _generalLocation (string): ipfs://QmVgZDnot94MTQky3XRPqu9xrpVPtV4onKd4ekdYiYFMsf

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : a6ba7effc8764e1ed66dde9a94278774645ea980f37fea11e7e239ab7e4c1117
Arg [1] : 0000000000000000000000003f8ef4715989502f742f80d7bbdad85171bfd373
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [4] : 697066733a2f2f516d56675a446e6f7439344d54516b79335852507175397872
Arg [5] : 7056507456346f6e4b6434656b64596959464d73660000000000000000000000


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  ]

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.