Truffle

無法使用 truffle/ganache 連接到乙太坊客戶端

  • April 17, 2022

我第一次啟動ganache,在日誌中看到“Ganache 啟動成功”,RPC 伺服器設置為:HTTP://127.0.0.1:7545

執行truffle migrate命令時,我收到以下消息:

Could not connect to your Ethereum client with the following parameters:
   - host       > 127.0.0.1
   - port       > 7545
   - network_id > *
Please check that your Ethereum client:
   - is running
   - is accepting RPC connections (i.e., "--rpc" option is used in geth)
   - is accessible over the network
   - is properly configured in your Truffle configuration file (truffle-config.js)

這是我的 truffle-config.js 文件:

require('babel-register');
require('babel-polyfill');
require('dotenv').config();

module.exports = {
 networks: {
   development: {
     host: "127.0.0.1",
     port: 7545,
     network_id: "*" // Match any network id
   },
 },
 contracts_directory: './src/contracts/',
 contracts_build_directory: './src/abis/',
 compilers: {
   solc: {
     optimizer: {
       enabled: true,
       runs: 200
     }
   }
 }
}

我想知道是否有任何方法可以檢查問題是客戶端無法接受 RPC 連接,還是無法通過網路訪問,因為我認為這不是建議 1 和 4。

truffle migrate用於將智能合約部署到乙太坊網路(Ganache、公共測試網和主網)!

為了使用truffle migrate你首先需要在你的 ./Truffle/contracts 文件夾中有一個智能合約

然後你說truffle compile編譯.sol文件./Truffle/contracts夾中的所有文件->確保在你的智能合約中使用支持的solidity版本(如果你的不支持你會得到一個錯誤,只需在你的智能合約的第一行交換你使用的版本具有所需版本的契約文件)

最後但同樣重要的是,您需要轉到./Truffle/migrations文件夾以創建2_deploy_contract.js包含以下程式碼的文件:

const Migrations = artifacts.require(“您的契約名稱”);

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

畢竟你應該能夠呼叫truffle migrate並且你的智能合約被部署到你當地的乙太坊 Ganache 測試網。

我通過確保 truffle-config.js 中的埠號與正在執行的 Ganache 使用的埠號一致來解決了我自己的問題。 我關閉了 Ganache,然後在truffle-config.js中進行了上述更正,然後繼續。

  1. 我最初的truffle-config.js相關部分:
  • 網路:{開發:{主機:“127.0.0.1”, 埠:8545,network_id:’ ’}},
  1. 但是我執行的Ganache程序網口說:“RPC SERVER: HTTP://127.0.0.1: 7545
  2. 然後我更改了truffle-config.js中的埠號,如下所示:
  • 網路:{開發:{主機:“127.0.0.1”, 埠:7545,network_id:’ ’}},
  1. 保存truffle-config.js文件,啟動 Ganache,並在我的項目的根目錄中執行以下命令,在一個單獨的終端中: truffle migrate –network develop
  2. 結果 在此處輸入圖像描述

引用自:https://ethereum.stackexchange.com/questions/94431