Solidity
如何使用 ethers.js 在函式呼叫中設置 msg.value?
我的智能合約中有一個函式,我希望它接受一個設置 msg.value 的參數,然後將其支付給合約:
function deposit(uint256 amount) public payable { msg.value = amount }
我正在嘗試在網站上製作一個按鈕,將固定金額發送到契約中,如下所示:
async function sendTransaction() { if (typeof window.ethereum !== 'undefined') { await requestAccount() const provider = new ethers.providers.Web3Provider(window.ethereum); const signer = provider.getSigner(); const contract = new ethers.Contract(contractAddress, contract.abi, signer); const transaction = await contract.deposit() await transaction.await() }
我的問題是,有沒有辦法從函式內部設置 msg.value,所以我可以呼叫 contract.deposit(value),或者有沒有更簡單的方法來使用 ether.js 設置值?
您不能更改合約中的 msg.value,它代表發送的乙太幣數量。
在前端:
const transaction = await contract.deposit({ value: ethers.utils.parseEther("0.1") }) //sends 0.1 eth await transaction.wait()
將 0.1 更改為您要發送的乙太幣數量。