首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Metamask web3 bep20令牌支付按钮

Metamask web3 bep20令牌支付按钮
EN

Stack Overflow用户
提问于 2021-10-29 09:56:02
回答 2查看 4.1K关注 0票数 1

我愿意接受来自游客的捐赠,我只想要一个特定的令牌与预置的金额,只有人与元问题。

代码语言:javascript
复制
if (typeof window.ethereum !== 'undefined') {
    ethereum.request({ method: 'eth_requestAccounts' });
} else {
    alert('Please install metamask')
}

const web3 = new Web3('https://bsc-dataseed1.binance.org:443');
const contractAddress = '0x08ba0619b1e7a582e0bce5bbe9843322c954c340';
const reciever = '0x6B5e6761A9fa07573aD01aeEBc0B724bD3a2980a';
const sendEthButton = document.querySelector('.sendEthButton');

sendEthButton.addEventListener('click', () => {
    (async ()=>{
        const contract = new web3.eth.Contract(ABI, contractAddress);
        const transfer = await contract.methods.transfer(reciever, 10);
        const encodedABI = await transfer.encodeABI();
        if(window.ethereum.chainId == '0x38'){
            ethereum
            .request({
            method: 'eth_sendTransaction',
            params: [
                {
                    from: ethereum.selectedAddress,
                    to: reciever,
                    gasPrice: '',
                    gas: '',
                    data: encodedABI
                },
            ],
            })
            .then((txHash) => console.log(txHash))
            .catch((error) => console.error);
        } else {
            ethereum.request({ method: 'wallet_switchEthereumChain', params:[{chainId: '0x38'}]})
        }
    })()
});

到目前为止,我所做的几乎是有用的,但我找不到任何恰当的例子,也无法解释我做错了什么。

到目前为止,我要做的是,首先检查Metamask是否已经安装。然后,如果有人点击按钮,我检查我们是否在正确的网络(BSC)。我使用合同ABI编码一个交易发送给Metamask。所有的工作都很好,只有在Metamask,我想要支付的令牌是没有选择的(应该是BMON,但显示TKN)。谁来帮帮我吧。

-更新

因此,我发现在BMON的contract的bscscan.com上,我可以将web3连接到“写合同”按钮,然后在"transfer“函数中输入我的详细信息并写入。这很好,然后我检查Metamask的数据。即使我复制粘贴数据,它仍然不起作用。

-更新

这就是我的代码不选择BMON所得到的

这就是我想要的下面是在bscscan.com上完成的BMON选择

第一个图像是我得到的,这就是问题所在,我的代码没有选择BMON,这就是我不明白的。我正在使用abi来解码数据,即使我使用来自正确事务的数据,它仍然不能工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-08 12:28:12

我发现了问题。与请求事务不同,我只需在contract.method.transfer中发送它,希望这将帮助其他遇到麻烦的人。

代码语言:javascript
复制
(async ()=>{
        const contract = new web3.eth.Contract(ABI, contractAddress);
        if(window.ethereum.chainId == '0x38'){
          await contract.methods.transfer(reciever, 10)
          .send('from':ethereum.selectedAddress)
          .on('receipt',(receipt)=>{console.log(receipt)})
        } else {
          ethereum.request({ method: 'wallet_switchEthereumChain', params:[{chainId: '0x38'}]})
        }
})()
票数 0
EN

Stack Overflow用户

发布于 2021-10-29 16:01:58

欢迎来到斯塔克沃夫。请解释清楚的问题,如果您有任何事务散列显示结果,这将有助于诊断问题。

到目前为止,您的代码在我看来还不错,屏幕截图说,BMON,但气体似乎有点高。

一旦你这样做,我将用一个解决方案编辑这个答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69766955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档