Ethers.js,向智能合约汇款(接收功能)
Posted
技术标签:
【中文标题】Ethers.js,向智能合约汇款(接收功能)【英文标题】:Ethers.js, send money to a smart contract (receive function) 【发布时间】:2021-12-17 20:31:51 【问题描述】:我有一个带有接收功能的智能合约:
receive() external payable
Wallets[msg.sender] += msg.value;
我有一个前端,我想使用 receive() 函数将以太币发送到这个智能合约。
async function transfer()
if(typeof window.ethereum !== 'undefined')
const accounts = await window.ethereum.request( method: 'eth_requestAccounts' );
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const contract = new ethers.Contract(WalletAddress, Wallet.abi, signer);
const transaction = await contract.send(
from: accounts[0],
value: amount
)
await transaction.wait();
alert('ok');
setAmount('');
getBalance();
Saldy,没有“发送”功能,我需要在那里使用什么功能? 非常感谢!
【问题讨论】:
【参考方案1】:当你想调用receive()
函数时,你需要向合约地址发送一笔交易,其中data
字段为空。就像您将 ETH 发送到非合约地址一样。
// not defining `data` field will use the default value - empty data
const transaction = signer.sendTransaction(
from: accounts[0],
to: WalletAddress,
value: amount
);
【讨论】:
以上是关于Ethers.js,向智能合约汇款(接收功能)的主要内容,如果未能解决你的问题,请参考以下文章
我如何将 eth 值发送到在 ethers.js 中支付的特定智能合约功能?