Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

142
Visualizações
¿Se puede llamar a un método de contrato de Solidity solo con Metamask?

Quiero usar Metamask en mi aplicación para permitir que los usuarios paguen una tarifa ETH fija (más gas) para llamar a un método de mi contrato de Solidity. Miré la documentación de Metamask y el método eth_sendTransaction parece estar cerca de lo que necesito; eth_sendTransaction ciertamente me permitiría solicitar ETH a un usuario, pero el parámetro "datos" es un poco confuso.

Los documentos de Metamask dicen:

los datos son opcionales, pero se utilizan para definir la creación e interacción de contratos inteligentes

y

también se utiliza para especificar métodos de contrato y sus parámetros.

Entonces, "datos" representa mi método y sus parámetros, pero ¿cómo sabe Metamask (o window.ethereum , más bien) el contrato cuyos métodos estoy tratando de llamar?

¿No tiene que proporcionar normalmente una dirección de contrato y ABI/JSON para interactuar con un contrato implementado? En resumen, ¿es posible hacer lo que he descrito solo con Metamask? ¿O tiene que hacer otras configuraciones del lado del cliente para llamar a un método con eth_sendTransaction ?

Editar: por cierto, TylerH, la respuesta implicó el uso de web3.js. Tal vez no edites las publicaciones de las personas a menos que sepas de qué diablos estás hablando. Solo un pensamiento...

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Sí, necesitará el contrato abi para obtener la información que necesita incluir en los datos que está pasando al contrato. También hay algunas otras cosas que necesitará para lograr esto:

Primero deberá asegurarse de descargar las ethers.js y @alch/alchemy-web3 npm en su aplicación. En segundo lugar, necesitará una clave API de proveedor de una plataforma como Alchemy para comunicarse con el contrato abi. Por último, necesitará el contrato abi que se puede encontrar en la parte inferior de la sección de contratos de etherscan. Hay mucha información sobre cómo obtener estas cosas en línea, por lo que no explicaré cómo configurarlas aquí.

Una vez que los tenga, estará listo para el siguiente paso.

Sugiero crear esto en un archivo de utilidades en algún lugar de su sistema de archivos de aplicaciones, pero la idea es esta:

 const alchemyKey = process.env.ALCHEMY_KEY; const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS; const { createAlchemyWeb3 } = require("@alch/alchemy-web3"); const web3 = createAlchemyWeb3(alchemyKey); const contractABI = require('../contract-abi.json'); export const contract = new web3.eth.Contract(contractABI, CONTRACT_ADDRESS); export const yourMethod = () => { if(window.ethereum.request({method: 'eth_requestAccounts'})){ const provider = new ethers.providers.Web3Provider(window.ethereum); const signer = provider.getSigner(); const address = await signer.getAddress(); const tx = { from: address, to: CONTRACT_ADDRESS, value: "some wei value", // this is the value in wei to send data: contract.methods.YOUR_CONTRACT_METHOD_HERE().encodeABI() } const txHash = await window.ethereum.request({ method: 'eth_sendTransaction', params: [tx] }); // do something with your transaction hash here console.log({txHash}); }else{ console.log('user must connect wallet'); } }

Entonces, el valor que se completa en el campo de datos de nuestra transacción proviene de llamar al método que estamos tratando de invocar en nuestro contrato. Esto se codifica y luego pasamos esta información junto con el resto de nuestros datos de transacción.

Esta es una descripción muy breve y breve de lo que hace, y espero que esto sea lo que está buscando. Si necesita más ayuda, siempre estoy disponible para chatear en Twitter @_syndk8.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda