Truffle: Миграция на ropsten — молча терпит неудачу

Когда я запускаю следующую команду, я не получаю никакого вывода:

truffle migrate --network ropsten

Это сразу после создания нового проекта с использованием truffle initи созданием одного контракта.

Когда я запускаю truffle developи запускаю команду миграции из консоли, все работает нормально.

Это содержимое моего файла truffle.js:

var HDWalletProvider = require("truffle-hdwallet-provider");

var mnemonic = "my twelve word mnemonic......";

module.exports = {
  networks: {
    ropsten: {
      provider: function() {
        return new HDWalletProvider(mnemonic, "https://ropsten.infura.io/xxxxxxxxxxxxx")
      },
      network_id: 3
    },
    development: {
      host: "localhost",
      port: 8545,
      network_id: "*" // Match any network id
    }
  }
};

У меня Ubuntu 16.04 и последняя версия трюфеля 4.1.8.

(и да, я пополнил свой счет на Ropsten эфиром из крана)

Нет выхода? Любой код выхода? Вы можете попробовать использовать --verbose-rpc, чтобы получить некоторые следы отладки. В противном случае, если вы хотите сбросить сборку с нуля, попробуйте--reset --compile-all
Вот что я получаю: localhost:~/testdapp$ truffle migrate --network ropsten --verbose-rpc > { > "jsonrpc": "2.0", > "id": 1, > "method": "eth_accounts", > "параметры": [] > }
ты пробовал --reset --compile-all?
Это truffle compile --reset --compile-all?
truffle migrate --network ropsten --reset --compile-all --verbose-rpc
Спасибо Грег - все равно получаю то же самое:{ "jsonrpc": "2.0", "id": 1, "method": "eth_accounts", "params": [] }

Ответы (4)

Вот как я делаю это, например, для развертывания в Kovan, изменяя ссылку infura, которую вы можете развертывать в каждой тестовой сети . У меня работает отлично:

const HDWalletProvider = require('truffle-hdwallet-provider');
const Web3 = require('web3');
const { interface, bytecode } = require ('./compile'); //That files come from the compile.js you can see it below.

const provider = new HDWalletProvider(
    '12 words mneumonic',
    'https://kovan.infura.io/XXXXXXXXXXXX'
);

const web3 = new Web3(provider);

const deploy = async ()=> { //Create that function to use async & await
    const accounts = await web3.eth.getAccounts();

    console.log('Attempting to deploy from account', accounts[0]);

    const result = await new web3.eth.Contract(JSON.parse(interface))
        .deploy({data: bytecode})
        .send({ gas: '30000000', from: accounts[0]});

        console.log('Contract deployed to', result.options.address);
        console.log(interface);//We pass the ABI through the console to be able to use it to build the javascript object that emulates the contract on our react code.

};
deploy();

Здесь я оставляю вам compile.js на тот случай, если он вам понадобится.

    const path = require('path'); // Helps to find the path to the contract across whatever OS you are using form compile.js to xxx.sol files
    const fs = require('fs'); // Load the FileSystem Module.
    const solc = require('solc');

    const contractPath = path.resolve(__dirname, 'contracts', 'Contracts_Remix.sol'); //Creation of cross SO's path.

    const source = fs.readFileSync(contractPath, 'utf8'); 
    //We compile the source code, of 1 single contract and showed the bytecode and the ABI by console to examine it.
    console.log(solc.compile(source),1); 
    module.exports = solc.compile(source).contracts[':Your_contract_name']; 
//We only call the contract we want to deploy.

Надеюсь, это поможет!

У меня была та же проблема, но в моем случае я неправильно установил для переменной среды конечной точки infura свой секретный ключ вместо идентификатора моего проекта. Если это поможет кому-то еще прочитать это, убедитесь, что ваша конечная точка infura верна!

Это была ошибка в моем случае. Мой URL-адрес rpc был отформатирован неправильно. Чтобы ссылаться на переменные в URL-адресе rpc в провайдере ropsten, он должен быть окружен «обратными галочками» вместо одинарных кавычек, например: return new HDWalletProvider(process.env.MNEMONIC, ` ropsten.infura.io/v3 /$ {process.env.INFURA_API_KEY}`);

Ничего не получая с этим, кажется, что миграция застревает в первой части:

> {
>   "jsonrpc": "2.0",
>   "id": 1,
>   "method": "eth_accounts",
>   "params": []
> }

Это может быть потому, что я за корпоративным прокси, но я не могу сказать по выходным данным. Тупик!

У меня была аналогичная проблема, и понижение версии поставщика hdwallet решило проблему (truffle-hdwallet-provider с 1.0.7 до 1.0.6).