Web3js

當我沒有將其作為數據參數傳遞時,為什麼我會在交易詳細資訊中看到輸入數據

  • April 16, 2019

當我創建如下交易時

App.contracts.Soccer.deployed().then(function(instance) {       
   return instance.purchaseShoes(name, age, { from: accounts[0], value: value});
}).then(function() {
...

input data從 etherscan 創建一個交易細節。不 input data只是在我將它作為data參數傳遞時創建的嗎?(前任:{ from: accounts[0], value: value, data: 'test data' }

當我通過將輸入數據轉換為utf-8etherscan 來解碼輸入數據時,雖然它不是完全可讀的,但我看到其中一個值是我傳遞給purchseShoes函式的數據。

所以我的問題是,為什麼input data當我沒有將它作為數據參數傳遞時它會創建一個?我怎樣才能防止它創建它?

您看到的數據正是您作為name,傳遞的數據age。web3 在後台將函式名、輸入參數等打包在事務的數據欄位中,以便 EVM 知道它應該執行什麼函式以及它的參數是什麼。您可以在這個 asnwer中看到數據是如何創建和編碼的,然後在最終簽署交易之前添加到交易中,您可以在底部看到 tx 的創建和簽名。

我不太確定 web3data在最後一個參數中對那個對像做了什麼,可能會忽略它(我最好的猜測)。該對象的參數與交易本身有關,例如用於簽名的帳戶、發送多少 wei、gas 限制、gas 價格等。

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