Catalog npm
Back to packageRELEASE DETAILS

0.1.2

npm

4b82

4b82 Continuity Trustcenter Framework

Published17 Aug 2014
Direct dependencies0
Transitive dependenciesNot calculated

README

Current package documentation

4b82 - Continuity Trustcenter Framework

Based on GIT and Merkle Tree

ps. 4B82 is the first four symbols of the hash value for the GIT empty-tree "tree 0\0" 4b825dc642cb6eb9a060e54bf8d69288fbee4904

4B82 Project Key Technical Details

The goal of this project is to allow a straightforward and robust way to establish abstract, provably immutable sequences of digital events.

Currently existing methods for attaining this rely on highly specialized software, are computationally demanding, or both.

We have decided to use GIT’s architectural framework as the core implementing this functionality because of its versatility, robustness, strong safeguards against corruption, as well as its self-evidential flexibility.

Strict linearity was achieved by leveraging hash functionality typical to all git-like solutions while eschewing branching functionality, and was done in a manner that minimizes unnecessary (for our purposes) overhead of typical git object behaviors (but does not compromise the formal integrity of the git structures involved).

Read more about 4b82 Continuity Trustcenter Framework at 4b82.com

How to Use it?

Initialize an empty git repository:

mkdir git-repo && cd git-repo
git init
cd ..

Create the new node.js project:

mkdir 4b82-server && cd 4b82-server
npm init

Add 4b82 code from npm:

npm install 4b82 --save

Now, you can use 4b82 functions and make your own 4b82 server.

API Functions

Note: all callback functions are function (err, result) or function (err). if an error occurs then err object will be passed to callback function. Otherwise, err object is null and result object will be passed to the callback function (if result is exists).

Initialization

First, it is necessary to initialize the application.

During initialization, it is necessary to pass a configuration object. Currently, this object is simple and includes a git field. This field is an object with the path field which stores the path to the GIT repository. For example:

Configuration Object

{
	git: {
		path: 'path-to-git'
	}
}

Application Initialization

function init (conf)

ArgumentsDescription
confConfiguration object (see above)

Exclusive Access

Before you make any changes to the GIT-repository, you must obtain an exclusive access to GIT-repository at the application level.

Important: please, do not forget to call releaseAccess() and to release exclusive access to the repository at the end of the operation.

Important: exclusive access is provided only at the application logic level, not the system level.

Obtain the Exclusive Access

function getAccess (callback)

ArgumentsDescription
callback (err)Callback function that calls immediately after receiving
the exclusive access to the GIT repository

Release the Exclusive Access

function releaseAccess ()

ArgumentsDescription
noneReleases the exclusive access to the GIT repository

Adding and Reading Commits

Add a Commit to the Repository

function addCommit (message, author, committer, callback)

ArgumentsDescription
messageCommit message
authorCommit author
committerCommitter (your system)
callback (err, commit)Callback function that receives commit object after adding or error

Get the Recently Added Commit

function getRecentCommit (callback)

ArgumentsDescription
callback (err, commit)Callback function that receives commit object after adding or error.
If there is no commits, null is returned.

Get the Commit With Hash Value

function getCommit (hash, callback)

ArgumentsDescription
hashThe hash value for the desired commit
callback (err, commit)Callback function that receives commit object after adding or error.
If there is no commits, null is returned.

Display the Commit Data

function prettyPrint (commit) - show information about commit

ArgumentsDescription
commitCommit object returned by addCommit, getRecentCommit or getCommit functions

Examples

A simple application that adds commit to our fresh 4b82 git repository:

var _4b82 = require('4b82');

var config = {
	git: { path: '~/git-path/' } // Path to git repository
}

// Initialize 4b82
_4b82.init(config, function (err) {
	if (err) return console.error(err);

	// Get exclusive access to GIT
	_4b82.getAccess(function () {

		// Add commit
		_4b82.addCommit('test commit', 'me <me@localhost>', 'me <me@localhost>',
				function (err, commit) {

			if (err) {
				_4b82.releaseAccess();
				return console.error(err);
			}

			// Print commit data
			_4b82.prettyPrint(commit);

			// Release access
			_4b82.releaseAccess();

		});
	});
});

When you run this application it adds new commit to 4b82 git repository and prints the commit hash, data and deflated bytes.

To get specific commit use getCommit function:

// Initialize 4b82
_4b82.init(config, function (err) {
	if (err) return console.error(err);

	// Get commit data
	_4b82.getCommit(hash, function (err, commit) {
		if (err) return console.error(err);

		// Print commit data
		_4b82.prettyPrint(commit);

	})
});

This function returns commit object (with tag field).

commit contains whole git commit data, you can parse it for author, committer, e.t.c.

tag field uses for backward navigation (read more about backward navigation).


That's all.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 0

Native requirements
0 direct targetsNot calculated transitive count
No declared dependencies in this collected response

Declarations describe requirements; they are not a resolved dependency graph.

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "9893b62f802a54022f0345db976bacf6dc8ee79d",
  "tarball": "https://registry.npmjs.org/4b82/-/4b82-0.1.2.tgz",
  "integrity": "sha512-BrcMH12l94oOTcuYxFFuyjUY6RRIT36z0OzF2ML2BcQRJ7k0EDpmCXgrHlFdkEHVAfTpa1se/leB9ussSllg6Q==",
  "signatures": [
    {
      "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA",
      "sig": "MEYCIQCtxmWY/AyALvnH5Ks7Q/2smZWODs46+A1v54RZyV8iygIhALFiIEdQsbADIRz0KzEoAwHsJ9J7dT/jQQnc40sTSJyX"
    }
  ]
}

Repository

PENDING
anbreezee/4b82

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:04 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:65fe68bf83e1b4a5d83343ecbbf675400a82a40d60bcb9a90471f938b0617761

Other collected versions

0.1.1219 Aug0.1.1118 Aug0.1.1018 Aug0.1.918 Aug0.1.818 Aug0.1.718 AugView all collected versions →