Contract 0xd275a265038C9ab985bc96a81AaabCcEEf8f57B9

Contract Overview

Balance:
0.051 Ether
Txn Hash
Method
Block
From
To
Value
0x789ce1b0c61d95e580da37a6a3cf981ecf7c271791843e0e7c9a0798fac48735List Work For Sa...20131302018-03-28 19:56:321561 days 23 mins ago0xd081ab2e61c271c7fcfa3c0c3d28cbb93d399a32 IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0017649221
0xd8aad3e49b5e333e729501b7a766383f51ca2a05d148109e9326fe61b99eb2cdBuy11003512017-10-20 23:10:031719 days 21 hrs ago0xd081ab2e61c271c7fcfa3c0c3d28cbb93d399a32 IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90.01 Ether0.0021563621
0xca8146bdd87b8e6ae4b4b349c01026a719ddf7c36f7e73f4e6cdfa725f30749eBuy11003482017-10-20 23:09:181719 days 21 hrs ago0xd081ab2e61c271c7fcfa3c0c3d28cbb93d399a32 IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90.5 Ether0.0021550221
0x4842268d46a1b038f13f308016aab4823a298f8c189fc0eb635f1a867cd7424cList Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xa8c07d1faea60a7f4db385273bbf13c6f97ee1102ce283efa46b798672f38506List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x9c103e3d3156f9e2677afefb3bf4569fc4232e73bd2c584a02e1b3acf76cff50List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x0a1b092f494d0daf3a00890ecb422383086b73c1359d0653f3ad704aca73584aList Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xe623fad1d24064158d586b0c243b40546e6c3491ea498032f2401049e84cf5feList Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xe7f23f6d3d1a430665b4bf5551de945771de724ff93eaa35ea980dcaf4a793f6List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xbfbdd91ceeb634923f7e10786990bd64508fc866fbe8d1b24f4c780f36cc3e09List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x286f6314b57a4e088639b1987cfeb9b4b4fa4d5a59cfddc37d1ac311de4adfcaList Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x9c4a2a696760cd407d10a210080b386c0be4d51636f2da8e9c6e3b4343ba5312List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x46aa3cba19ed660594f951cba11abbe08e74ab19ff145a1166fe9f33472316a7List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xfed8e8e992908fc7608715020c60f147c2be426c6b173ba415a4886b6f5ee3eeList Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x964fad0c564af5ef1cc1c070b45b0d4a471e44d7315533eb04e04817ffbb5b20List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x0ab3e891cde7f8e7bec94c8a0a88a2fc89d0f68487167426a46f41ab9bc7d3f7List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x3c57e9b14985e26feabcd0b0e16e8777463c08f71a24607048fc233c87fe56a5List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xa551a365b21e24e85580e00bd4179ea16fb1a691bbf10f32f93cf31c33786114List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xb37c2e1d5edaa9e78d21339694ed8ff4d966de9de34824a050c58b06cc5e1a58List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x624d398a54ae09e6887733e5a45cab95c59183b3baef981a23017a2af828156cList Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xc6fe030bd2ada89beff05689c16897717174779009453f306e311478ef296971List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x8251df51fc906d3a610f34adf163e9d49579f1fd7d32ef606816f0a857fb607eList Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x97c1517c79941d1ff4ec84adabba079cbc390000e6c5d7fbcbbfc470ee93d642List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0x989a244c2f49799fcb1c44d9e2be5ccfbf670634c0f581c5513557d0214e92e4List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
0xac6803dd82bd3d83dc01e4ebac8af69ee4c855527c8806cc3de119a6c72bdea8List Work For Sa...10738692017-10-16 4:52:241724 days 15 hrs ago0xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e IN  0xd275a265038c9ab985bc96a81aaabcceef8f57b90 Ether0.0016821620
[ Download CSV Export 
Latest 4 internal transactions
Parent Txn Hash Block From To Value
0xd8aad3e49b5e333e729501b7a766383f51ca2a05d148109e9326fe61b99eb2cd11003512017-10-20 23:10:031719 days 21 hrs ago 0xd275a265038c9ab985bc96a81aaabcceef8f57b90xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e0.008 Ether
0xd8aad3e49b5e333e729501b7a766383f51ca2a05d148109e9326fe61b99eb2cd11003512017-10-20 23:10:031719 days 21 hrs ago 0xd275a265038c9ab985bc96a81aaabcceef8f57b90xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e0.001 Ether
0xca8146bdd87b8e6ae4b4b349c01026a719ddf7c36f7e73f4e6cdfa725f30749e11003482017-10-20 23:09:181719 days 21 hrs ago 0xd275a265038c9ab985bc96a81aaabcceef8f57b90xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e0.4 Ether
0xca8146bdd87b8e6ae4b4b349c01026a719ddf7c36f7e73f4e6cdfa725f30749e11003482017-10-20 23:09:181719 days 21 hrs ago 0xd275a265038c9ab985bc96a81aaabcceef8f57b90xf5136f6a8c2c8c559fd1468d81a3f7dc9d2dc26e0.05 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ArtGallery

Compiler Version
v0.4.17+commit.bdeb9e52

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-10-16
*/

pragma solidity 0.4.17;

contract ArtGallery {

    /// LogPurchase is emitted when an artwork is purchased.
    event LogPurchase(
        address newOwner,
        uint256 purchaseAmount,
        uint numEdition
    );

    /// PayoutOwner is emitted when an owner is paid.
    event PayoutOwner(
        address owner,
        uint256 purchaseAmount,
        uint numEdition
    );

    /// PayoutArtist is emitted when an artist is paid.
    event PayoutArtist(
        address artist,
        uint256 purchaseAmount,
        uint numEdition
    );

    /// curator is the contract owner.
    address public contractOwner;

    /// withdrawAddress is the cold-storage address.
    address private withdrawAddress;

    /// numArtworks is a counter for the number of artworks in the gallery.
    uint numArtworks;

    struct ArtWork {
        /// artist is the artwork's artist wallet.
        address artist;

        /// artistName is the artwork's artist name.
        string artistName;

        /// title is the name of the artwork.
        string title;

        /// title is the description of the artwork.
        string description;

        /// createdYear is the year the artwork was created.
        uint createdYear;

        /// artThumbHash is the IPFS hash of the artwork thumbnail.
        string artThumbHash;

        /// artHash is the IPFS hash of the artwork thumbnail.
        string artHash;

        /// numEditions is the number of number of editions.
        uint numEditions;

        /// artistHasSigned flags whether the artist has signed the artwork.
        bool artistHasSigned;

        /// editions is an array of all the artwork editions.
        /// getter function automatically created.
        mapping (uint => Edition) editions;
    }

    /// artworks is an array of all the artworks in the gallery..
    /// getter function automatically created.
    mapping (uint => ArtWork) public artworks;

    /// Provenence is a data structure to track the purchase details of the artwork.
    struct Provenence {
        address owner;
        uint purchaseAmount;
        uint purchaseDate;
    }

    struct Edition {
        /// owner is the artwork owner.
        address owner;

        /// listingPrice is the value in wei that the artwork is on sale for.
        uint256 listingPrice;

        /// forSaleDate is the date at which the artwork is available for sale.
        /// Stored as seconds since epoch.
        uint forSaleDate;

        /// forSale flags whether the artwork is for sale.
        bool forSale;

        /// provenence is an array of all artwork purchases.
        Provenence[] provenence;
    }

    /// ownerShare is the percentage the owner of the artwork receives from a sale.
    uint32 private constant ownerShare = 80;

    /// artistShare is the percentage the artist of the artwork receives from a sale.
    uint32 private constant artistShare = 10;

    /// contractOwnerShare is the percentage the contract owner receives from a sale.
    uint32 private constant contractOwnerShare = 10;

    /// onlyOwner ensures only the artwork owner can execute a function.
    modifier onlyOwner(uint numArtwork, uint numEdition) {
        require(msg.sender == artworks[numArtwork].editions[numEdition].owner);
        _;
    }

    /// onlyContractOwner ensures only the contract owner can execute a function.
    modifier onlyContractOwner() {
        require(msg.sender == contractOwner);
        _;
    }

    /// onlyArtist ensures only the artwork artist can execute a function.
    modifier onlyArtist(uint numArtwork) {
        require(msg.sender == artworks[numArtwork].artist);
        _;
    }

    function ArtGallery(address _withdrawAddress)
    public {
        if (_withdrawAddress == address(0)) revert();

        // Set the withdraw address.
        withdrawAddress = _withdrawAddress;

        // contractOwner is the contract creator
        contractOwner = msg.sender;

        numArtworks = 0;
    }

    function createArtwork(address _artist,
                           string _artistName,
                           string _title,
                           string _description,
                           uint _createdYear,
                           string _artThumbHash,
                           string _artHash,
                           uint _numEditions)
    onlyContractOwner()
    public {

        if (_artist == address(0)) revert();
        if (bytes(_artistName).length == 0) revert();
        if (bytes(_title).length == 0) revert();
        if (bytes(_description).length == 0) revert();
        if (_createdYear == 0) revert();
        if (bytes(_artThumbHash).length == 0) revert();
        if (bytes(_artHash).length == 0) revert();
        if (_numEditions < 1) revert();

        artworks[numArtworks].artist = _artist;
        artworks[numArtworks].artistName = _artistName;
        artworks[numArtworks].title = _title;
        artworks[numArtworks].description = _description;
        artworks[numArtworks].createdYear = _createdYear;
        artworks[numArtworks].artThumbHash = _artThumbHash;
        artworks[numArtworks].artHash = _artHash;
        artworks[numArtworks].numEditions = _numEditions;
        artworks[numArtworks].artistHasSigned = false;

        // Create all editions
        for(uint i=0; i<artworks[numArtworks].numEditions; i++) {
            artworks[numArtworks].editions[i].owner = _artist;
            artworks[numArtworks].editions[i].listingPrice = 0;
            artworks[numArtworks].editions[i].forSaleDate = 0;
            artworks[numArtworks].editions[i].forSale = false;
        }

        numArtworks += 1;
    }

    /// If an artwork is for sale, process the purchase.
    function buy(uint numArtwork, uint numEdition) public payable returns (bool) {
        if (numArtwork < 0) revert();
        if (numEdition < 0) revert();
        if (artworks[numArtwork].editions[numEdition].forSale != true) revert();
        if (artworks[numArtwork].artistHasSigned != true) revert();
        if (msg.value < artworks[numArtwork].editions[numEdition].listingPrice) revert();
        if (artworks[numArtwork].editions[numEdition].forSaleDate > now) revert();

        uint256 artistAmount = msg.value / 100 * artistShare;
        uint256 ownerAmount = msg.value / 100 * ownerShare;

        // Send the artist their share
        if (!artworks[numArtwork].artist.send(artistAmount)) {
            revert();
        }
        PayoutArtist(artworks[numArtwork].artist, msg.value, numEdition);

        // Send the current owner their share
        if (!artworks[numArtwork].editions[numEdition].owner.send(ownerAmount)) {
            revert();
        }
        PayoutOwner(artworks[numArtwork].editions[numEdition].owner, msg.value, numEdition);

        // Artwork is no longer for sale
        artworks[numArtwork].editions[numEdition].forSale = false;
        artworks[numArtwork].editions[numEdition].forSaleDate = 0;
        artworks[numArtwork].editions[numEdition].listingPrice = 0;

        // Change ownership
        artworks[numArtwork].editions[numEdition].owner = msg.sender;

        artworks[numArtwork].editions[numEdition].provenence.push(Provenence({
            owner: artworks[numArtwork].editions[numEdition].owner,
            purchaseAmount: msg.value,
            purchaseDate: now
        }));

        LogPurchase(msg.sender, msg.value, numEdition);

        return true;
    }

    /// listWorkForSale allows the artist to list the artwork for sale.
    function listWorkForSale(uint numArtwork, uint numEdition, uint256 _listingPrice, uint _forSaleDate)
    onlyOwner(numArtwork, numEdition)
    public returns (bool) {
        if (numArtwork < 0) revert();
        if (numEdition < 0) revert();
        if (_listingPrice <= 0) revert();
        if (_forSaleDate <= 0) revert();
        if (artworks[numArtwork].artistHasSigned != true) revert();

        artworks[numArtwork].editions[numEdition].listingPrice = _listingPrice;
        artworks[numArtwork].editions[numEdition].forSaleDate = _forSaleDate;
        artworks[numArtwork].editions[numEdition].forSale = true;

        return artworks[numArtwork].editions[numEdition].forSale;
    }

    /// delistWorkForSale allows the artist to delist the artwork from sale.
    function delistWorkForSale(uint numArtwork, uint numEdition) 
    onlyOwner(numArtwork, numEdition)
    public returns (bool) {
        if (numArtwork < 0) revert();
        if (numEdition < 0) revert();
        if (artworks[numArtwork].editions[numEdition].forSale != true) revert();

        artworks[numArtwork].editions[numEdition].forSale = false;
        artworks[numArtwork].editions[numEdition].forSaleDate = 0;
        artworks[numArtwork].editions[numEdition].listingPrice = 0;

        return artworks[numArtwork].editions[numEdition].forSale;
    }

    /// signWork allows the artist to sign the work.
    function signWork(uint numArtwork) 
    onlyArtist(numArtwork) 
    public returns (bool) {
        if (numArtwork < 0) revert();
        if (artworks[numArtwork].artistHasSigned) revert();

        artworks[numArtwork].artistHasSigned = true;

        return artworks[numArtwork].artistHasSigned;
    }

    /// getSalesNum returns the number of purchases.
    function getSalesNum(uint numArtwork, uint numEdition) public constant returns (uint) {
        if (numArtwork < 0) revert();
        if (numEdition < 0) revert();
        return artworks[numArtwork].editions[numEdition].provenence.length;
    }

    /// getEdition returns the edition specific artwork details.
    function getEdition(uint numArtwork, uint numEdition) public constant returns (address, uint256, uint, bool) {
        if (numArtwork < 0) revert();
        if (numEdition < 0) revert();
        return (
            artworks[numArtwork].editions[numEdition].owner,
            artworks[numArtwork].editions[numEdition].listingPrice,
            artworks[numArtwork].editions[numEdition].forSaleDate,
            artworks[numArtwork].editions[numEdition].forSale
        );
    }

    /// getCheapestEditionForSale returns the ediiton for sale for the least amount of all editions.
    /// Note: Returns the edition number, not the index number.
    function getCheapestEditionForSale(uint numArtwork) public constant returns (uint, uint256) {
        if (numArtwork < 0) revert();
        uint cheapestEdition = 0;
        uint256 cheapestAmount = 0;
        bool foundFirst = false;
        for(uint i=0; i<artworks[numArtwork].numEditions; i++) {
            if (artworks[numArtwork].editions[i].forSale) {
                if (!foundFirst) {
                    cheapestEdition = i;
                    cheapestAmount = artworks[numArtwork].editions[i].listingPrice;
                    foundFirst = true;
                }
                if (artworks[numArtwork].editions[i].listingPrice < cheapestAmount) {
                    cheapestEdition = i;
                    cheapestAmount = artworks[numArtwork].editions[i].listingPrice;
                }
            }
        }
        if (cheapestAmount > 0) {
            return (cheapestEdition + 1, cheapestAmount);
        } else {
            return (0, 0);
        }
    }

    /// getProvenence returns the edition specific artwork details.
    function getProvenence(uint numArtwork, uint numEdition, uint provenenceId) public constant returns (address, uint256, uint) {
        if (numArtwork < 0) revert();
        if (numEdition < 0) revert();
        if (provenenceId < 0) revert();
        return (
            artworks[numArtwork].editions[numEdition].provenence[provenenceId].owner,
            artworks[numArtwork].editions[numEdition].provenence[provenenceId].purchaseAmount,
            artworks[numArtwork].editions[numEdition].provenence[provenenceId].purchaseDate
        );
    }

    /// withdraw allows the contract owner to transfer out the contract balance.
    function withdraw() public
    onlyContractOwner() {
        withdrawAddress.transfer(this.balance);
    }

    /// Used for development. Remove for deployment.
    function destroy() public
    onlyContractOwner() {
        selfdestruct(withdrawAddress);
    }
}

Contract ABI

[{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"numArtwork","type":"uint256"},{"name":"numEdition","type":"uint256"}],"name":"getSalesNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"numArtwork","type":"uint256"},{"name":"numEdition","type":"uint256"}],"name":"delistWorkForSale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"numArtwork","type":"uint256"}],"name":"signWork","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"artworks","outputs":[{"name":"artist","type":"address"},{"name":"artistName","type":"string"},{"name":"title","type":"string"},{"name":"description","type":"string"},{"name":"createdYear","type":"uint256"},{"name":"artThumbHash","type":"string"},{"name":"artHash","type":"string"},{"name":"numEditions","type":"uint256"},{"name":"artistHasSigned","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"numArtwork","type":"uint256"},{"name":"numEdition","type":"uint256"},{"name":"_listingPrice","type":"uint256"},{"name":"_forSaleDate","type":"uint256"}],"name":"listWorkForSale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"numArtwork","type":"uint256"},{"name":"numEdition","type":"uint256"},{"name":"provenenceId","type":"uint256"}],"name":"getProvenence","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"numArtwork","type":"uint256"}],"name":"getCheapestEditionForSale","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"numArtwork","type":"uint256"},{"name":"numEdition","type":"uint256"}],"name":"buy","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_artist","type":"address"},{"name":"_artistName","type":"string"},{"name":"_title","type":"string"},{"name":"_description","type":"string"},{"name":"_createdYear","type":"uint256"},{"name":"_artThumbHash","type":"string"},{"name":"_artHash","type":"string"},{"name":"_numEditions","type":"uint256"}],"name":"createArtwork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"numArtwork","type":"uint256"},{"name":"numEdition","type":"uint256"}],"name":"getEdition","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_withdrawAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"},{"indexed":false,"name":"purchaseAmount","type":"uint256"},{"indexed":false,"name":"numEdition","type":"uint256"}],"name":"LogPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"purchaseAmount","type":"uint256"},{"indexed":false,"name":"numEdition","type":"uint256"}],"name":"PayoutOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"artist","type":"address"},{"indexed":false,"name":"purchaseAmount","type":"uint256"},{"indexed":false,"name":"numEdition","type":"uint256"}],"name":"PayoutArtist","type":"event"}]

6060604052341561000f57600080fd5b6040516020806114c883398101604052808051915050600160a060020a038116151561003a57600080fd5b60018054600160a060020a03928316600160a060020a03199182161790915560008054339093169290911691909117815560025561144b8061007d6000396000f300606060405236156100c25763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633ccfd60b81146100c757806342b97086146100dc5780634369a55a1461010757806346053d31146101345780634b6026731461014a5780634c2c87a8146104035780637e3f84fa1461042257806383197ef014610474578063aba1262d14610487578063ce606ee0146104b5578063d6febde8146104e4578063defd803b146104f2578063e5807df514610664575b600080fd5b34156100d257600080fd5b6100da6106b3565b005b34156100e757600080fd5b6100f5600435602435610709565b60405190815260200160405180910390f35b341561011257600080fd5b61012060043560243561074b565b604051901515815260200160405180910390f35b341561013f57600080fd5b61012060043561080c565b341561015557600080fd5b610160600435610888565b604051600160a060020a038a1681526080810186905260e0810183905281151561010080830191909152610120602083018181528b54600260018216159094026000190116929092049083018190526040830190606084019060a085019060c08601906101408701908f9080156102185780601f106101ed57610100808354040283529160200191610218565b820191906000526020600020905b8154815290600101906020018083116101fb57829003601f168201915b505086810385528d54600260001961010060018416150201909116048082526020909101908e90801561028c5780601f106102615761010080835404028352916020019161028c565b820191906000526020600020905b81548152906001019060200180831161026f57829003601f168201915b505086810384528c54600260001961010060018416150201909116048082526020909101908d9080156103005780601f106102d557610100808354040283529160200191610300565b820191906000526020600020905b8154815290600101906020018083116102e357829003601f168201915b505086810383528a54600260001961010060018416150201909116048082526020909101908b9080156103745780601f1061034957610100808354040283529160200191610374565b820191906000526020600020905b81548152906001019060200180831161035757829003601f168201915b505086810382528954600260001961010060018416150201909116048082526020909101908a9080156103e85780601f106103bd576101008083540402835291602001916103e8565b820191906000526020600020905b8154815290600101906020018083116103cb57829003601f168201915b50509e50505050505050505050505050505060405180910390f35b341561040e57600080fd5b6101206004356024356044356064356108d6565b341561042d57600080fd5b61043e6004356024356044356109b0565b6040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390f35b341561047f57600080fd5b6100da610aa7565b341561049257600080fd5b61049d600435610ad0565b60405191825260208201526040908101905180910390f35b34156104c057600080fd5b6104c8610be6565b604051600160a060020a03909116815260200160405180910390f35b610120600435602435610bf5565b34156104fd57600080fd5b6100da60048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496505093359350610fc492505050565b341561066f57600080fd5b61067d6004356024356112ac565b604051600160a060020a039094168452602084019290925260408084019190915290151560608301526080909101905180910390f35b60005433600160a060020a039081169116146106ce57600080fd5b600154600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561070757600080fd5b565b60008083101561071857600080fd5b600082101561072657600080fd5b5060009182526003602090815260408084209284526009909201905290206004015490565b60008281526003602090815260408083208484526009019091528120548390839033600160a060020a0390811691161461078457600080fd5b600085101561079257600080fd5b60008410156107a057600080fd5b6000858152600360208181526040808420888552600901909152909120015460ff1615156001146107d057600080fd5b505050600091825260036020818152604080852093855260099093019052908220908101805460ff191690556002810182905560010181905590565b600081815260036020526040812054829033600160a060020a0390811691161461083557600080fd5b600083101561084357600080fd5b60008381526003602052604090206008015460ff161561086257600080fd5b50506000908152600360205260409020600801805460ff19166001179081905560ff1690565b60036020819052600091825260409091208054600482015460078301546008840154600160a060020a0390931694600185019460028101949181019392600582019260069092019160ff1689565b60008481526003602090815260408083208684526009019091528120548590859033600160a060020a0390811691161461090f57600080fd5b600087101561091d57600080fd5b600086101561092b57600080fd5b6000851161093857600080fd5b6000841161094557600080fd5b60008781526003602052604090206008015460ff16151560011461096857600080fd5b5050506000938452600360208181526040808720958752600990950190529290932060018082019290925560028101939093559101805460ff19169091179081905560ff1690565b6000806000808610156109c257600080fd5b60008510156109d057600080fd5b60008410156109de57600080fd5b60008681526003602090815260408083208884526009019091529020600401805485908110610a0957fe5b600091825260208083206003928302015489845291815260408084208985526009019091529091206004018054600160a060020a039092169186908110610a4c57fe5b60009182526020808320600392830201600101548a845291815260408084208a8552600901909152909120600401805487908110610a8657fe5b90600052602060002090600302016002015492509250925093509350939050565b60005433600160a060020a03908116911614610ac257600080fd5b600154600160a060020a0316ff5b6000806000806000806000871015610ae757600080fd5b5060009250829150819050805b600087815260036020526040902060070154811015610bbe576000878152600360208181526040808420858552600901909152909120015460ff1615610bb657811515610b6757600087815260036020908152604080832084845260090190915290206001908101549194509092509050825b600087815260036020908152604080832084845260090190915290206001015483901015610bb65760008781526003602090815260408083208484526009019091529020600101549093509150825b600101610af4565b6000831115610bd557836001018395509550610bdd565b600095508594505b50505050915091565b600054600160a060020a031681565b600080600080851015610c0757600080fd5b6000841015610c1557600080fd5b6000858152600360208181526040808420888552600901909152909120015460ff161515600114610c4557600080fd5b60008581526003602052604090206008015460ff161515600114610c6857600080fd5b6000858152600360209081526040808320878452600901909152902060010154341015610c9457600080fd5b600085815260036020908152604080832087845260090190915290206002015442901115610cc157600080fd5b5050600083815260036020526040908190205460643404600a810292605090910291600160a060020a0316906108fc84150290849051600060405180830381858888f193505050501515610d1457600080fd5b60008581526003602052604090819020547f59890e293b9354303662ffa4934ca554287201497d5fd9b7b853004d72ab009f91600160a060020a039091169034908790518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a160008581526003602090815260408083208784526009019091529081902054600160a060020a03169082156108fc0290839051600060405180830381858888f193505050501515610dda57600080fd5b600085815260036020908152604080832087845260090190915290819020547fd059640b7955aad4da0a0cd04fe0d7cb198f875a72df36ec1d6592d4379bf16a91600160a060020a039091169034908790518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a160008581526003602081815260408084208885526009019091528220908101805460ff1916905560028101829055600180820192909255805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0316178155600401805490918101610ece8382611314565b916000526020600020906003020160006060604051908101604090815260008a8152600360209081528282208b835260090181529082902054600160a060020a03168352349083015242908201529190508151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201518160010155604082015181600201555050507fc36ff72519d1e8a9f1f0f449ae2c45d8be882e5686a23704a81b4f591841c1cc3334866040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a1506001949350505050565b6000805433600160a060020a03908116911614610fe057600080fd5b600160a060020a0389161515610ff557600080fd5b8751151561100257600080fd5b8651151561100f57600080fd5b8551151561101c57600080fd5b84151561102857600080fd5b8351151561103557600080fd5b8251151561104257600080fd5b600182101561105057600080fd5b60028054600090815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038e1617905591548152206001018880516110a2929160200190611345565b50600280546000908152600360205260409020018780516110c7929160200190611345565b506002546000908152600360208190526040909120018680516110ee929160200190611345565b50600280546000908152600360205260408082206004018890559154815220600501848051611121929160200190611345565b506002546000908152600360205260409020600601838051611147929160200190611345565b50506002805460009081526003602052604080822060070184905591548152908120600801805460ff191690555b6002546000908152600360205260409020600701548110156112985788600360006002548152602001908152602001600020600901600083815260200190815260200160002060000160006101000a815481600160a060020a030219169083600160a060020a03160217905550600060036000600254815260200190815260200160002060090160008381526020019081526020016000206001018190555060006003600060025481526020019081526020016000206009016000838152602001908152602001600020600201819055506000600360006002548152602001908152602001600020600901600083815260200190815260200160002060030160006101000a81548160ff0219169083151502179055508080600101915050611175565b505060028054600101905550505050505050565b60008060008060008610156112c057600080fd5b60008510156112ce57600080fd5b5050506000928352506003602081815260408085209385526009909301905291208054600182015460028301549290930154600160a060020a039091169360ff90911690565b8154818355818115116113405760030281600302836000526020600020918201910161134091906113c3565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061138657805160ff19168380011785556113b3565b828001600101855582156113b3579182015b828111156113b3578251825591602001919060010190611398565b506113bf929150611405565b5090565b61140291905b808211156113bf57805473ffffffffffffffffffffffffffffffffffffffff1916815560006001820181905560028201556003016113c9565b90565b61140291905b808211156113bf576000815560010161140b5600a165627a7a723058208e45d4834df2424b645fa76df4f5779ee790f44dcd92036288939f7b15e6e8800029000000000000000000000000b659225621bef60ac15ef0e7d2f79c3647b40315

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

000000000000000000000000b659225621bef60ac15ef0e7d2f79c3647b40315

-----Decoded View---------------
Arg [0] : _withdrawAddress (address): 0xb659225621bef60ac15ef0e7d2f79c3647b40315

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b659225621bef60ac15ef0e7d2f79c3647b40315


Swarm Source

bzzr://8e45d4834df2424b645fa76df4f5779ee790f44dcd92036288939f7b15e6e880
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading

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.