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

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

最終更新日:Apr 01, 2026

JS SDK を使用すると、Node.js またはブラウザ環境からコントラクトブロックチェーンに接続し、トランザクションを送信し、オンチェーンデータをクエリできます。raw gRPC や HTTPS 呼び出しを自分で記述する必要はありません。

このガイドでは、SDK のインストール、必要な SSL 証明書とアカウント認証情報の準備、接続の初期化、およびライブブロッククエリによる接続の検証について説明します。

前提条件

開始する前に、以下をご確認ください:

  • v10 以上 v16 未満の Node.js — nodejs.org からダウンロードしてください

  • BaaS (Blockchain as a Service) プラットフォーム上のコントラクトブロックチェーンインスタンス

  • JS SDK パッケージ(alipay-mychain-0.2.27.tgz)— ダウンロード手順については、「JS SDK の概要」をご参照ください。

ステップ 1: SDK のインストール

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

npm i alipay-mychain-0.2.27.tgz --save

ステップ 2: SSL 証明書の準備

ブロックチェーンノードへの TLS 接続を確立するには、3 つの証明書ファイルが必要です。

ファイル目的入手方法
ca.crtサーバー認証用のルート証明書BaaS プラットフォームからダウンロード
client.keyクライアント用の RSA 秘密鍵BaaS 鍵生成ツール
client.crtRSA クライアント証明書と、ペアのclient.key鍵生成ツールを使用して client.csr を生成し、BaaS プラットフォームに送信してから、承認された証明書をダウンロード

まだ証明書を申請していない場合は、無料クイックエクスペリエンス[ブロックチェーンへのアクセス]セクションに従って、3つすべてのファイルを生成してください。

ステップ 3: ブロックチェーンアカウントの準備

コントラクトブロックチェーン上の各トランザクションは、既存のアカウントによって署名される必要があります。SDK には、アカウントのアカウント名とその秘密鍵ファイルが必要です。

BaaS プラットフォームでアカウントを作成します。アカウント作成時に、アカウント名、公開鍵、および回復用公開鍵を指定します。user.key ファイルはアカウントの公開鍵に対応し、秘密鍵ファイルとして機能します。

SDK が読み取れるように、user.key を PEM 形式に変換します:

openssl ec -in user.key -passin pass:${key_password} -passout pass:${key_password} -aes256 -out user.pem

${key_password} をご利用の秘密鍵のパスワードに置き換えてください。

重要

user.pemclient.key は安全に保管してください。秘密鍵ファイルをバージョン管理にコミットしたり、ログで共有したりしないでください。

ステップ 4: 接続と検証

次の例では、ブロックチェーンへの接続を初期化し、QueryLastBlock を呼び出して接続が機能していることを確認します。

const Chain = require("@alipay/mychain/index.node") // Node.js 環境
const fs = require("fs")

// アカウントの秘密鍵をロード
const accountKey = fs.readFileSync("./certs/user.pem", { encoding: "utf8" })
const accountPassword = "<your-pem-password>"  // user.pem のパスワードに置き換えてください

const keyInfo = Chain.utils.getKeyInfo(accountKey, accountPassword)
// keyInfo.privateKey と keyInfo.publicKey は 16 進数文字列です

// SSL 証明書をロードして接続を構成
const passphrase = "<your-client-key-password>"  // client.key のパスワードに置き換えてください
const opt = {
  host: "<node-ip>",        // ターゲットブロックチェーンノードの IP アドレス
  port: 18130,              // ブロックチェーンノードのポート番号
  timeout: 30000,           // 接続タイムアウト (ミリ秒)
  cert: fs.readFileSync("./certs/client.crt", { encoding: "utf8" }),
  ca: fs.readFileSync("./certs/ca.crt", { encoding: "utf8" }),
  key: fs.readFileSync("./certs/client.key", { encoding: "utf8" }),
  userPublicKey: keyInfo.publicKey,
  userPrivateKey: keyInfo.privateKey,
  userRecoverPublicKey: keyInfo.publicKey,
  userRecoverPrivateKey: keyInfo.privateKey,
  passphrase: passphrase
}

// 接続を初期化
const chain = Chain(opt)

// 最新ブロックをクエリして接続を検証
chain.ctr.QueryLastBlock({}, (err, data) => {
  console.log('raw data:', data)
  console.log('block hash:', data.block.block_header.hash)
  console.log('block number:', data.block.block_header.block_number)
})

実行する前に、次のプレースホルダーを置き換えてください:

プレースホルダー説明
<your-pem-password>user.key123abc
<your-client-key-password>client.key123abc
<node-ip>ブロックチェーンノードの IP アドレス127.0.0.1

成功した場合の応答は次のようになります:

raw data: { msg_type: 58,
  sequence: 1,
  return_code: 0,
  group_id: '0x0000000000000000000000000000000000000000',
  block:
   { block_header:
      { hash:
         '0xe99d8958a45e8c87a7b10efc259828f06fe083995be52997f5d310f2b6d073a6',
        version: 2,
        block_number: 84265,
        parent_hash:
         '0x918b263a8e6c6fff594b89570970ef4bef24cf93aeed5347f7b250b070857c4b',
        transaction_root:
         '0x0000000000000000000000000000000000000000000000000000000000000000',
        receipt_root:
         '0x0000000000000000000000000000000000000000000000000000000000000000',
        state_root:
         '0x9f71cb9ce960e5637bad6da5be8daa2d7e557942208f241a60589b2de98e6c71',
        gas_used: 0,
        timestamp: 1547382477852,
        log_bloom:
         '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' },
     block_body:
      { transaction_list: [],
        receipt_list: [],
        consensus_proof:
         '0xf8f2f8c9b8419746989382c1613c6c3ce98bf79ac92a8d69952c22f4064194869c53b4075d517cfc98eda861212687e49b186c08d196770bd356762fa2a88d0288c0556f271a01b84138a97446a75c76a31d24880c343407bd7bc24608685c494240ac603cad62201a01a423718661b24e517ee6f6b2fee6d356b57833305860700cca81b0238f870400b841eaf508392d9098a3e7fb46f6f7aa4b53311e5a0d13e300d02025af7453ea130a6c27407c1da254578cae80ed498d4807587883f837c1716b0be8ae02cf955d6000e61e83014929a0e200d8bee723d820022d5c5a1f8fe6b521c0a4fff0b5ec03a7c6061276d68b58' } },
  api: 'QueryLastBlock' }
block hash: 0xe99d8958a45e8c87a7b10efc259828f06fe083995be52997f5d310f2b6d073a6
block number: 84265
応答には return_code フィールドが含まれます。値が 0 の場合は呼び出しが成功したことを意味し、それ以外の値はエラーコードです。トランザクションレシートの result フィールドも同様に機能します。詳細については、「エラーコード」をご参照ください。

SDK リファレンス

環境別のインポート

// Node.js 環境 (TLS プロトコル)
const Chain = require("@alipay/mychain/index.node")

// ブラウザ環境
const Chain = require("@alipay/mychain")

設定オプション

特に記載がない限り、すべての設定値は文字列です。

オプション必須説明
hostはいブロックチェーンノードの IP アドレス (TLS) またはサーバー名 (HTTPS)127.0.0.1https://www.alipay.com または https://127.0.0.1
portはいブロックチェーンノードのポート番号 (数字のみ)18130
clientsいいえ{host, port} オブジェクトとしてバックアップノードの配列。設定されている場合、hostport は必須ではありません。プライマリノードが利用不可の場合、SDK はバックアップノードに切り替わります。[{host:'127.0.0.1',port:18130},{host:'127.0.0.2',port:18130}]
timeoutはい接続タイムアウト (ミリ秒)30000
caはいコントラクトブロックチェーンのルート証明書BaaS プラットフォームから取得
certはいクライアント証明書ファイルBaaS プラットフォームから取得
keyはい証明書申請のための証明書リクエストファイルを生成するために使用されるクライアント秘密鍵ファイル鍵生成ツールを使用して生成
userPublicKeyはいアカウント公開鍵 (16 進数文字列)0x971c77d3...
userPrivateKeyはいアカウント秘密鍵 (16 進数文字列)0x4015e396...
userRecoverPublicKeyはいアカウント回復用公開鍵 (16 進数文字列)0xb961f6a1...
userRecoverPrivateKeyはいアカウント回復用秘密鍵 (16 進数文字列)0x44a973e5...
passphraseはいclient.key のパスワード。TLS または HTTPS 接続に使用されます。123abc
checkServerIdentityいいえブール値。true の場合、サーバーの CN フィールドがそのホスト名と一致することを検証します (TLS のみ)。デフォルト: falsefalse
tx_querycountいいえトランザクション送信後に QueryTransactionReceipt をポーリングする際の再試行回数。デフォルト: 35
tx_querytimeいいえQueryTransactionReceipt のポーリング間隔 (ミリ秒)。デフォルト: 3000200

次のステップ

  • 最初のトランザクションを送信する — 利用可能な操作については、JS SDK API リファレンスをご参照ください

  • エラーを処理する — return_code の値とその意味の完全なリストについては、「エラーコード」をご確認ください

  • SDK の全機能を確認する — 高度な使用方法とサポートされているすべての操作については、「JS SDK の概要」をご参照ください。