FISCO BCOS 八、快速入门truffle(通过Ganache部署)

2023-11-16

目录

快速入门 Truffle

创建项目工程

项目结构

使用测试 

编译合约

通过 Ganache 部署合约

常见问题

问题1:Error: Could not find artifacts for /home/wu/MetaCoin/test/TestMetacoin.sol from any sources

问题2:Error connecting to https://raw.githubusercontent.com/truffle-box/metacoin-box/master/truffle-box.json. please check your internet connection and try again.

问题3:Error: CompileError: /C/Users/media/ethereum_work/course3/contracts/Ballot.sol:1:1: ParserError: Source file requires different compiler version (current compiler is 0.5.12+commit.7709ece9.Emscripten.clang - note that nightly builds are considered to be strictly less than the released versionpragma solidity ^0.4.17;

快速入门 Truffle

本文主要入门介绍如何创建 Truffle 项目以及将智能合约部署到区块链。

创建项目工程

Truffle 大多数命令都是在 Truffle 项目目录下运行的。 所以第一步是创建一个 Truffle 项目。 可以创建一个空项目模板,不过对于刚接触Truffle的同学,推荐使用Truffle Boxes,它提供了示例应用代码和项目模板。 我们将使用MetaCoin box作为案例,它创建一个可以在帐户之间转移的Token(代币)。

1.为 Truffle 项目创建新目录:

mkdir MetaCoin
cd MetaCoin

2.下载 (“unbox”) MetaCoin box:

truffle unbox metacoin

如果要创建没有合约的空工程,可以使用 truffle init.(我们在下节讲如何测试自定义合约) 

在操作完成之后,就有这样的一个项目结构:

项目结构

这仅仅是一个入门。后面的文章我们可以学习到更多。

  1. contracts/MetaCoin.sol: 这是一个用 Solidity 编写的 MetaCoin 代币 智能合约。注意他还引用了目录下的另外一个合约文件 contracts/ConvertLib.sol 

  2. contracts/Migrations.sol: 这是一个单独的 Solidity 文件,用来管理和升级智能合约. 每一个工程都有这样的一个文件,并且通常不需要编辑它。

  3. migrations/1_initial_migration.js: 这是一个部署脚本,用来部署 Migrations 合约,对应 Migrations.sol 文件。

  4. migrations/2_deploy_contracts.js: 这是一个部署脚本,用来部署 MetaCoin 合约. (部署脚本的运行是有顺序的,以2开头的脚本通常在以1开头的脚本之后运行)

  5. test/TestMetacoin.sol: 这是一个用Solidity编写的测试用例文件,用来检查合约是否像预期一样工作。

  6. test/metacoin.js : 这是一个用JavaScript编写的测试用例脚本,用途和上面一样。

  7. truffle-config.js (之前是 truffle.js): Truffle 配置文件, 用来设置网络信息,和其他项目相关的设置。当我们使用内建的默认的Truffle命令时,这个文件留空也是可以的。

使用测试 

1.打开控制台终端,运行 Solidity 测试用例:

truffle test ./test/TestMetacoin.sol

我们可以看到下面的输出:

运行测试用例的时候。期望的行为,会输出在控制台

1.运行 JavaScript 测试用例:

truffle test ./test/metacoin.js

我们可以看到下面的输出:

编译合约

1.编译智能合约:

truffle compile

我们可以看到下面的输出:

通过 Ganache 部署合约

除了用 Truffle Develop,还可以选择使用 Ganache, 这是一个桌面应用,他同样会创建一个个人模拟的区块链。 对于刚接触以太坊的同学来说,Ganache 会更容易理解,因为他把所有的信息,都输在前端的界面。

不像 Truffle Develop 把链和控制台集成在一起,使用 Ganache 需要编辑配置文件,以便 Truffle 能链接 Ganache 实例。

1.下载安装 Ganache.

2.编辑器打开 truffle.js ,使用下面的内容:

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*"
    }
  }
};

这是使用默认的连接参数去连接 Ganache(如果IP和端口有变化,需要同步修改上面的内容)。 

3.保存关闭配置文件。

4.启动Ganache(有不会使用Ganache的小伙伴可以看这里

 打开控制台,执行部署:

truffle migrate

我们可以看到类似下面的输出:

 这里同样显示了交易的ID号(hash),部署的合约地址。以及交易的花费和一些相关实时状态。

1.在 Ganache 里,点击 “Transactions” 可以看到交易详情。

2.为了和合约进行交互,我们可以使用 Truffle 的控制台:truffle console, Truffle console 和 Truffle Develop 类似,仅仅是他们连接的链不一样而已,这里是连接 Ganache 。

truffle console

 可以使用控制台 console 和合约进行交互:

在 Truffle v5, 控制台支持 async/await 方法(同步方式), 这样让跟合约交互更简单了,方法如下:

从获取部署合约实例 及获取账号列表 开始:

truffle(development)> let instance = await MetaCoin.deployed()
truffle(development)> let accounts = await web3.eth.getAccounts()

 

检查账号余额:

truffle(development)> let balance = await instance.getBalance(accounts[0])
truffle(development)> balance.toNumber()

 

查看以太价值(其实就是调用了一个合约方法:合约方法里定义了一个metacoin 价值 2 ether):

truffle(development)> let ether = await instance.getBalanceInEth(accounts[0])
truffle(development)> ether.toNumber()

 

发送一些 metacoin 到其他的账号 :

truffle(development)> instance.sendCoin(accounts[1], 500)

检查刚刚收款人的余额:

truffle(development)> let received = await instance.getBalance(accounts[1])
truffle(development)> received.toNumber()

 

检查刚刚发送方的余额:

truffle(development)> let newBalance = await instance.getBalance(accounts[0])
truffle(development)> newBalance.toNumber()

 到这里就结束了,下一节一起来学习如何测试自定义合约。

常见问题

问题1:Error: Could not find artifacts for /home/wu/MetaCoin/test/TestMetacoin.sol from any sources

 原因:找不到TestMetacoin.sol注意注意,他这里提示的合约文件和我们./test目录下的TestMetaCoin.solcoin.sol而不是Coin.sol结尾,看清楚大小写!!!!!!

解决办法:将./test目录下的文件修改成报错文件名称即可

 

问题2:Error connecting to https://raw.githubusercontent.com/truffle-box/metacoin-box/master/truffle-box.json. please check your internet connection and try again.

 找到hosts(所在目录:/etc/hosts),在其中添加下面的内容:

# GitHub Start

192.30.255.112 gist.github.com

192.30.255.112 github.com

192.30.255.112 www.github.com

151.101.56.133 avatars0.githubusercontent.com

151.101.56.133 avatars1.githubusercontent.com

151.101.56.133 avatars2.githubusercontent.com

151.101.56.133 avatars3.githubusercontent.com

151.101.56.133 avatars4.githubusercontent.com

151.101.56.133 avatars5.githubusercontent.com

151.101.56.133 avatars6.githubusercontent.com

151.101.56.133 avatars7.githubusercontent.com

151.101.56.133 avatars8.githubusercontent.com

151.101.56.133 camo.githubusercontent.com

151.101.56.133 cloud.githubusercontent.com

151.101.56.133 gist.githubusercontent.com

151.101.56.133 marketplace-screenshots.githubusercontent.com

151.101.56.133 raw.githubusercontent.com

151.101.56.133 repository-images.githubusercontent.com

151.101.56.133 user-images.githubusercontent.com

# GitHub End

注意!!!配置后有时候还是会报错,多试几次,我大概试了6 7 8 9 次!!!

问题3:Error: CompileError: /C/Users/media/ethereum_work/course3/contracts/Ballot.sol:1:1: ParserError: Source file requires different compiler version (current compiler is 0.5.12+commit.7709ece9.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
pragma solidity ^0.4.17;

这里我忘记截图了ovo

报错原因:编译器版本不匹配

解决方法:修改 项目目录下的truffle-config.js文件

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FISCO BCOS 八、快速入门truffle(通过Ganache部署) 的相关文章

  • STM32控制L298n(从零开始)

    一 L298N模块简介 L298N是一款驱动模块 单片机通过向IN1 IN2 IN3 IN4输入PWM波从而控制OUT1 OUT2 ENA与ENB为使能引脚 使能引脚两根排针一定要短接 12v为模块供电 5v为单片机供电 二 L298N的逻
  • 什么是CentOS

    什么是CentOS CentOS是Community ENTerprise Operating System的简称 我们有很多人叫它社区企业操作系统 不管你怎么叫它 它都是linux的一个发行版本 CentOS并不是全新的linux发行版

随机推荐

  • MySQL密码忘记了怎么办?

    MySQL密码忘记了怎么办 本文就介绍了如何用canvas案例画出哆啦A梦的基础内容 提示 以下是本篇文章正文内容 下面案例可供参考 一 1 打开cmd命令符 先关闭正在运行的数据库 输入如下命令 二 打开mysql exe和mysqld
  • VUE的核心特性:响应式

  • 【Pytorch Lighting】第 6 章:深度生成模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • openEuler和linux什么关系,华为openEuler和鸿蒙(HarmonyOS)不是同一个操作系统

    华为推出了新操作系统 定名为openEuler 当前已提供20 03版本下载 有人不解的问 它跟鸿蒙 HarmonyOS 是不是同一个操作系统 或者有什么关系 华为openEuler和鸿蒙 HarmonyOS 100 不是同一个操作系统 并
  • string类型数组java_Java string类和数组的相关函数总结

    一 string类 1 字符串查找 1 str indexOf substr 返回substr首次在str里出现的索引 str 任意字符串对象 substr 要搜索的字符串 2 str lastIndexOf substr 返回substr
  • 洛谷P1011 [NOIP1998 提高组] 车站题解

    斐波那契数列 题目描述 火车从始发站 称为第1站 开出 在始发站上车的人数为a 然后到达第2站 在第2站有人上 下车 但上 下车的人数相同 因此在第2站开出时 即在到达第3站之前 车上的人数保持为a人 从第3站起 包括第3站 上 下车的人数
  • 拒绝摆烂!C语言练习打卡第四天

    博客主页 小王又困了 系列专栏 每日一练 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 选择题 1 第一题 2 第二题 3 第三题 二 编程题 1 第一题 2 第二题 前言 在前面我们学习完C语言的所以知识 当然练习巩固也不能
  • 万维网(www)

    万维网 www 是互联网中使用最广泛的一种应用 是一个超大规模线上信息储藏所 以链接的形式为用户提供信息检索服务 万维网的核心作用 使得信息在网上自由传输 万维网提供分布式的信息检索服务 箭头代表以链接的形式跳转到其他页面 这种方式使得一个
  • 【Maven】单元测试、统计、覆盖率相关插件使用介绍

    maven surefire plugin maven surefire plugin是maven执行单元测试的插件 不显性配置也可以直接使用 这个插件的surefire test命令会默认绑定maven执行的test阶段 执行结束后 默认
  • Mysql数据库的环境搭建【详细】

    作者简介 大学机械本科 野生程序猿 学过C语言 玩过前端 还鼓捣过嵌入式 设计也会一点点 不过如今痴迷于网络爬虫 因此现深耕Python 数据库 seienium JS逆向 安卓逆向等等 目前为全职爬虫工程师 学习的过程喜欢记录 目前已经写
  • ASM插桩:学完ASM Tree api,再也不用怕hook了

    背景 对于ASM插桩来说 可能很多人都不陌生了 但是大多数可能都停留在core api上 对于现在市面上的一些插桩库 其实很多都用tree api进行编写了 因为tree api的简单与明了的特性 也越来越成为许多开源库的选择 ASM有两套
  • 【STM32CubeMX】位置式PID调节控制输出电压(超详解)

    本文将借助STM32CubeMX来配置ADC DMA DAC USART 并利用PID位置式算法实现对输出电压进行AD采集通过PID算法调节DAC 获取到我们想要的电压值 讲解的主要知识 何为PID以及为何需要PID STM32CubeMX
  • 计算机含金量最高的证书

    第一种证书 计算机技术与软件专业资格考试证书 计算机技术与软件专业资格考试证书 是由国家人力资源和社会保障部 工业和信息化部领导的国家级考试 该考试分为 5 个专业类别 并分设了高 中 初级专业资格考试 共 28 个资格的考核 也是用人单位
  • Open3D(C++) 根据索引提取点云

    目录 一 功能概述 1 主要函数 2 源码 二 代码实现 三 结果展示 本文由CSDN点云侠原创 原文链接 爬虫网站自重 把自己当个人 一 功能概述 1 主要函数 std shared ptr
  • 添加CSS样式的三种方法与CSS的注释

    目录 三种使用 CSS 的方法 外部 CSS 实例 mystyle css 内部 CSS 实例 行内 CSS 实例 多个样式表 实例 实例 层叠顺序 CSS 注释 实例 实例 实例 HTML 和 CSS 注释 实例 当浏览器读到样式表时 它
  • R_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server;

    error Error R NOT SUPPORTED AUTH MODE Client does not support authentication protocol requested by server MySQL 8 has su
  • C++性能优化系列——矩阵转置(四)OpenMP并行计算

    本系列之前的篇章都是基于单线程处理 实际工程中 通过多线程对程序进行并行化往往是最简单且直接有效的优化手段 本篇以C 性能优化系列 矩阵转置 三 内存填充避免缓存抖动 中优化好的程序为Base版本 通过OpenMP技术 对程序进一步做并行化
  • 下面几款接口测试工具,工作中都有用的那些?

    下面几款接口测试工具 工作中都有用的那些 1 Fiddler Fiddler是一款功能强大的接口测试软件 它可以帮助用户抓取 修改和重放HTTP HTTPS请求 是一款可视化的网络调试利器 它可以支持HTTP协议和HTTPS协议 支持GET
  • 初识pnpm

    初识pnpm 介绍 pnpm和npm yarn一样 都是包管理器 但是pnpm节约磁盘空间并且安装很快 所有的报会存储在硬盘的同一个位置 多个项目使用了同一个包时 在pnpm中他们是公用的 只会存储一遍 下次需要用到这个包时就会从硬盘中查找
  • FISCO BCOS 八、快速入门truffle(通过Ganache部署)

    目录 快速入门 Truffle 创建项目工程 项目结构 使用测试 编译合约 通过 Ganache 部署合约 常见问题 问题1 Error Could not find artifacts for home wu MetaCoin test