4. DMC's NFT Algorithm

All NFTs from DMC are based on the Polygon algorithm.

1)Attributes and Interface of DMC NFTs

NFTs issued have the following unique attributes

-Each NFT membership has a unique identification code.

-Like other NFTs, they cannot be traded in a 1:1 ratio.

-Each NFT has an identifiable owner, verifiable by anyone.

-All DMC NFTs exist on the Ethereum blockchain and can be bought or sold on Ethereum-based NFT markets.

-Some NFTs have grades, with initial prices varying by grade.

Since DMC's NFTs are based on Polygon, all NFTs are defined by a uint256 ID within the Ethereum-721 smart contract. This contract address and uint256 tokenId pair uniquely identify assets on the Ethereum blockchain. DMC selects uint256 due to its convertibility from UUID and sha3 hashes. The NFT interface standards for DMC are described as follows

//solidity

interface IERC777 {

event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);

event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);

event AuthorizedOperator(address indexed operator, address indexed tokenHolder);

event RevokedOperator(address indexed operator, address indexed tokenHolder);

function name() external view returns (string memory);

function symbol() external view returns (string memory);

function granularity() external view returns (uint256);

function totalSupply() external view returns (uint256);

function balanceOf(address owner) external view returns (uint256);

function send(address recipient, uint256 amount, bytes calldata data) external;

function burn(uint256 amount, bytes calldata data) external;

function isOperatorFor(address operator, address tokenHolder) external view returns (bool);

function authorizeOperator(address operator) external;

function revokeOperator(address operator) external;

function defaultOperators() external view returns (address[] memory);

function operatorSend(address sender, address recipient, uint256 amount, bytes calldata data, bytes calldata operatorData) external;

function operatorBurn(address account, uint256 amount, bytes calldata data, bytes calldata operatorData) external;

event Sent(address indexed operator,address indexed from,address indexed to,uint256 amount,bytes data,bytes operatorData);

}

interface IERC20 {

event Transfer(address indexed from, address indexed to, uint256 value);

event Approval(address indexed owner, address indexed spender, uint256 value);

function totalSupply() external view returns (uint256);

function balanceOf(address account) external view returns (uint256);

function transfer(address to, uint256 amount) external returns (bool);

function allowance(address owner, address spender) external view returns (uint256);

function approve(address spender, uint256 amount) external returns (bool);

function transferFrom(address from,address to,uint256 amount) external returns (bool);

}

//

Last updated