NOTES.md 2.5 KB

NFT Notes

Can be implemented on any blockchain with smart contract support. Most common standards: ERC-721 and ERC-1155

Standards

ERC-20

useful for comparison, standard for creating tokens on Ethereum blockchain, creates fungible tokens on the ethereum blockchain.

ERC-721

https://ethereum.org/en/developers/docs/standards/tokens/erc-721/

Allows for creating tokens with unique properties. Example: Crypto Kitties, which allows for virtual owning and breeding of kittens.

ERC-1155

https://blog.enjincoin.io/erc-1155-the-crypto-item-standard-ac9cf1c5a226

Semi-fungible tokens, probably not relevant to us

Next Step Allows for creating contracts that support both fungible and nonfungible tokens.

NFT Games:

  • CryptoKitties
  • Gods Unchained
  • Decentraland
    • Players buy parcels of land that can be resold or used as advertising space

Marketplaces for NFTs:

  • Rareable
  • Superrare
  • OpenSea - Aggregator of marketplaces

EIP-2309

Proposed standard to mint more than one token at a time.

Frameworks

Most common are Hardhat, Truffle, and Brownie. Hardhat and Truffle are in node.js. Brownie is python.

Brownie

pip install eth-brownie
mkdir -p ~/NFTs/test1
cd ~/NFTs/test1
brownie init

cat > scripts/deploy.py <<EOF
from brownie import accounts, Greeter
def main():
    deployer_account = accounts[0]
    greeter = Greeter.deploy("Hello, World!", {'from': deployer_account})
    print("Deployed at: ", greeter.address)
EOF

cat > tests/greeter_test.py <<EOF
import pytest
from brownie import Greeter, accounts
@pytest.fixture
def greeter():
    return accounts[0].deploy(Greeter, "Hello, World!")
    # Check if the contract was deployed with the correct greeting
    def test_greeter(greeter):
        assert greeter.greet() == "Hello, World!"
    # Check if the greeting changes
    def test_set_greeting(greeter):
        greeter.setGreeting("Hola, mundo!")
        assert greeter.greet() == "Hola, mundo!"
EOF

cat > contracts/greeter.sol <<EOF
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;


contract Greeter {
  string greeting;

  constructor(string memory _greeting) {
    greeting = _greeting;
  }

  function greet() public view returns (string memory) {
    return greeting;
  }

  function setGreeting(string memory _greeting) public {
    greeting = _greeting;
  }
}
EOF

https://github.com/eth-brownie/brownie

Dan on tokens

IPFS - hash of data

Dan - How release is run ...

Challenges with Manifold - Waiting list. Partner has friend who works there.

Contracts are all public. etherscan.io -