Skip to main content

Hash-chain log implementation

Project description

HashLog

Coverage Status

Principles

  • Records are immutable
  • Records are ordered
  • It must be possible to check hash(Xi) for any i
  • hash(Xi) can be sent to anyone as a proof
  • hash(Xi) == hash(X, hash(Xi-1))
  • You do not need X to perform the check

Installation

$ pip install hlog

Usage

Getting started

# create a chain
c = Chain()

# send some messages
c.append(message="Alice gives 10.36 euros to Bob", amount=10.36, currency="EUR")
c.append(message="Bob gives 2 dollars to Alice", amount=2, currency="USD")

# you can loop through the chain records
used_currencies = set(r.fields["currency"] for r in c.records)

# call verify() to ensure records have not been modified
c.verify()

Raising an exception during validation

c.verify(raise_on_error=True)

Verify will raise a ModifiedRecordException. It has 3 interesting attributes:

  • index: the index in the chain where validation starts to fail
  • message: a user-friendly message to indicate the error
  • record: the Record object itself

Dumping

c = Chain()
c.append(message="hello")
c.append(message="wonderful")
c.append(message="world")

rows = c.dump()

rows is a tuple of bytes, each item being one record of the chain.

Restoring from a dump

If you want to reconstruct your chain based on a file or database records, you can use Chain.from_dump()

c = Chain()
c.append(message="hello")
c.append(message="wonderful")
c.append(message="world")

d = c.dump()

c2 = Chain.from_dump(d)

c2.verify()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hlog-1.0.1.tar.gz (5.9 kB view details)

Uploaded Source

File details

Details for the file hlog-1.0.1.tar.gz.

File metadata

  • Download URL: hlog-1.0.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.9

File hashes

Hashes for hlog-1.0.1.tar.gz
Algorithm Hash digest
SHA256 931ad958218bf64c4bb8299f850df30e77485a912db595d8e838e42c1a507f26
MD5 8acfa4b3e0388bbf2bda93586f14ec29
BLAKE2b-256 8cfb4f4e2afd30b56f9e31e05cbbdcb1876a547bbda2ee6ec9ef08d381587546

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page