4.DMCのNFTアルゴリズム
DMCのNFTはすべてPolygonアルゴリズムに基づいています。
1)DMC NFTの属性とインターフェース
発行されるNFTは以下のような固有属性があります
-DMCの各NFT会員権は固有識別コードを内包している。
-他のNFTトークンと同じように1対1の取引ができない。
-各NFTの所有者が存在し、これは誰でも検証および確認が可能だ。
-DMCのすべてのNFTはイーサリアムブロックチェーン上に存在し、イーサリアム基盤のNFTマーケットで買収や売却が可能だ。
-但し、NFTごとに等級が存在するものもあり、等級によって最初の価格が互いに異なる。
DMCのNFTはPolygonを基盤とするため、すべてのNFTはイーサリアム-721777スマートコントラクトに内包されたunit256 IDで定義される。 このように、コントレクトアドレスとunit256tokenIdペアは、イーサリアムのブロックチェーンで唯一の資産として識別される。UUIDとsha3ハッシュがunit256でコンバートできるため、DMCはunit256を選ぶ。
DMCのNFTインターフェース規格スタンダードは以下のように記述される。
//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