hashlog
HashLog is an experimental data structure
Last updated 5 years ago by asbjornenge .
ISC · Original npm · Tarball · package.json
$ cnpm install hashlog 
SYNC missed versions from official npm registry.

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

import HashLog   from 'hashlog'
import { merge } from 'hashlog/utils'

let log1 = new HashLog(['data1'])
let log2 = new HashLog(['data1'])

log1.push('data2')
merge(log1, log2) // Merge log2 into log1 
merge(log2, log1) // Merge log1 into log2
assert(log1.tip.chainhash == log2.tip.chainhash)
assert(log1.tip.value == log2.tip.value)
assert(log1.tip.value == 'data2')

Benchmark

$ npm run bench 
mock: 581ms
init: 15043ms
push: 419ms
merge1: 606ms
merge2: 331ms
17869837359133814333 1050000 datr442t9
17869837359133814333 1050000 datr442t9

enjoy.

Current Tags

  • 1.0.1                                ...           latest (5 years ago)

2 Versions

  • 1.0.1                                ...           5 years ago
  • 1.0.0                                ...           5 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (3)
Dev Dependencies (5)
Dependents (2)

Copyright 2014 - 2017 © taobao.org |