node环境下 智能合约的编译及部署

测试环境选用的ganache

npm install ganache-cli

请确保环境下已经安装了web3、solcjs

web3与solc的安装请参考博文

CentOS 7 环境 web3安装 及 对象的创建_m0_47233175的博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/m0_47233175/article/details/121960931

CentOS 7 环境 npm及solc的配置安装_m0_47233175的博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/m0_47233175/article/details/121959778

一、在node下,使用solc编译智能合约

1.实例化web3对象

var web = require('we3')
var web3 = new web(new web.providers.HttpProvider("HTTP://LOCALHOST:8545"))

2.引入solc

var solc = require('solc')

3.使用node的文件系统同步读取智能合约

var sourceCode = fs.readFileSync('Voting.sol').toString()

注:此处智能合约以 Voting.sol 为例,智能合约需要存放在与此时开启的node同一目录

4.使用solc编译智能合约(最后编译的结果是一个js对象)

var compiledCode = solc.compile(sourceCode)

此时可能会报错,解决方法参考以下博文解决在node环境下,使用solc编译智能合约报错_m0_47233175的博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/m0_47233175/article/details/121999193

二、部署智能合约

1.取出 compiledCode 里的 abi 和 bin (将abi转为JSON格式)

var abi = JSON.parse(compiledCode.contracts[':Voting'].interface)
var bin = compiledCode.contracts[':Voting'].bytecode

2.创建一个合约对象

var VotingContract = web3.eth.contract(abi)

3.创建部署合约的交易对象

var depolyTxObj = {data:bin,from:web3.eth.accounts[0],gas:30000}

4.创建部署合约的交易

var contractInstance = VotingContract.new([parameter],depolyTxObj)

注:其中的 parameter 填写部署的合约中构造函数需要的参数

可能会出现如下错误

尝试更改第7步中 gas 值,博主测试改为600000通过

猜你喜欢

转载自blog.csdn.net/m0_47233175/article/details/121999413
今日推荐