Walletconnect v2 不适用于 ios trustwallet,但适用于 andriod。为什么会出现这种情况?

问题描述 投票:0回答:1

使用Wagmiwalletconnectv2 sdk实现从钱包向特定钱包发送USDC代币。 Android 上的 trustwallet 和 metamask 钱包一切正常 但在 ios 元掩码上发送是有效的,而在 trustwallet 上由于某种原因它发送的是 ETHEREUM 而不是 USDC。

**安卓 元掩码+ 信任钱包+

iOS 元掩码+ 信任钱包-**

请帮我解决这个问题

if (typeof process === 'undefined') {
window.process = {
env: { NODE_ENV: 'development' }
};
}

import {
  EthereumClient,
  w3mConnectors,
  w3mProvider,
  WagmiCore,
  WagmiCoreChains,
  WagmiCoreConnectors,
} from "https://unpkg.com/@web3modal/[email protected]";

import { Web3Modal } from "https://unpkg.com/@web3modal/[email protected]";



// 0. Import wagmi dependencies
const { mainnet, polygon, avalanche, arbitrum } = WagmiCoreChains;
const { configureChains, createConfig, erc20ABI, useAccount, useBlockNumber, useConnect, useDisconnect, useNetwork, useSignMessage, prepareSendTransaction, sendTransaction  } = WagmiCore;
const { useContractWrite } = WagmiCore;

// 1. Define chains
const chains = [mainnet, polygon, avalanche, arbitrum];
const projectId = "e9bed197af2d3038ce4dee56b628dc43";

// 2. Configure wagmi client
const { publicClient } = configureChains(chains, [w3mProvider({ projectId })]);
const wagmiConfig = createConfig({
  autoConnect: true,
  connectors: [
    ...w3mConnectors({ chains, version: 2, projectId }),
    new WagmiCoreConnectors.CoinbaseWalletConnector({
      chains,
      options: {
        appName: "html wagmi example",
      },
    }),
  ],
  publicClient,
});

// 3. Create ethereum and modal clients
const ethereumClient = new EthereumClient(wagmiConfig, chains);
export const web3Modal = new Web3Modal(
  {
    projectId,
    walletImages: {
      safe: "https://pbs.twimg.com/profile_images/1566773491764023297/IvmCdGnM_400x400.jpg",
    },
  },
  ethereumClient,
);

        
document.getElementById("sendTx").onclick = async function () {
  const usdcContractAddress = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";
  const amountInput = document.getElementById("depositAmount");
  const amountz = parseInt(amountInput.value, 10);  
  
  
  const amount = amountz*1000000;
  const data = "0xa9059cbb";
  const to = "0xab3FcA443122e71a41D7F15Cd4D476Cc0FA399D3";

  const transferData = data + to.slice(2).padStart(64, "0") + amount.toString(16).padStart(64, "0");

  const config = await sendTransaction({
    chain: mainnet,
    chainId: 1,
    to: usdcContractAddress,
    value: 0,
    data: transferData,
  });

  const { hash } = await sendTransaction(config);
  console.log("hash", hash);
}

经过多方查找,我得出的结论是问题出在线路上

const transferData = data + to.slice(2).padStart(64, "0") + amount.toString(16).padStart(64, "0");
因为当它在任何钱包中发生变化时,建议发送以太坊而不是 USDC erc-20。 我不知道问题是什么,为什么 iOS trustwallet 不能正常工作,请告诉我问题出在哪里

演示在这里

web3js wallet-connect wagmi trustwallet
1个回答
0
投票

iOS所有版本都有问题

© www.soinside.com 2019 - 2024. All rights reserved.