ETH Price: $1,581.24 (+0.11%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint97666542020-03-29 13:00:081849 days ago1585486808IN
0xCE753151...09ACaCbBE
0 ETH0.001541635.3
Mint96836722020-03-16 16:30:571862 days ago1584376257IN
0xCE753151...09ACaCbBE
0 ETH0.00232688
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000109262.42
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000109262.42
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000109262.42
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000109262.42
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000109262.42
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.00007451.65
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000099332.2
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000099332.2
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000099332.2
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.000099332.2
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745862020-03-15 7:05:191863 days ago1584255919IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.000049661.1
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
Give Art Credit96745852020-03-15 7:05:161863 days ago1584255916IN
0xCE753151...09ACaCbBE
0 ETH0.00009032
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
-96411122020-03-10 2:49:421868 days ago1583808582
0xCE753151...09ACaCbBE
0.25 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AvastarPrintRegistryMinter

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-03-10
*/

/**************

 * Copyright Art Blocks LLC 2020. www.artblocks.io.
 *************/




// File: openzeppelin-solidity/contracts/math/SafeMath.sol



pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

// File: openzeppelin-solidity/contracts/utils/Address.sol

pragma solidity ^0.5.0;

/**
 * @dev Collection of functions related to the address type,
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * This test is non-exhaustive, and there may be false-negatives: during the
     * execution of a contract's constructor, its address will be reported as
     * not containing a contract.
     *
     * > It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

// File: openzeppelin-solidity/contracts/drafts/Counters.sol

pragma solidity ^0.5.0;


/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 * Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the SafeMath
 * overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never
 * directly accessed.
 */
library Counters {
    using SafeMath for uint256;

    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        counter._value += 1;
    }

    function decrement(Counter storage counter) internal {
        counter._value = counter._value.sub(1);
    }
}

// File: contracts/Strings.sol

pragma solidity ^0.5.0;

//https://github.com/oraclize/ethereum-api/blob/master/oraclizeAPI_0.5.sol
library Strings {

    function strConcat(string memory _a, string memory _b) internal pure returns (string memory _concatenatedString) {
        return strConcat(_a, _b, "", "", "");
    }

    function strConcat(string memory _a, string memory _b, string memory _c) internal pure returns (string memory _concatenatedString) {
        return strConcat(_a, _b, _c, "", "");
    }

    function strConcat(string memory _a, string memory _b, string memory _c, string memory _d) internal pure returns (string memory _concatenatedString) {
        return strConcat(_a, _b, _c, _d, "");
    }

    function strConcat(string memory _a, string memory _b, string memory _c, string memory _d, string memory _e) internal pure returns (string memory _concatenatedString) {
        bytes memory _ba = bytes(_a);
        bytes memory _bb = bytes(_b);
        bytes memory _bc = bytes(_c);
        bytes memory _bd = bytes(_d);
        bytes memory _be = bytes(_e);
        string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);
        bytes memory babcde = bytes(abcde);
        uint k = 0;
        uint i = 0;
        for (i = 0; i < _ba.length; i++) {
            babcde[k++] = _ba[i];
        }
        for (i = 0; i < _bb.length; i++) {
            babcde[k++] = _bb[i];
        }
        for (i = 0; i < _bc.length; i++) {
            babcde[k++] = _bc[i];
        }
        for (i = 0; i < _bd.length; i++) {
            babcde[k++] = _bd[i];
        }
        for (i = 0; i < _be.length; i++) {
            babcde[k++] = _be[i];
        }
        return string(babcde);
    }

    function uint2str(uint _i) internal pure returns (string memory _uintAsString) {
        if (_i == 0) {
            return "0";
        }
        uint j = _i;
        uint len;
        while (j != 0) {
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;
        while (_i != 0) {
            bstr[k--] = byte(uint8(48 + _i % 10));
            _i /= 10;
        }
        return string(bstr);
    }
}

pragma solidity ^0.5.0;

interface AvastarPrintRegistryInterface {

    function mint(uint256 _avastarId, string calldata _nfc) external returns (uint256 _tokenId);
    function pricePerPrintIntlShipInWei() external view returns (uint256 _pricePerPrintIntlShipInWei);
}

pragma solidity ^0.5.0;

interface AvastarsInterface {

    function ownerOf(uint256 _avastarId) external view returns (address);
}

// File: contracts/AvastarPrintRegistryMinter.sol

pragma solidity ^0.5.0;

contract AvastarPrintRegistryMinter  {
    using SafeMath for uint256;

    ///////////////
    // Variables //
    ///////////////


    AvastarPrintRegistryInterface public aprContract;
    AvastarsInterface public avastarsContract;

    address public owner1;
    address payable public printerAddress;

    mapping(uint256 => uint256) public artIdToCreditsToSpend;
    mapping(address => uint256) public addressToCreditsToSpend;
    mapping(address => uint256) public managerAddressToCreditsToGive;





    /////////////////
    // Constructor //
    /////////////////

    constructor(address payable _printerAddress, address _registryContract, address _artContract) public {

        aprContract = AvastarPrintRegistryInterface(_registryContract);
        avastarsContract = AvastarsInterface(_artContract);
        owner1 = msg.sender;
        printerAddress = _printerAddress;

    }

    //////////////////////////////
    // Minting Function         //
    //////////////////////////////

    function mint(uint256 _avastarId, string memory _contactMethodAndType) public returns (uint256 _tokenId) {
        uint256 artCreditBalance = artIdToCreditsToSpend[_avastarId];
        uint256 addressCreditBalance = addressToCreditsToSpend[msg.sender];
        require(msg.sender == avastarsContract.ownerOf(_avastarId), "You must own Avastar!");
        require(artCreditBalance>0 || addressCreditBalance >0 , "Must have a credit!");
        uint256 mintedToken = aprContract.mint(_avastarId, _contactMethodAndType);
        if (artCreditBalance >0) {
        artIdToCreditsToSpend[_avastarId] --;
        } else {
        addressToCreditsToSpend[msg.sender] --;
        }
        return mintedToken;
    }

    //////////////////////////////
    // Manager Function         //
    //////////////////////////////

    function giveArtCredit(uint256 _artId) public payable {
        uint creditsToGive = managerAddressToCreditsToGive[msg.sender];
        require(creditsToGive>0 || msg.sender==owner1 || msg.sender==printerAddress || msg.value==aprContract.pricePerPrintIntlShipInWei(), "You must have permission!");
        artIdToCreditsToSpend[_artId] ++;
        
        if (msg.value>0) {
                printerAddress.transfer(msg.value);
            } else {
                if (msg.sender==owner1 || msg.sender==printerAddress){
                    return;
                } else {
                    managerAddressToCreditsToGive[msg.sender] --;
                }
            }
    }

    function giveAddressCredit(address _recipient) public payable {
        uint creditsToGive = managerAddressToCreditsToGive[msg.sender];
        require(creditsToGive>0 || msg.sender==owner1 || msg.sender==printerAddress || msg.value==aprContract.pricePerPrintIntlShipInWei(), "You must have permission!");
        addressToCreditsToSpend[_recipient] ++;
       
        if (msg.value>0) {
                printerAddress.transfer(msg.value);
            } else {
                if (msg.sender==owner1 || msg.sender==printerAddress){
                    return;
                } else {
                    managerAddressToCreditsToGive[msg.sender] --;
                }
            }
    }
    
    
    function removeArtCredit(uint256 _artId) public {
        uint creditsToSpend = artIdToCreditsToSpend[_artId];
        require(creditsToSpend>0, "There must be a credit to remove!");
        require(msg.sender==owner1 || msg.sender==printerAddress , "You must have permission!");
        artIdToCreditsToSpend[_artId] --;
    }
    
    function removeAddressCredit(address _recipient) public {
        uint creditsToSpend = addressToCreditsToSpend[_recipient];
        require(creditsToSpend>0, "There must be a credit to remove!");
        require(msg.sender==owner1 || msg.sender==printerAddress , "You must have permission!");
        addressToCreditsToSpend[_recipient] --;
    }

    //////////////////////////////
    // Owner Functions          //
    //////////////////////////////
    
    function updatePrinterAddress(address payable _printerAddress) public returns (bool) {
        require(msg.sender == owner1 || msg.sender == printerAddress);
        printerAddress = _printerAddress;
        return true;
    }

    function setManagerCredits(address _manager, uint _credits) public returns (bool) {
        require(msg.sender == owner1 || msg.sender == printerAddress);
        managerAddressToCreditsToGive[_manager]=_credits;
        return true;
    }

}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"aprContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"avastarsContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"},{"name":"_credits","type":"uint256"}],"name":"setManagerCredits","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_artId","type":"uint256"}],"name":"giveArtCredit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"addressToCreditsToSpend","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner1","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_avastarId","type":"uint256"},{"name":"_contactMethodAndType","type":"string"}],"name":"mint","outputs":[{"name":"_tokenId","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"managerAddressToCreditsToGive","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"removeAddressCredit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_artId","type":"uint256"}],"name":"removeArtCredit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_printerAddress","type":"address"}],"name":"updatePrinterAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"giveAddressCredit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"printerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"artIdToCreditsToSpend","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_printerAddress","type":"address"},{"name":"_registryContract","type":"address"},{"name":"_artContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

608060405234801561001057600080fd5b50604051606080610d9d8339810180604052606081101561003057600080fd5b508051602082015160409092015160008054600160a060020a03948516600160a060020a03199182161790915560018054928516928216929092179091556002805482163317905560038054939092169216919091179055610d06806100976000396000f3fe6080604052600436106100b65763ffffffff60e060020a60003504166310cdafcd81146100bb5780633176c299146100ec578063321dbe26146101015780635a0d33771461014e5780635eaafbca1461016d57806373688914146101b257806377097fc8146101c757806397038a5814610281578063b0e79d14146102b4578063c4230b11146102e7578063d39e546c14610311578063e243151014610344578063f27f25d11461036a578063f7b822df1461037f575b600080fd5b3480156100c757600080fd5b506100d06103a9565b60408051600160a060020a039092168252519081900360200190f35b3480156100f857600080fd5b506100d06103b8565b34801561010d57600080fd5b5061013a6004803603604081101561012457600080fd5b50600160a060020a0381351690602001356103c7565b604080519115158252519081900360200190f35b61016b6004803603602081101561016457600080fd5b5035610419565b005b34801561017957600080fd5b506101a06004803603602081101561019057600080fd5b5035600160a060020a03166105c5565b60408051918252519081900360200190f35b3480156101be57600080fd5b506100d06105d7565b3480156101d357600080fd5b506101a0600480360360408110156101ea57600080fd5b8135919081019060408101602082013564010000000081111561020c57600080fd5b82018360208201111561021e57600080fd5b8035906020019184600183028401116401000000008311171561024057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105e6945050505050565b34801561028d57600080fd5b506101a0600480360360208110156102a457600080fd5b5035600160a060020a0316610894565b3480156102c057600080fd5b5061016b600480360360208110156102d757600080fd5b5035600160a060020a03166108a6565b3480156102f357600080fd5b5061016b6004803603602081101561030a57600080fd5b50356109c5565b34801561031d57600080fd5b5061013a6004803603602081101561033457600080fd5b5035600160a060020a0316610ad1565b61016b6004803603602081101561035a57600080fd5b5035600160a060020a0316610b34565b34801561037657600080fd5b506100d0610c99565b34801561038b57600080fd5b506101a0600480360360208110156103a257600080fd5b5035610ca8565b600054600160a060020a031681565b600154600160a060020a031681565b600254600090600160a060020a03163314806103ed5750600354600160a060020a031633145b15156103f857600080fd5b50600160a060020a0391909116600090815260066020526040902055600190565b33600090815260066020526040812054908111806104415750600254600160a060020a031633145b806104565750600354600160a060020a031633145b806104db57506000809054906101000a9004600160a060020a0316600160a060020a031663346f151d6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104ac57600080fd5b505afa1580156104c0573d6000803e3d6000fd5b505050506040513d60208110156104d657600080fd5b505134145b151561051f576040805160e560020a62461bcd0281526020600482015260196024820152600080516020610cbb833981519152604482015290519081900360640190fd5b60008281526004602052604081208054600101905534111561057a57600354604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610574573d6000803e3d6000fd5b506105c0565b600254600160a060020a031633148061059d5750600354600160a060020a031633145b156105a857506105c2565b33600090815260066020526040902080546000190190555b505b50565b60056020526000908152604090205481565b600254600160a060020a031681565b600082815260046020818152604080842054338552600583528185205460015483517f6352211e000000000000000000000000000000000000000000000000000000008152958601899052925191949093600160a060020a0390931692636352211e92602480840193829003018186803b15801561066357600080fd5b505afa158015610677573d6000803e3d6000fd5b505050506040513d602081101561068d57600080fd5b5051600160a060020a031633146106ee576040805160e560020a62461bcd02815260206004820152601560248201527f596f75206d757374206f776e2041766173746172210000000000000000000000604482015290519081900360640190fd5b60008211806106fd5750600081115b1515610753576040805160e560020a62461bcd02815260206004820152601360248201527f4d75737420686176652061206372656469742100000000000000000000000000604482015290519081900360640190fd5b60008054604080517f77097fc80000000000000000000000000000000000000000000000000000000081526004810189815260248201928352885160448301528851600160a060020a03909416936377097fc8938b938b939260649091019060208501908083838c5b838110156107d45781810151838201526020016107bc565b50505050905090810190601f1680156108015780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b505050506040513d602081101561084b57600080fd5b505190506000831115610873576000868152600460205260409020805460001901905561088b565b33600090815260056020526040902080546000190190555b95945050505050565b60066020526000908152604090205481565b600160a060020a03811660009081526005602052604081205490811161093c576040805160e560020a62461bcd02815260206004820152602160248201527f5468657265206d75737420626520612063726564697420746f2072656d6f766560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254600160a060020a031633148061095f5750600354600160a060020a031633145b15156109a3576040805160e560020a62461bcd0281526020600482015260196024820152600080516020610cbb833981519152604482015290519081900360640190fd5b50600160a060020a031660009081526005602052604090208054600019019055565b600081815260046020526040812054908111610a51576040805160e560020a62461bcd02815260206004820152602160248201527f5468657265206d75737420626520612063726564697420746f2072656d6f766560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254600160a060020a0316331480610a745750600354600160a060020a031633145b1515610ab8576040805160e560020a62461bcd0281526020600482015260196024820152600080516020610cbb833981519152604482015290519081900360640190fd5b5060009081526004602052604090208054600019019055565b600254600090600160a060020a0316331480610af75750600354600160a060020a031633145b1515610b0257600080fd5b5060038054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b3360009081526006602052604081205490811180610b5c5750600254600160a060020a031633145b80610b715750600354600160a060020a031633145b80610bf657506000809054906101000a9004600160a060020a0316600160a060020a031663346f151d6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610bc757600080fd5b505afa158015610bdb573d6000803e3d6000fd5b505050506040513d6020811015610bf157600080fd5b505134145b1515610c3a576040805160e560020a62461bcd0281526020600482015260196024820152600080516020610cbb833981519152604482015290519081900360640190fd5b600160a060020a03821660009081526005602052604081208054600101905534111561057a57600354604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610574573d6000803e3d6000fd5b600354600160a060020a031681565b6004602052600090815260409020548156fe596f75206d7573742068617665207065726d697373696f6e2100000000000000a165627a7a72305820d3c610a120c22aa626c5d6df973f043d42f142030d92413d395e25de61dc58e8002900000000000000000000000089447f2ca722481d1399ae08b4d7e9471883f6c800000000000000000000000096bf02e2fb3d8f8ad6f61b3ff3fefe6740f84a9a000000000000000000000000f3e778f839934fc819cfa1040aabacecba01e049

Deployed Bytecode

0x6080604052600436106100b65763ffffffff60e060020a60003504166310cdafcd81146100bb5780633176c299146100ec578063321dbe26146101015780635a0d33771461014e5780635eaafbca1461016d57806373688914146101b257806377097fc8146101c757806397038a5814610281578063b0e79d14146102b4578063c4230b11146102e7578063d39e546c14610311578063e243151014610344578063f27f25d11461036a578063f7b822df1461037f575b600080fd5b3480156100c757600080fd5b506100d06103a9565b60408051600160a060020a039092168252519081900360200190f35b3480156100f857600080fd5b506100d06103b8565b34801561010d57600080fd5b5061013a6004803603604081101561012457600080fd5b50600160a060020a0381351690602001356103c7565b604080519115158252519081900360200190f35b61016b6004803603602081101561016457600080fd5b5035610419565b005b34801561017957600080fd5b506101a06004803603602081101561019057600080fd5b5035600160a060020a03166105c5565b60408051918252519081900360200190f35b3480156101be57600080fd5b506100d06105d7565b3480156101d357600080fd5b506101a0600480360360408110156101ea57600080fd5b8135919081019060408101602082013564010000000081111561020c57600080fd5b82018360208201111561021e57600080fd5b8035906020019184600183028401116401000000008311171561024057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506105e6945050505050565b34801561028d57600080fd5b506101a0600480360360208110156102a457600080fd5b5035600160a060020a0316610894565b3480156102c057600080fd5b5061016b600480360360208110156102d757600080fd5b5035600160a060020a03166108a6565b3480156102f357600080fd5b5061016b6004803603602081101561030a57600080fd5b50356109c5565b34801561031d57600080fd5b5061013a6004803603602081101561033457600080fd5b5035600160a060020a0316610ad1565b61016b6004803603602081101561035a57600080fd5b5035600160a060020a0316610b34565b34801561037657600080fd5b506100d0610c99565b34801561038b57600080fd5b506101a0600480360360208110156103a257600080fd5b5035610ca8565b600054600160a060020a031681565b600154600160a060020a031681565b600254600090600160a060020a03163314806103ed5750600354600160a060020a031633145b15156103f857600080fd5b50600160a060020a0391909116600090815260066020526040902055600190565b33600090815260066020526040812054908111806104415750600254600160a060020a031633145b806104565750600354600160a060020a031633145b806104db57506000809054906101000a9004600160a060020a0316600160a060020a031663346f151d6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104ac57600080fd5b505afa1580156104c0573d6000803e3d6000fd5b505050506040513d60208110156104d657600080fd5b505134145b151561051f576040805160e560020a62461bcd0281526020600482015260196024820152600080516020610cbb833981519152604482015290519081900360640190fd5b60008281526004602052604081208054600101905534111561057a57600354604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610574573d6000803e3d6000fd5b506105c0565b600254600160a060020a031633148061059d5750600354600160a060020a031633145b156105a857506105c2565b33600090815260066020526040902080546000190190555b505b50565b60056020526000908152604090205481565b600254600160a060020a031681565b600082815260046020818152604080842054338552600583528185205460015483517f6352211e000000000000000000000000000000000000000000000000000000008152958601899052925191949093600160a060020a0390931692636352211e92602480840193829003018186803b15801561066357600080fd5b505afa158015610677573d6000803e3d6000fd5b505050506040513d602081101561068d57600080fd5b5051600160a060020a031633146106ee576040805160e560020a62461bcd02815260206004820152601560248201527f596f75206d757374206f776e2041766173746172210000000000000000000000604482015290519081900360640190fd5b60008211806106fd5750600081115b1515610753576040805160e560020a62461bcd02815260206004820152601360248201527f4d75737420686176652061206372656469742100000000000000000000000000604482015290519081900360640190fd5b60008054604080517f77097fc80000000000000000000000000000000000000000000000000000000081526004810189815260248201928352885160448301528851600160a060020a03909416936377097fc8938b938b939260649091019060208501908083838c5b838110156107d45781810151838201526020016107bc565b50505050905090810190601f1680156108015780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15801561082157600080fd5b505af1158015610835573d6000803e3d6000fd5b505050506040513d602081101561084b57600080fd5b505190506000831115610873576000868152600460205260409020805460001901905561088b565b33600090815260056020526040902080546000190190555b95945050505050565b60066020526000908152604090205481565b600160a060020a03811660009081526005602052604081205490811161093c576040805160e560020a62461bcd02815260206004820152602160248201527f5468657265206d75737420626520612063726564697420746f2072656d6f766560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254600160a060020a031633148061095f5750600354600160a060020a031633145b15156109a3576040805160e560020a62461bcd0281526020600482015260196024820152600080516020610cbb833981519152604482015290519081900360640190fd5b50600160a060020a031660009081526005602052604090208054600019019055565b600081815260046020526040812054908111610a51576040805160e560020a62461bcd02815260206004820152602160248201527f5468657265206d75737420626520612063726564697420746f2072656d6f766560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254600160a060020a0316331480610a745750600354600160a060020a031633145b1515610ab8576040805160e560020a62461bcd0281526020600482015260196024820152600080516020610cbb833981519152604482015290519081900360640190fd5b5060009081526004602052604090208054600019019055565b600254600090600160a060020a0316331480610af75750600354600160a060020a031633145b1515610b0257600080fd5b5060038054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b3360009081526006602052604081205490811180610b5c5750600254600160a060020a031633145b80610b715750600354600160a060020a031633145b80610bf657506000809054906101000a9004600160a060020a0316600160a060020a031663346f151d6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610bc757600080fd5b505afa158015610bdb573d6000803e3d6000fd5b505050506040513d6020811015610bf157600080fd5b505134145b1515610c3a576040805160e560020a62461bcd0281526020600482015260196024820152600080516020610cbb833981519152604482015290519081900360640190fd5b600160a060020a03821660009081526005602052604081208054600101905534111561057a57600354604051600160a060020a03909116903480156108fc02916000818181858888f19350505050158015610574573d6000803e3d6000fd5b600354600160a060020a031681565b6004602052600090815260409020548156fe596f75206d7573742068617665207065726d697373696f6e2100000000000000a165627a7a72305820d3c610a120c22aa626c5d6df973f043d42f142030d92413d395e25de61dc58e80029

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

00000000000000000000000089447f2ca722481d1399ae08b4d7e9471883f6c800000000000000000000000096bf02e2fb3d8f8ad6f61b3ff3fefe6740f84a9a000000000000000000000000f3e778f839934fc819cfa1040aabacecba01e049

-----Decoded View---------------
Arg [0] : _printerAddress (address): 0x89447f2Ca722481d1399ae08b4d7E9471883F6c8
Arg [1] : _registryContract (address): 0x96bF02E2Fb3D8f8AD6f61B3fF3fefE6740f84a9a
Arg [2] : _artContract (address): 0xF3E778F839934fC819cFA1040AabaCeCBA01e049

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000089447f2ca722481d1399ae08b4d7e9471883f6c8
Arg [1] : 00000000000000000000000096bf02e2fb3d8f8ad6f61b3ff3fefe6740f84a9a
Arg [2] : 000000000000000000000000f3e778f839934fc819cfa1040aabacecba01e049


Deployed Bytecode Sourcemap

9093:4603:0:-;;;;;;;;;-1:-1:-1;;;9093:4603:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9239:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9239:48:0;;;;;;;;-1:-1:-1;;;;;9239:48:0;;;;;;;;;;;;;;9294:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9294:41:0;;;;13448:243;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13448:243:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13448:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;10973:690;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10973:690:0;;;;;9481:58;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9481:58:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9481:58:0;-1:-1:-1;;;;;9481:58:0;;;;;;;;;;;;;;;;;;;9344:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9344:21:0;;;;10136:719;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10136:719:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10136:719:0;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10136:719:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10136:719:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10136:719:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10136:719:0;;-1:-1:-1;10136:719:0;;-1:-1:-1;;;;;10136:719:0;9546:64;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9546:64:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9546:64:0;-1:-1:-1;;;;;9546:64:0;;;12736:352;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12736:352:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12736:352:0;-1:-1:-1;;;;;12736:352:0;;;12392:332;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12392:332:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12392:332:0;;;13210:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13210:230:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13210:230:0;-1:-1:-1;;;;;13210:230:0;;;11671:703;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11671:703:0;-1:-1:-1;;;;;11671:703:0;;;9372:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9372:37:0;;;;9418:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9418:56:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9418:56:0;;;9239:48;;;-1:-1:-1;;;;;9239:48:0;;:::o;9294:41::-;;;-1:-1:-1;;;;;9294:41:0;;:::o;13448:243::-;13563:6;;13524:4;;-1:-1:-1;;;;;13563:6:0;13549:10;:20;;:52;;-1:-1:-1;13587:14:0;;-1:-1:-1;;;;;13587:14:0;13573:10;:28;13549:52;13541:61;;;;;;;;-1:-1:-1;;;;;;13613:39:0;;;;;;;;:29;:39;;;;;:48;13679:4;;13448:243::o;10973:690::-;11089:10;11038:18;11059:41;;;:29;:41;;;;;;;11119:15;;;:37;;-1:-1:-1;11150:6:0;;-1:-1:-1;;;;;11150:6:0;11138:10;:18;11119:37;:67;;;-1:-1:-1;11172:14:0;;-1:-1:-1;;;;;11172:14:0;11160:10;:26;11119:67;:122;;;;11201:11;;;;;;;;;-1:-1:-1;;;;;11201:11:0;-1:-1:-1;;;;;11201:38:0;;:40;;;;;-1:-1:-1;;;11201:40:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11201:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11201:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11201:40:0;11190:9;:51;11119:122;11111:160;;;;;;;-1:-1:-1;;;;;11111:160:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11111:160:0;;;;;;;;;;;;;;;11282:29;;;;:21;:29;;;;;:32;;;;;;11339:9;:11;11335:321;;;11371:14;;:34;;-1:-1:-1;;;;;11371:14:0;;;;11395:9;11371:34;;;;;:14;:34;:14;:34;11395:9;11371:14;:34;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11371:34:0;11335:321;;;11462:6;;-1:-1:-1;;;;;11462:6:0;11450:10;:18;;:48;;-1:-1:-1;11484:14:0;;-1:-1:-1;;;;;11484:14:0;11472:10;:26;11450:48;11446:195;;;11522:7;;;11446:195;11607:10;11577:41;;;;:29;:41;;;;;:44;;-1:-1:-1;;11577:44:0;;;11446:195;10973:690;;;:::o;9481:58::-;;;;;;;;;;;;;:::o;9344:21::-;;;-1:-1:-1;;;;;9344:21:0;;:::o;10136:719::-;10223:16;10279:33;;;:21;:33;;;;;;;;;10378:10;10354:35;;:23;:35;;;;;;10422:16;;:36;;;;;;;;;;;;;10279:33;;10354:35;;-1:-1:-1;;;;;10422:16:0;;;;:24;;:36;;;;;;;;;;:16;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;10422:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10422:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10422:36:0;-1:-1:-1;;;;;10408:50:0;:10;:50;10400:84;;;;;-1:-1:-1;;;;;10400:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10520:1;10503:16;:18;:45;;;;10547:1;10525:20;:23;10503:45;10495:78;;;;;;;-1:-1:-1;;;;;10495:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10584:19;10606:11;;:51;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10606:11:0;;;;:16;;10623:10;;10635:21;;10606:51;;;;;;;;;;;;;10584:19;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10606:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10606:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10606:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10606:51:0;;-1:-1:-1;10690:1:0;10672:19;;10668:151;;;10704:33;;;;:21;:33;;;;;:36;;-1:-1:-1;;10704:36:0;;;10668:151;;;10793:10;10769:35;;;;:23;:35;;;;;:38;;-1:-1:-1;;10769:38:0;;;10668:151;10836:11;10136:719;-1:-1:-1;;;;;10136:719:0:o;9546:64::-;;;;;;;;;;;;;:::o;12736:352::-;-1:-1:-1;;;;;12825:35:0;;12803:19;12825:35;;;:23;:35;;;;;;;12879:16;;12871:62;;;;;-1:-1:-1;;;;;12871:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12964:6;;-1:-1:-1;;;;;12964:6:0;12952:10;:18;;:48;;-1:-1:-1;12986:14:0;;-1:-1:-1;;;;;12986:14:0;12974:10;:26;12952:48;12944:87;;;;;;;-1:-1:-1;;;;;12944:87:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12944:87:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13042:35:0;;;;;:23;:35;;;;;:38;;-1:-1:-1;;13042:38:0;;;12736:352::o;12392:332::-;12451:19;12473:29;;;:21;:29;;;;;;;12521:16;;12513:62;;;;;-1:-1:-1;;;;;12513:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12606:6;;-1:-1:-1;;;;;12606:6:0;12594:10;:18;;:48;;-1:-1:-1;12628:14:0;;-1:-1:-1;;;;;12628:14:0;12616:10;:26;12594:48;12586:87;;;;;;;-1:-1:-1;;;;;12586:87:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;12586:87:0;;;;;;;;;;;;;;;-1:-1:-1;12684:29:0;;;;:21;:29;;;;;:32;;-1:-1:-1;;12684:32:0;;;12392:332::o;13210:230::-;13328:6;;13289:4;;-1:-1:-1;;;;;13328:6:0;13314:10;:20;;:52;;-1:-1:-1;13352:14:0;;-1:-1:-1;;;;;13352:14:0;13338:10;:28;13314:52;13306:61;;;;;;;;-1:-1:-1;13378:14:0;:32;;-1:-1:-1;;;;;13378:32:0;;-1:-1:-1;;13378:32:0;;;;;;;13210:230;;;:::o;11671:703::-;11795:10;11744:18;11765:41;;;:29;:41;;;;;;;11825:15;;;:37;;-1:-1:-1;11856:6:0;;-1:-1:-1;;;;;11856:6:0;11844:10;:18;11825:37;:67;;;-1:-1:-1;11878:14:0;;-1:-1:-1;;;;;11878:14:0;11866:10;:26;11825:67;:122;;;;11907:11;;;;;;;;;-1:-1:-1;;;;;11907:11:0;-1:-1:-1;;;;;11907:38:0;;:40;;;;;-1:-1:-1;;;11907:40:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11907:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11907:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11907:40:0;11896:9;:51;11825:122;11817:160;;;;;;;-1:-1:-1;;;;;11817:160:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;11817:160:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11988:35:0;;;;;;:23;:35;;;;;:38;;;;;;12050:9;:11;12046:321;;;12082:14;;:34;;-1:-1:-1;;;;;12082:14:0;;;;12106:9;12082:34;;;;;:14;:34;:14;:34;12106:9;12082:14;:34;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;9372:37:0;;;-1:-1:-1;;;;;9372:37:0;;:::o;9418:56::-;;;;;;;;;;;;;:::o

Swarm Source

bzzr://d3c610a120c22aa626c5d6df973f043d42f142030d92413d395e25de61dc58e8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.