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

219
Visualizações
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 Respostas
Responde à pergunta

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 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