Skip to content

Commit

Permalink
fix estimateNumWits calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
paweljakubas committed Oct 28, 2022
1 parent 4b23222 commit aa87dd4
Showing 1 changed file with 9 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -753,30 +753,30 @@ estimateMinWitnessRequiredPerInput = \case
RequireAllOf xs ->
sum $ map estimateMinWitnessRequiredPerInput xs
RequireAnyOf xs ->
optimumWithoutZeros minimum $ map estimateMinWitnessRequiredPerInput xs
optimum minimum $ map estimateMinWitnessRequiredPerInput xs
RequireSomeOf m xs ->
let smallestReqFirst =
sortWithoutZeros $ map estimateMinWitnessRequiredPerInput xs
L.sort $ map estimateMinWitnessRequiredPerInput xs
in sum $ take (fromIntegral m) smallestReqFirst
ActiveFromSlot _ -> 0
ActiveUntilSlot _ -> 0

optimumWithoutZeros :: (Eq a, Num a) => ([a] -> c) -> [a] -> c
optimumWithoutZeros f = f . filter (/= 0)

sortWithoutZeros :: [Int] -> [Int]
sortWithoutZeros = L.sort . filter (/= 0)
optimum :: (Foldable t, Num p) => (t a -> p) -> t a -> p
optimum f xs =
if length xs == 0 then
0
else f xs

estimateMaxWitnessRequiredPerInput :: Script k -> Int
estimateMaxWitnessRequiredPerInput = \case
RequireSignatureOf _ -> 1
RequireAllOf xs ->
sum $ map estimateMaxWitnessRequiredPerInput xs
RequireAnyOf xs ->
optimumWithoutZeros maximum $ map estimateMaxWitnessRequiredPerInput xs
optimum maximum $ map estimateMaxWitnessRequiredPerInput xs
RequireSomeOf m xs ->
let smallestReqFirst =
sortWithoutZeros $ map estimateMaxWitnessRequiredPerInput xs
L.sort $ map estimateMaxWitnessRequiredPerInput xs
in sum $ take (fromIntegral m) (reverse smallestReqFirst)
ActiveFromSlot _ -> 0
ActiveUntilSlot _ -> 0

0 comments on commit aa87dd4

Please sign in to comment.