Quiero obtener la lista de todas las transacciones realizadas por/en una cuenta en mi cadena de bloques privada. Intenté usar la función
getTransactionsByAccount(accountAddress, startBlockNumber, endBlockNumber)
dado en este enlace . El problema con este método es que para las transacciones que incluyen la transferencia (de la cantidad) de una cuenta a otra, da la dirección correcta en el campo "de", pero incorrecta para el campo "a".
Entonces, me gustaría preguntar si hay algún otro método por el cual podamos obtener el historial de transacciones.
contractAddress = "0x00.."
web3.eth.filter({
address: contractAddress
from: 1,
to: 'latest'
}).get(function (err, result) {
// callback code here
})
Puedes leer los documentos aquí
Sí, el enfoque mencionado anteriormente funciona para direcciones de contrato. Desafortunadamente, no hay ningún método en Web3js que nos ayude a lograr esta tarea. Pero, la forma en que lo hice fue desde el número de bloque 0 hasta el último. Mientras revisaba, obtuve todas las transacciones que ocurrieron en el bloque junto con los detalles de la transacción.
A continuación se muestra el código:
He usado web3.eth.getBlock para obtener todas las transacciones del bloque.
function getAccountTransactions(accAddress, startBlockNumber, endBlockNumber) {
// You can do a NULL check for the start/end blockNumber
console.log("Searching for transactions to/from account \"" + accAddress + "\" within blocks " + startBlockNumber + " and " + endBlockNumber);
for (var i = startBlockNumber; i <= endBlockNumber; i++) {
var block = eth.getBlock(i, true);
if (block != null && block.transactions != null) {
block.transactions.forEach( function(e) {
if (accAddress == "*" || accAddress == e.from || accAddress == e.to) {
console.log(" tx hash : " + e.hash + "\n"
+ " nonce : " + e.nonce + "\n"
+ " blockHash : " + e.blockHash + "\n"
+ " blockNumber : " + e.blockNumber + "\n"
+ " transactionIndex: " + e.transactionIndex + "\n"
+ " from : " + e.from + "\n"
+ " to : " + e.to + "\n"
+ " value : " + e.value + "\n"
+ " gasPrice : " + e.gasPrice + "\n"
+ " gas : " + e.gas + "\n"
+ " input : " + e.input);
}
})
}
}
}
Ejemplo de detalles de transacción en Ropsten Etherscan
Encuentre transacciones hacia/desde la dirección eth.accounts[0]:
getTransactionsByAccount(eth.accounts[0])
endBlockNumber: 1575620
startBlockNumber: 1575619
Searching for transactions to/from account "0x87bae5d55603cfe2703062cea8bf76263fa0ca95" within blocks 1575619 and 1575620
tx hash : 0xd55f196cd4a41f518c84804ac6286972db1d0fa8e51d137e00299fb4906a51ab
nonce : 12044
blockHash : 0xdac37667bca025e8107cea79b6b9bc5c1d86ddbec5a8b13615a2ce70bec63e60
blockNumber : 1575620
transactionIndex: 0
from : 0x87bae5d55603cfe2703062cea8bf76263fa0ca95
to : 0x60b634cf459c6e88dfb2a52311199a8473ed85b5
value : 0.000909211685644988
gasPrice : 20000000000
gas : 21000
input : 0x
ismael
Anchit Seth
nichoio
web3.eth.filter
ya no está disponible y no pude encontrar nada en los documentos para lograr lo que se solicitó originalmente.ismael
Milagro