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.
Si está utilizando la billetera Ethereum , la forma más limpia es `Watch Token
Y podrás ver saldos.
Para ejecutar funciones del contrato como ' transfer
, necesita Watch Contract.
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 getTokenBal
que 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.]
Aniket