Truffle-Migration
加速合約部署到 Frontier
我正在使用 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