Change DLCUtil.buildOracleSignatures (#4061)

This commit is contained in:
rorp 2022-02-07 17:50:53 -08:00 committed by GitHub
parent 48189d5c1d
commit e2b9c458e4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 3 deletions

View file

@ -295,4 +295,24 @@ object DLCUtil {
result
}
def buildOracleSignaturesNaive(
announcements: OrderedAnnouncements,
attestments: Vector[OracleAttestmentTLV]): Vector[OracleSignatures] = {
attestments.foldLeft(Vector.empty[OracleSignatures]) { (acc, sig) =>
// Nonces should be unique so searching for the first nonce should be safe
val firstNonce = sig.sigs.head.rx
announcements
.find(
_.eventTLV.nonces.headOption
.contains(firstNonce)) match {
case Some(announcement) =>
acc :+ OracleSignatures(SingleOracleInfo(announcement), sig.sigs)
case None =>
throw new RuntimeException(
s"Cannot find announcement for associated public key, ${sig.publicKey.hex}")
}
}
}
}

View file

@ -1421,9 +1421,9 @@ abstract class DLCWallet
announcementData,
nonceDbs)
oracleSigs = DLCUtil.buildOracleSignatures(announcements =
announcementTLVs,
attestments = sigs.toVector)
oracleSigs = DLCUtil.buildOracleSignaturesNaive(
announcements = announcementTLVs,
attestments = sigs.toVector)
tx <- executeDLC(contractId, oracleSigs)
} yield tx