Replication uses versions to control changes but these versions are hidden and the names change continually behind the scenes when replicas are synced. Writing code to compare these can get tricky because you need your code to test for the current hidden replica parent version name.
What way are you replicating? If changes are pushed from child to parent you could make a child version off of SDE.Default in the parent geodatabase (e.g. call it ReplicaSource) . Then make the replica using this version, ReplicaSource, as the parent.
Now when replicas are synced changes will go to the ReplicaSource version in the parent SDE database and not SDE.Default. So you can use the well documented ArcObjects classes to compare versions, ReplicaSource to SDE.Default, instead of having to compare replicas.
Archiving might also work but it will not tell you what version created what feature, it will only tell you when a feature was created or changed.
// Cast to the IHistoricalWorkspace interface and get default version and the version as of the start of the day IHistoricalWorkspace historicalWorkspace = (IHistoricalWorkspace)workspace; IHistoricalVersion defaultVersion = historicalWorkspace.FindHistoricalVersionByName(historicalWorkspace.DefaultMarkerName); IHistoricalVersion historicalVersion = historicalWorkspace.FindHistoricalVersionByTimeStamp(DateTime.Today); // Cast both versions to IFeatureWorkspace and open the table from each. IFeatureWorkspace defaultFWS = (IFeatureWorkspace)defaultVersion; IFeatureWorkspace historicalFWS = (IFeatureWorkspace)historicalVersion; ITable defaultTable = defaultFWS.OpenTable(tableName); ITable historicalTable = historicalFWS.OpenTable(tableName); // Create a difference cursor to compare what has happened since the start of the day IVersionedTable versionedTable = (IVersionedTable)defaultTable; IDifferenceCursor differenceCursor = versionedTable.Differences(historicalTable, differenceType, null);