Go-Ethereum

如何使用 truffle 將我的合約部署到本地測試網(不是 testrpc)?

  • March 21, 2022

我按照以下連結中的步驟創建了一個本地乙太坊測試網,但現在我想將合約部署到“MyTestNetNode”:

https://medium.com/@WWWillems/how-to-set-up-a-private-ethereum-testnet-blockchain-using-geth-and-homebrew-1106a27e8e1e

testrpc 不是一個好的選擇,因為當您停止守護程序時,test rpc 不會保存狀態。我需要使用我已經完成的 geth 創建一個測試網,並且我想使用 Truffle 將合約部署到它而不會出錯。誰能幫我?

您只需要根據本地配置更改 truffle 配置文件:

module.exports = {
 networks: {
   development: {
     host: 'localhost',
     port: 8545, //the port of your local testnet
     network_id: '*' //any network ID
   }
 }
}

最重要的是,您實際上也可以使用ganache-cli作為 testrpc 客戶端並添加參數--db以保存數據庫。通過這種方式,您可以使用保存的數據再次執行測試節點,而不是隨時從新節點開始

根據我的經驗,使用測試網路更容易,比如 Rinkeby 或 Ropsten。您的狀態將被保存以備後用。你只需要為這些網路提供乙太幣。例如,只需搜尋 Rinkeby 的 faucet,您就會找到一個網站,該網站為您提供在該網路上使用的假乙太幣。

然後像這樣設置松露配置:

rinkeby: {<
   provider: () => new HDWalletProvider(mnemonic, `https://rinkeby.infura.io/v3/${INFURA_KEY}`),
   network_id: 4,       // Rinkeby's id
   gas: 5500000,        // Rinkeby has a lower block limit than mainnet
   confirmations: 1,    // # of confs to wait between deployments. (default: 0)<
   timeoutBlocks: 200,  // # of blocks before a deployment times out  (minimum/default: 50)
   skipDryRun: true     // Skip dry run before migrations? (default: false for public nets )
 }

然後執行truffle deploy --network rinkeby

注意:您也可以在這裡定義自己的專用網路。只需為您的網路定義一個名稱並分配 ip、埠和其他內容。在這裡,我使用 Infra 訪問 Rinkeby,這對於開發目的來說也更容易。

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