merkletree

package
v0.0.0-...-eef6c14 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 9, 2018 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const MaxTreeJobs = 128

MaxTreeJobs - number of jobs in a block

Variables

View Source
var (
	//ErrNodeDoesntExist occurs when merklenode doesn't exist
	ErrNodeDoesntExist = errors.New("core/merkletree: node doesn't exist")
	//ErrLeafNodesEmpty occurs when merkletree with empty leafnodes is attempted to be built
	ErrLeafNodesEmpty = errors.New("core/merkletree: leafnodes is empty")
	//ErrTreeNotBuilt occurs when tree hasn't been built
	ErrTreeNotBuilt = errors.New("core/merkletree: tree hasn't been built")
	//ErrTreeRebuildAttempt occurs when tree rebuild is attempted
	ErrTreeRebuildAttempt = errors.New("core/merkletree: attempt to rebuild tree")
	//ErrTooMuchLeafNodes occurs when merkletree is attempted to be built with more block than allowed
	ErrTooMuchLeafNodes = errors.New("core/merkletree: length of leaf nodes is greater than 24")
	//ErrJobDoesntExist occurs when job doesn't exist
	ErrJobDoesntExist = errors.New("core/merkletree: job doesn't exist")
)

Functions

func MergeJobs

func MergeJobs(x, y MerkleNode) (job.Job, error)

MergeJobs merges two jobs into one

Types

type MerkleNode

type MerkleNode struct {
	Hash  string //hash of a job struct
	Job   job.Job
	Left  *MerkleNode
	Right *MerkleNode
}

MerkleNode nodes that make a merkletree

func NewNode

func NewNode(j job.Job, lNode, rNode *MerkleNode) (*MerkleNode, error)

NewNode returns a new merklenode

func (MerkleNode) GetHash

func (n MerkleNode) GetHash() string

GetHash returns hash

func (MerkleNode) GetJob

func (n MerkleNode) GetJob() job.Job

GetJob returns job

func (MerkleNode) GetLeftNode

func (n MerkleNode) GetLeftNode() MerkleNode

GetLeftNode return leftnode

func (MerkleNode) GetRightNode

func (n MerkleNode) GetRightNode() MerkleNode

GetRightNode return rightnode

func (*MerkleNode) IsEmpty

func (n *MerkleNode) IsEmpty() (bool, error)

IsEmpty check if the merklenode is empty

func (MerkleNode) IsEqual

func (n MerkleNode) IsEqual(x MerkleNode) (bool, error)

IsEqual check if the input merklenode equals the merklenode calling the function

func (*MerkleNode) IsLeaf

func (n *MerkleNode) IsLeaf() bool

IsLeaf checks if the merklenode is a leaf node

func (*MerkleNode) SetJob

func (n *MerkleNode) SetJob(j job.Job)

SetJob setter for job

func (*MerkleNode) SetLeftNode

func (n *MerkleNode) SetLeftNode(l MerkleNode)

SetLeftNode setter for leftnode

func (*MerkleNode) SetRightNode

func (n *MerkleNode) SetRightNode(r MerkleNode)

SetRightNode setter for rightnode

type MerkleTree

type MerkleTree struct {
	Root      string // hash of built tree
	LeafNodes []*MerkleNode
}

MerkleTree tree of jobs

func NewMerkleTree

func NewMerkleTree(nodes []*MerkleNode) (*MerkleTree, error)

NewMerkleTree returns empty merkletree

func (*MerkleTree) Build

func (m *MerkleTree) Build() error

Build builds merkle tree from leafs to root, hashed the root and sets it as the root of the merkletree

func (MerkleTree) GetLeafNodes

func (m MerkleTree) GetLeafNodes() []*MerkleNode

GetLeafNodes return leafnodes

func (MerkleTree) GetRoot

func (m MerkleTree) GetRoot() string

GetRoot returns root

func (MerkleTree) SearchJob

func (m MerkleTree) SearchJob(ID string) (*job.Job, error)

SearchJob returns job from the tree

func (MerkleTree) SearchNode

func (m MerkleTree) SearchNode(hash string) (*MerkleNode, error)

SearchNode returns true if node with hash exists

func (*MerkleTree) SetLeafNodes

func (m *MerkleTree) SetLeafNodes(l []*MerkleNode)

SetLeafNodes return leafnodes

func (MerkleTree) VerifyTree

func (m MerkleTree) VerifyTree() bool

VerifyTree returns true if tree is verified

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL