Ethers Js Transfer BNB Return 0 并没有结束到 Receiver Address

Etherjs Transfer BNB Return 0 and doesnt end to Receiver Address

嗨,我是智能合约的新手。我正在尝试使用 etherjs 和 nextjs 编写简单的传输代码。下面基本上是我的代码

import {ethers} from 'ethers';
const ContractAddr = '0xB8c77482e45F1F44dE1745F52C74426C631bDD52'; /* BNB Contract address */
const ContractABI =[{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"}]

const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();

let numberOfTokens = ethers.utils.parseUnits('0.2', 18)
const Contract = new ethers.Contract(ContractAddr,ContractABI,signer)
const receiver = '0x8CA65A3Ce90d31a88FAa747c695183C2aefe537f';

Contract.transfer(receiver, numberOfTokens).then((transferResult) => {
            console.log(transferResult)
            alert("sent token")
          }).catch((error) => {
            console.error('error',error);
          });

在我的 metamask 上,它按我想要的方式弹出:

然而,当我在 BSCscan 测试网上查看交易详情时,它显示 0 值,接收方是合约地址而不是接收方。

https://testnet.bscscan.com/tx/0x3278d9668391eee98aadf83e8ae58a0b999f2e9c3e5f47a21f504e1c04b24814

求助。被困了一个星期在 Whosebug 上上下搜索类似的问题:(

您将两种不同的方法混合在一起 - 发送 ERC-20 令牌和发送网络的本机货币。

在以太坊网络上,BNB 是一种 ERC-20 代币(link - 请注意您在代码中使用的 0xB8c7... 地址)。

但是,在 BSC 网络上,BNB 是原生货币。所以你使用本地交易来转移它——就像你在以太坊上转移 ETH 一样。

假设您的代码使用 BSC 提供商:

const provider = new ethers.providers.Web3Provider(window.ethereum);

const params = [{
    from: senderAddress,
    to: '0x8CA65A3Ce90d31a88FAa747c695183C2aefe537f',
    value: ethers.utils.parseUnits('0.2', 18),
}];

const transactionResult = await provider.send('eth_sendTransaction', params);