Hash-chain log implementation
Project description
HashLog
Principles
- Records are immutable
- Records are ordered
- It must be possible to check
hash(Xi)
for anyi
hash(Xi)
can be sent to anyone as a proofhash(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 failmessage
: a user-friendly message to indicate the errorrecord
: theRecord
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
Release history Release notifications | RSS feed
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)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 |
931ad958218bf64c4bb8299f850df30e77485a912db595d8e838e42c1a507f26
|
|
MD5 |
8acfa4b3e0388bbf2bda93586f14ec29
|
|
BLAKE2b-256 |
8cfb4f4e2afd30b56f9e31e05cbbdcb1876a547bbda2ee6ec9ef08d381587546
|