使用Wagmi和walletconnectv2 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/ethereum@2.7.1";
import { Web3Modal } from "https://unpkg.com/@web3modal/html@2.7.1";
// 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 不能正常工作,请告诉我问题出在哪里
iOS所有版本都有问题