Web3js
為什麼呼叫 .at() 比 .deployed() 慢得多?
我正在嘗試創建一個輔助函式,該函式將允許我在
.deployed()
對我的合約的呼叫與使用.at()
. 第二個呼叫(在下面的程式碼中被註釋掉)非常慢。我每秒針對本地測試網進行大約 1-2 次呼叫(輪詢事件),並且使用第二種方法使 Chrome 保持在 100%。第一種方法大約快 20 倍。為什麼會這樣,我該如何解決?getContractDeploy: function() { contract_deploy = App.contracts.CONTRACTX.deployed(); //contract_deploy = App.contracts.CONTRACTX.at(contract_address); return contract_deploy; },
如果您使用的是 truffle,那麼您正在使用truffle-contract來管理合約。
查看 的實現
at
,它會額外呼叫以web3.eth.getCode
確保在提供的地址存在合約。的實現
deployed
更簡單,它只依賴於合約工件的資訊。在熱路徑上呼叫不是一個好主意
.at()
,或者如果地址不經常更改,至少記憶體結果。