Как найти подходящую версию в трюфеле? - PullRequest
0 голосов
/ 19 марта 2020

Я тестирую много контрактов вместе, и проблема с версией действительно смутила меня.

Фон

Migrations.sol pragma solidity >=0.4.21 <0.6.0;
Contract_code.sol pragma solidity 0.4.19;
truffle-config. js

module.exports = {networks:  
{development: 
{host: "127.0.0.1", 
port: 8545, 
network_id: "*", }},
compilers: {solc: 
{version: "0.4.24", }}}

Однако, когда я запускаю truffle migrate, вот результат, который я получил.

Error: Truffle is currently using solc 0.4.24, but one or more of your contracts specify "pragma solidity 0.4.19".
Please update your truffle config or pragma statement(s).
(See https://truffleframework.com/docs/truffle/reference/configuration#compiler-configuration for information on
configuring Truffle to use a specific solc compiler version.)

Я заметил, что есть еще одна ошибка, которая говорит:

Error: CompileError: /home/jiru/EEthereum/contract_code/assdbs_ASDCBA/contracts/assdbs_ASDCBA.sol:13:1: ParserError: Source file requires different compiler version (current compiler is 0.5.12+commit.7709ece9.Linux.g++ - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.19;
^---------------------^

Я пробовал несколько способов:

  • Изменить версию в трюфеле- config. js на ^ 0.4.24.
  • Измените версию вigration.sol на pragma solidity >=0.4.19 <0.6.0;
  • Измените версию в конфигурации трюфеля. js на 0.4.21.

Первые два метода вернули одну и ту же ошибку. Последний вернул

/home/jiru/EEthereum/contract_code/assdbs_ASDCBA/contracts/Migrations.sol:7:14: ParserError: Expected identifier, got 'LParen'
  constructor() public {

Однако, когда я попытался изменить версию в contract_name.sol на ^ 0.4.19, это сработало.
Теперь вот все настройки: Migration.sol pragma solidity >=0.4.21 <0.6.0;
Contract_code.sol pragma solidity 0.4.19;
truffle-config. js version:"0.4.24"
Мне интересно, почему это изменение заставляет его работать, и я хочу знать, почему предыдущая настройка не будет работа.

Вопрос

  • Связана ли версия Solid в Migrations.sol с версией трюфеля? Потому что, если я изменю его, возникнет странная ошибка.
  • note that nightly builds are considered to be strictly less than the released version Что это значит? Разве старшая версия не всегда совместима с младшей?
  • Есть также некоторые контракты, которые я тестирую с более низкой версией, например 0.4.12, но они работали без ошибок, почему?

Спасибо, если кто-нибудь может помочь: p

...