Solidity
用值編碼函式數據
我有契約 A:
import "@openzeppelin/contracts/utils/Address.sol"; contract A { using Address for address payable; function proxyCallWithValue(address payable target, bytes memory callData, uint256 value) external payable { target.functionCallWithValue(callData, value); } }
和契約B:
contract B { function test(uint256 tokenId) external payable { //doing something.. } }
而且我希望合約 A 呼叫 B 的價值。
沒有價值我會去;
const aABI = getContractABI('A') const bABI = getContractABI('B') const bInterface = new ethers.utils.Interface(bABI) const tokenId = 1234 const value = 1000000 const callData = bInterface.encodeFunctionData("test", [tokeiId]) const contractA = ethers.Contract(aAddress, aABI, provider) // calling contract A (which should call bontract B) await contractA.proxyCallWithValue(bAddress, callData, value)
呼叫方法時如何將值從呼叫錢包發送到合約 A
proxyCallWithValue
?
當您談論“發送價值”時,我假設您想在通話中發送 ETH。您可以在通話中使用 指定此項
{value: 1000000 }
。這在Solidity 文件中指定。
在呼叫其他合約的函式時,您可以通過特殊選項指定呼叫時發送的 Wei 或 Gas 數量
{value: 10, gas: 10000}
。您還可以使用 讀取在呼叫中發送的值
msg.value
。