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

Blockchain as a Service:Solidity コントラクトコンパイラ

最終更新日:Apr 01, 2026

Ant ブロックチェーンは、バージョン 0.4.24 (バージョン 0.4.24 を除く) より前の Solidity 構文と互換性のある、カスタマイズされた Solidity コンパイラ solc-js を使用します。このページでは、solc-js のインストール方法と使用方法、および代わりに solc バイナリコンパイラに切り替えるタイミングについて説明します。

重要

Ant ブロックチェーンは、標準の Solidity コンパイラをサポートしていません。BaaS が提供する solc-js (alipay-solc-0.1.10.tgz) のみを使用してください。Solidity 0.4.24 以降を使用するコントラクトはコンパイルされません。

また、Ant ブロックチェーンのブラウザベースの開発環境である Cloud IDE で、コントラクトのコンパイル、デプロイ、テスト、デバッグを直接行うこともできます。

solc-js

solc-js は、コマンドラインまたは JavaScript コード内から使用できるクロスプラットフォームの JavaScript コンパイラです。JS SDK と統合して、コントラクトのデプロイと呼び出しを自動化します。

制限事項: solc-js は --bin フラグをサポートしていますが、--bin-runtime はサポートしていません。--bin-runtime の出力 (コントラクトの更新に必要) が必要な場合は、代わりに solc バイナリコンパイラ を使用してください。

前提条件

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

  • Node.js がインストールされていること

solc-js のダウンロードとインストール

  1. インストールパッケージをダウンロードします: alipay-solc-0.1.10.tgz (約 1.76 MB)。

  2. パッケージをダウンロードしたディレクトリで次のコマンドを実行して、solc-js をグローバルにインストールします:

    npm i -g alipay-solc-0.1.10.tgz

インストール後、ターミナルで solcjs が利用可能になります。solcjs --help を実行すると、サポートされているすべてのオプションが表示されます。

CLI リファレンス

使用法: /usr/local/bin/solcjs [オプション] <ファイル名>
オプションタイプ説明
--versionboolバージョン番号を出力します。
--binboolコンパイルされたバイトコード (16進数からバイナリ) を出力します。初回のコントラクトデプロイに使用します。
--abiboolApplication Binary Interface (ABI) を出力します。
--optimizeboolバイトコードオプティマイザーを有効にします。
--standard-jsonbool標準 JSON 入出力モードを有効にします。
--output-dir, -ostring指定されたディレクトリに出力ファイルを書き込みます。
--helpboolヘルプ情報を出力します。
solc-js は --bin-runtime をサポートしていません。コントラクトの更新のためにランタイムバイトコードをコンパイルするには、solc バイナリコンパイラ を使用してください。

コントラクトのコンパイル

以下の例では、次のサンプルコントラクト (hello.sol) を使用します:

pragma solidity ^0.4.20;

contract Hello {

    string name;
    identity id; // identity は、標準の Solidity の address に似た Ant ブロックチェーンの型です

    constructor() public {
        name = 'Hello world!';
    }

    function hello() view public returns (identity, string) {
        return (msg.sender, name);
    }
}

コンパイル済みバイトコードの取得

次のコマンドを実行して hello.sol をコンパイルし、バイトコードを出力します:

solcjs --bin hello.sol

成功すると、現在のディレクトリに出力ファイル hello_sol_Hello.bin が表示されます。コンパイルに失敗した場合は、エラーメッセージが表示されます。

ABI の取得

次のコマンドを実行して hello.sol をコンパイルし、ABI を出力します:

solcjs --abi hello.sol

成功すると、現在のディレクトリに出力ファイル hello_sol_Hello.abi が表示されます。

JavaScript コードでのコンパイル

以下の手順に従って、プログラムでコントラクトをコンパイルし、ABI とバイトコードの両方を取得します。

  1. solcjs-test ディレクトリを作成し、その中で npm init を実行し、alipay-solc-0.1.10.tgz をそのディレクトリに移動します。

  2. solc-js をローカル依存関係としてインストールします:

    npm i alipay-solc-0.1.10.tgz --save
  3. 次のコードで index.js を作成します。solc.compile() の 2 番目の引数を 1 に設定すると、オプティマイザーが有効になります。

    var solc = require('@alipay/solc')
    var input = 'contract test { function g(identity a) {} }'
    // 2 番目のパラメーターとして 1 を設定すると、オプティマイザーが有効になります
    var output = solc.compile(input, 1)
    for (var contractName in output.contracts) {
        // 各コントラクトのバイトコードと ABI を出力します
        console.log(contractName + ': ' + output.contracts[contractName].bytecode)
        console.log(contractName + ': ' + output.contracts[contractName].interface)
    }
  4. スクリプトを実行します:

    node index.js

    出力には、コンパイルされたバイトコードと ABI が含まれます:

    :test: 6080604052348015600f57600080fd5b5060898061001e6000396000f300608060405260043610603e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166338a1231d81146043575b600080fd5b348015604e57600080fd5b506058600435605a565b005b505600a165627a7a7230582008d3450904d4f09535ba76326aae5ecd2f61113b791d633dbb3c0799ff75b3ad0029
    :test: [{"constant":false,"inputs":[{"name":"a","type":"identity"}],"name":"g","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

JS SDK を使用したコントラクトのデプロイと呼び出し

コンパイル後、ABI とバイトコードを JS SDK に直接渡して、コントラクトをデプロイおよび呼び出します。詳細については、「JS SDK の概要」をご参照ください。

solc バイナリコンパイラ

既存のコントラクトを更新する必要がある場合は、solc を使用します。solc-js とは異なり、solc は --bin-runtime をサポートしています。これは、SDK のコントラクト更新操作で必要となるランタイムバイトコードを生成します。

--bin--bin-runtime の比較

フラグ出力用途
--bin完全なデプロイバイトコード = ランタイムバイトコード + コンストラクター バイトコード初回のコントラクトデプロイ
--bin-runtimeランタイムバイトコードのみ既存のコントラクトの更新

コントラクトを更新するには、--bin-runtime を使用してコンパイルします:

solc --bin-runtime <your-contract.sol>

結果のバイトコードを JS SDK のコントラクト更新操作に渡します。詳細については、「JS SDK の概要」をご参照ください。

solc のダウンロード

どちらのバージョンも、バージョン 0.4.24 より前の Solidity 構文と互換性があり、--bin-runtime をサポートしています。

バージョンプラットフォームダウンロード
0.1.10macOSsolc-mac.zip
0.1.10CentOS 7.2solc-cenos7.2.zip

次のステップ

参考情報