Truffle设置Solidity版本 指南攻略_框架菜鸟教程

当使用truffle开发以太坊solidity合约时,经常碰到的一个问题,就是你的solidity合约代码所要求的编译器版本,与truffle预装的solitiy编译器版本不匹配。本文将介绍如何更改truffle中的solidity版本。如果要快速掌握以太坊的开发,推荐汇智网的以太坊开发系列教程。 1、问题重现由于solidity比较新,语法还在变换当中,

Truffle设置Solidity版本 指南攻略

当使用truffle开发以太坊solidity合约时,经常碰到的一个问题,就是你的solidity合约代码所要求的编译器版本,与truffle预装的solitiy编译器版本不匹配。本文将介绍如何更改truffle中的solidity版本。

Truffle设置Solidity版本 指南攻略_框架菜鸟教程

 

1、问题重现

由于solidity比较新,语法还在变换当中,因此你从网上找到的示范源码,有可能已经不能通过最新版本solidity编译器的编译了。例如,当使用新版本的truffle编译一个较早的0.4版本的合约时,就会提示编译器不匹配:

$ truffle migrate
Compiling .\contracts\Election.sol...
Compiling .\contracts\Migrations.sol...

    /D/ethereum/electiondemo/contracts/Migrations.sol:1:1: SyntaxError: Source file requires different compiler version (current compiler is 0.5.0+commit.1d4f565a.Emscripten.clang - note that nightly builds are considered to be strictly less than the released version
    pragma solidity ^0.4.24;
    ^----------------------^

Compilation failed. See above.`enter code here`
Truffle v5.0.0 (core: 5.0.0)
Node v8.11.1

当然可以修改原始的solidity合约代码,来响应新版solidity编译器的要求。不过如果存在大量的历史遗留代码,这个方案会带来巨大的工作量,而且还有很大的可能性引入新的bug。因此,更好的办法是为Truffle项目指定Solidity编译器的版本。

2、设置truffle项目的solidity编译器版本

好在truffle允许我们指定项目中使用哪个版本的编译器,只需要在truffle项目的配置文件truffle.js中设定compiler选项。例如,下面的配置文件将当前项目的solidity编译器设置为0.4.24版本:

module.exports = {
  networks: {
    ... etc ...
  },
  compilers: {
     solc: {
       version: "0.4.24"
     }
  }
};

你只需要在compilers.solc.version处指定要启用的solidity编译器版本就行了,truffle会自动从官方拉取相应版本的编译器,无需你手动下载配置。

 

海计划公众号
(1)
上一篇 2020/03/30 07:15
下一篇 2020/03/30 07:15

您可能感兴趣的内容

  • 小程序之生成朋友圈图片基础入门_小程序基础知识教程

    微信的小程序是没有分享到朋友圈的功能的。小程序目前只能分享到群里或者发给好友。但是业务需要方便推广,需要分享到朋友圈。经过度娘后,得出了以下思路:利用小程序canvas绘制图片,将背景图和二维码绘制成一张图片。百度过几个好的demo,参考了一下,本以为会很简单就解决这个问题,然而这个并不是小程序canvas的难点!WXML<canvas canv

    2020/04/05
  • 微信小程序适配 iPhone 11/Pro基础入门_小程序菜鸟指南

    由于目前 iPhone 发售的新机型,iPhone X / iPhone 11 系列,都是刘海屏。因此在小程序设计中,我们经常需要考虑到底部的适配。常规的我们是通过获取系统信息模块来获取的。cont app = getApp();wx.getSystemInfo({success: function(res) {//model中包含着设备信息console.

    2020/03/23
  • 如何将视频设置为网页背景【转】指南教程_视频指南攻略

    有时候为一个网页添加一个动画效果的背景,会让网页增加一定的韵味,让网页看起来与众不同。第一步:准备工作工欲善其事必先利其器,我们首先需要准备一个视频第二步:html中引入视频这里我们需要用到了video/标签,然后在source里面写视频的路径,autoplay用来使其自动播放,muted用来使其静音,loop为循环播放,依照个人意愿愿意加就加,不加拉倒哈<

    2020/04/05
  • css常用的颜色单位表示法小白常识_颜色基础入门

    所有的颜色都可以由红、绿、蓝三原色调配而成。 CSS中用8位表示一个颜色,那么可以有28即256种颜色,所以总共可以表示256*256*256种颜色。CSS纵有多种颜色表示:十六进制表示法:可表示为:#RRGGBB,其中RR(红色),GG(绿色)和BB(蓝色)。所有值必须介于0和FF之间。例如:#0000FF值呈现为蓝色,因为蓝色的组成设置为最高值(FF)

    2020/04/03
  • 通过nginx反向代理来调试代码小白常识_代理小白常识

    现在公司项目都是前后端分离的方式开发,有些时候由于某些新需求开发或者 bug 修改,想要让前端直接连到我本地开发环境进行调试,而前端代码我并没有,只能通过前端部署的测试环境进行测试,最简单的办法就是直接改 host 把后端测试环境的域名指向我本地的 IP,这对于 HTTP 协议的服务来说是很轻易做到的,不过公司的测试环境全部上了 HTTPS,而我本地的服务是

    2020/03/20
  • mvc和mvvm小白攻略_mvvm基础入门

    MVC(Model View Controller)Model:根据APP文档,model包括数据和操作数据的业务逻辑。
    View:view通常是UIKit控件的集合,不能直接引用model,并且视图本身没有任何业务逻辑。
    Controller:controller协调model和view之间的所有交互。
    在MVC下,所有对象被归类为一个model,一个vi

    2020/03/22
  • Wallpaper Abyss小白知识_壁纸分享网站、高清壁纸, 桌面背景

    Wallpaper Abyss小白基础 官方网址:https://wall.alphacoders.com/?lang=Chinese 简介描述:壁纸分享网站、高清壁纸, 桌面背景…

    2020/03/06
  • css按钮交互效果入门基础知识_效果使用指南

    最近在网上闲逛时,发现了http://www.nows.fun/ 这个毒鸡汤,内容有趣,按钮交互做的也很棒,简约而不简单。于是就把按钮交互的效果拿来学习一下。总体上来说,是利用了:active和box-shadow两个特性来实现的。希望通过这个简单效果,能让更多的朋友喜欢上css。首先来说一下:active,就是当用户按住一个a标签的时候的意思,鼠标点击下去

    2020/03/26
  • 从TypeScript中的类中派生接口菜鸟指南_接口小白常识

    大多数面向对象编程语言都鼓励编程到接口的模式。 TypeScript 当然支持这一点,你可以创建一个或多个接口,然后再定义生成这个接口实例的类(或工厂)。但是当程序员预期将来可能会存在多个具体实现时,有时会过度使用对接口的编程,尽管在实现时可能有一个。在直到真正实际需要这些多个实现之前,这些单实现接口会继续增加维护开销,因为每次我们需要引入新成员时,都需要修

    2020/03/26
  • 跨域解决方案之JSONP基础知识教程_jsonp使用指南

    同源策略同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源

    2020/03/26
  • Promise 中的三兄弟 .all(), .race(), .allSettled()基础指南_Promise入门指南

    Promise 中的三兄弟 .all(), .race(), .allSettled()基础指南 从ES6 开始,我们大都使用的是 Promise.all()和Promi…

    2020/03/20
  • CSS开发中的10个易错点小白基础_经验小白指南

    我发现前端开发人员一直在努力征服CSS。理由也很充分,开发人员是用逻辑思考的生物。添加一个DIV元素导致所有代码都不得不往下移一行,而另一个DIV“浮”到左侧,感觉没有任何意义。你也一定听到过开发人员的抱怨:“我们只需要向左边移动五个像素,但是…天哪!为什么整个都向下移动了一行。到底是哪里错了?!?!?!”根据我作为前端开发人员使用CSS的经验,下面是我的十

    2020/03/30
  • 高效学习开源项目的五大步骤!菜鸟知识_开源菜鸟教程

    作者|李运华编辑|小智如何对待开源?如何对待开源?得益于开源运动的蓬勃发展,众多技术顶尖的公司、团队或者个人通过开源的方式向技术社区贡献了许多优秀的开源项目,一方面大大促进了整体技术的发展,另一方面大大减轻了中小公司和团队在技术方面的投入压力,让团队能够更加聚焦于业务。开源项目对团队和业务有很大好处,但对于技术人员来说,如果只是简单的采取“拿来主义”,那就变

    2020/04/03
  • 如何构建单页Web应用?基础知识入门_单页小白入门

    首先我们来看一看单页应用是什么?所谓单页应用,指的是在一个页面上集成多种功能,甚至整个系统就只有一个页面,所有的业务功能都是它的子模块,通过特定的方式挂接到主界面上。它是AJAX技术的进一步升华,把AJAX的无刷新机制发挥到极致,因此能造就与桌面程序媲美的流畅用户体验。其实单页应用我们并不陌生,很多人写过ExtJS的项目,用它实现的系统,很天然的就已经是单页

    2020/03/30
  • js从数组取出 连续的 数字基础入门实现一维数组中连续数字分成几个连续的数字数组_算法小白基础

    使用原生js将一维数组中,包含连续的数字分成一个二维数组,1、过滤单个数字,例如[-3,-2,-1,-2,0,1,3,8,9,10]分成:[[-3, -2, -1],[0, 1],[8, 9, 10],
    ]实现上面的过滤效果,js代码如下:function getCode(arr){var before = arr[0],r = [], result = [

    2020/04/05
  • React-Hooks菜鸟教程网_Hooks入门基础

    一、React-Hooks要解决什么?以下是上一代标准写法类组件的缺点,也正是hook要解决的问题大型组件很难拆分和重构,也很难测试。业务逻辑分散在组件的各个方法之中,导致重复逻辑或关联逻辑。组件类引入了复杂的编程模式,比如 Render props 和高阶组件设计目的加强版函数组件,完全不使用”类”,就能写出一个全功能的组件组件尽量写成纯函数,如果需要外部

    2020/03/23