部署一个简单的智能合约
首先安装intellij ide,使用这个ide来部署一个简单的智能合约。然后在ide中安装nodejs和solidity插件,创建nodejs项目inbox
创建智能合约:
pragma solidity ^0.4.17;
contract Inbox {
string public message;
function Inbox(string _message) public {
message = _message;
}
function setMessage(string _message) public {
message = _message;
}
function getMessage() public view returns (string) {
return message;
}
}
创建智能合约的编译器文件compile.js,在这之前先安装solidity的编译的第三方插件solc
在使用npm工具安装第三方插件的话,最好配置npm的镜像源为国内的镜像源,这里配置的镜像源为淘宝镜像源
更改npm镜像源为淘宝镜像 1.在家目录中找到.npmrc文件,在文件中添加registry = https://registry.npm.taobao.org 2.通过npm命令指定镜像源:npm --registry https://registry.npm.taobao.org info underscore
安装solc
npm install solc@0.4.24
创建编译器文件compile.js
const path = require("path");
const fs = require("fs");
const solc = require("solc");
const srcpath = path.resolve(__dirname,"contracts","inbox.sol");
const source = fs.readFileSync(srcpath,'utf-8');
const result = solc.compile(source,1);
// console.log(result);
module.exports = result.contracts[":Inbox"];
编译完智能合约后,接下来要对智能合约做测试验证,这里就需要安装mocha、ganache、web3等第三方插件,mocha类似于其他语言的单元测试,ganache为区块链测试环境(使用这个插件就是为了在测试部署智能合约时不存在延迟。。。)。测试文件inbox.test.js这里省略
#安装nocha测试框架: npm install mocha #安装ganache区块链测试环境 npm install ganache-cli@6.1.6 #安装web3插件,测试环境需要web3插件连接ganache npm install web3@1.0.0-beta.35
当测试部署智能合约没问题后,接下来就可以正式部署智能合约到真实的区块链网络了,这里以Rinkeby做为真实网络。在正式部署前,需要安装插件truffle-hdwallet-provider和钱包的12个助记词、infura提供的Rinkeby区块链节点,没有infura账号需要注册个账号
#安装插件truffle-hdwallet-provider npm install truffle-hdwallet-provider@0.0.3
创建一个部署智能合约文件deploy.js
const Web3 = require('web3');
const HDWalletProvider = require('truffle-hdwallet-provider');
const {interface, bytecode} = require('./compile');
const mnemonic = "12个助记词";
const provider = new HDWalletProvider(mnemonic, "https://rinkeby.infura.io/v3/30b8ce5e57fc42fa84c04b2bb2664650");
const web3 = new Web3(provider);
deploy = async ()=> {
const accounts = await web3.eth.getAccounts();
console.log(accounts[0]);
const result = await new web3.eth.Contract(JSON.parse(interface))
.deploy({
data:bytecode,
arguments:['goser']
}).send({
from:accounts[0],
gas:'1000000'
});
console.log('address:' + result.options.address);
};
deploy();
执行node deploy.js获得生成的智能合约地址为:0x1769De8C2c0020fa0F418e1899F0F787Ff7Dbe39,通过这个合约地址在https://etherscan.io/中可以查看生成的智能合约,首先切换到Rinkeby,在通过地址来查看。

点击go可以查看创建的智能合约的详细信息:

浙公网安备 33010602011771号