测试环境选用的ganache
npm install ganache-cli
请确保环境下已经安装了web3、solcjs
web3与solc的安装请参考博文
一、在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博客https://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通过