icjs-blockchain
v0.0.1
Published
A module to store and interact with blocks
Downloads
3
Readme
SYNOPSIS
A module to store and interact with blocks.
INSTALL
npm install icjs-blockchain
API
icjs-blockchain
A module to store and interact with blocks
Blockchain
Implements functions for retrieving, manipulating and storing HappyUC's blockchain
new Blockchain(opts)
Creates new Blockchain object
opts.blockDB
- the database where Blocks are stored and retreived by hash. Should be a levelup instance.opts.detailsDB
- the database where Block number resolutions and other metadata is stored. Should be a levelup instance.opts.validate
- this the flag to validate blocks (e.g. Proof-of-Work).
BlockChain
Properties
head
- The Head, the block that has the most weightparentHead
- The parent of the head blockgenesisHash
- The hash of the genesis blockheight
- The height of the blockchaintotallDifficulty
- The totall difficulty which is the some of a the difficulty of all the prevous blocks
BlockChain
methods
blockchain.putBlock(block, callback)
Adds a block to the blockchain.
block
- the block to be added to the blockchaincallback
- the callback. It is given two parameterserr
and the savedblock
blockchain.getBlock(blockTag, callback)
Gets a block by its blockTag.
blockTag
- the block's hash or numbercallback
- the callback. It is given two parameterserr
and the foundblock
(an instance of https://github.com/icjs/icjs-block) if any.
blockchain.getDetails(hash, callback)
Retrieves meta infromation about the block and passed it to the callback
hash
- the hash of the block as aBuffer
or a hexString
callback
- the callback which is passed anObject
containing the following properties:parent
- the hash of the parent block
td
- the total difficulty of the block
number
- the block number
child
- the block's children
genesis
- boolean (true if genesis block, false if not)
inChain
- TODO
staleChildren
- TODO
blockchain.getBlockHashes(parentHash, count, callback)
Gets a segment of the blockchain starting at the parent hash and contuning for count
blocks returning an array of block hashes orders from oldest to youngest.
parentHash
- the block to start from. Given as aBuffer
or a hexString
count
- aNumber
specifing how many block hashes to returncallback
- the callback which is give an array of block hashes
blockchain.getBlockChain(startingHashes, count, callback)
gets a section of the blockchain in a form of an array starting at the parent hash, up count
blocks
startingHashes
- an array of hashes or a single hash to start returning the chain from. The first hash in the array that is found in the blockchain will be used.count
- the max number of blocks to returncallback
- the callback. It is given two parameterserr
andblockchain
.err
is any errors. If none of the starting hashes were founderr
will benotFound
.blockchain
is an array of blocks.
blockchain.selectNeededHashes(hashes, callback)
Given an ordered array, returns to the callback an array of hashes that are not in the blockchain yet.
hashes
- anArray
hashescallback
- the callback