0

我正在使用 web3 库开发 dApp。在某些情况下,用户必须决定他想如何连接,MetaMask 或 WalletConnect。因此,当用户决定与 WalletConnect 连接时,连接本身没有问题,但当我想与智能合约交互时遇到问题。假设我想批准用户的股份金额或检查余额。

export const schooseProvider = provider => {
// debugger
console.log("schooseProvider: ", provider );
    if(provider === "MetaMask"){ 
        console.log("Selected Provider: ", window.ethereum)
        W3 = new Web3(window.ethereum) 
    }
    else if(provider === "WalletConnect"){
       const provider = new WalletConnectProvider({
        infuraId: '20c6beb49cd1402db84120a858bc74af',
        bridge: 'https://bridge.walletconnect.org',
        supportedChainIds,
        rpc: {
            3: 'https://ropsten.infura.io/v3/20c6beb49cd1402db84120a858bc74af'
            }
        })
        console.log("Selected Provider: ", provider)
        W3 = new Web3(provider)
    }
}

export const approve = async (account) => {
    try{
        store.dispatch(updateAproveButtonsLoader(true))
        await contract.methods.approve(stakeAddress,'10000000000000000000000000000000000000000000000000').send({from: account})
        .once('receipt', function(receipt){
            store.dispatch(updateApproveButtonsLoader(false))
            store.dispatch(updateApproved(true))
            checkAllowence(account)
        })
        .on('error', () => {
            store.dispatch(updateApproveButtonsLoader(false))
        })
    }
    catch(error){
        store.dispatch(updateApproveButtonsLoader(false))
        console.log(error)
    }
}

4

0 回答 0