configuración
node.js + web3.js (versión 0.20.6) + y usando infura para httpProvider
Descubrí y envié con éxito tokens erc20 usando web3.js, (después de mucho buscar en Google... complete noobie aquí...)
y ahora estoy tratando de averiguar cómo obtener el historial de transacciones del token de una dirección específica.
tengo la idea de que necesito ver los eventos, que para las transacciones de fichas, sería el evento "Transferir".
así que estoy siguiendo la API de Javascript para "eventos de contrato" https://github.com/ethereum/wiki/wiki/JavaScript-API#contract-events
y debajo está el código que estoy ejecutando (o al menos intentando hacerlo)
var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider('https://rinkeby.infura.io/MYINFURATOKEN'));
var myaddress = "0x482d42bc7a5dd62f3fae88c3b4cde29a333cf913";
var contractAddress = "0x31a86307bfe81780a47fe98c192004ccdce8fcc0";
var abi = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"TransferAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"frozenAccount","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"freeze","type":"bool"}],"name":"freezeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"initialSupply","type":"uint256"},{"name":"tokenName","type":"string"},{"name":"tokenSymbol","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"},{"indexed":false,"name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"bool"}],"name":"TransferEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"","type":"bool"}],"name":"TransferDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"}];
var myContractInstance = web3.eth.contract(abi).at(contractAddress);
var event = myContractInstance.Transfer({_from: myaddress}, {fromBlock:0, toBlock: 'latest'});
event.watch(function(error, result){
if (!error)
console.log(result);
});
y eso vuelve
Filter {
requestManager:
RequestManager {
provider:
HttpProvider {
host: 'https://rinkeby.infura.io/MYINFURATOKEN',
timeout: 0,
user: undefined,
password: undefined,
headers: undefined },
polls: {},
timeout: null },
options:
{ topics:
[ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
null,
null ],
from: undefined,
to: undefined,
address: '0x31a86307bfe81780a47fe98c192004ccdce8fcc0',
fromBlock: '0x0',
toBlock: 'latest' },
implementation:
{ newFilter: { [Function: send] request: [Function: bound ], call: [Function: newFilterCall] },
uninstallFilter: { [Function: send] request: [Function: bound ], call: 'eth_uninstallFilter' },
getLogs: { [Function: send] request: [Function: bound ], call: 'eth_getFilterLogs' },
poll: { [Function: send] request: [Function: bound ], call: 'eth_getFilterChanges' } },
filterId: null,
callbacks: [ [Function] ],
getLogsCallbacks: [],
pollFilters: [],
formatter: [Function: bound ] }
que estoy bastante seguro de que no es el historial de transacciones del token... ¿o hay algún paso que me estoy perdiendo?
¿Cómo me iría de aquí?
Gracias de antemano. Justino.
Estoy haciendo lo mismo que usted aquí. Esto le muestra el historial de transacciones de tokens, la cuestión es que no le muestra el historial de una transacción de tokens de una dirección específica.
justin kwon
Nikita Jerschow