8-1 搭建solidity开发环境,自己定制一个truffle

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项目在里面进行合约的编写等操作就行了,自己就不实现了

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾名招财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值