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通过

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值