我试图在一个使用pragma solidity 0.4.24;编写的旧合同上运行D1。虽然我能够使用truffle migrate部署合同,但在运行truffle test时会出现以下错误:
Using network 'development'.
Compiling your contracts...
===========================
Error: CompileError: Error parsing truffle/DeployedAddresses.sol: ParsedContract.sol:4:55: ParserError: Expected ',' but got 'payable'
function Marketplace() public pure returns (address payable) { return 0x6395927945EA39aDD6B1E04144f1e1324B30DeFC; }
^-----^
Compilation failed. See above.
at async.whilst.error (/usr/local/lib/node_modules/truffle/build/webpack:/packages/truffle-compile/profiler.js:369:1)
at /usr/local/lib/node_modules/truffle/build/webpack:/~/async/dist/async.js:969:1
at next (/usr/local/lib/node_modules/truffle/build/webpack:/~/async/dist/async.js:5222:1)
at Promise.all.then.results (/usr/local/lib/node_modules/truffle/build/webpack:/packages/truffle-compile/profiler.js:351:1)
at
Truffle v5.0.7 (core: 5.0.7)
Node v8.12.0truffle/DeployedAddresses.sol: ParsedContract.sol:4:55不是我编写的代码,也不是我项目的一部分。我怀疑这个错误可能是因为Tru显正在运行solidity0.4.24来编译我的合同,但是不管它用来执行内部测试的东西都是运行Solity0.5。有什么方法来验证/改变这个吗?
下面是主目录中truffle.js的内容:
module.exports = {
migrations_directory: "./migrations",
networks: {
development: {
host: "localhost",
port: 8545,
network_id: "*" // Match any network id
},
// ... Other configs specified here, removed because irrelevant
// to SO question ...
compilers: {
solc: {
version: "0.4.24",
}
},
solc: {
optimizer: {
enabled: true,
runs: 500
}
}
};以及“/test”下的truffle.js内容:
module.exports = {
// See
// for more about customizing your Truffle configuration!
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*" // Match any network id
}
},
compilers: {
solc: {
version: "0.4.24",
}
}
};我有.sol和.js测试,两者都不会运行(无论是单独运行还是作为使用truffle test运行所有测试的一部分)。
发布于 2019-03-16 14:01:57
看上去这是个小混混。我开了关于他们的吉萨布的问题,他们有创建了一个PR来解决这个问题。我将更新这个答案后,尝试更新松露版本。
发布于 2019-03-15 02:41:03
我认为您需要将编译器更改为version: "0.5.0",或更新版本(但大于0.6.0),如果需要使用这个动态生成的DeployedAddresses.sol库,则需要使所有代码与该编译器版本兼容(参见这)
https://ethereum.stackexchange.com/questions/68223
复制相似问题