Web3js

fromAccount 和 web3.js

  • October 6, 2018

這是我在solidity中的功能

function transferForm(address _from, address _to, uint256 _value) public returns (bool success) {
}

現在我在測試文件中呼叫相同的函式來測試我的智能合約

tokenInstance.transferForm(spendingAccount,10,{from : fromAccount})

我已經從賬戶初始化到賬戶$$ 3 $$

為什麼我們通過使用發送數據{from : fromAccount}

為什麼我們不能發送諸如

tokenInstance.transferForm(from,spendingAccount,10,)

有什麼區別嗎?

函式如何知道我們何時改變我們發送的函式輸入參數的位置

請幫助我理解邏輯

即使認為他們有同樣令人困惑的名字,他們指的是不同的東西。

格式{ key: value }為 web3 格式,用於為函式提供額外的元數據。這些不作為函式的參數傳遞,而是在內部處理。例如,密鑰from可用於定義從哪個可用帳戶發送交易。該值不會直接傳遞給函式,但交易是從該帳戶創建的。

transferFrom函式需要一個類型的第一個參數,address並且必須提供它。函式簽名不知道實際交易來自哪個帳戶 - 稍後可以在函式中使用msg.sender. 所以如果你為{ from: fromAccount }函式呼叫提供了一個,fromAccount就會變成msg.sender函式內部。

編輯

此外,該函式transferFrom需要 3 個參數,但在第一個範例中您只傳遞了兩個參數。該函式無法以任何方式從元數據中“重新映射”參數,因此您會收到錯誤,因為您的簽名(2 個參數)的函式不存在。

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