HashLog
HashLog is an experimental data structure using merkle-style hashing and a time-delta inspired by lamport timestamp to create a commit-log type structure that ensures correct ordering of commits on merge, even for distributed logs (unsynchronized clocks).
FYI: This is totally an experiment!
Theory
By using merkle-style hashing we can prove the order of the commits to our log. On merge, if we can find a common hash in the past, we can be sure that all data up to this merge-point is the same for both logs. By also storing a time-delta between commits we can calculate deltas from the merge-point and ensure correct ordering of commits made to different logs.
Also; logs are great! You can build any other kind of data structure using a log.
Install
npm install --save hashlog
Use
let log1 = 'data1'let log2 = 'data1' log1 // Merge log2 into log1 // Merge log1 into log2
Benchmark
$ npm run bench mock: 581msinit: 15043mspush: 419msmerge1: 606msmerge2: 331ms17869837359133814333 1050000 datr442t917869837359133814333 1050000 datr442t9
enjoy.