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

Blockchain as a Service:Java SDK クイックスタート

最終更新日:Apr 01, 2026

このガイドでは、Blockchain as a Service (BaaS) プラットフォームに接続し、アカウントの作成、スマートコントラクトのデプロイ、クレジットの発行、アカウント間のクレジット転送、アカウント残高のクエリを実行するサンプル Java アプリケーションを実行する手順を説明します。

このサンプルアプリケーションは、クレジットシステムをシミュレートします。BaaS Java SDK を使用して、以下の操作を実行します。

  1. 2 つのブロックチェーンアカウント (testAccount1testAccount2) を作成します

  2. EVM スマートコントラクトをデプロイします

  3. testAccount2 に 100 クレジットを発行します

  4. testAccount2 から testAccount1 に 50 クレジットを転送します

  5. testAccount2 の残高をクエリし、50 であることを確認します

このアプリケーションは、4 つの証明書ファイルを使用して SSL 経由で BaaS ノードに接続します。Maven と IntelliJ IDEA を使用して、ローカルでコンパイルおよび実行します。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • BaaS プラットフォームにデプロイされた BaaS ノード

  • ノードの IP アドレスとポート番号 (ノードの詳細ページで確認できます)

  • IntelliJ IDEA がインストール済みであること

  • Maven がインストール済みであること

  • Java 開発キット (JDK) がインストール済みであること

ステップ 1: 環境の準備

SSL 証明書ファイルの取得

BaaS プラットフォームへの SSL 接続を確立するには、以下の 4 つの証明書ファイルを生成してダウンロードします。

ファイル説明取得方法
client.crtクライアント証明書キー生成ツールを使用して証明書リクエストファイル (client.csr) を生成し、BaaS プラットフォームに送信します。承認後、.crt ファイルをダウンロードします。
client.keyクライアント秘密鍵キー生成ツールを使用してファイルを生成します。
trustCaCA 証明書を含む TrustStoreBaaS プラットフォームからダウンロードします。パスワードは mychain です。
user.keyアカウント秘密鍵キー生成ツールを使用してファイルを生成します。

ノードの IP アドレスとポート番号の取得

BaaS プラットフォームで、ノードの詳細ページを開き、ノードの IP アドレスとポート番号をメモします。アプリケーションはこれらを使用してブロックチェーンに接続します。

ステップ 2: プロジェクトのセットアップ

  1. IntelliJ IDEA で、Maven ベースのデモプロジェクトを作成します。プロジェクトが作成されると、ディレクトリ構造は次のようになります。

    1545295559042-521770ec-412b-49ed-935e-a6b644bb0949.png

  2. java ディレクトリに、com.example.demo という名前のパッケージを作成します。DemoSample.java の内容をこのパッケージにコピーし、4 つの証明書ファイル (client.crtclient.keytrustCauser.key) を resources ディレクトリに配置します。DemoSample.java をダウンロードしてください。

    デモプロジェクトには、お客様の Solidity コントラクトのソースコードからコンパイルされた EVM バイトコードが必要です。Solidity コントラクトの作成方法の詳細については、Solidity コントラクト開発をご参照ください。コンパイルツールについては、Solidity コントラクトコンパイルツールをご参照ください。

    1

  3. BaaS SDK とロギングの依存関係を pom.xml に追加します。常に最新の SDK バージョンを使用してください。

    <dependencies>
        <dependency>
            <groupId>com.alipay.mychainx</groupId>
            <artifactId>mychainx-sdk</artifactId>
                <!-- 最新の SDK バージョンを使用 -->
            <version>0.10.2.6</version>
        </dependency>
    
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.8.0-alpha0</version>
        </dependency>
    </dependencies>
    
    <build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.6.1</version>
            </extension>
        </extensions>
    </build>
  4. log4j.propertiesresources ディレクトリに、以下の内容で追加します。

    # ルートロガーの設定
    log4j.rootLogger=INFO, R
    
    # コンソール出力
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n
    
    # ファイル出力
    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.File=./sdk.log
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n
    
    # 詳細な SDK 内部ログを無効化
    log4j.logger.MychainClient=OFF

    log4j の代わりに logback を使用する場合は、logback の構成に以下を追加します。

    <logger name="MychainClient" level="OFF"/>

ステップ 3: プロジェクトのコンパイル

プロジェクトのルートディレクトリで、以下を実行します。

mvn clean compile

ステップ 4: アプリケーションの実行

プロジェクトのエントリポイントである DemoSample.java を実行します。ログはプロジェクトのルートディレクトリにある ./sdk.log に書き込まれます。

接続が成功したことを確認するには、sdk.log"Hand shake success" というメッセージを確認します。

すべての操作が正常に完了すると、コンソール出力は次のようになります。

create testAccount1 success.
create testAccount2 success.
deploy contract success.
issue success.
transfer success.
check account balance success.

トラブルシューティング

トランザクションの失敗

errorCode フィールドを MychainBaseResult 内で確認して、失敗の原因を特定してください。

トランザクションの失敗については、トランザクションレシートを使用して詳細を取得します。たとえば、コントラクトをデプロイした後、次のようになります。

MychainBaseResult<ReplyTransactionReceipt> result = sdk.getContractService()
    .deployContract(
        DeployContractRequest.build(adminAccount.getIdentity(),
            Utils.getIdentityByName(testContractId, env), contractCode, VMTypeEnum.EVM,
            contractParameters, BigInteger.ZERO, params));
assertTrue(result.isSuccess());
assertEquals(0, result.getData().getTransactionReceipt().getResult());
  • result.getData().getTransactionReceipt().getResult() == 0 — トランザクションは正常に実行されました。その他の値については、MychainErrorCodeEnum でエラーを検索してください。

  • result.isSuccess() — トランザクションが送信されたかどうかを示します。false の場合は、result.getErrorCode() を呼び出してエラーコードを取得します。

実行フローの例

以下に、DemoSample.java での完全な実行シーケンスを示します。

  1. 環境の初期化

    // ステップ 1: ロガーの初期化
    initLogger();
    
    // ステップ 2: BaaS 環境の初期化
    env = initMychainEnv();
  2. トランザクションの作成

    // ステップ 4: アカウントオブジェクトの初期化
    initAccount();
    
    // ステップ 5: トランザクション署名用の秘密鍵リストの初期化
    initPrivateKeyList();
    
    // ステップ 6: testAccount1 と testAccount2 をオンチェーンで作成
    createAccount();
  3. スマートコントラクトのデプロイ

    // ステップ 7: testAccount1 を使用して EVM コントラクトをデプロイ
    deployContract();
  4. クレジットの発行

    // ステップ 8: testAccount2 に 100 クレジットを発行
    issue();
  5. アカウント転送の実行

    // ステップ 9: testAccount2 から testAccount1 に 50 クレジットを転送
    transfer();
  6. 残高のクエリと検証

    // ステップ 10: testAccount2 の残高をクエリ (期待値: 50)
    BigInteger balance = query(test2PrivateKeyArrayList, testAccount2);
    
    // ステップ 11: 残高が 50 であることをアサート
    expect(balance, BigInteger.valueOf(50));
  7. SDK 接続の切断

    // ステップ 12: SDK 接続のシャットダウン
    sdk.shutDown();

次のステップ

  • Solidity コントラクトの作成とコンパイル方法については、Solidity コントラクト開発をご参照ください。

  • 利用可能な操作については、SDK API リファレンスをご参照ください。

  • BaaS プラットフォームでトランザクションの詳細を表示します。