I need a complete in-order list of every event emitted by a specific contract, the list needs to be updated as each block is mined and it needs to be able to handle a chain reorganization gracefully (waiting for N confirmations isn't acceptable). The list is persisted to disk and needs to support resuming where it left off.
The part I'm having the most trouble with is how to detect when a reorg has occurred and determining which events needs to be rollback'd.