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 !
Para enviar un token compatible con ERC20, debe llamar al método transfer
de contrato. Para hacer esto con geth, ha elegido correctamente eth_sendTransaction
RPC Call.
En data
el parámetro, debe especificar la función con codificación ABI transfer
con 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 transfer
en la lista desplegable "Tipo de función". Aquí hay un ejemplo del uso de esta herramienta.
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 data
campo 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 ( from
pará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).
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.
ʰᵈˑ
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)
.