Web3js
當我沒有將其作為數據參數傳遞時,為什麼我會在交易詳細資訊中看到輸入數據
當我創建如下交易時
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-8
etherscan 來解碼輸入數據時,雖然它不是完全可讀的,但我看到其中一個值是我傳遞給purchseShoes
函式的數據。所以我的問題是,為什麼
input data
當我沒有將它作為數據參數傳遞時它會創建一個?我怎樣才能防止它創建它?
您看到的數據正是您作為
name
,傳遞的數據age
。web3 在後台將函式名、輸入參數等打包在事務的數據欄位中,以便 EVM 知道它應該執行什麼函式以及它的參數是什麼。您可以在這個 asnwer中看到數據是如何創建和編碼的,然後在最終簽署交易之前添加到交易中,您可以在底部看到 tx 的創建和簽名。我不太確定 web3
data
在最後一個參數中對那個對像做了什麼,可能會忽略它(我最好的猜測)。該對象的參數與交易本身有關,例如用於簽名的帳戶、發送多少 wei、gas 限制、gas 價格等。