mirror of
https://github.com/bitcoin-s/bitcoin-s.git
synced 2025-02-23 22:56:52 +01:00
Fix potential unordered nonces in announcement (#2831)
This commit is contained in:
parent
c2409b46c4
commit
8cd481650d
2 changed files with 37 additions and 1 deletions
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue