ETH Price: $2,023.99 (-2.21%)

Contract

0xd7CDE8aA87BC5af7A2de2ECBf0F5862E1880bC40

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Safe Transfer Fr...101769152024-02-23 19:24:37397 days ago1708716277IN
Agent NFT
0 ETH0.000683769.08
Safe Transfer Fr...93088492024-01-19 9:17:48432 days ago1705655868IN
Agent NFT
0 ETH0.000224682.92
Transfer From92784812024-01-17 8:05:34434 days ago1705478734IN
Agent NFT
0 ETH0.000344364.74
Transfer From92703392024-01-16 16:16:17435 days ago1705421777IN
Agent NFT
0 ETH0.000451956.22
Transfer From92683762024-01-16 12:58:29435 days ago1705409909IN
Agent NFT
0 ETH0.000286193.94
Transfer From92359222024-01-14 15:58:49437 days ago1705247929IN
Agent NFT
0 ETH0.000341514.7
Safe Transfer Fr...92327532024-01-14 10:55:15437 days ago1705229715IN
Agent NFT
0 ETH0.000716589.5142
Transfer From92035572024-01-12 21:48:38439 days ago1705096118IN
Agent NFT
0 ETH0.000322745.81
Safe Transfer Fr...88137362023-12-27 9:06:14455 days ago1703667974IN
Agent NFT
0 ETH0.00018472.4
Safe Transfer Fr...87966832023-12-26 18:31:56456 days ago1703615516IN
Agent NFT
0 ETH0.000234723.05
Transfer From86853752023-12-22 4:11:12461 days ago1703218272IN
Agent NFT
0 ETH0.000204142.81
Transfer From86853662023-12-22 4:10:42461 days ago1703218242IN
Agent NFT
0 ETH0.000164982.97
Safe Transfer Fr...86022082023-12-16 12:37:05466 days ago1702730225IN
Agent NFT
0 ETH0.000445267.44
Safe Transfer Fr...85692752023-12-13 19:17:41469 days ago1702495061IN
Agent NFT
0 ETH0.000265823.53
Transfer From85691122023-12-13 18:59:58469 days ago1702493998IN
Agent NFT
0 ETH0.000315354.34
Transfer From85488462023-12-12 16:44:28470 days ago1702399468IN
Agent NFT
0 ETH0.000260123.58
Transfer From85173952023-12-11 6:04:05472 days ago1702274645IN
Agent NFT
0 ETH0.000127131.75
Transfer From85173892023-12-11 6:03:34472 days ago1702274614IN
Agent NFT
0 ETH0.000129311.78
Safe Transfer Fr...85173352023-12-11 5:59:19472 days ago1702274359IN
Agent NFT
0 ETH0.00008553
Transfer From85171652023-12-11 5:49:16472 days ago1702273756IN
Agent NFT
0 ETH0.000079072.33
Safe Transfer Fr...82541082023-11-28 21:50:42484 days ago1701208242IN
Agent NFT
0 ETH0.000080082.81
Transfer From82540182023-11-28 21:44:16484 days ago1701207856IN
Agent NFT
0 ETH0.000069523.16
Transfer From82539632023-11-28 21:40:51484 days ago1701207651IN
Agent NFT
0 ETH0.000078783.03
Transfer From82095132023-11-27 16:20:50485 days ago1701102050IN
Agent NFT
0 ETH0.000283333.9
Safe Transfer Fr...80258842023-11-25 7:34:06487 days ago1700897646IN
Agent NFT
0 ETH0.000093871.22

Latest 1 internal transaction

Parent Transaction Hash Block From To
78230142023-11-20 12:11:27492 days ago1700482287  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AgentNFT

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : AgentNFT.sol
pragma solidity 0.8.17;

// SPDX-License-Identifier: AGPL-3.0-only

import "interface/IAgency.sol";
import "interface/IERC721Receiver.sol";

library Base64 {
    bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    /// @notice Encodes some bytes to the base64 representation
    function encode(bytes memory data) internal pure returns (string memory) {
        uint len = data.length;
        if (len == 0) return "";

        // multiply by 4/3 rounded up
        uint encodedLen = 4 * ((len + 2) / 3);

        // Add some extra buffer at the end
        bytes memory result = new bytes(encodedLen + 32);

        bytes memory table = TABLE;

        assembly {
            let tablePtr := add(table, 1)
            let resultPtr := add(result, 32)

            for {
                let i := 0
            } lt(i, len) {

            } {
                i := add(i, 3)
                let input := and(mload(add(data, i)), 0xffffff)

                let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))
                out := shl(224, out)

                mstore(resultPtr, out)

                resultPtr := add(resultPtr, 4)
            }

            switch mod(len, 3)
            case 1 {
                mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
            }
            case 2 {
                mstore(sub(resultPtr, 1), shl(248, 0x3d))
            }

            mstore(result, encodedLen)
        }

        return string(result);
    }
}

contract AgentNFT {
    IAgency public immutable agency;

    /// @dev ERC165 interface ID of ERC165
    bytes4 private constant ERC165_INTERFACE_ID = 0x01ffc9a7;
    /// @dev ERC165 interface ID of ERC721
    bytes4 private constant ERC721_INTERFACE_ID = 0x80ac58cd;
    /// @dev ERC165 interface ID of ERC721Metadata
    bytes4 private constant ERC721_METADATA_INTERFACE_ID = 0x5b5e139f;

    /// @dev Get the approved address for a single NFT.
    mapping(uint => address) public getApproved;
    /// @dev Checks if an address is an approved operator. 
    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /**
    * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
    */
    event Transfer(address indexed from, address indexed to, uint indexed tokenId);
    /**
    * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
    */
    event Approval(address indexed owner, address indexed approved, uint indexed tokenId);
    /**
    * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
    */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    constructor(address _agency) {
        agency = IAgency(_agency);
    }

    /**
    * @dev Interface identification is specified in ERC-165.
    * @param interfaceID Id of the interface
    */
    function supportsInterface(bytes4 interfaceID) external pure returns (bool) {
        return (interfaceID == ERC165_INTERFACE_ID ||
                interfaceID == ERC721_INTERFACE_ID ||
                interfaceID == ERC721_METADATA_INTERFACE_ID);
    }

    function name() external pure returns (string memory) {
        return "Agent";
    }

    function symbol() external pure returns (string memory) {
        return "DAG";
    }

    function tokenURI(uint tokenId) external view returns (string memory) {
        (address owner, uint tier, uint birth, uint parent,) = agency.getAgent(tokenId);
        require(owner != address(0), "token not exist");
        return _tokenURI(tokenId, parent, tier, birth);
    }

    function _tokenURI(uint tokenId, uint parent, uint tier, uint birth) internal pure returns (string memory output) {
        output = '<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base { fill: white; font-family: serif; font-size: 14px; }</style><rect width="100%" height="100%" fill="black" /><text x="10" y="20" class="base">';
        output = string(abi.encodePacked(output, "token ", _toString(tokenId), '</text><text x="10" y="40" class="base">'));
        output = string(abi.encodePacked(output, "referer ", _toString(parent), '</text><text x="10" y="60" class="base">'));
        output = string(abi.encodePacked(output, "agent_tier ", _toString(tier), '</text><text x="10" y="80" class="base">'));
        output = string(abi.encodePacked(output, "time_of_creation ", _toString(birth), '</text></svg>'));

        string memory json = Base64.encode(bytes(string(abi.encodePacked('{"name": "Agent #', _toString(tokenId), '", "description": "Dyson Finance Agent NFT", "image": "data:image/svg+xml;base64,', Base64.encode(bytes(output)), '"}'))));
        output = string(abi.encodePacked('data:application/json;base64,', json));
    }

    function _toString(uint value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint temp = value;
        uint digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function totalSupply() external view returns (uint) {
        return agency.totalSupply();
    }

    function balanceOf(address owner) external view returns (uint balance) {
        return agency.whois(owner) == 0 ? 0 : 1;
    }

    function ownerOf(uint tokenId) public view returns (address owner) {
        (owner,,,,) = agency.getAgent(tokenId);
    }

    function onMint(address user, uint tokenId) external {
        require(msg.sender == address(agency), "forbidden");
        emit Transfer(address(0), user, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint tokenId
    ) external {
        safeTransferFrom(from, to, tokenId, '');
    }

    function approve(address to, uint tokenId) external {
        address owner = ownerOf(tokenId);
        // Throws if `tokenId` is not a valid NFT
        require(owner != address(0), "token not exist");
        // Check requirements
        require(owner == msg.sender || isApprovedForAll[owner][msg.sender], "forbidden");
        getApproved[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    function setApprovalForAll(address operator, bool approved) external {
        require(operator != msg.sender, "self approval");
        isApprovedForAll[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function _transferFrom(
        address from,
        address to,
        uint tokenId,
        address sender
    ) internal {
        require(from == sender || isApprovedForAll[from][sender] || getApproved[tokenId] == sender, "forbidden");

        getApproved[tokenId] = address(0);

        require(agency.transfer(from, to, tokenId), "forbidden");

        emit Transfer(from, to, tokenId);
    }

    function transferFrom(
        address from,
        address to,
        uint tokenId
    ) external {
        _transferFrom(from, to, tokenId, msg.sender);
    }

    function _isContract(address account) internal view returns (bool) {
        uint size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function safeTransferFrom(
        address from,
        address to,
        uint tokenId,
        bytes memory data
    ) public {
        _transferFrom(from, to, tokenId, msg.sender);

        if (_isContract(to)) {
            try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, data) returns (bytes4 retval) {
                require(retval == IERC721Receiver.onERC721Received.selector, "transfer failed");
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert('ERC721: transfer to non ERC721Receiver implementer');
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        }
    }

}

File 2 of 3 : IAgency.sol
pragma solidity >=0.8.0;

// SPDX-License-Identifier: MIT

interface IAgency {
    struct Agent {
        address owner;
        uint gen;
        uint birth;
        uint parentId;
        uint[] childrenId;
    }

    event TransferOwnership(address newOwner);
    event Register(uint indexed referrer, uint referee);
    event Sign(address indexed signer, bytes32 digest);

    function REGISTER_ONCE_TYPEHASH() external view returns (bytes32);
    function REGISTER_PARENT_TYPEHASH() external view returns (bytes32);
    function MAX_NUM_CHILDREN() external view returns (uint);
    function REGISTER_DELAY() external view returns (uint);
    function TRANSFER_CD() external view returns (uint);
    function agentNFT() external view returns (address);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function whois(address agent) external view returns (uint);
    function oneTimeCodes(address once) external view returns (bool);
    function presign(address agent, bytes32 digest) external view returns (bool);
    function isController(address agent) external view returns (bool);
    function owner() external view returns (address);

    function userInfo(address agent) external view returns (address ref, uint gen);
    function transfer(address from, address to, uint id) external returns (bool);
    function totalSupply() external view returns (uint);
    function getAgent(uint id) external view returns (address, uint, uint, uint, uint[] memory);
    function transferOwnership(address owner) external;
    function addController(address _controller) external;
    function removeController(address _controller) external;
    function rescueERC20(address tokenAddress, address to, uint256 amount) external;
    function adminAdd(address newUser) external returns (uint id);
    function register(bytes memory parentSig, bytes memory onceSig, uint deadline) payable external returns (uint id);
    function sign(bytes32 digest) external;
    function getHashTypedData(bytes32 structHash) external view returns (bytes32);
    function transferCooldown(uint id) external view returns (uint);
}

File 3 of 3 : IERC721Receiver.sol
pragma solidity >=0.8.0;

// SPDX-License-Identifier: MIT

/**
* @title ERC721 token receiver interface
* @dev Interface for any contract that wants to support safeTransfers
* from ERC721 asset contracts.
*/
interface IERC721Receiver {
    function onERC721Received(address, address, uint, bytes calldata) external returns (bytes4);
}

Settings
{
  "remappings": [
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "interface/=src/interface/",
    "util/=src/util/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "openzeppelin/=lib/openzeppelin-contracts/contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_agency","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"agency","outputs":[{"internalType":"contract IAgency","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"onMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","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":"tokenId","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":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a060405234801561001057600080fd5b5060405161195938038061195983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516118a46100b5600039600081816101ee01528181610438015281816104b50152818161057f01528181610623015281816108e80152610ab101526118a46000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806342842e0e11610097578063a22cb46511610066578063a22cb46514610268578063b88d4fde1461027b578063c87b56dd1461028e578063e985e9c5146102a157600080fd5b806342842e0e146102105780636352211e1461022357806370a082311461023657806395d89b411461024957600080fd5b80630f632fd3116100d35780630f632fd3146101ad57806318160ddd146101c057806323b872dd146101d65780633b91ee26146101e957600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610157578063095ea7b314610198575b600080fd5b610118610113366004610f44565b6102cf565b60405190151581526020015b60405180910390f35b6040805180820190915260058152641059d95b9d60da1b60208201525b6040516101249190610fb8565b610180610165366004610fcb565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610124565b6101ab6101a6366004610ff9565b610321565b005b6101ab6101bb366004610ff9565b61042d565b6101c86104b1565b604051908152602001610124565b6101ab6101e4366004611025565b61053a565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b6101ab61021e366004611025565b61054b565b610180610231366004610fcb565b610566565b6101c8610244366004611066565b610601565b60408051808201909152600381526244414760e81b602082015261014a565b6101ab610276366004611091565b6106a8565b6101ab610289366004611111565b61075c565b61014a61029c366004610fcb565b6108de565b6101186102af3660046111d5565b600160209081526000928352604080842090915290825290205460ff1681565b60006001600160e01b031982166301ffc9a760e01b148061030057506001600160e01b031982166380ac58cd60e01b145b8061031b57506001600160e01b03198216635b5e139f60e01b145b92915050565b600061032c82610566565b90506001600160a01b03811661037b5760405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd08195e1a5cdd608a1b60448201526064015b60405180910390fd5b6001600160a01b0381163314806103b557506001600160a01b038116600090815260016020908152604080832033845290915290205460ff165b6103d15760405162461bcd60e51b815260040161037290611203565b60008281526020819052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104755760405162461bcd60e51b815260040161037290611203565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105359190611226565b905090565b610546838383336109e2565b505050565b6105468383836040518060200160405280600081525061075c565b604051632de5aaf760e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632de5aaf790602401600060405180830381865afa1580156105ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105f6919081019061123f565b509295945050505050565b604051632a5ccc1f60e01b81526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690632a5ccc1f90602401602060405180830381865afa15801561066c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106909190611226565b1561069c57600161069f565b60005b60ff1692915050565b336001600160a01b038316036106f05760405162461bcd60e51b815260206004820152600d60248201526c1cd95b1988185c1c1c9bdd985b609a1b6044820152606401610372565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610768848484336109e2565b823b156108d857604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906107a1903390889087908790600401611319565b6020604051808303816000875af19250505080156107dc575060408051601f3d908101601f191682019092526107d99181019061134c565b60015b610884573d80801561080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b50805160000361087c5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610372565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146108d65760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606401610372565b505b50505050565b60606000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632de5aaf7876040518263ffffffff1660e01b815260040161093491815260200190565b600060405180830381865afa158015610951573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610979919081019061123f565b50929650909450925090506001600160a01b0384166109cc5760405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd08195e1a5cdd608a1b6044820152606401610372565b6109d886828585610b81565b9695505050505050565b806001600160a01b0316846001600160a01b03161480610a2757506001600160a01b0380851660009081526001602090815260408083209385168352929052205460ff165b80610a4b57506000828152602081905260409020546001600160a01b038281169116145b610a675760405162461bcd60e51b815260040161037290611203565b6000828152602081905260409081902080546001600160a01b0319169055516317d5759960e31b81526001600160a01b0385811660048301528481166024830152604482018490527f0000000000000000000000000000000000000000000000000000000000000000169063beabacc8906064016020604051808303816000875af1158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e9190611369565b610b3a5760405162461bcd60e51b815260040161037290611203565b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b606060405180610120016040528060fd815260200161173260fd9139905080610ba986610cb8565b604051602001610bba929190611386565b604051602081830303815290604052905080610bd585610cb8565b604051602001610be6929190611402565b604051602081830303815290604052905080610c0184610cb8565b604051602001610c12929190611480565b604051602081830303815290604052905080610c2d83610cb8565b604051602001610c3e929190611501565b60405160208183030381529060405290506000610c8b610c5d87610cb8565b610c6684610dc1565b604051602001610c77929190611567565b604051602081830303815290604052610dc1565b905080604051602001610c9e919061162c565b604051602081830303815290604052915050949350505050565b606081600003610cdf5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610d095780610cf381611687565b9150610d029050600a836116b6565b9150610ce3565b60008167ffffffffffffffff811115610d2457610d246110ca565b6040519080825280601f01601f191660200182016040528015610d4e576020820181803683370190505b5090505b8415610db957610d636001836116ca565b9150610d70600a866116dd565b610d7b9060306116f1565b60f81b818381518110610d9057610d90611704565b60200101906001600160f81b031916908160001a905350610db2600a866116b6565b9450610d52565b949350505050565b80516060906000819003610de5575050604080516020810190915260008152919050565b60006003610df48360026116f1565b610dfe91906116b6565b610e0990600461171a565b90506000610e188260206116f1565b67ffffffffffffffff811115610e3057610e306110ca565b6040519080825280601f01601f191660200182016040528015610e5a576020820181803683370190505b509050600060405180606001604052806040815260200161182f604091399050600181016020830160005b86811015610ee6576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101610e85565b506003860660018114610f005760028114610f1157610f1d565b613d3d60f01b600119830152610f1d565b603d60f81b6000198301525b505050918152949350505050565b6001600160e01b031981168114610f4157600080fd5b50565b600060208284031215610f5657600080fd5b8135610f6181610f2b565b9392505050565b60005b83811015610f83578181015183820152602001610f6b565b50506000910152565b60008151808452610fa4816020860160208601610f68565b601f01601f19169290920160200192915050565b602081526000610f616020830184610f8c565b600060208284031215610fdd57600080fd5b5035919050565b6001600160a01b0381168114610f4157600080fd5b6000806040838503121561100c57600080fd5b823561101781610fe4565b946020939093013593505050565b60008060006060848603121561103a57600080fd5b833561104581610fe4565b9250602084013561105581610fe4565b929592945050506040919091013590565b60006020828403121561107857600080fd5b8135610f6181610fe4565b8015158114610f4157600080fd5b600080604083850312156110a457600080fd5b82356110af81610fe4565b915060208301356110bf81611083565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611109576111096110ca565b604052919050565b6000806000806080858703121561112757600080fd5b843561113281610fe4565b935060208581013561114381610fe4565b935060408601359250606086013567ffffffffffffffff8082111561116757600080fd5b818801915088601f83011261117b57600080fd5b81358181111561118d5761118d6110ca565b61119f601f8201601f191685016110e0565b915080825289848285010111156111b557600080fd5b808484018584013760008482840101525080935050505092959194509250565b600080604083850312156111e857600080fd5b82356111f381610fe4565b915060208301356110bf81610fe4565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b60006020828403121561123857600080fd5b5051919050565b600080600080600060a0868803121561125757600080fd5b855161126281610fe4565b8095505060208087015194506040870151935060608701519250608087015167ffffffffffffffff8082111561129757600080fd5b818901915089601f8301126112ab57600080fd5b8151818111156112bd576112bd6110ca565b8060051b91506112ce8483016110e0565b818152918301840191848101908c8411156112e857600080fd5b938501935b83851015611306578451825293850193908501906112ed565b8096505050505050509295509295909350565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906109d890830184610f8c565b60006020828403121561135e57600080fd5b8151610f6181610f2b565b60006020828403121561137b57600080fd5b8151610f6181611083565b60008351611398818460208801610f68565b6503a37b5b2b7160d51b90830190815283516113bb816006840160208801610f68565b7f3c2f746578743e3c7465787420783d2231302220793d2234302220636c61737360069290910191820152671e913130b9b2911f60c11b6026820152602e01949350505050565b60008351611414818460208801610f68565b6703932b332b932b9160c51b9083019081528351611439816008840160208801610f68565b7f3c2f746578743e3c7465787420783d2231302220793d2236302220636c61737360089290910191820152671e913130b9b2911f60c11b6028820152603001949350505050565b60008351611492818460208801610f68565b6a030b3b2b73a2fba34b2b9160ad1b90830190815283516114ba81600b840160208801610f68565b7f3c2f746578743e3c7465787420783d2231302220793d2238302220636c617373600b9290910191820152671e913130b9b2911f60c11b602b820152603301949350505050565b60008351611513818460208801610f68565b7003a34b6b2afb7b32fb1b932b0ba34b7b71607d1b9083019081528351611541816011840160208801610f68565b6c1e17ba32bc3a1f1e17b9bb339f60991b60119290910191820152601e01949350505050565b707b226e616d65223a20224167656e74202360781b81528251600090611594816011850160208801610f68565b7f222c20226465736372697074696f6e223a20224479736f6e2046696e616e63656011918401918201527f204167656e74204e4654222c2022696d616765223a2022646174613a696d6167603182015270194bdcdd99cade1b5b0ed8985cd94d8d0b607a1b60518201528351611611816062840160208801610f68565b61227d60f01b60629290910191820152606401949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161166481601d850160208701610f68565b91909101601d0192915050565b634e487b7160e01b600052601160045260246000fd5b60006001820161169957611699611671565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826116c5576116c56116a0565b500490565b8181038181111561031b5761031b611671565b6000826116ec576116ec6116a0565b500690565b8082018082111561031b5761031b611671565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761031b5761031b61167156fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212209197ff7a0698aa896f8e5b6cb4742fad9ba259645c55cb3cb02df5dc1732fa6364736f6c634300081100330000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c806342842e0e11610097578063a22cb46511610066578063a22cb46514610268578063b88d4fde1461027b578063c87b56dd1461028e578063e985e9c5146102a157600080fd5b806342842e0e146102105780636352211e1461022357806370a082311461023657806395d89b411461024957600080fd5b80630f632fd3116100d35780630f632fd3146101ad57806318160ddd146101c057806323b872dd146101d65780633b91ee26146101e957600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610157578063095ea7b314610198575b600080fd5b610118610113366004610f44565b6102cf565b60405190151581526020015b60405180910390f35b6040805180820190915260058152641059d95b9d60da1b60208201525b6040516101249190610fb8565b610180610165366004610fcb565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610124565b6101ab6101a6366004610ff9565b610321565b005b6101ab6101bb366004610ff9565b61042d565b6101c86104b1565b604051908152602001610124565b6101ab6101e4366004611025565b61053a565b6101807f0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a81565b6101ab61021e366004611025565b61054b565b610180610231366004610fcb565b610566565b6101c8610244366004611066565b610601565b60408051808201909152600381526244414760e81b602082015261014a565b6101ab610276366004611091565b6106a8565b6101ab610289366004611111565b61075c565b61014a61029c366004610fcb565b6108de565b6101186102af3660046111d5565b600160209081526000928352604080842090915290825290205460ff1681565b60006001600160e01b031982166301ffc9a760e01b148061030057506001600160e01b031982166380ac58cd60e01b145b8061031b57506001600160e01b03198216635b5e139f60e01b145b92915050565b600061032c82610566565b90506001600160a01b03811661037b5760405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd08195e1a5cdd608a1b60448201526064015b60405180910390fd5b6001600160a01b0381163314806103b557506001600160a01b038116600090815260016020908152604080832033845290915290205460ff165b6103d15760405162461bcd60e51b815260040161037290611203565b60008281526020819052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b336001600160a01b037f0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a16146104755760405162461bcd60e51b815260040161037290611203565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60007f0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105359190611226565b905090565b610546838383336109e2565b505050565b6105468383836040518060200160405280600081525061075c565b604051632de5aaf760e01b8152600481018290526000907f0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a6001600160a01b031690632de5aaf790602401600060405180830381865afa1580156105ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105f6919081019061123f565b509295945050505050565b604051632a5ccc1f60e01b81526001600160a01b0382811660048301526000917f0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a90911690632a5ccc1f90602401602060405180830381865afa15801561066c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106909190611226565b1561069c57600161069f565b60005b60ff1692915050565b336001600160a01b038316036106f05760405162461bcd60e51b815260206004820152600d60248201526c1cd95b1988185c1c1c9bdd985b609a1b6044820152606401610372565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610768848484336109e2565b823b156108d857604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906107a1903390889087908790600401611319565b6020604051808303816000875af19250505080156107dc575060408051601f3d908101601f191682019092526107d99181019061134c565b60015b610884573d80801561080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b50805160000361087c5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610372565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146108d65760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606401610372565b505b50505050565b60606000806000807f0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a6001600160a01b0316632de5aaf7876040518263ffffffff1660e01b815260040161093491815260200190565b600060405180830381865afa158015610951573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610979919081019061123f565b50929650909450925090506001600160a01b0384166109cc5760405162461bcd60e51b815260206004820152600f60248201526e1d1bdad95b881b9bdd08195e1a5cdd608a1b6044820152606401610372565b6109d886828585610b81565b9695505050505050565b806001600160a01b0316846001600160a01b03161480610a2757506001600160a01b0380851660009081526001602090815260408083209385168352929052205460ff165b80610a4b57506000828152602081905260409020546001600160a01b038281169116145b610a675760405162461bcd60e51b815260040161037290611203565b6000828152602081905260409081902080546001600160a01b0319169055516317d5759960e31b81526001600160a01b0385811660048301528481166024830152604482018490527f0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a169063beabacc8906064016020604051808303816000875af1158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e9190611369565b610b3a5760405162461bcd60e51b815260040161037290611203565b81836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b606060405180610120016040528060fd815260200161173260fd9139905080610ba986610cb8565b604051602001610bba929190611386565b604051602081830303815290604052905080610bd585610cb8565b604051602001610be6929190611402565b604051602081830303815290604052905080610c0184610cb8565b604051602001610c12929190611480565b604051602081830303815290604052905080610c2d83610cb8565b604051602001610c3e929190611501565b60405160208183030381529060405290506000610c8b610c5d87610cb8565b610c6684610dc1565b604051602001610c77929190611567565b604051602081830303815290604052610dc1565b905080604051602001610c9e919061162c565b604051602081830303815290604052915050949350505050565b606081600003610cdf5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610d095780610cf381611687565b9150610d029050600a836116b6565b9150610ce3565b60008167ffffffffffffffff811115610d2457610d246110ca565b6040519080825280601f01601f191660200182016040528015610d4e576020820181803683370190505b5090505b8415610db957610d636001836116ca565b9150610d70600a866116dd565b610d7b9060306116f1565b60f81b818381518110610d9057610d90611704565b60200101906001600160f81b031916908160001a905350610db2600a866116b6565b9450610d52565b949350505050565b80516060906000819003610de5575050604080516020810190915260008152919050565b60006003610df48360026116f1565b610dfe91906116b6565b610e0990600461171a565b90506000610e188260206116f1565b67ffffffffffffffff811115610e3057610e306110ca565b6040519080825280601f01601f191660200182016040528015610e5a576020820181803683370190505b509050600060405180606001604052806040815260200161182f604091399050600181016020830160005b86811015610ee6576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101610e85565b506003860660018114610f005760028114610f1157610f1d565b613d3d60f01b600119830152610f1d565b603d60f81b6000198301525b505050918152949350505050565b6001600160e01b031981168114610f4157600080fd5b50565b600060208284031215610f5657600080fd5b8135610f6181610f2b565b9392505050565b60005b83811015610f83578181015183820152602001610f6b565b50506000910152565b60008151808452610fa4816020860160208601610f68565b601f01601f19169290920160200192915050565b602081526000610f616020830184610f8c565b600060208284031215610fdd57600080fd5b5035919050565b6001600160a01b0381168114610f4157600080fd5b6000806040838503121561100c57600080fd5b823561101781610fe4565b946020939093013593505050565b60008060006060848603121561103a57600080fd5b833561104581610fe4565b9250602084013561105581610fe4565b929592945050506040919091013590565b60006020828403121561107857600080fd5b8135610f6181610fe4565b8015158114610f4157600080fd5b600080604083850312156110a457600080fd5b82356110af81610fe4565b915060208301356110bf81611083565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611109576111096110ca565b604052919050565b6000806000806080858703121561112757600080fd5b843561113281610fe4565b935060208581013561114381610fe4565b935060408601359250606086013567ffffffffffffffff8082111561116757600080fd5b818801915088601f83011261117b57600080fd5b81358181111561118d5761118d6110ca565b61119f601f8201601f191685016110e0565b915080825289848285010111156111b557600080fd5b808484018584013760008482840101525080935050505092959194509250565b600080604083850312156111e857600080fd5b82356111f381610fe4565b915060208301356110bf81610fe4565b6020808252600990820152683337b93134b23232b760b91b604082015260600190565b60006020828403121561123857600080fd5b5051919050565b600080600080600060a0868803121561125757600080fd5b855161126281610fe4565b8095505060208087015194506040870151935060608701519250608087015167ffffffffffffffff8082111561129757600080fd5b818901915089601f8301126112ab57600080fd5b8151818111156112bd576112bd6110ca565b8060051b91506112ce8483016110e0565b818152918301840191848101908c8411156112e857600080fd5b938501935b83851015611306578451825293850193908501906112ed565b8096505050505050509295509295909350565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906109d890830184610f8c565b60006020828403121561135e57600080fd5b8151610f6181610f2b565b60006020828403121561137b57600080fd5b8151610f6181611083565b60008351611398818460208801610f68565b6503a37b5b2b7160d51b90830190815283516113bb816006840160208801610f68565b7f3c2f746578743e3c7465787420783d2231302220793d2234302220636c61737360069290910191820152671e913130b9b2911f60c11b6026820152602e01949350505050565b60008351611414818460208801610f68565b6703932b332b932b9160c51b9083019081528351611439816008840160208801610f68565b7f3c2f746578743e3c7465787420783d2231302220793d2236302220636c61737360089290910191820152671e913130b9b2911f60c11b6028820152603001949350505050565b60008351611492818460208801610f68565b6a030b3b2b73a2fba34b2b9160ad1b90830190815283516114ba81600b840160208801610f68565b7f3c2f746578743e3c7465787420783d2231302220793d2238302220636c617373600b9290910191820152671e913130b9b2911f60c11b602b820152603301949350505050565b60008351611513818460208801610f68565b7003a34b6b2afb7b32fb1b932b0ba34b7b71607d1b9083019081528351611541816011840160208801610f68565b6c1e17ba32bc3a1f1e17b9bb339f60991b60119290910191820152601e01949350505050565b707b226e616d65223a20224167656e74202360781b81528251600090611594816011850160208801610f68565b7f222c20226465736372697074696f6e223a20224479736f6e2046696e616e63656011918401918201527f204167656e74204e4654222c2022696d616765223a2022646174613a696d6167603182015270194bdcdd99cade1b5b0ed8985cd94d8d0b607a1b60518201528351611611816062840160208801610f68565b61227d60f01b60629290910191820152606401949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161166481601d850160208701610f68565b91909101601d0192915050565b634e487b7160e01b600052601160045260246000fd5b60006001820161169957611699611671565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826116c5576116c56116a0565b500490565b8181038181111561031b5761031b611671565b6000826116ec576116ec6116a0565b500690565b8082018082111561031b5761031b611671565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761031b5761031b61167156fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa26469706673582212209197ff7a0698aa896f8e5b6cb4742fad9ba259645c55cb3cb02df5dc1732fa6364736f6c63430008110033

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

0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a

-----Decoded View---------------
Arg [0] : _agency (address): 0x0BC788aDF6EDE55c9B9f112A52AAa57F2d35874A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000bc788adf6ede55c9b9f112a52aaa57f2d35874a


Block Transaction Gas Used Reward
view all blocks sequenced

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
[ 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.