org.bitcoins.core.protocol.dlc.compute.DLCAdaptorPointComputer
AdditionTrieNode
Companion object AdditionTrieNode
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.
- Alphabetic
- By Inheritance
- AdditionTrieNode
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new AdditionTrieNode(preComputeTable: Vector[Vector[ECPublicKey]], depth: Int = 0, children: Vector[AdditionTrieNode] = Vector.empty, pointOpt: Option[SecpPoint] = None)
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
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- 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.
- val depth: Int
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- 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.
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- val preComputeTable: Vector[Vector[ECPublicKey]]
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- 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()