すべてのプロダクト
Search
ドキュメントセンター

Blockchain as a Service:Cloud IDE の使用方法

最終更新日:Jan 19, 2025

Cloud IDE 環境に入る

次の方法で Cloud IDE コントラクト開発環境に入ることができます。

  • コンソーシアムコントラクトプロジェクトページの BaaS プラットフォーム では、コントラクトを作成するか、既存のコントラクトを編集することで、Cloud IDE コントラクト開発環境に入ることができます。

  • または、概要 ページに移動し、コントラクトテストチェーンコントラクトのデプロイ をクリックして、コントラクト開発環境 ( Cloud IDE ) に移動することもできます。

Cloud IDE でコントラクトプロジェクトを管理する

Cloud IDE では、次の図に示すように、コントラクトプロジェクトのフォルダとファイルの 作成削除、または 変更 を行うことができます。

image.png

番号

アイコン

説明

image.png

ファイルまたはフォルダを追加する

image.png

ファイルまたはフォルダを削除する

image.png

ファイルまたはフォルダの名前を変更する

説明

注: プロジェクト管理ページから Cloud IDE 環境に入った場合、コントラクトファイルはデフォルトでリアルタイムに保存されます。新しいコントラクトファイルの末尾には .sol を付けて、コンパイルが成功するようにしてください。

Cloud IDE でコントラクトを開発する方法

Cloud IDE では、次の 5 つのステップでコントラクトを開発できます。

  1. ターゲットコントラクトブロックチェーンを選択する

  2. コントラクトをコンパイルする

  3. コントラクトをデプロイする

  4. コントラクトを呼び出す

  5. コントラクトをデバッグする

ターゲットコントラクトブロックチェーンを選択する

Cloud IDE で、環境構成envir をクリックして、ターゲットコントラクトブロックチェーンの環境を指定します。

環境設定 では、既存の環境を選択できます。たとえば、テスト ブロックチェーンを申請済みの場合は、既存の コントラクト ブロックチェーン を選択できます。このテスト ブロックチェーンには、コントラクトをデプロイおよび呼び出すためのデフォルトのテストアカウントが用意されています。このテストアカウントが要件を満たしていない場合は、SDK を使用して作成したアカウントを使用できます。この場合、IDE でコントラクトをデプロイまたは呼び出すときに、トランザクションに署名するための秘密鍵(16 進数の文字列)を入力する必要があります。

説明

秘密鍵の取得方法の詳細については、「コントラクトブロックチェーンアカウントを準備する」のサンプルコードをご参照ください。

コントラクトをコンパイルする

コントラクトを開発する際には、完成したコードをいつでもコンパイルできます。

Cloud IDE で、[コンパイル] をクリックしてコードをコンパイルします。compile

  • バイトコード バイトコードはコンパイルされたコントラクトコードであり、コントラクトのデプロイに使用されるキーデータです。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 を取得したら、[デプロイ] をクリックして、ターゲットのテスト ブロックチェーンにコントラクトをデプロイします。deploy

定義済みの constructor を使用してコントラクトをデプロイするには、constructor 関数のパラメータを指定する必要があります。Cloud IDE は、パラメータの型と一部の基本的なデータ型の初期値に関するヒントを提供します。要件に基づいてコントラクトを初期化できます。

コントラクトをデプロイすると、すべてのコントラクトメソッドのリストが表示されます。list

コントラクトを呼び出す

コントラクトをデプロイすると、コントラクト内のすべてのパブリックメソッドとパブリック型の状態変数を確認できます。ターゲットメソッドの右側にある 呼び出しコントラクト をクリックすると、メソッドを呼び出すことができます。

メソッドを呼び出して状態変数をクエリし、状態変数の値を取得できます。コントラクトメソッドが呼び出されると、次のフィールドが返されます。

パラメータ

説明

input

コントラクトメソッドの入力データ。通常はコントラクトメソッドパラメータです。

output

コントラクトメソッドの戻り値。値はデータ型に基づいてエンコードされます。

log

コントラクトでイベントが使用されていて、イベントがトリガーされると、ログに表示されます。

call

エラーの説明

Cloud IDE を使用しているときに、エラーメッセージが表示されることがあります。コントラクトを呼び出すと、複数の理由でエラーが発生する可能性があります。この場合、Cloud IDE はエラーコードを返して、理由を分析できるようにします。Cloud IDE で使用されるエラーコードは、SDK で使用されるエラーコードと一致します。エラーコードの詳細については、「コントラクトブロックチェーンのエラーコード」をご参照ください。

次の例では、エラーの説明を使用してコントラクトエラーの原因を分析する方法について説明します。イベントを追加してコントラクトをデバッグすることもできます。

エラーコードの例:error

上記のエラーコードの例では、システムが Cloud IDE サンプルコントラクトの voteForCandidate メソッドを呼び出しています。指定された候補は Demi で、返されたエラーコードは 10201 です。エラーコードの意味は次のとおりです。

エラーコード

エラーコード値

説明

VM_REVERT

10201

エラーは revert コマンドのトリガーによって発生します。

エラーコードメッセージによると、revert 文がトリガーされたため、コントラクトの呼び出しに失敗しました。これは、require() 関数によって返された値が false であることを意味します。コントラクトコードを確認すると、voteForCandidate メソッドに関連する条件チェックが見つかります。

require(validCandidate(candidate));

入力された候補 Demi が無効であり、候補リスト candidateList にないことが推測できます。これは事実です。コントラクトがデプロイされると、constructor パラメータは選挙に参加する 2 人の候補 NickRose のみ指定します。

コントラクトをデバッグする

現時点では、Event を追加してログをトリガーし、コードロジックを分析することで、コントラクトの内部ロジックをデバッグできます。

validCandidate メソッドを呼び出します。

debug

// この関数は、ターゲット候補が 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 を追加してコントラクトの実行パスを追跡し、コントラクトをデバッグできます。