class BatchAVLProver[D <: Digest, HF <: CryptographicHash[D]] extends AuthenticatedTreeOps[D] with ToStringHelper with SparkzLogging
Implements the batch AVL prover from https://eprint.iacr.org/2016/994 Not thread safe if you use with ThreadUnsafeHash
- Alphabetic
- By Inheritance
- BatchAVLProver
- SparkzLogging
- StrictLogging
- AuthenticatedTreeOps
- ToStringHelper
- SparkzEncoding
- BatchProofConstants
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new BatchAVLProver(keyLength: Int, valueLengthOpt: Option[Int], oldRootAndHeight: Option[(ProverNodes[D], Int)] = None, collectChangedNodes: Boolean = true)(implicit hf: HF = Blake2b256)
- keyLength
- length of keys in tree
- valueLengthOpt
- length of values in tree. None if it is not fixed
- oldRootAndHeight
- option root node and height of old tree. Tree should contain new nodes only WARNING if you pass it, all isNew and visited flags should be set correctly and height should be correct
- collectChangedNodes
- changed nodes will be collected to a separate buffer during tree modifications if
true- hf
- hash function
Type Members
- type ChangeHappened = Boolean
- Definition Classes
- AuthenticatedTreeOps
- type HeightIncreased = Boolean
- Definition Classes
- AuthenticatedTreeOps
- type ToDelete = Boolean
- Definition Classes
- AuthenticatedTreeOps
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val EndOfTreeInPackagedProof: Byte
- Definition Classes
- BatchProofConstants
- val LabelInPackagedProof: Byte
- Definition Classes
- BatchProofConstants
- val LeafInPackagedProof: Byte
- Definition Classes
- BatchProofConstants
- val NegativeInfinityKey: ADKey
- Attributes
- protected
- Definition Classes
- AuthenticatedTreeOps
- val PositiveInfinityKey: ADKey
- Attributes
- protected
- Definition Classes
- AuthenticatedTreeOps
- def addNode(r: Leaf[D], key: ADKey, v: ADValue): InternalProverNode[D]
- returns
- A new prover node with two leaves: r on the left and a new leaf containing key and value on the right
- Attributes
- protected
- Definition Classes
- BatchAVLProver → AuthenticatedTreeOps
- def arrayToString(a: Array[Byte]): String
- Attributes
- protected
- Definition Classes
- ToStringHelper
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- val changedNodesBuffer: ArrayBuffer[ProverNodes[D]]
Sequence of leafs and internal nodes that where likely by modified after last proof generation
Sequence of leafs and internal nodes that where likely by modified after last proof generation
- Attributes
- protected
- Definition Classes
- AuthenticatedTreeOps
- val changedNodesBufferToCheck: ArrayBuffer[ProverNodes[D]]
Nodes that may, or may not be mofidied after last proof generation
Nodes that may, or may not be mofidied after last proof generation
- Attributes
- protected
- Definition Classes
- AuthenticatedTreeOps
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- val collectChangedNodes: Boolean
- Definition Classes
- BatchAVLProver → AuthenticatedTreeOps
- def contains(key: ADKey, label: D): Boolean
- returns
trueif this tree has an element that has the same label, asnode.label,falseotherwise.
- def contains(node: ProverNodes[D]): Boolean
- returns
trueif this tree has an element that has the same label, asnode.label,falseotherwise.
- def digest: ADDigest
Returns the current digest of the authenticated data structure, which contains the root hash and the root height
Returns the current digest of the authenticated data structure, which contains the root hash and the root height
- returns
- the digest
- def digest(rootNode: Node[D]): ADDigest
The digest consists of the label of the root node followed by its height, expressed as a single (unsigned) byte
The digest consists of the label of the root node followed by its height, expressed as a single (unsigned) byte
- Attributes
- protected
- Definition Classes
- AuthenticatedTreeOps
- implicit val encoder: SparkzEncoder
- Definition Classes
- SparkzEncoding
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def generateProof(): SerializedAdProof
Generates the proof for all the operations performed (except the ones that failed) since the last generateProof call
Generates the proof for all the operations performed (except the ones that failed) since the last generateProof call
- returns
- the proof
- def generateProofForOperations(operations: Seq[Operation]): Try[(SerializedAdProof, ADDigest)]
Generates the proof for all the operations in the list.
Generates the proof for all the operations in the list. Does NOT modify the tree
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- implicit val hf: HF
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- val keyLength: Int
- Definition Classes
- BatchAVLProver → AuthenticatedTreeOps
- def keyMatchesLeaf(key: ADKey, r: Leaf[D]): Boolean
Determines if the leaf r contains the key
Determines if the leaf r contains the key
- Attributes
- protected
- Definition Classes
- BatchAVLProver → AuthenticatedTreeOps
- val labelLength: Int
- Attributes
- protected
- def log: Logger
- Attributes
- protected
- Definition Classes
- SparkzLogging
- Annotations
- @inline()
- val logger: Logger
- Attributes
- protected
- Definition Classes
- StrictLogging
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def nextDirectionIsLeft(key: ADKey, r: InternalNode[D]): Boolean
Figures out whether to go left or right when from node r when searching for the key; records the appropriate bit in the directions bit string to be used in the proof
Figures out whether to go left or right when from node r when searching for the key; records the appropriate bit in the directions bit string to be used in the proof
- returns
- true if to go left, false if to go right in the search
- Attributes
- protected
- Definition Classes
- BatchAVLProver → AuthenticatedTreeOps
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def onNodeVisit(n: Node[D], operation: Operation, isRotate: Boolean = false): Unit
- Attributes
- protected
- Definition Classes
- AuthenticatedTreeOps
- def performOneOperation(operation: Operation): Try[Option[ADValue]]
If operation.key exists in the tree and the operation succeeds, returns Success(Some(v)), where v is the value associated with operation.key before the operation.
If operation.key exists in the tree and the operation succeeds, returns Success(Some(v)), where v is the value associated with operation.key before the operation. If operation.key does not exists in the tree and the operation succeeds, returns Success(None). Returns Failure if the operation fails. Does not modify the tree or the proof in case return is Failure.
- returns
- Success(Some(old value)), Success(None), or Failure
- def randomWalk(rand: Random = new Random): Option[(ADKey, ADValue)]
- rand
- source of randomness
- returns
Random leaf from the tree that is not positive or negative infinity
- def removedNodes(): List[ProverNodes[D]]
- returns
nodes, that where presented in old tree (starting form oldTopNode, but are not presented in new tree
- def replayComparison: Int
Deletions go down the tree twice -- once to find the leaf and realize that it needs to be deleted, and the second time to actually perform the deletion.
Deletions go down the tree twice -- once to find the leaf and realize that it needs to be deleted, and the second time to actually perform the deletion. This method will re-create comparison results using directions array and lastRightStep variable. Each time it's called, it will give the next comparison result of key and node.key, where node starts at the root and progresses down the tree according to the comparison results.
- returns
- result of previous comparison of key and relevant node's key
- Attributes
- protected
- Definition Classes
- BatchAVLProver → AuthenticatedTreeOps
- def returnResultOfOneOperation(operation: Operation, rootNode: Node[D]): Try[(Node[D], Option[ADValue])]
- Attributes
- protected
- Definition Classes
- AuthenticatedTreeOps
- var rootNodeHeight: Int
Longest path length in a tree
Longest path length in a tree
- Definition Classes
- BatchAVLProver → AuthenticatedTreeOps
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- BatchAVLProver → AnyRef → Any
- def treeWalk[IR, LR](internalNodeFn: (InternalProverNode[D], IR) => (ProverNodes[D], IR), leafFn: (ProverLeaf[D], IR) => LR, initial: IR): LR
Walk from tree to a leaf.
Walk from tree to a leaf.
- IR
- result of applying internalNodeFn to internal node. E.g. some accumutalor of previous results
- LR
- result of applying leafFn to a leaf. Result of all walk application
- internalNodeFn
- function applied to internal nodes. Takes current internal node and current IR, returns new internal nod and new IR
- leafFn
- function applied to leafss. Takes current leaf and current IR, returns result of walk LR
- initial
- initial value of IR
- def unauthenticatedLookup(key: ADKey): Option[ADValue]
A simple non-modifying non-proof-generating lookup.
A simple non-modifying non-proof-generating lookup. Does not mutate the data structure
- returns
Some(value) for value associated with the given key if key is in the tree, and None otherwise
- val valueLengthOpt: Option[Int]
- Definition Classes
- BatchAVLProver → AuthenticatedTreeOps
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated