ERC-721 implementation for listing non-fungible digital art tokens on compliant marketplaces
Branch: master
Clone or download
Pull request Compare This branch is 4 commits ahead, 2 commits behind misterzero:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
public adding code Jan 4, 2019
truffle.js adding code Jan 4, 2019
yarn.lock Now using react context API, much more dynamic Jan 7, 2019

ArtistsLiberationFront ERC-721 token contract


About ALF

This contract is based on opensea-creatures.

This is a very simple ERC-721 implementation for listing non-fungible digital art tokens on compliant marketplaces like OpenSea and Rarebits.

Additionally, this tokenContract whitelists the proxy accounts of OpenSea users so that they are automatically able to trade the ERC721 item on OpenSea (without having to pay gas for an additional approval). On OpenSea, each user has a "proxy" account that they control, and is ultimately called by the exchange contracts to trade their items. (Note that this addition does not mean that OpenSea itself has access to the items, simply that the users can list them more easily if they wish to do so).

Rinkeby: 0xedb1b90ac5152587915ff553c7a0b2358ad2598b Mainnet: 0xAEFa27A665d48e19C38437Ba7135c8107BB5928f

Node version

Either make sure you're running a version of node compliant with the engines requirement in package.json, or install Node Version Manager nvm and run nvm use to use the correct version of node.

User Interface

The frontend application can be run against a local node or ganache-cli, or against compliant contracts on any network connected via MetaMask.

For development in the UI, run:

yarn install
yarn start

Deploying contracts to a live network

  1. Make sure you copy the latest version of your truffle-compiled contract into ./src/assets/contract.json
  2. You'll need to sign up for Infura. and get an API key.
  3. Using your API key and the mnemonic for your Metamask wallet (make sure you're using a Metamask seed phrase that you're comfortable using for testing purposes), run:
export INFURA_KEY="<infura_key>"
export MNEMONIC="<metmask_mnemonic>"
truffle deploy --network rinkeby

Minting tokens

After deploying to the Rinkeby network, there will be a tokenContract on Rinkeby that will be viewable on Rinkeby Etherscan. For example, here is a recently deployed tokenContract. You should set this tokenContract address and the address of your Metamask account as environment variables when running the minting script:

export OWNER_ADDRESS="<my_address>"
export CONTRACT_ADDRESS="<deployed_contract_address>"
export NETWORK="rinkeby"
node scripts/mint.js