Metamask确认按钮不工作,无法确认交易的智能合同。
我使用JS和WalletConnectProvider (网站项目)。通过WalletConnect连接到元标记,然后调用自定义令牌契约的传输函数。我在桌面上使用相同的代码,它工作并传输令牌。完全相同的代码不适用于手机(对于Metamask应用程序)。检查了IOS和Android --同样的问题。请告诉我我的密码有什么问题:
<script src="https://cdn.jsdelivr.net/npm/@walletconnect/web3-provider@1.8.0/dist/umd/index.min.js"></script>
<script src="https://[mywebsitescriptspath]/web3.min.js"></script> // 1.8.0
<script type="text/javascript">
var contract
var accountFrom
const ABI = "... abi here....."
var provider = new WalletConnectProvider.default({
infuraId: 'my infura id',
rpc: {
1: "https://mainnet.infura.io/v3/[myinfuraid]",
56: "https://bsc-dataseed.binance.org/"
},
})
const contractAddress = '0xcontraddresshere'
const receiver = '0xreceiveraddresshere'
var connect = async () => {
await provider.enable()
var web3 = new Web3(provider)
web3.givenProvider = web3.currentProvider
web3.eth.givenProvider = web3.currentProvider
web3.eth.accounts.givenProvider = web3.currentProvider
window.w3 = web3
contract = new w3.eth.Contract(ABI, contractAddress)
await w3.eth.getAccounts().then(accounts => {
accountFrom = accounts[0]
})
}
connect()
// function called after the button click
var sendtransaction = async () => {
let vall = 100
let calcAmount = w3.utils.toWei(vall.toString())
let transfer = await contract.methods.transfer(receiver, calcAmount);
await transfer.send({from: accountFrom})
.on('transactionHash', function(hash){
console.log(hash)
})
}
</script>

我试过很多不同的东西,但都没用。
在wifi上,在4g上,在不同的移动浏览器上,在不同的智能手机(android和IOS)上测试。没有成功。
这个问题是从5.9.0 Metamask应用程序版本开始的。
更新:现在在5.10.0版本时,它无法识别自定义合同令牌。例如,当我想传输一个令牌时,它显示了一个BNB。最后一个版本更好:)
关于github还有一些悬而未决的问题:
到目前为止还没有解决办法- 14天后。
发布于 2022-11-09 13:05:51
更改版本元询问,工作我版本- 5.7.0
发布于 2022-11-26 22:45:16
这个问题是通过为IOS 16.1.1更新的Metamask 5.11.0解决的。将您的Metamask应用程序更新到5.11.0。
参考资料:https://github.com/MetaMask/metamask-mobile/issues/5260
https://stackoverflow.com/questions/74278420
复制相似问题