Fix potential unordered nonces in announcement (#2831)

This commit is contained in:
benthecarman 2021-03-28 11:44:47 -05:00 committed by GitHub
parent c2409b46c4
commit 8cd481650d
2 changed files with 37 additions and 1 deletions

View file

@ -243,9 +243,11 @@ object OracleEvent {
require(eventDbs.forall(_.attestationOpt.isEmpty),
"Cannot have a partially signed event")
val sortedEventDbs = eventDbs.sortBy(_.nonceIndex)
PendingDigitDecompositionV0OracleEvent(
eventDb.pubkey,
eventDbs.map(_.nonce),
sortedEventDbs.map(_.nonce),
eventDb.eventName,
eventDb.signingVersion,
eventDb.maturationTime,

View file

@ -60,6 +60,40 @@ class DLCOracleTest extends DLCOracleFixture {
}
}
it must "get the correctly sorted nonces in an announcement " in {
dlcOracle: DLCOracle =>
val eventName = "test"
val descriptorTLV =
DigitDecompositionEventDescriptorV0TLV(base = UInt16(2),
isSigned = false,
numDigits = 3,
unit = "units",
precision = Int32.zero)
for {
announcement <- dlcOracle.createNewEvent(eventName = eventName,
maturationTime = futureTime,
descriptorTLV)
// To get around foreign key, won't be needed
_ <- dlcOracle.eventOutcomeDAO.deleteAll()
eventDbs <- dlcOracle.eventDAO.findByEventName(eventName)
_ <- dlcOracle.eventDAO.deleteAll()
unsortedDbs = eventDbs.reverse
_ <- dlcOracle.eventDAO.createAll(unsortedDbs)
eventOpt <- dlcOracle.findEvent(eventName)
} yield {
eventOpt match {
case Some(event) =>
assert(announcement == event.announcementTLV)
case None => fail()
}
}
}
it must "have same keys with different network configs" in {
oracleA: DLCOracle =>
// set to mainnet and give separate db