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

222
Vistas
ERC20 transferFrom () clave privada con web3js y metamask

Usé el estándar IERC20 para crear un contrato inteligente ERC20.

Hice un juego de apuestas, que si el usuario actual pierde, tendrá que transferir un token al distribuidor (también conocido como msg.sender del contrato inteligente).

Con el escenario anterior, creo que transferFrom("CURRENT_USER_PRIVATEKEY", "DEPLOYER_PUBLICKEY", 1) debería ser la respuesta.

Sin embargo, con web3js y metamask, no estoy seguro de cómo obtener "CURRENT_USER_PRIVATEKEY", ya que Metamask no permitirá que web3js obtenga la clave privada. En otras publicaciones de StackOverflow, descubrí que podemos codificar esta clave privada, pero no es ideal para un sistema con varios usuarios. ¿Qué debo hacer para ejecutar esta función transferFrom()?

Aquí está mi contrato inteligente y el código para la transacción:

 async playerLoseMoney(){ // Transfer money from player to the dealer const AMOUNT = 1; try{ const contract = await this.getContract(erc20_abi_json); const computerChoice = await contract.methods.TransferFrom( "0x8a2a3a1dacF2B4b57734eB3DB71c33d3EBe263B6", "0xc00432E08770B9be73fB2303203B407d7B2E2cf2", AMOUNT ).call(); alert("You lose 1 coin!") }catch(err){ alert(err.stack); window.location.reload(); } }
 contract ERC20Token is IERC20 { .... function transferFrom(address owner, address buyer, uint256 numTokens) public returns(bool){ require(numTokens <= balances[owner]); require(numTokens <= allowed[owner][msg.sender]); balances[owner] = balances[owner].sub(numTokens); allowed[owner][msg.sender] = allowed[owner][msg.sender].sub(numTokens); balances[buyer] = balances[buyer].add(numTokens); emit Transfer(owner, buyer, numTokens); return true; } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La clave privada le da el control de esa cuenta. Entonces, en lugar de usar una clave privada, erc20 implementa permiso y aprobación. Los expliqué aquí: ¿qué métodos de aprobación y asignación realmente están haciendo en ERC20 Standard?

Básicamente, la dirección de su cuenta permite retirar la dirección del contrato para una cantidad de token específica.

Entonces, en lugar de pasar la clave privada, debe pasar la dirección pública

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