Cloud IDE 環境に入る
次の方法で Cloud IDE コントラクト開発環境に入ることができます。
コンソーシアムコントラクトプロジェクトページの BaaS プラットフォーム では、コントラクトを作成するか、既存のコントラクトを編集することで、Cloud IDE コントラクト開発環境に入ることができます。
または、概要 ページに移動し、コントラクトテストチェーン の コントラクトのデプロイ をクリックして、コントラクト開発環境 ( Cloud IDE ) に移動することもできます。
Cloud IDE でコントラクトプロジェクトを管理する
Cloud IDE では、次の図に示すように、コントラクトプロジェクトのフォルダとファイルの 作成、削除、または 変更 を行うことができます。

番号 | アイコン | 説明 |
① |
| ファイルまたはフォルダを追加する |
② |
| ファイルまたはフォルダを削除する |
③ |
| ファイルまたはフォルダの名前を変更する |
注: プロジェクト管理ページから Cloud IDE 環境に入った場合、コントラクトファイルはデフォルトでリアルタイムに保存されます。新しいコントラクトファイルの末尾には .sol を付けて、コンパイルが成功するようにしてください。
Cloud IDE でコントラクトを開発する方法
Cloud IDE では、次の 5 つのステップでコントラクトを開発できます。
ターゲットコントラクトブロックチェーンを選択する
Cloud IDE で、環境構成
をクリックして、ターゲットコントラクトブロックチェーンの環境を指定します。
環境設定 では、既存の環境を選択できます。たとえば、テスト ブロックチェーンを申請済みの場合は、既存の コントラクト ブロックチェーン を選択できます。このテスト ブロックチェーンには、コントラクトをデプロイおよび呼び出すためのデフォルトのテストアカウントが用意されています。このテストアカウントが要件を満たしていない場合は、SDK を使用して作成したアカウントを使用できます。この場合、IDE でコントラクトをデプロイまたは呼び出すときに、トランザクションに署名するための秘密鍵(16 進数の文字列)を入力する必要があります。
秘密鍵の取得方法の詳細については、「コントラクトブロックチェーンアカウントを準備する」のサンプルコードをご参照ください。
コントラクトをコンパイルする
コントラクトを開発する際には、完成したコードをいつでもコンパイルできます。
Cloud IDE で、[コンパイル] をクリックしてコードをコンパイルします。
バイトコード バイトコードはコンパイルされたコントラクトコードであり、コントラクトのデプロイに使用されるキーデータです。SDK を使用して、コントラクトバイトコードをターゲットの本番チェーンにデプロイできます。
コントラクト ABI コントラクト ABI とは、コントラクトのアプリケーションバイナリインターフェイス ( ABI ) を指します。コントラクトがコンパイルされると、対応する ABI も生成されます。
ABI は、プログラムのインターフェイスドキュメントに似ています。ABI は、フィールド名、フィールドの型、メソッド名、パラメータ名、パラメータの型、戻り値の型など、プロパティとメソッドシグネチャを記述します。
ABI パラメータ:
パラメータ | 説明 |
name | 関数の名前。 |
type | メソッドの型。 function 、 constructor 、 fallback (名前のない「デフォルト」関数) など。 |
constant | ブール値。この値が true の場合、メソッドはコントラクトフィールドの状態変数を変更しません。 |
payable | ブール値。この値は、メソッドがシステム転送を受け取ることができるかどうかを示します。 |
stateMutability | 次のいずれかの値を持つ文字列: pure (ブロックチェーンの状態を読み取らないように指定)、 view (ブロックチェーンの状態を変更しないように指定)、 nonpayable (上記の payable と同じ)、 payable (上記の payable と同じ)。 |
inputs | オブジェクトの配列。各オブジェクトには、パラメータの名前とパラメータの標準型が含まれます。 |
name | パラメータの名前。 |
type | パラメータの型。 |
outputs | inputs と同様に、オブジェクトの配列です。関数が何も返さない場合は省略できます。 |
ABI の詳細については、「Solidity ABI の公式説明(英語)」をご参照ください。
コントラクトをデプロイする
バイトコードと ABI を取得したら、[デプロイ] をクリックして、ターゲットのテスト ブロックチェーンにコントラクトをデプロイします。
定義済みの constructor を使用してコントラクトをデプロイするには、constructor 関数のパラメータを指定する必要があります。Cloud IDE は、パラメータの型と一部の基本的なデータ型の初期値に関するヒントを提供します。要件に基づいてコントラクトを初期化できます。
コントラクトをデプロイすると、すべてのコントラクトメソッドのリストが表示されます。
コントラクトを呼び出す
コントラクトをデプロイすると、コントラクト内のすべてのパブリックメソッドとパブリック型の状態変数を確認できます。ターゲットメソッドの右側にある 呼び出しコントラクト をクリックすると、メソッドを呼び出すことができます。
メソッドを呼び出して状態変数をクエリし、状態変数の値を取得できます。コントラクトメソッドが呼び出されると、次のフィールドが返されます。
パラメータ | 説明 |
input | コントラクトメソッドの入力データ。通常はコントラクトメソッドパラメータです。 |
output | コントラクトメソッドの戻り値。値はデータ型に基づいてエンコードされます。 |
log | コントラクトでイベントが使用されていて、イベントがトリガーされると、ログに表示されます。 |

エラーの説明
Cloud IDE を使用しているときに、エラーメッセージが表示されることがあります。コントラクトを呼び出すと、複数の理由でエラーが発生する可能性があります。この場合、Cloud IDE はエラーコードを返して、理由を分析できるようにします。Cloud IDE で使用されるエラーコードは、SDK で使用されるエラーコードと一致します。エラーコードの詳細については、「コントラクトブロックチェーンのエラーコード」をご参照ください。
次の例では、エラーの説明を使用してコントラクトエラーの原因を分析する方法について説明します。イベントを追加してコントラクトをデバッグすることもできます。
エラーコードの例:
上記のエラーコードの例では、システムが Cloud IDE サンプルコントラクトの voteForCandidate メソッドを呼び出しています。指定された候補は Demi で、返されたエラーコードは 10201 です。エラーコードの意味は次のとおりです。
エラーコード | エラーコード値 | 説明 |
VM_REVERT | 10201 | エラーは revert コマンドのトリガーによって発生します。 |
エラーコードメッセージによると、revert 文がトリガーされたため、コントラクトの呼び出しに失敗しました。これは、require() 関数によって返された値が false であることを意味します。コントラクトコードを確認すると、voteForCandidate メソッドに関連する条件チェックが見つかります。
require(validCandidate(candidate));入力された候補 Demi が無効であり、候補リスト candidateList にないことが推測できます。これは事実です。コントラクトがデプロイされると、constructor パラメータは選挙に参加する 2 人の候補 Nick と Rose のみ指定します。
コントラクトをデバッグする
現時点では、Event を追加してログをトリガーし、コードロジックを分析することで、コントラクトの内部ロジックをデバッグできます。
validCandidate メソッドを呼び出します。

// この関数は、ターゲット候補が candidateList に含まれているかどうかを確認するのに役立ちます。
function validCandidate(bytes32 candidate) view public returns (bool) {
for (uint i = 0; i < candidateList.length; i++) {
if (candidateList[i] == candidate) {
emit VALID(true);
return true;
}
}
emit VALID(false);
return false;
}validCandidate メソッドが実装されると、実行ロジックに基づいて異なる events がトリガーされます。呼び出し結果のログを確認することで、コントラクトの実行パスを分析できます。上記の例では、実行ロジックは単純です。複雑な実行ロジックでは、Event を追加してコントラクトの実行パスを追跡し、コントラクトをデバッグできます。


