Truffle-Migration

加速合約部署到 Frontier

  • July 2, 2018

我正在使用 Truffle suit 來開發、測試和部署我的智能合約。它在測試網路上執行良好,但在現場網路上它像蝸牛一樣慢。

例如這個交易 - 它只是遷移契約(來自松露基礎設施)部署,價格為 40 GWei 的估計確認時間約為 2 小時。總體部署大約有 18 個事務(松露,在每個成功確認的事務之後將其儲存在自己的migration合約中,以避免重新部署已經部署的東西)。

40 Gwei 超過了整個網路的最高 gas 價格,我想知道是否有可能以某種方式加速部署?每筆交易 2 小時慢得令人無法接受。

Infura 不太可能成為瓶頸——它們針對交易的規模和吞吐量進行了相當優化。

假設您的交易正在廣播(這應該意味著它在 etherscan.io 中顯示為待處理),那麼這主要取決於 gas 價格。

在過去 24 小時內,gas 價格非常高,並且有很多備份交易 - 您在這裡所能做的就是支付更多的 gas,這對於合約部署來說是痛苦的,因為它消耗了大量的 gas。

您可以嘗試將 gas 限制調低一點(更接近實際使用的),因為礦工可能更傾向於包含更小且更靈活地適合塊的交易。

您是通過 Infura 還是本地節點進行部署?

我為此使用了etherlime。你可以看看這個:

這是我的 deploy.js 文件之一的範例

const etherlime = require('etherlime');
const ProductionFactory = require('./testContracts/ProductionFactory');
const ProductionFactoryProxy = require('./testContracts/ProductionFactoryProxy');
const IProductionFactory = require('./testContracts/IProductionFactory');

const defaultConfigs = {
   gasPrice: 20000000000, // Choose your configs wisely
   gasLimit: 4700000
}

const deployer = new etherlime.InfuraPrivateKeyDeployer('Your Private Key Here', 'ropsten', 'Your Infura Key', defaultConfigs);

const deploy = async () => {
   const productionFactoryWrapper = await deployer.deploy(ProductionFactory);
   const proxyWrapper = await deployer.deploy(ProductionFactoryProxy, productionFactoryWrapper.contractAddress);
   const upgradeableFactoryWrapper = deployer.wrapDeployedContract(IProductionFactory, proxyWrapper.contractAddress);

   const initTransaction = await upgradeableFactoryWrapper.contract.init(randomAddress, defaultConfigs);
   const result = await upgradeableFactoryWrapper.verboseWaitForTransaction(initTransaction.hash, 'Init Factory');

}

您可以輕鬆地從 InfuraPrivateKeyDeployer 切換到 JSONRPCDeployer

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