トークンの利用頻度が高いため、ERC20ERC721ERC1155の各トークン用に、あらかじめABIが定義されたContractクラスのラッパーを用意しています。トークン操作時はこれらの利用を推奨します。

これらのコントラクトラッパーはいずれも、コントラクトアドレスのみを必要とする標準コンストラクタで作成できます。例:

ERC20 erc20 = new ERC20(contractAddress);

デフォルトのABIを書き換える必要がある場合は独自のABIを指定することも可能ですが、その場合はコントラクトラッパー自体の修正が必要になる場合があります。

クエリの例:

string symbol = await erc20.Symbol(client);
BigIntegar balance = await erc20.BalanceOf(client, address);

トランザクション送信の例:

TransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);

Contractのラッパーとして、EthTransactionを作成せずに後で送信することも可能です。

CallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));
EthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));
TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);

おまけ:Ownable

トークンと同様に、Ownableインターフェースを実装したメソッド用に、あらかじめABIが定義されたOwnableラッパーも用意しています。 ERC20ERC721ERC1155はいずれもこれを継承していますが、任意のコントラクトでOwnableメソッドを利用したい場合は、利便性と安全性のためにOwnableの利用を推奨します。