Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
Use dos proveedores al mismo tiempo (uno Ethereum, otro — Polygon)

Me gustaría usar dos proveedores al mismo tiempo, uno es Web3Proivder, que obtengo a través de la conexión Metamask, y funciona bien. Estoy atascado en la configuración del proveedor de Polygon en este momento. Quiero leer los datos del almacenamiento de los contratos de Polygon, ¿cómo hago eso?

Este es el código que funciona:

 function callWithActiveProvider() { const { library, account, chainId } = useActiveWeb3React(); const contract: Contract | null = useMemo(() => getCollectContract(library, account, chainId), [ library, account, chainId, ]); contract.callSomeMethod(); } callWithActiveProvider(); // this works

Esto no lo hace:

 function callWithPolygonProvider() { const { library, account, chainId } = ???????(); const contract: Contract | null = useMemo(() => getCollectContract(library, account, chainId), [ library, account, chainId, ]); contract.callPolygonMethod(); } callWithPolygonProvider() // but how do I do this?

Estas son las funciones/importaciones que se usan arriba:

 import { useWeb3React, useWeb3React as useWeb3ReactCore } from '@web3-react/core'; function getSigner(library: Web3Provider, account: string): JsonRpcSigner { return library.getSigner(account).connectUnchecked(); } function getProviderOrSigner( library: Web3Provider, account?: string, ): Web3Provider | JsonRpcSigner { return account ? getSigner(library, account) : library; } function getContract( address: string, ABI: any, library: Web3Provider, account?: string, ): Contract { if (!isAddress(address) || address === AddressZero) { throw Error(`Invalid 'address' parameter '${address}'.`); } return new Contract(address, ABI, getProviderOrSigner(library, account) as any); } function useActiveWeb3React(): Web3ReactContextInterface<Web3Provider> & { chainId?: ChainId; } { const context = useWeb3ReactCore<Web3Provider>(); const contextNetwork = useWeb3ReactCore<Web3Provider>(NetworkContextName); return context.active ? context : contextNetwork; } function getCollectContract(library: Web3Provider, account: string, chainId: ChainId) { return getContract(CONTRACT_ADDRESS, CONTRACT_ABI, library, account); }

La parte más difícil es que ambos deberían funcionar al mismo tiempo, para que el usuario pueda realizar una transacción en Ethereum, y deberíamos poder realizar una solicitud para leer el almacenamiento del contrato de Polygon en segundo plano.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Probablemente desee un segundo web3 con una URL https de polígono de infura:

 const Web3 = require('web3') const polygonWeb3 = new Web3(new Web3.providers.HttpProvider(infuraUrl))
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda