Al llamar a un nodo de Ethereum en ejecución a través de la API getBalance, puede recuperar los N bloques de saldo de Ethereum como se explica aquí . Esto es útil si solo desea confiar en un saldo que ha sido suficientemente confirmado por la red.
¿Es lo mismo posible para los tokens ERC20? ¿Existe un servicio que pueda mostrarme cuál era el saldo de tokens para una dirección determinada hace 5 cuadras?
Sí, usted puede hacer esto. Con web3.js 0.2xx, observe en https://github.com/ethereum/wiki/wiki/JavaScript-API#contract-methods que todas las llamadas a contratos toman un número de bloque opcional.
Entonces, lo siguiente obtendrá el saldo de una cuenta en un número de bloque específico:
tokenContract.balanceOf(account, {}, blockNumber);
Creo que la sintaxis de web3.js 1.0.0-beta es algo así, pero revisa la documentación:
tokenContract.methods.balanceOf(account).call({}, blockNumber);
Si está utilizando llamadas JSON-RPC sin procesar, eth_call
también toma un número de bloque como segundo parámetro.
Como mencionó, para obtener el saldo ETH de una dirección, debe hacer esto:
eth.getBalance("<ADDRESS_HERE>", <BLOCK_NUMBER>);
Si desea obtener el saldo de un token ERC20, debe realizar una llamada al contrato de ese token. Para ello necesitarás tres cosas:
Entonces, necesita instanciar el contrato ABI haciendo:
> var tokenContract = eth.contract([{
"type":"function",
"name":"balanceOf",
"constant":true,
"payable":false,
"inputs":[{"name":"","type":"address"}],
"outputs":[{"name":"","type":"uint256","value":"0"}]
}]);
Y luego puedes hacer:
> var erc20ContractAddress = "<ADSRESS_OF_TOKEN'S_CONTRACT>";
> var account = "YOUR_ADDRESS";
> tokenContract.at(erc20ContractAddress).balanceOf(account);
Esto genera el saldo de fichas en fichas simples, es decir, sin mostrar un punto decimal.
Thorkil Værge
Thorkil Værge
Thorkil Værge