case class ContractInfo(totalCollateral: Satoshis, contractOraclePair: ContractOraclePair) extends TLVSerializable[ContractInfoV0TLV] with Product with Serializable

Fully determines a DLC up to public keys and funding UTXOs to be used.

Contains all contract and oracle information and provides an external facing interface which should be used in place of directly accessing ContractDescriptors or OracleInfos whenever possible to make future refactoring simpler and to make the code more modular.

This class also contains lazy vals for all expensive computations done regarding CETs during DLC setup and execution.

See also

https://github.com/discreetlogcontracts/dlcspecs/blob/a8876ed28ed33d5f7d5104f01aa2a8d80d128460/Messaging.md#the-contract_info-type

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ContractInfo
  2. Serializable
  3. Product
  4. Equals
  5. TLVSerializable
  6. NetworkElement
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new ContractInfo(totalCollateral: Satoshis, contractOraclePair: ContractOraclePair)

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. lazy val allOutcomes: Vector[OracleOutcome]

    Corresponds with this DLC's CET set

  5. lazy val allOutcomesAndPayouts: Vector[(OracleOutcome, Satoshis)]

    Computes the CET set and their corresponding payouts using CETCalculator.

  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. def byteSize: Long

    The size of the NetworkElement in bytes.

    The size of the NetworkElement in bytes.

    Definition Classes
    NetworkElement
  8. def bytes: ByteVector

    The byte representation of the NetworkElement

    The byte representation of the NetworkElement

    Definition Classes
    TLVSerializableNetworkElement
  9. def bytesLE: ByteVector

    The byte representation of the NetworkElement in little endian

    The byte representation of the NetworkElement in little endian

    Definition Classes
    NetworkElement
  10. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  11. def contractDescriptor: ContractDescriptor
  12. val contractOraclePair: ContractOraclePair
  13. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  15. def findOutcome(sigs: Vector[OracleSignatures]): Option[OracleOutcome]

    Searches all possible outcomes for one which corresponds to the given signatures.

    Searches all possible outcomes for one which corresponds to the given signatures.

    Warning: This will return false if too many OracleSignatures are given.

  16. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  17. def getPayouts(outcome: OracleOutcome): (Satoshis, Satoshis)

    Returns the payouts for the outcome as (toOffer, toAccept)

  18. def getPayouts(sigs: Vector[OracleSignatures]): (Satoshis, Satoshis)

    Returns the payouts for the signature as (toOffer, toAccept)

  19. def hex: String

    The hexadecimal representation of the NetworkElement

    The hexadecimal representation of the NetworkElement

    Definition Classes
    NetworkElement
  20. def hexLE: String

    The hexadecimal representation of the NetworkElement in little endian

    The hexadecimal representation of the NetworkElement in little endian

    Definition Classes
    NetworkElement
  21. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  22. val max: Satoshis

    Returns the maximum payout the offerer could win from this contract

  23. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  24. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  25. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  26. def oracleInfo: OracleInfo
  27. lazy val outcomeMap: Map[OracleOutcome, (ECPublicKey, Satoshis, Satoshis)]

    Map OracleOutcomes (which correspond to CETs) to their adpator point and payouts

  28. def productElementNames: Iterator[String]
    Definition Classes
    Product
  29. def resultOfOutcome(outcome: OracleOutcome): (ECPublicKey, Satoshis, Satoshis)

    Returns the adaptor point and payouts for a given OracleOutcome

  30. lazy val sigPointMap: Map[ECPublicKey, OracleOutcome]

    Maps adpator points to their corresponding OracleOutcomes (which correspond to CETs)

  31. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  32. def toTLV: ContractInfoV0TLV
    Definition Classes
    ContractInfoTLVSerializable
  33. val totalCollateral: Satoshis
  34. def updateOnAccept(newTotalCollateral: Satoshis, negotiationFields: NegotiationFields): ContractInfo

    A ContractInfo can be constructed by the offerer, but it will not contain new information which alters the DLC's contract which is received in the accept message.

    A ContractInfo can be constructed by the offerer, but it will not contain new information which alters the DLC's contract which is received in the accept message.

    Specifically if the total collateral changes or negotiation fields are relevant.

    In these cases, this function should be called to update the ContractInfo.

  35. def verifySigs(outcome: OracleOutcome, sigs: Vector[OracleSignatures]): Boolean

    Checks if the given OracleSignatures exactly match the given OracleOutcome.

    Checks if the given OracleSignatures exactly match the given OracleOutcome.

    Warning: This will return false if too many OracleSignatures are given.

    TODO: Needs a lot of optimization

  36. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  37. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  38. 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 NetworkElement

Inherited from AnyRef

Inherited from Any

Ungrouped