〇、准备工作
安装node.js
安装solc
安装web3.js
安装mocha
启动私链或公网区块链节点
创建文件目录
......
mkdir contract_workflow
cd contract_workflow
mkdir contracts #存放智能合约.sol文件
mkdir compiled #存放编译后的json文件
mkdir scripts #存放脚本js文件
mkdir tests #存放测试调用脚本js文件
一、智能合约开发
通过solidity语言,实现一份简单的智能合约.sol文件,示例:
pragma solidity ^0.4.22;
contract Car{
string public brand;
constructor(string _brand) public {
brand = _brand;
}
function setBrand(string _brand)public {
brand = _brand;
}
}
二、智能合约编译
源代码通过编译成字节码(Bytecode),同时会产生二进制接口规范(ABI);另外编译能够处理编译时抛出的错误,确保不会在包含错误的源代码上进行编译。
const fs = require('fs-extra');//fs-extra替换fs,目的是把编译结果保存在文件系统中
const solc = require('solc');
const path = require('path');
//改进2:每次编译前清空
const compiledPath = path.resolve(__dirname,'../compiled');
fs.removeSync(compiledPath);//同步移除目录
fs.ensureDirSync(compiledPath);//确保文件存在,不存在则新建
//对合约进行编译
const contractPath = path.resolve(__dirname,'../contracts','Car.sol');//解析路径
const contractSource = fs.readFileSync(contractPath,'utf-8');//从路径中读取合约源码
let compileResult = solc.compile(contractSource,1);