Packages

case class AdditionTrieNode(preComputeTable: Vector[Vector[ECPublicKey]], depth: Int = 0, children: Vector[AdditionTrieNode] = Vector.empty, pointOpt: Option[SecpPoint] = None) extends Product with Serializable

This trie is used for computing adaptor points for a single oracle corresponding to digit prefixes while memoizing partial sums.

For example the point corresponding to 0110 and 01111010 both begin with the 011 sub-sum.

This trie stores all already computed sub-sums and new points are computed by extending this Trie.

Note that this method should not be used if you have access to LibSecp256k1CryptoRuntime because calling CryptoUtil.combinePubKeys will outperform memoization in that case.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AdditionTrieNode
  2. Serializable
  3. Product
  4. Equals
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new AdditionTrieNode(preComputeTable: Vector[Vector[ECPublicKey]], depth: Int = 0, children: Vector[AdditionTrieNode] = Vector.empty, pointOpt: Option[SecpPoint] = None)

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. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  6. def computeSum(digits: Vector[Int]): ECPublicKey

    Uses the preComputeTable to calculate the adaptor point for the given digit prefix.

    Uses the preComputeTable to calculate the adaptor point for the given digit prefix.

    This is done by traversing (and where need be extending) the Trie according to the digits until the point corresponding to the input digits is reached.

  7. val depth: Int
  8. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  9. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  10. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def initChildren(): Unit

    Populates children field with base empty nodes.

    Populates children field with base empty nodes.

    To avoid unnecessary computation (and recursion), this should be called lazily only when children are needed.

  12. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  13. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  15. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. val preComputeTable: Vector[Vector[ECPublicKey]]
  17. def productElementNames: Iterator[String]
    Definition Classes
    Product
  18. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  19. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  20. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  21. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped