Class/Object

org.ergoplatform.wallet.boxes

ReplaceCompactCollectBoxSelector

Related Docs: object ReplaceCompactCollectBoxSelector | package boxes

Permalink

class ReplaceCompactCollectBoxSelector extends DefaultBoxSelector

A box selector which is parameterized by maximum number of inputs a transaction can have, and optimal number of inputs.

Say, the selector is given boxes denoted by their values (1,2,3,4,...10). Then the selector is working as follows:

1) the selector first picking up boxes in given order (1,2,3,4,...) by using DefaultBoxSelector 2) if number of inputs exceeds the limit, the selector is sorting remaining boxes(actually, only 10*maximum boxes) by value in descending order and replaces small-value boxes in the inputs by big-value from the tail (1,2,3,4 => 10) 3) if the number of inputs still exceeds the limit, the selector is trying to throw away the dust if possible. E.g. if inputs are (100, 200, 1, 2, 1000), target value is 1300 and maximum number of inputs is 3, the selector kicks out (1, 2) 4) if number of inputs after the previous steps is below optimal, the selector is trying to append the dust, by sorting remaining boxes in ascending order and appending them till optimal number of inputs.

Linear Supertypes
DefaultBoxSelector, BoxSelector, ScorexLogging, StrictLogging, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ReplaceCompactCollectBoxSelector
  2. DefaultBoxSelector
  3. BoxSelector
  4. ScorexLogging
  5. StrictLogging
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ReplaceCompactCollectBoxSelector(maxInputs: Int, optimalInputs: Int, reemissionDataOpt: Option[ReemissionData])

    Permalink

    maxInputs

    - maximum number of inputs a transaction can have

    optimalInputs

    - optimal number of inputs, when transaction is still not expensive. The box selector is trying to add dust if a transaction has less inputs than this.

    reemissionDataOpt

    - re-emission settings. If provided, re-emission tokens are considered by box selector

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def calcChange[T <: ErgoBoxAssets](boxes: Seq[T], targetBalance: Long, targetAssets: TokensMap): Either[BoxSelectionError, Seq[ErgoBoxAssets]]

    Permalink
    Attributes
    protected[org.ergoplatform.wallet.boxes]
  6. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. def collectDust[T <: ErgoBoxAssets](bsr: BoxSelectionResult[T], tail: Seq[T], targetBalance: Long, targetAssets: TokensMap): Either[BoxSelectionError, BoxSelectionResult[T]]

    Permalink
    Attributes
    protected[org.ergoplatform.wallet.boxes]
  8. def compress[T <: ErgoBoxAssets](bsr: BoxSelectionResult[T], targetBalance: Long, targetAssets: TokensMap): Either[BoxSelectionError, BoxSelectionResult[T]]

    Permalink
    Attributes
    protected[org.ergoplatform.wallet.boxes]
  9. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  11. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. def formChangeBoxes(foundBalance: Long, targetBalance: Long, foundBoxAssets: Map[ModifierId, Long], targetBoxAssets: TokensMap, reemissionAmt: Long): Either[BoxSelectionError, Seq[ErgoBoxAssets]]

    Permalink

    Helper method to construct change outputs

    Helper method to construct change outputs

    foundBalance

    - ERG balance of boxes collected (spendable only, so after possibly deducting re-emission tokens)

    targetBalance

    - ERG amount to be transferred to recipients

    foundBoxAssets

    - assets balances of boxes

    targetBoxAssets

    - assets amounts to be transferred to recipients

    reemissionAmt

    - amount of re-emission tokens in collected boxes

    Definition Classes
    DefaultBoxSelector
  13. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  14. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  15. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  16. def log: Logger

    Permalink
    Attributes
    protected
    Definition Classes
    ScorexLogging
    Annotations
    @inline()
  17. val logger: Logger

    Permalink
    Attributes
    protected
    Definition Classes
    StrictLogging
  18. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  19. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  20. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  21. def reemissionAmount[T <: ErgoBoxAssets](boxes: Seq[T]): Long

    Permalink

    Helper method to get total amount of re-emission tokens stored in input boxes.

    Helper method to get total amount of re-emission tokens stored in input boxes.

    Definition Classes
    BoxSelector
  22. val reemissionDataOpt: Option[ReemissionData]

    Permalink

    - re-emission settings.

    - re-emission settings. If provided, re-emission tokens are considered by box selector

    Definition Classes
    ReplaceCompactCollectBoxSelectorDefaultBoxSelectorBoxSelector
  23. def replace[T <: ErgoBoxAssets](bsr: BoxSelectionResult[T], tail: Seq[T], targetBalance: Long, targetAssets: TokensMap): Either[BoxSelectionError, BoxSelectionResult[T]]

    Permalink
    Attributes
    protected[org.ergoplatform.wallet.boxes]
  24. def select[T <: ErgoBoxAssets](inputBoxes: Iterator[T], filterFn: (T) ⇒ Boolean, targetBalance: Long, targetAssets: TokensMap): Either[BoxSelectionError, BoxSelectionResult[T]]

    Permalink

    A method which is selecting boxes to spend in order to collect needed amounts of ergo tokens and assets.

    A method which is selecting boxes to spend in order to collect needed amounts of ergo tokens and assets.

    inputBoxes

    - unspent boxes to choose from.

    filterFn

    - user-provided filter function for boxes. From inputBoxes, only ones to be chosen for which filterFn(box) returns true

    targetBalance

    - ergo balance to be met

    targetAssets

    - assets balances to be met

    returns

    Left(error) if select() is failing to pick appropriate boxes, otherwise Right(res), where res contains boxes to spend as well as monetary values and assets for boxes containing change (wrapped in a special BoxSelectionResult class).

    Definition Classes
    ReplaceCompactCollectBoxSelectorDefaultBoxSelectorBoxSelector
  25. def select[T <: ErgoBoxAssets](inputBoxes: Iterator[T], targetBalance: Long, targetAssets: TokensMap): Either[BoxSelectionError, BoxSelectionResult[T]]

    Permalink
    Definition Classes
    BoxSelector
  26. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  27. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  28. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from DefaultBoxSelector

Inherited from BoxSelector

Inherited from ScorexLogging

Inherited from StrictLogging

Inherited from AnyRef

Inherited from Any

Ungrouped