Enviar token y consultar saldo

Quiero entender mejor cómo verificar cuánto token hay en mi cuenta y cómo enviar ese token a otra dirección.

Por ejemplo, supongamos que tengo melón (MLN) y quiero comprobar cuánto tengo. He estado haciendo lo siguiente:

var tokenContractABI = [{"constante":verdadero,"entradas":[],"nombre":"nombre","salidas":[{"nombre":"","tipo":"cadena"}]," pagadero":falso,"tipo":"función"},{"constante":verdadero,"entradas":[],"nombre":"minter","salidas":[{"nombre":""," type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":" dirección"},{"nombre":"_valor","tipo":"uint256"}],"nombre":"aprobar","resultados":[{"nombre":"éxito","tipo":" bool"}],"a pagar":falso,"tipo":"función"},{"constante":verdadero,"entradas":[],"nombre":"suministrototal","salidas":[{"nombre":"","tipo": "uint256"}],"a pagar":falso,"tipo":"función"},{"constante":falso,"entradas":[{"nombre":"nuevaDirección","tipo":"dirección"} ],"name":"changeMelonportAddress","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":" remitente","tipo":"dirección"},{"nombre":"destinatario","tipo":"dirección"},{"nombre":"cantidad","tipo":"uint256"}]," nombre":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true," entradas":[],"nombre":"decimales","salidas":[{"nombre":"","tipo":"uint256"}],"a pagar":falso,"tipo":"función" },{"constante":verdadero,"entradas":[],"nombre":"tiempo de finalización","salidas":[{"nombre":"","tipo":"uint256"}],"a pagar" :falso,"tipo":"función"},{"constante":verdadero,"entradas":[],"nombre":"MAX_TOTAL_TOKEN_AMOUNT_OFFERED_TO_PUBLIC","salidas":[{"nombre":"","tipo" :"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newAddress","type":"address"}] ,"name":"changeMintingAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner ","type":"address"}],"name":"lockedBalanceOf","outputs":[{"name":"saldo","type":"uint256"}],"payable":false, "tipo":"función"},{"constante":verdadero,"entradas":[{"nombre":"_propietario","tipo":"dirección"}],"nombre":"saldoDe","salidas ":[{"nombre":"saldo","tipo":"uint256"}],"a pagar":falso,"tipo":"función"},{"constante":verdadero,"entradas":[]," name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant": falso,"entradas":[{"nombre":"destinatario","tipo":"dirección"},{"nombre":"cantidad","tipo":"uint256"}],"nombre":"mintIcedToken ","salidas":[],"a pagar":falso,"tipo":"función"},{"constante":falso,"entradas":[{"nombre":"destinatario","tipo":" dirección"},{"nombre":"cantidad","tipo":"uint256"}],"nombre":"mintLiquidToken","salidas":[],"a pagar":falso,"tipo":"función"},{"constante ":verdadero,"entradas":[],"nombre":"símbolo","salidas":[{"nombre":"","tipo":"cadena"}],"a pagar":falso,"tipo ":"función"},{"constante":verdadero,"entradas":[],"nombre":"MAX_TOTAL_TOKEN_AMOUNT","salidas":[{"nombre":"","tipo":"uint256"} ],"a pagar":falso,"tipo":"función"},{"constante":falso,"entradas":[{"nombre":"destinatario","tipo":"dirección"},{"nombre ":"cantidad","tipo":"uint256"}],"nombre":"transferir","salidas":[{"nombre":"éxito","tipo":"bool"}],"a pagar":falso ,"tipo":"función"},{"constante":falso,"entradas":[{"nombre":"destinatario","tipo":"dirección"}],"nombre":"desbloquearBalance"," salidas":[],"a pagar":falso,"tipo":"función"},{"constante":verdadero,"entradas":[{"nombre":"_propietario","tipo":"dirección"} ,{"nombre":"_gastador","tipo":"dirección"}],"nombre":"asignación","salidas":[{"nombre":"restante","tipo":"uint256"} ],"pagadero":falso,"tipo":"función"},{"constante":verdadero,"entradas":[],"nombre":"melonport","salidas":[{"nombre":""," type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"THAWING_DURATION","outputs": [{"nombre":"","tipo":"uint256"}],"a pagar":falso,"tipo":"función"},{"entradas":[{"nombre":"setMinter"," type":"address"},{"name":"setMelonport","type":"address"},{"name":"setStartTime","type":"uint256"},{"name":" establecerHoraFinal","type":"uint256"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from ","tipo":"dirección"},{"indexado":verdadero,"nombre":"_a","tipo":"dirección"},{"indexado":falso,"nombre":"_valor", "tipo":"uint256"}],"nombre":"Transferir","tipo":"evento"},{"anónimo":falso,"entradas":[{"indexado":verdadero,"nombre": "_propietario","tipo":"dirección"},{"indexado":verdadero,"nombre":"_gastador","tipo":"dirección"},{"indexado":falso,"nombre":"_valor ","escribe":"uint256"}],"nombre":"Aprobación","tipo":"evento"}] // contrato de melón ABI

var tokenContract = eth.contract(tokenContractABI).at("0xbeb9ef514a379b997e0798fdcc901ee474b6d9a1") // esta es la dirección del contrato de melón

tokenContract.balanceOf(eth.coinbase) // comprobar el saldo

Esta parece una forma demasiado torpe de averiguar el saldo de MLN en mi cuenta. ¿Hay algo más limpio que se pueda hacer? Más allá de eso, quiero enviar tokens MLN a otra dirección ahora, pero no tengo claro cómo hacerlo.

Gracias por la ayuda.

Respuestas (2)

Si está utilizando la billetera Ethereum , la forma más limpia es `Watch Token

  • Ir a la pestaña de contratos.
  • Haga clic en Ver token
  • Ingrese detalles como Dirección de contrato de token, Nombre de token, Símbolo de token, Lugares decimales de la unidad más pequeña
  • Haga clic en Aceptar

Y podrás ver saldos.

Para ejecutar funciones del contrato como ' transfer, necesita Watch Contract.

  • Ir a la pestaña de contratos.
  • Haga clic en Ver token
  • Ingrese detalles como Nombre del contrato, Dirección del contrato, Interfaz JSON (Contrato ABI)
  • Haga clic en Aceptar
  • Ahora el contrato aparecerá en la pestaña de contratos y puede llamar a cualquiera de sus funciones

Si no está utilizando la billetera Ethereum y desea continuar usándola geth, probablemente debería escribir funciones para las acciones como checkBalance, transferCoin usando web3.js.

QuickBlocks tiene una herramienta de línea de comandos llamada getTokenBalque toma como primer parámetro cualquier dirección de token ERC20 seguida de cualquier número de cuentas adicionales. Informa sobre los saldos de tokens para cada cuenta después de la primera. Desde la línea de comandos,

getTokenBal 0xbeb9ef514a379b997e0798fdcc901ee474b6d9a1 <your_account>

devolvería sus tenencias en MLN (o cualquier token ERC20).

Alternativamente, la opción --byAcct, toma un número arbitrario de direcciones de token ERC20 seguidas de una cuenta e informa sobre los saldos de token para cada token de esa cuenta.

En el funcionamiento normal, se ejecuta en un nodo que se ejecuta localmente, pero hay una variable de entorno que puede configurar que hace que busque en Infura su fuente RPC, por lo que no tiene que descargar toda la cadena de bloques.

Una herramienta de línea de comando hermana, llamada getBalance, funciona de manera similar pero informa los saldos de ETH.

[Divulgación completa: escribí QuickBlocks, que está ingresando a la prueba beta esta semana.]