8-1 搭建solidity开发环境,自己定制一个truffle(react+区块链实战)
从零开始搭建一个项目
自己实现一套类似truffle的自动编译系统,加深理解
此处可以跳过无需自己实现编译合约的模块,使用已有的truffle模块即可
项目在
新建一个react项目
create-react-app imooc-on-bloack
自己还是要了解一下truffle的原理,会使用js测试合约
后面会实战开发整个慕课的功能
编译sol语言必须用到的模块solc
这里安装一定要写死版本号,防止编译错误
E:\truffle>cd imooc-on-bloack
E:\truffle\imooc-on-bloack>npm install solc@0.4.24 --save
安装好后
新建文件夹及js文件用来编译的
注意合约名称第一个字母要大写
在package.json
中加入"compile":"node scripts/compile.js"
进行测试
我们在命令行执行npm run compile
(此处的compile
就是package.json
中的scripts
下的compile
命令,在pet-shop
官方的npm run dev
也是这种意思)
E:\truffle\imooc-on-bloack>npm run compile
将合约内容打印出来了
文件内容无问题接着就是编译了
使用其compile方法
再次编译看看结果
Npm run compile
此时编译就成功了
编译后的json字段
编译完成后写入到文件中供我们使用
本人最终打印失败,但这些不重要,重要的是前面的使用truffle已有的模板进行合约的编译部署等操作
这里主要的是理解truffle的部署等
//文件模块
const fs = require('fs')
//路径模块
const path = require('path')
const solc = require('solc')
//__dirname为当前路径,接着合约路径
const contractPath = path.resolve(__dirname,'../contracts/Imooc.sol')
//获取合约文件内容
const source = fs.readFileSync(contractPath,'utf-8')
//console.log(source) //测试
//编译
const ret = solc.compile(source) //主要使用compile一个方法
console.log(ret) //打印编译的结果,此编译结果非常重要,后面的测试部署等都和此数据有关需要其中某个字段
//获取合约编译好的json文件中的某个字段
Object.keys(ret.contracts).forEach(name => {
const contractName = name.slice(1)
const filePath = path.resolve(__dirname,'../src/compiled/${contractName}.json')
fs.writeFileSync(filePath,JSON.stringify(ret.contracts[name])) //将编译好的数据保存
console.log('${filePath} bingo') //打印信息查看是否写入成功
})
前面使用sol的编译模块进行编译文件
这里丰富编译过程
这里写自动化的编译方式
不再向下看了
到时直接创建一个truffle项目在里面进行合约的编写等操作就行了,自己就不实现了