Контракт не был развернут в обнаруженной сети (несоответствие сети / артефакта) в сети Rinkeby

Я столкнулся с указанным в названии.

Я разработал умный контракт и успешно скомпилировал и развернул его в сети следующим образом: 1. Запустите testrpc 2. Скомпилируйте трюфель 3. Переносите трюфель

Тем не менее, ошибка выше все еще отображается. Затем я попытался удалить файл сборки и выполнил следующие шаги: 1. Запустить testrpc 2. Скомпилировать трюфель 3. Переносить трюфель --network rinkeby

Ошибка все еще показывалась.

Ниже находится файл truffle.js

module.exports = {
  migrations_directory: "./migrations",
  networks: {
development: {
  host: "localhost",
  port: 8545,
  network_id: "*" // Match any network id
},
rinkeby: {
  host: "localhost", // Connect to geth on the specified
  port: 8545, 
  network_id: "*",
}

} };

Если кто-то сталкивался с подобными проблемами и решил их, я был бы очень признателен, если бы вы поделились, как вы решили это.

заранее спасибо

9 ответов

Для меня сработали следующие шаги: создать файл 2_deploy_contract.js в папке миграции с кодом

      var myContract = artifacts.require("myContract");

module.exports = function(deployer){
  deployer.deploy(myContract);
}

И запустить на терминале

      $ truffle migrate --reset

Мне не нужно было менять какие-либо настройки в truffle-config.js

У меня была та же проблема, и я создал файл 2_deploy_contract.js в папке миграции с кодом:

var myContract = artifacts.require("myContract");

module.exports = function(deployer){
  deployer.deploy(myContract);
}

Я также проверил truffle-config.js в корне папки с настройками по умолчанию:

rinkeby: {
  host: "localhost", 
  port: 8545, 
  from: "0x0085f8e72391Ce4BB5ce47541C846d059399fA6c", // default address to use for any transaction Truffle makes during migrations
  network_id: 4,
  gas: 4612388 // Gas limit used for deploys
}

Тл;др:

  1. Добавьте новую миграцию в папку миграции и назовите ее следующим образом: 2_deploy_contract.js

PS: вы можете назвать это как угодно. 2_deploy_yourmomsdonuts.js тоже подойдет. Только обратите внимание на номер - он должен соответствовать заказу.2. Добавьте этот фрагмент кода в этот файл:

Замените HelloWorld именем вашего контракта, который не был развернут (посмотрите в консоли, какой контракт вызвал ошибку)

  1. Бежать или же - Это псевдонимы и делают то же самое. Вы также можете запустить их обоих, чтобы быть в безопасности.

  2. Вы должны увидеть, что ваш контракт был развернут в вашей сети.

  3. Окончательно и снова вызовите свою функцию. Вуаля.

Почему вам пришлось вручную добавлять миграцию? Проблема заключалась в том, что ваш смарт-контракт не был развернут/не распознан, поэтому, добавляя миграцию вручную, вы указываете Truffle, какой файл должен быть развернут.

приведенный выше ответ работает для меня!

Я нашел решение этой проблемы. я меняю имя файла миграции с AdvancedStorage_migrate.js на 2_AdvancedStorage_migrate.js

truffle не может найти файл миграции, если вы не сохранили файл миграции без номера, поэтому вы должны сохранить файл миграции следующим образом (2_AdvancedStorage_migrate.js)

эта проблема не связана с конфигурацией трюфеля, поэтому не трогайте файл truffle configuration.js

Я столкнулся с той же проблемой, и следующие решили ее для меня:

... настройка 1_initial_migration.js для развертывания контракта TodoList, чтобы это работало. При выполнении init трюфеля он развертывает контракт Migration.sol, поэтому вы должны изменить это:

var TodoList = artifacts.require('../contracts/TodoList.sol');
module.exports = function(deployer) {
  deployer.deploy(TodoList);

}

источник: https://medium.com/@addibro/i-had-to-fiddle-around-with-truffle-compile-and-migrate-first-and-also-configuring-the-9bc7a6ea8e3e

Решение :

В моем случае я использую truffle-contract для загрузки контракта abi . По умолчанию сетевой идентификатор truflle-contract равен 1.

Но я использую идентификатор сети goreli 5. Нам нужно установить сеть при загрузке контракта `

                  const contract = require('truffle-contract');   
            const MyContract = contract(MyContract);    
    
            MyContract.setProvider(web3.currentProvider);    
            MyContract.setNetwork(5) 

`

В оригинальном посте и комментариях есть много разных сообщений об ошибках. Я думаю, что лучше всего предоставить пошаговое руководство по развертыванию в Rinkeby с использованием Truffle:

Гет

Для начала создайте учетную запись, которую вы хотите использовать для этого теста. Похоже, вы уже сделали это, но в том числе и для полноты. Обратите внимание, что я использую каталог пользовательских хранилищ ключей, потому что мне нравится хранить свои хранилища ключей отдельно в разных сетях.

geth --rinkeby --keystore ./eth/accounts/rinkeby/keystore account new

После ввода пароля вы получите новый адрес. После создания учетной записи создайте новый текстовый файл с именем pass.txt и поместите пароль, который вы использовали для создания учетной записи, в файл и сохраните его.

Очевидно, что это не предпочтительный способ обеспечения безопасности паролей. Не делай этого в живой среде

Вам также нужно добавить немного эфира в свой аккаунт. Используйте http://faucet.rinkeby.io/.

Затем убедитесь, что вы правильно запускаете Geth, и он находится в правильном состоянии. Я использую пользовательские каталоги данных и хранилища ключей. Вы можете использовать по умолчанию, если вы выберете.

geth --rpc --datadir ./eth/geth/data/rinkeby --keystore ./eth/accounts/rinkeby/keystore --rinkeby --rpccorsdomain '*' --rpcapi 'web3,eth,net,personal' --unlock '0x25e6C81C823D4e15084F8e93F4d9B7F365C0857d' --password ./pass.txt --syncmode="full" --cache=1024

Замените мой адрес на тот, который вы создали. При запуске вы должны увидеть что-то вроде этого:

INFO [02-13|17:47:24] Starting peer-to-peer node               instance=Geth/TrustDevTestNode/v1.7.3-stable-4bb3c89d/windows-amd64/go1.9
INFO [02-13|17:47:24] Allocated cache and file handles         database=C:\\cygwin\\home\\adamk\\eth\\geth\\data\\rinkeby\\geth\\chaindata cache=1024 handles=1024
INFO [02-13|17:47:47] Initialised chain configuration          config="{ChainID: 4 Homestead: 1 DAO: <nil> DAOSupport: true EIP150: 2 EIP155: 3 EIP158: 3 Byzantium: 1035301 Engine: clique}"
INFO [02-13|17:47:47] Initialising Ethereum protocol           versions="[63 62]" network=4
INFO [02-13|17:47:47] Loaded most recent local header          number=1766839 hash=6d71ad…ca5a95 td=3285475
INFO [02-13|17:47:47] Loaded most recent local full block      number=1766839 hash=6d71ad…ca5a95 td=3285475
INFO [02-13|17:47:47] Loaded most recent local fast block      number=1766839 hash=6d71ad…ca5a95 td=3285475
INFO [02-13|17:47:47] Loaded local transaction journal         transactions=0 dropped=0
INFO [02-13|17:47:47] Regenerated local transaction journal    transactions=0 accounts=0
INFO [02-13|17:47:48] Starting P2P networking
2018/02/13 17:47:50 ssdp: got unexpected search target result "upnp:rootdevice"
2018/02/13 17:47:50 ssdp: got unexpected search target result "uuid:2f402f80-da50-11e1-9b23-001788409545"
2018/02/13 17:47:50 ssdp: got unexpected search target result "urn:schemas-upnp-org:device:basic:1"
2018/02/13 17:47:50 ssdp: got unexpected search target result "upnp:rootdevice"
2018/02/13 17:47:50 ssdp: got unexpected search target result "uuid:2f402f80-da50-11e1-9b23-001788409545"
INFO [02-13|17:47:51] UDP listener up                          self=enode://751bc7825c66f9ab5b87f933d6b6302fd14434b7ed4d7c921c3f39684915843078eda4e995c927561067946b4f856ca2a35ea7285c27439c0f535338aaca80e9@172.88.30.226:30303
INFO [02-13|17:47:51] RLPx listener up                         self=enode://751bc7825c66f9ab5b87f933d6b6302fd14434b7ed4d7c921c3f39684915843078eda4e995c927561067946b4f856ca2a35ea7285c27439c0f535338aaca80e9@172.88.30.226:30303
INFO [02-13|17:47:51] IPC endpoint opened: \\.\pipe\geth.ipc
INFO [02-13|17:47:51] HTTP endpoint opened: http://127.0.0.1:8545
INFO [02-13|17:47:52] Unlocked account                         address=0x25e6C81C823D4e15084F8e93F4d9B7F365C0857d
  • Подтвердите, что сеть =4.
  • Убедитесь, что последняя строка с разблокированной учетной записью прошла без ошибок.
  • После запуска вашего узла убедитесь, что он полностью синхронизирован.

Трюфель

truffle.js (или truffle-config.js, если Windows):

module.exports = {
  networks: {
    development: {
      host: "localhost",
      port: 8545,
      network_id: "*" // Match any network id
    },
    rinkeby: {
      host: "localhost",
      port: 8545,
      from: "0x25e6c81c823d4e15084f8e93f4d9b7f365c0857d",
      network_id: "4"
    }
  }
};

Используйте консоль Truffle для подтверждения вашего узла и учетной записи:

$ truffle console --network rinkeby
truffle(rinkeby)> web3.eth.blockNumber
1767136 // Confirm latest block number on https://rinkeby.etherscan.io/
truffle(rinkeby)> web3.eth.getBalance('0x25e6c81c823d4e15084f8e93f4d9b7f365c0857d');
{ [String: '2956062100000000000'] s: 1, e: 18, c: [ 29560, 62100000000000 ] }

Выйдите из консоли и запустите компиляцию / миграцию (это займет около минуты):

$ truffle migrate --network rinkeby
Compiling .\contracts\LoopExample.sol...
Writing artifacts to .\build\contracts

Using network 'rinkeby'.

Running migration: 1_initial_migration.js
  Deploying Migrations...
  ... 0xf377be391a2eaff821c0405256c6a1f50389650ea9754bdc2711296b02533e02
  Migrations: 0x9cef8d8959d0611046d5144ec0439473ad842c7c
Saving successful migration to network...
  ... 0x4cf989973ea56a9aa4477effaccd9b59bfb80cc0e0e1b7878ff25fa5cae328db
Saving artifacts...
Running migration: 2_deploy_contracts.js
  Deploying LoopExample...
  ... 0x4977c60fd86e1c4ab09d8f970be7b7827ee25245575bfbe206c19c6b065e9031
  LoopExample: 0x56b9c563f287cdd6a9a41e4678ceeeb6fc56e104
Saving successful migration to network...
  ... 0x5628d64dc43708ccb30d7754a440e8e420a82a7b3770539cb94302fe7ad9098f
Saving artifacts...

Подтвердите развертывание в etherscan: https://rinkeby.etherscan.io/address/0x56b9c563f287cdd6a9a41e4678ceeeb6fc56e104

Другие вопросы по тегам