600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 蚂蚁区块链第12课 如何使用命令行编译工具solcjs编译Solidity智能合约?

蚂蚁区块链第12课 如何使用命令行编译工具solcjs编译Solidity智能合约?

时间:2020-05-13 20:40:36

相关推荐

蚂蚁区块链第12课 如何使用命令行编译工具solcjs编译Solidity智能合约?

1,摘要

蚂蚁区块链合约平台支持 Solidity 智能合约,针对合约源代码的编译,可以直接通过蚂蚁区块链 Cloud IDE 合约开发环境进行合约编译、部署、测试和调试。

本文介绍由蚂蚁区块链平台提供的 Solidity 编译工具 solc-js 的 下载、安装 和 使用方式 。

2,操作内容

2.1 下载 solc-js

点击此处,获取合约编译工具 solc-js 安装包:alipay-solc-0.1.12.tgz(约 1.76M)。

说明:

蚂蚁区块链对 Solidity 语言的支持与原生的 Solidity 语言不同,因此不能使用外部社区的 solc-js 编译工具。

BaaS 平台提供的 solc-js:alipay-solc-0.1.12.tgz 可兼容 Solidity 语言 0.4.24 版本之前的语法(不包含 0.4.24)。

2.2 安装 solc-js

辉哥是直接在WINDOWS环境下完成Node.js的安装的,也可以使用linux环境安装Node.js环境。

solc-js 工具依赖 Node.js 环境,因此需要先安装 Node.js,然后安装 solc-js。具体步骤如下:

下载 并安装 Node.js(推荐版本:v10.11.0)。

不熟悉的,请参考《Node.js安装及环境配置之Windows篇》文档,安装好NODE.JS环境。

全局安装 solc-js。在下载的alipay-solc-0.1.12.tgz所在目录执行以下命令:

npm i -g alipay-solc-0.1.12.tgz

成功输出结果:

D:\jusanban\doc\26-培训分享\01-研发运营销售\01-区块链\05-蚂蚁区块链\8. Solidity-JS SDK-错误码\DAPP\credit-manager-tee>npm i -g alipay-solc-0.1.12.tgzC:\Program Files\nodejs\node_global\solcjs -> C:\Program Files\nodejs\node_global\node_modules\@alipay\solc\solcjs+ @alipay/solc@0.1.12added 66 packages from 35 contributors in 38.203s

2.3 使用 solc-js

全局安装 solc-js 工具后,即可在命令行中直接使用此工具,可以通过 solcjs --help 来查看此工具支持的参数说明。

solcjs --helpUsage: C:\Program Files\nodejs\node_global\node_modules\@alipay\solc\solcjs[options] [input_file...]Options:--version Show version number [boolean]--optimize Enable bytecode optimizer.[boolean]--bin Binary of the contracts in hex.[boolean]--abi ABI of the contracts.[boolean]--standard-json Turn on Standard JSON Input / Output mode. [boolean]--output-dir, -o Output directory for the contracts. [string]--help Show help [boolean]

命令行语法:

Usage: /usr/local/bin/solcjs [options] <FILE_NAME>

选项:

–version

说明:显示版本号

类型:布尔

–optimize

说明:启用字节码优化器

类型:布尔

–bin

说明:十六进制合约的二进制

类型:布尔

–abi

说明:合约接口说明

类型:布尔

–standard-json

说明:打开标准 JSON 输入或输出模式

类型:布尔

–output-dir,-o

说明:合约输出的目录

类型:字符串

–help

说明:显示帮助信息

类型:布尔

2.4 编译示例

如下所示,创建名为 hello.sol 的 Solidity 合约示例:

pragma solidity ^0.4.20;contract Hello {string name;identity id; //identity 类似于原生 Solidity 语言的 addressconstructor() 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。

生成文件截图:

JS 代码中编译合约

1,创建目录 hello,执行 npm init,将 alipay-solc-0.1.12.tgz 文件放到 solcjs-test 目录。

2,运行以下命令行,在 solcjs-test 目录中安装 solc-js:

npm i alipay-solc-0.1.12.tgz --save

3,代码中编译合约,创建 index.js 文件内容如下:

var solc = require('@alipay/solc')var input = 'contract test { function g(identity a) {} }'// Setting 1 as second paramateractivates the optimiservar output = pile(input, 1)for (var contractName in output.contracts) {// code and ABIconsole.log(contractName + ': ' + output.contracts[contractName].bytecode)console.log(contractName + ': ' + output.contracts[contractName].interface)}

4,运行 index.js:

node index.js

5,运行的输出供参考,已包含编译字节码和合约接口说明(ABI):

D:\jusanban\doc\26-培训分享\01-研发运营销售\01-区块链\05-蚂蚁区块链\8. Solidity-JS SDK-错误码\DAPP\hello>node index.js:test: 6080604052348015600f57600080fd5b5060898061001e6000396000f300608060405260043610603e5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166338a1231d81146043575b600080fd5b348015604e57600080fd5b506058600435605a565b005b505600a165627a7a72305820a23c93498a557e224f629af6b63ee1721ffaafc0554c0f3966ed8c1edb0c60130029:test: [{"constant":false,"inputs":[{"name":"a","type":"identity"}],"name":"g","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

solc-js 与 JS SDK 结合使用

在 JS 代码中编译 Solidity 合约后,得到编译字节码和合约接口说明(ABI),进而可直接使用 JS SDK 来部署、调用合约。详情可参考 JS SDK 使用说明。

3,参考

(1)Solidity 合约编译工具 /docs/2/101793

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。