Truffle

使用 msg.value 時在哪里傳遞值?

  • July 7, 2021

我一直在使用 remix IDE,但最近改用 Truffle。其他一切都很好,直到我不得不建立一個支付功能。在 remix IDE 中,提供了一個標有“值”的框,該框採用 wei 中的值,用於將乙太幣從一個地址轉移到另一個地址。我不明白當無法為函式獲取該值時,如何使用 msg.value 做同樣的事情。下面是我正在使用的程式碼:

function payment(address payable _ID) external payable {

       _ID.transfer(msg.value);
       
}

我只想知道,在使用松露時,如何在 msg.value 中傳遞所需的數量。如果不可能,是否有任何其他方法可以轉移可以動態分配的金額來代替 msg.value?像這樣**(Solidity 0.5)**:

function payment(address payable _ID, uint _amount) external payable {

       _ID.transfer(_amount);
}

在契約中,您只需像對待任何其他 uint256 一樣對待 msg.value。它是由交易“給予”的。但它是如何到達那裡的?

首先要了解的是,它不僅僅是使用者簽名的消息。它是消息一起發送的實際 ETH。所以,區別對待。

松露 = Javascript。您使用包含有關事務的元數據的事務對象。您可以在那裡描述價值、gas 限制和 gas 價格。你把那個對象放在函式想要的值之後。

await myContractInstance.myFunction(arg1, arg2, { value: <amountInWei> })

希望能幫助到你

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