Ant Blockchain のコントラクトプラットフォームは、Solidityスマートコントラクトをサポートしています。Cloud IDE(Ant Blockchain の開発環境)では、スマートコントラクトのコンパイル、デプロイ、テスト、デバッグを実行できます。
このトピックでは、Ant Blockchain が提供する Solidityコンパイラ solc-js をダウンロード、インストール、および使用する方法について説明します。また、solcコンパイラについても紹介します。
solc-js のダウンロード
ここをクリックして、インストールパッケージ alipay-solc-0.1.10.tgz を取得します。パッケージのサイズは約 1.76 MB です。
注意事項
:
Ant Blockchain はネイティブの Solidity言語をサポートしていません。BaaS が提供するコンパイラ solc-js のみを使用できます。
BaaS が提供するコンパイラ solc-js は alipay-solc-0.1.10.tgz です。バージョン 0.4.24 より前の Solidity 構文(バージョン 0.4.24 は除く)と互換性があります。
solc-js のインストール
solc-js をインストールするには、Node.js が必要です。solc-js をインストールする前に、Node.js をインストール済みであることを確認してください。プロセスは次のとおりです。
ダウンロードして Node.js をインストールします。
solc-js をグローバルにインストールします。alipay-solc-0.1.10.tgz をダウンロードしたディレクトリで、次のコマンドを実行します。
npm i -g alipay-solc-0.1.10.tgz
solc-js の使用
solc-js をグローバルにインストールすると、コマンドラインでこのツールを直接使用できます。solcjs --help を使用して、このツールでサポートされているパラメータを表示できます。
コマンドライン構文:
Usage: /usr/local/bin/solcjs [options] <FILE_NAME>オプション:
--version説明: バージョン番号を表示します。タイプ: bool--optimize説明: バイトコードオプティマイザを有効にします。タイプ: bool--bin説明: 16 進数コントラクトをバイナリコントラクトに変換します。タイプ: bool--abi説明: アプリケーションバイナリインターフェイス ( ABI ) を表示します。タイプ: bool--standard-json説明: 標準 JSON 入出力モードを開きます。タイプ: bool--output-dir,-o説明: コントラクトの出力ディレクトリを表示します。タイプ: string--help説明: ヘルプ情報を表示します。タイプ: bool
例:
次のように Solidity コントラクト hello.sol を作成します。
pragma solidity ^0.4.20;
contract Hello {
string name;
identity id; //identity データ型は、ネイティブ Solidity 言語の address データ型に似ています。
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 ) がディレクトリに表示されます。コンパイルに失敗した場合、エラーメッセージが表示されます。
次のコマンドラインを実行して hello.sol コントラクトをコンパイルし、アプリケーションバイナリインターフェイス ( ABI ) を取得します。
solcjs --abi hello.solコントラクトがコンパイルされると、ABI を含む結果ファイル ( hello_sol_Hello.abi ) がディレクトリに表示されます。
JavaScript コードでのコントラクトのコンパイル
solcjs-test ディレクトリを作成し、
npm initを実行して、alipay-solc-0.1.10.tgz ファイルを solcjs-test ディレクトリに移動します。次のコマンドラインを実行して、solcjs-test ディレクトリに solc-js をインストールします。
npm i alipay-solc-0.1.10.tgz --saveJavaScript コードでコントラクトをコンパイルし、次のように index.js ファイルを作成します。
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) }index.js を実行します。
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 での solc-js の使用
JavaScript コードで Solidity コントラクトをコンパイルした後、ABI とコンパイル済みバイトコードを取得できます。その後、JS SDK を使用して、コントラクトを直接デプロイおよび呼び出すことができます。詳細については、「JS SDK の概要」をご参照ください。
Solidity コンパイラ ( solc )
solc-js はクロスプラットフォームであり、JS SDK と共に使用してコントラクトを自動的にデプロイおよび呼び出すことができます。solc-js は、コマンドラインで--bin パラメータをサポートしています。ただし、--bin-runtime パラメータを使用して、コントラクト操作の更新に必要なバイトコードをコンパイルすることはできません。
JavaScript コードでは、solc-js はデフォルトで--bin パラメータを使用してコントラクトをコンパイルし、コンパイル済みバイトコードを取得します。このバイトコードは、コントラクトの更新に直接使用することはできません。ただし、コントラクトをローカルにデプロイした後、runtime バイトコードを取得してコントラクトを更新できます。詳細については、「JS SDK の概要」をご参照ください。
solc コンパイラは、--bin-runtime パラメータと--bin パラメータの両方をサポートしています。同じ Solidity コントラクトを対象とした場合、これら 2 つのパラメータのコンパイル結果は異なります。--bin-runtime パラメータを使用する場合、コンパイル済みバイトコードは、--bin パラメータを使用してコンパイルされたバイトコードの一部です。--bin パラメータを使用してコンパイルされたバイトコードには、--bin-runtime パラメータを使用してコンパイルされたバイトコードだけでなく、constructor メソッドのバイトコードも含まれています。
SDK でコントラクト更新操作を使用するには、solc コンパイラを使用し、--bin-runtime パラメータを使用してコンパイル済みバイトコードを取得することをお勧めします。
バージョン | 説明 | ダウンロードリンク |
0.1.10 | macOS バージョン - バージョン 0.4.24 より前の Solidity 構文と互換性があります。 - | |
0.1.10 | CentOS 7.2 バージョン - バージョン 0.4.24 より前の Solidity 構文と互換性があります。 - |