首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法编译旧的稳固契约(0.4.17版)

无法编译旧的稳固契约(0.4.17版)
EN

Ethereum用户
提问于 2019-04-06 23:06:33
回答 2查看 1.6K关注 0票数 1

我是区块链开发公司的新手。我正在开发一个旧的项目,它使用了Solidity0.4.17和块菌^4.0.0-beta.2;这些版本都在项目的package.json文件中。

当我在全球范围内安装松露和坚固时,它为它们安装了最新版本。该项目还使用了这些最新版本(使用“块菌版本”命令检查)。但是,当我将旧的语用版本更改为最新版本时,该项目出现了许多错误和警告(太多无法手动处理)。因此,我决定降低松露和solc的等级,以便能够编译该项目。

该项目最终编译完毕,部分测试成功通过。但是,当我尝试运行"npm运行覆盖率“时,它无法从合同中找到这些文件:

代码语言:javascript
复制
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";

然后,我在github上的松露回购中找到了Assert.sol文件,并从node_modules中引用了它。但新的错误是:

代码语言:javascript
复制
Error: Could not find truffle/AssertString.sol from any sources; imported from truffle/Assert.sol
    at C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:59552:23
    at C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:155895:16
    at next (C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:167654:18)
    at C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:59540:7
    at C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:190397:5
    at C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:167559:16
    at replenish (C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:155865:25)
    at iterateeCallback (C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:155855:17)
    at C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:155895:16
    at ReadFileContext.callback (C:\Users\giusha9\Desktop\Authcoin-Qtum-master-old-version\node_modules\truffle\build\cli.bundled.js:190393:14)
Cleaning up...

这是package.json:

代码语言:javascript
复制
"scripts": {
    "compile": "truffle compile",
    "build": "truffle build",
    "deploy": "truffle deploy",
    "postinstall": "truffle install",
    "console": "truffle console",
    "testrpc": "testrpc --gasLimit 60000000",
    "testrpc:coverage": "node_modules/.bin/testrpc-sc --port 8555",
    "truffle-test": "truffle test",
    "test": "run-p --aggregate-output --race testrpc truffle-test",
    "solidity-coverage": "node_modules/.bin/solidity-coverage",
    "coverage": "run-p --aggregate-output --race testrpc:coverage solidity-coverage",
    "lint": "node_modules/.bin/solium --dir ./contracts"
  },
  "devDependencies": {
    "concurrently": "^3.5.0",
    "ethereumjs-testrpc": "^6.0.3",
    "npm-run-all": "^4.1.1",
    "solidity-coverage": "^0.2.7",
    "solium": "^0.5.5",
    "truffle": "v4.0.0-beta.2",
    "ethereumjs-util": "^5.1.2"
  },
  "dependencies": {
    "chai": "^4.1.2"
  }

我有三个问题:

  1. 如何解决关于assert.sol和DeployedAddresses.sol的最后一个错误?
  2. 是否值得降级坚固度和松露版本?因为这些最后的错误似乎不是我必须处理的最后一个错误,所以似乎自0.4.17版本以来发生了很大的变化。
  3. 如果我将使用一个新版本的松露和坚固,有什么办法可以避免基本上重写所有的合同?

任何帮助都将不胜感激。

EN

回答 2

Ethereum用户

发布于 2019-05-08 09:56:39

Solidity在0.4.24 (最后一次发布的0.4.x版本)到0.5.0之间进行了向后不兼容的更改。严格地说,Solity0.4.x和0.5.x是不同的编程语言,前者不再被维护。您必须修改代码以符合Solity0.5.x的要求,或者将Solity0.4.24与0.5.x并排安装,并为旧项目使用旧的稳健性。

票数 2
EN

Ethereum用户

发布于 2019-04-08 04:48:34

我认为您的项目是非常老的(超过1年的区块链是一个很长的时间),而且可能有些依赖关系不匹配很好,即坚实的覆盖范围,松露有很多变化。

我建议首先尝试插入依赖项的版本,在VM中使用节点的旧版本。这可能是很多工作,所以如果几天后,我会开始考虑移植到新版本的软件包。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/69359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档