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

Linear Supertypes
SparkzLogging, StrictLogging, AuthenticatedTreeOps[D], ToStringHelper, SparkzEncoding, BatchProofConstants, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. BatchAVLProver
  2. SparkzLogging
  3. StrictLogging
  4. AuthenticatedTreeOps
  5. ToStringHelper
  6. SparkzEncoding
  7. BatchProofConstants
  8. AnyRef
  9. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. 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

  1. type ChangeHappened = Boolean
    Definition Classes
    AuthenticatedTreeOps
  2. type HeightIncreased = Boolean
    Definition Classes
    AuthenticatedTreeOps
  3. type ToDelete = Boolean
    Definition Classes
    AuthenticatedTreeOps

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val EndOfTreeInPackagedProof: Byte
    Definition Classes
    BatchProofConstants
  5. val LabelInPackagedProof: Byte
    Definition Classes
    BatchProofConstants
  6. val LeafInPackagedProof: Byte
    Definition Classes
    BatchProofConstants
  7. val NegativeInfinityKey: ADKey
    Attributes
    protected
    Definition Classes
    AuthenticatedTreeOps
  8. val PositiveInfinityKey: ADKey
    Attributes
    protected
    Definition Classes
    AuthenticatedTreeOps
  9. 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
    BatchAVLProverAuthenticatedTreeOps
  10. def arrayToString(a: Array[Byte]): String
    Attributes
    protected
    Definition Classes
    ToStringHelper
  11. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  12. 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
  13. 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
  14. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  15. val collectChangedNodes: Boolean
    Definition Classes
    BatchAVLProverAuthenticatedTreeOps
  16. def contains(key: ADKey, label: D): Boolean

    returns

    true if this tree has an element that has the same label, as node.label, false otherwise.

  17. def contains(node: ProverNodes[D]): Boolean

    returns

    true if this tree has an element that has the same label, as node.label, false otherwise.

  18. 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

  19. 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
  20. implicit val encoder: SparkzEncoder
    Definition Classes
    SparkzEncoding
  21. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  22. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  23. 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

  24. 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

  25. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  26. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  27. implicit val hf: HF
  28. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  29. val keyLength: Int
    Definition Classes
    BatchAVLProverAuthenticatedTreeOps
  30. 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
    BatchAVLProverAuthenticatedTreeOps
  31. val labelLength: Int
    Attributes
    protected
  32. def log: Logger
    Attributes
    protected
    Definition Classes
    SparkzLogging
    Annotations
    @inline()
  33. val logger: Logger
    Attributes
    protected
    Definition Classes
    StrictLogging
  34. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  35. 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
    BatchAVLProverAuthenticatedTreeOps
  36. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  37. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  38. def onNodeVisit(n: Node[D], operation: Operation, isRotate: Boolean = false): Unit
    Attributes
    protected
    Definition Classes
    AuthenticatedTreeOps
  39. 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

  40. 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

  41. def removedNodes(): List[ProverNodes[D]]

    returns

    nodes, that where presented in old tree (starting form oldTopNode, but are not presented in new tree

  42. 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
    BatchAVLProverAuthenticatedTreeOps
  43. def returnResultOfOneOperation(operation: Operation, rootNode: Node[D]): Try[(Node[D], Option[ADValue])]
    Attributes
    protected
    Definition Classes
    AuthenticatedTreeOps
  44. var rootNodeHeight: Int

    Longest path length in a tree

    Longest path length in a tree

    Definition Classes
    BatchAVLProverAuthenticatedTreeOps
  45. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  46. def toString(): String
    Definition Classes
    BatchAVLProver → AnyRef → Any
  47. 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

  48. 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

  49. val valueLengthOpt: Option[Int]
    Definition Classes
    BatchAVLProverAuthenticatedTreeOps
  50. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  51. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  52. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from SparkzLogging

Inherited from StrictLogging

Inherited from AuthenticatedTreeOps[D]

Inherited from ToStringHelper

Inherited from SparkzEncoding

Inherited from BatchProofConstants

Inherited from AnyRef

Inherited from Any

Ungrouped