Question about the ethereum blockchain:
If I walk the blockchain like so:
for block in blockchain: for transaction in block: receipt = getTransactionReceipt(transaction) for log in receipt: doSomethingWithLog(log)
Is it conceivable that I could pull down a transaction mined by miner "A" with receipt that appears successful, and has logs, only to have a subsequent miner "B" mine the same transaction and see it fail, and then this second miner's version (failing, no longs) later becomes the accepted confirmed block, so that miner "A"s version is orphaned and removed from the blockchain?
If this is conceivable, then any consequences of "doSomethingWithLog" would have to be un-done when the later version of the transaction (with its failing state and lack of logs) is encountered.
Is it possible for events (logs) to be detectable on a blockchain node at a given point in time, only to be later "revoked" in a later, blockchain-accepted version of the same transaction, if that later version results in failure?
Any input would be greatly appreciated!