はじめに

EVM系ブロックチェーンでのアプリ開発経験がある上級者向けに、Unity専用の軽量なEthereumライブラリSequenceEthereumを提供しています。 SequenceEthereumは、人気のNethereumライブラリのような余計な機能を省き、Unityアプリ開発に必要な機能をすべて備えています。

SequenceEthereumは十分にテストされていますが、ライブラリ内の非同期メソッドを利用する際は、誤った使い方をすると例外が発生する「安全でない」ものと考えてください。 特にUnityでは、Taskが例外を投げてもサイレントに失敗することがあるため、try-catchブロックで非同期呼び出しをラップするのがベストプラクティスです。これにより、デバッグが容易になります。

主なコンポーネント

SequenceEthereumライブラリを使う際は、主要な「コンポーネント」とその関係性を理解しておくと便利です。

クライアント

クライアントはブロックチェーンネットワークへの接続を管理し、さまざまなRPCリクエストを行います。ブロックチェーンへのクエリやトランザクションの送信には必ずクライアントが必要です。一般的に、メソッドがクライアントを必要とする場合は、Webリクエストが発生し、非同期タスクの扱いや例外処理が必要になると考えてください。

Sequence.Wallet.IWallet

ウォレットは自身の秘密鍵/公開鍵ペアとアドレスを管理し、トランザクション署名時に署名者へ秘密鍵を提供します。

トランザクション

EthTransactionで実装されるトランザクションは、EVMトランザクションのすべてのデータとパラメータを含みます。このオブジェクトはRLPエンコーディング(トランザクション送信時には署名とRLPエンコードが必要)を行う際に使用されます。

すべてのトランザクションは、リプレイ攻撃を防ぐためにチェーンIDを含めてエンコードされています。詳細はEIP-155をご参照ください。

コントラクト

コントラクトは、自身に対するメソッド呼び出し用のトランザクションやクエリ用のメッセージを作成します。これらのトランザクションは後でウォレットによって署名され、クライアントを通じて(クエリメッセージとともに)送信されます。