SequenceEthereumにおけるWalletは、IWalletインターフェースで定義されます。このSDKには現在、2つのIWalletインターフェース実装があります。

1. EOAWallet

EOAWalletは、EVMチェーン向けの標準的なEOAウォレットです。

EOAWalletは簡単に作成できます。

IWallet eoaWallet = new EOAWallet(); // This will generate a cryptographically random private key
IWallet eoaWallet = new EOAWallet(privateKeyString); // Create a wallet using a previously generated private key

2. SequenceWalletToEOAWalletAdapter

SequenceWalletToEOAWalletAdapterは、SequenceWalletEOAWalletと同じIWalletインターフェースで利用できるようにするアダプターで、SequenceEthereumライブラリ全体でEOAウォレットと同様に扱えます。

SequenceWalletToEOAWalletAdapterは、SequenceWalletがあれば簡単に作成できます。

IWallet sequenceAdapter = new SequenceWalletToEOAWalletAdapter(sequenceWallet);

メソッド一覧

IWalletインターフェースでは、いくつかのメソッドが利用できます。特に重要なのは以下の通りです。

GetAddress

ウォレットのAddressを返します。

Address address = wallet.GetAddress();

SendTransaction

指定したEthTransactionに署名し、指定したクライアント経由で送信します。

string transactionHash = await wallet.SendTransaction(client, transaction);

SendTransactionAndWaitForReceipt

指定したEthTransactionに署名し、指定したクライアント経由で送信した後、TransactionReceiptを待ちます。

TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);

SendTransactionBatch

指定したEthTransaction[]に署名し、指定したクライアント経由でまとめて送信します。 ウォレットがEOAWalletの場合、各トランザクションは順番に送信され、それぞれ成功または失敗します。ウォレットがSequenceWalletToEOAWalletAdapterの場合、すべてのトランザクションが1つにまとめられ、一括で送信され、全体として成功または失敗します。 また、EOAWalletの場合は受け取るstring[](トランザクションハッシュ)の長さは送信したEthTransaction[]と同じですが、SequenceWalletToEOAWalletAdapterの場合は1つのトランザクションハッシュ(長さ1のstring[])のみが返されます。

string[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);

SendTransactionBatchAndWaitForReceipts

指定された EthTransaction[] を署名し、指定されたクライアント経由で送信した後、TransactionReceipt[] を待機します。 ウォレットが EOAWallet の場合、トランザクションは順番に送信され、それぞれ成功または失敗する可能性があります。ウォレットが SequenceWalletToEOAWalletAdapter の場合、トランザクションはまとめて一つのトランザクションとして送信され、全体が一度に成功または失敗します。 同様に、ウォレットが EOAWallet の場合、受け取る TransactionReceipt[] の長さは送信した EthTransaction[] と同じになります。一方、ウォレットが SequenceWalletToEOAWalletAdapter の場合、トランザクションレシートは1件のみ(TransactionReceipt[] の長さが1)受け取ります。

TransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);

SignMessage

メッセージとオプションのチェーンIDを指定して、ウォレットでメッセージに署名します。チェーンIDが指定されていない場合は、署名からチェーンIDを省略します。

string signedMessage = await wallet.SignMessage(message, chainId)

注意: chainId は16進数形式で指定する必要があります。Chain オブジェクト(推奨)を使っている場合は、AsString メソッドでチェーンIDの16進数表記を取得できます。

string signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());