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
- All
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( ... ) @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: Any): 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[_]
- 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( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
Deprecated Value Members
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated
- Deprecated