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

news2024/11/22 16:44:12

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM框架学习笔记(仅供参考)

(当前笔记简陋,仅供参考) 第一节课: (1)讲述了Spring框架,常用jar包,以及框架中各个文件的作用 (2)演示了一个入门程序 (3)解释了…

TS 入门(二):Typescript类型与类型注解

目录 前言回顾1. 基本类型数字类型 (number)字符串类型 (string)布尔类型 (boolean)空值和未定义 (null 和 undefined)任意类型 (any)unknown 类型any 与 unkown 区别 2. 数组和元组类型数组类型元组类型 3. 枚举类型4. 类型注解示例指定变量类型函数参数和返回值类型注解类型推…

在浏览器控制台中输出js对象,为什么颜色不同,有深有浅

打开console,输入自定义的javascript对象的时候,打开看发现对象的属性是深紫色,后面有一些对象是浅紫色的,比如Array对象和一堆SVG,HTML,CSS开头的对象,常用的prototype和__proto__也是浅紫色的。 请问这里深紫和浅紫…

9. Python3 Numpy科学计算库

Numpy是Python科学计算库的基础,主要包括: 强大的N维数组对象和向量运算。一些复杂的功能。与C和FORTRAN代码的集成。实用的线性代数运算、傅里叶变换、随机数生成等。 9.1 Numpy基础 Numpy的主要对象是一个均匀的多维数组。Numpy提供了各种函数。可以…

pxe高效网络批量装机

文章目录 一, PXE远程安装服务(一)三种系统装机的方式(二)linux装机1. 加载 Boot Loader2. 加载启动安装菜单3. 加载内核和 initrd4. 加载根文件系统5. 运行 Anaconda 安装向导 (三)实现过程&am…

STM32使用CubeMX创建HAL库工程文件

文章目录 1. STM32CubeMX 2. 界面介绍 3. 使用教程 新建工程 选择芯片界面 ​编辑 配置页面 引脚配置页面 引脚配置界面的颜色指示 配置RCC时钟参数 配置SYS参数 配置时钟树 Project Manager项目管理配置 生成工程文件 KEIL代码编写 1. STM32CubeMX STM32CubeM…

得物六宫格验证码分析

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi a…

【自学网络安全】二、防火墙NAT智能选路综合实验

任务要求: (衔接上一个实验所以从第七点开始,但与上一个实验关系不大) 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 8,分公司设备可以通过总…

LeetCode 算法:电话号码的字母组合 c++

原题链接🔗:电话号码的字母组合 难度:中等⭐️⭐️ 题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 …

线程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

线程 线程概念 简介 线程定义:线程是操作系统进行调度的最小单位,包含在进程内,是进程中的实际执行单元 线程特性:一个线程代表进程中的一个单一顺序控制流,即执行路径 多线程应用:一个进程可以包含多个…

LabVIEW红外热波图像缺陷检

开发使用LabVIEW开发的红外热波图像缺陷检测系统。该系统结合红外热像仪、工业相机和高效的数据采集硬件,实现对工件表面缺陷的自动检测和分析。通过LabVIEW的强大功能,系统能够实时采集、处理和显示红外热波图像,有效提高了检测的精度和效率…

时域分析----移动平均滤波器介绍及其在金融应用示例

介绍 移动平均滤波器(Moving Average Filter)是一种基本但功能强大的信号处理技术,广泛应用于各种数据平滑和去噪任务中。其主要目的是通过对数据进行平均处理,减少随机波动和噪声,从而突出数据中的趋势和规律。移动平…

Win11任务栏当中对 STM32CubeMX 的堆叠问题

当打开多个 CubeMX 程序的时候,Win11 自动将其进行了堆叠,这时候就无法进行预览与打开。 问题分析:大部分ST的工具都是基于 JDK 来进行开发的,Win11 将其识别成了同一个 Binary 但是实际上他们并不是同一个,通过配置…

数据治理项目中,数据运营团队如何搭建能提升数据应用效果?

引言:在数据治理项目中,数据运营团队的搭建对于提升数据应用效果具有关键作用。以下是一些具体的步骤和策略,用于构建高效的数据运营团队以优化数据应用效果: 一、明确团队目标和职责 确定数据应用目标:首先&#xf…

【接口自动化_06课_Pytest+Excel+Allure完整框架集成】

一、logging在接口自动化里的应用 1、设置日志的配置,并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…

JavaScript(9) ----this指向问题,bind,call,apply等方法

目录 this指向问题 全局函数调用: 对象方法调用: 构造函数调用: 事件处理: 箭头函数: setTimeout和setInterval 7.使用call、apply或bind call 方法 apply 方法 bind 方法 总结 this指向问题 全局函数调用…

基于conda包的环境创建、激活、管理与删除

Anaconda是一个免费、易于安装的包管理器、环境管理器和 Python 发行版,支持平台包括Windows、macOS 和 Linux。下载安装地址:Download Anaconda Distribution | Anaconda 很多不同的项目可能需要使用不同的环境。例如某个项目需要使用pytorch1.6&#x…

STM32MP135裸机编程:支持内存非对齐访问

0 前言 使用stm32官方可视化初始化代码生成工具STM32CubeMX生成的工程GCC编译选项默认不支持非对齐访问,在我们进行非对齐的访问时就会进入数据异常中断DAbt中。为了解决这一问题,我们需要在GCC编译选项中加上一处配置。 1 操作方法 右键STM32CubeIDE…

ArkTS基础快速入门

初识ArkTS语言 ArkTS:是一门用于开发鸿蒙应用的编程语言。 ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发应用。 同时,它在保持TypeScript(简称TS)基本语法风格的基础…

启动yarn后,其他节点没有NodeManager

写在前面: 这个问题虽然折磨了我两天,但是原因特别蠢,可能与各位不一定一样,我是因为ResourceManager的节点的"/etc/hadoop/workers"文件没有配置好(没有配hadoop102和hadoop104),但排…