1.イーサリアムブロックチェーンに配布されたDMCCトークン
DMCCのトークンは、Solidityスマートコントラクトを活用する。
Solidity準拠のDMCCのスマートコントラクトは、以下の主要機能を実装している。
a. TotalSupplyと BalanceOf Returnは、使用可能なトークンの合計数とアカウントが所有しているトークンの合計量です。 これらの関数転送コマンドを使用して、関数呼び出し者から別のアドレスにトークンを転送することができる。
b. DMCCトークンの目立つ特徴の一つは、一つのアドレス(Address)が他のアドレスに代わってトークンを転送できるように許容できるという点だ。 このように代理命令が行われる場合、transferFrom および承認関数が同時に使用される。
c. 承認(Approval)機能を通じてDMCCトークン所有者は自分以外の他のユーザー、すなわち「受信者(Receiver)」にトークンを使用できる権限を付与する。 この時、やはりtransfer From関数を使用すれば、受信者がトークン所有者の代わりにDMCCを送信することができる。最後に、関数許容量を通じて受信者が以前に許容したアカウントから引き出すことができるトークンの量をクエリ(query)することもできる。 この時、イベント(event)は転送、承認、および転送作業実行の結果として実行される。
d. スマートコントラクトにトークンと相互作用できるコードがない場合、転送命令を入れたとしてもトークンが損失するエラーが発生する可能性がある。 そのため、DMCCトークンはスマートコントラクトを起こす際に承認(Approve)と転送(transfer from)を組み合わせて使用する。
DMCCを発行したSolidity 標準は、他の契約、ウォレット、またはマーケットプレイスと統合できるように、すべてのSolidityトークンによって実装される機能セットを定義する。
//solidity
function totalSupply() public view virtual override(IERC20, IERC777) returns (uint256) { return _totalSupply;
}
function balanceOf(address tokenHolder) public view virtual override(IERC20, IERC777) returns (uint256) { return _balances[tokenHolder];
}
function allowance(address holder, address spender) public view virtual override returns (uint256) { return _allowances[holder][spender];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_send(_msgSender(), recipient, amount, "", "", false); return true;
}
function approve(address spender, uint256 value) public virtual override returns (bool) { address holder = _msgSender();
_approve(holder, spender, value); return true;
}
function transferFrom(
address holder,
address recipient,
uint256 amount
) public virtual override returns (bool) { address
spender = _msgSender();
_spendAllowance(holder, spender, amount);
_send(holder, recipient, amount, "", "", false);
return true;
}
//
上記のようなSolidity機能を使用すると、外部ユーザー(例:暗号化ウォレットアプリ)がユーザーの残高を確認し、適切な権限を持つユーザー間で資金を送金することができる。 スマートコントラクトは2つの特別に定義されたイベントを定義する。
//solidity
event Approval(address indexed tokenOwner, address indexed spender, uint tokens); event Transfer(address indexed from, address indexed to, uint tokens);
//
標準ソリディティ機能の他にも、多くのソリディティトークンには追加フィールドがある。 以下のようなフィールドの先に追加されたフィールドの例を示す。
//solidity
string public constant name; string
public constant symbol; uint8
public constant decimals;
//
Solidity命名法に関連するいくつかの事項は以下の通りである。
-DMCCのpublicパブリック関数機能は、他のトークンでパブリック関数を持っていれば、これによってDMCCのスマートコントラクトを起こすことができる。
-DMCCdml view機能は基本的に定数を意味する。 すなわち、契約の内部状態は関数によって変更されない。
-An eventはDMCCのSolidityがクライアントを許可する方式である(例:アプリケーションのフロントエンドが契約内の特定の発生について通知を受けることができる)。
Last updated