Envíe tokens erc20 usando la API json-rpc

Necesito enviar tokens ERC20 (golem para ser precisos) de forma automatizada, así que configuro un servidor geth json-rpc con

./geth --fast --rpc

Entonces puedo llamar a la API muy bien.

La documentación de eth_sendtransaction facilita el envío de ethereum a otra dirección, pero no pude encontrar cómo enviar tokens ERC20. Vi el campo de datos que permitió activar contratos inteligentes. Entonces, supongo que necesito activar una función dentro del contrato inteligente del token ERC20, pero como necesitaría aprender solidez y leer todo el contrato inteligente del golem, pensé en preguntar aquí primero.

Gracias !

Dado que Golem es un token compatible con ERC20, debe llamar a la transfer()función estándar en el contrato inteligente para transferir tokens x a la dirección y . La función es la siguiente: transfer(address _to, uint256 _value).

Respuestas (3)

Para enviar un token compatible con ERC20, debe llamar al método transferde contrato. Para hacer esto con geth, ha elegido correctamente eth_sendTransactionRPC Call.

En datael parámetro, debe especificar la función con codificación ABI transfercon parámetros codificados como se describe aquí (codificados con ABI).

Para codificar parámetros, es posible que desee utilizar la herramienta en línea https://abi.hashex.org . Ingresa el nombre de la función (transferencia) y agrega parámetros con tipos y valores. O simplemente puede pegar token abi y elegir la función transferen la lista desplegable "Tipo de función". Aquí hay un ejemplo del uso de esta herramienta.

ingrese la descripción de la imagen aquí

También hay una biblioteca de javascript para codificar parámetros si desea hacerlo automáticamente.

Después de obtener sus datos codificados con ABI, los configura en el datacampo en la llamada RPC de Geth, configura otros valores y está listo para llamar a Geth y transferir tokens.

Preste atención a la cuenta desde la que está enviando tokens ( fromparámetro en la llamada RPC) debe desbloquearse en Geth para firmar la transacción.

Gracias, probé su método y se transfirió, ETH y no el token. Cómo y dónde definimos la dirección del contrato (para que sepa que el ABI pertenece al contrato) para que podamos enviar el token correcto.

<-- EDITAR -->

Acabo de encontrar la solución: Para: la dirección del contrato de token, ya que ese es el destinatario de la invocación de la función.

valor = 0 (cantidad de ethereum a enviar).

@R Tan, ayúdame. Todavía estoy enviando éter. He actualizado Para como dirección de contrato

Si está de acuerdo con el uso de una API REST, puede utilizar Chaingateway.io , que permite enviar y recibir automáticamente cualquier token ERC20. De esta manera, no necesita aprender Solidity y puede concentrarse en su aplicación.

  • No estoy afiliado ni pagado por Chaingateway, pero soy un cliente feliz desde hace unos meses y feliz de recomendarlo.
Deje un comentario de divulgación si es parte del equipo de Chaingateway o si le pagan.