Apr 11, 1-2 PM (46)
Apr 11, 2-3 PM (58)
Apr 11, 3-4 PM (41)
Apr 11, 4-5 PM (28)
Apr 11, 5-6 PM (16)
Apr 11, 6-7 PM (17)
Apr 11, 7-8 PM (14)
Apr 11, 8-9 PM (7)
Apr 11, 9-10 PM (13)
Apr 11, 10-11 PM (22)
Apr 11, 11-12 AM (50)
Apr 12, 12-1 AM (3)
Apr 12, 1-2 AM (7)
Apr 12, 2-3 AM (16)
Apr 12, 3-4 AM (14)
Apr 12, 4-5 AM (20)
Apr 12, 5-6 AM (35)
Apr 12, 6-7 AM (35)
Apr 12, 7-8 AM (50)
Apr 12, 8-9 AM (37)
Apr 12, 9-10 AM (48)
Apr 12, 10-11 AM (58)
Apr 12, 11-12 PM (71)
Apr 12, 12-1 PM (70)
Apr 12, 1-2 PM (29)
Apr 12, 2-3 PM (42)
Apr 12, 3-4 PM (22)
Apr 12, 4-5 PM (20)
Apr 12, 5-6 PM (10)
Apr 12, 6-7 PM (26)
Apr 12, 7-8 PM (13)
Apr 12, 8-9 PM (10)
Apr 12, 9-10 PM (19)
Apr 12, 10-11 PM (19)
Apr 12, 11-12 AM (9)
Apr 13, 12-1 AM (10)
Apr 13, 1-2 AM (0)
Apr 13, 2-3 AM (11)
Apr 13, 3-4 AM (8)
Apr 13, 4-5 AM (3)
Apr 13, 5-6 AM (5)
Apr 13, 6-7 AM (6)
Apr 13, 7-8 AM (11)
Apr 13, 8-9 AM (1)
Apr 13, 9-10 AM (7)
Apr 13, 10-11 AM (23)
Apr 13, 11-12 PM (9)
Apr 13, 12-1 PM (8)
Apr 13, 1-2 PM (15)
Apr 13, 2-3 PM (11)
Apr 13, 3-4 PM (12)
Apr 13, 4-5 PM (4)
Apr 13, 5-6 PM (20)
Apr 13, 6-7 PM (5)
Apr 13, 7-8 PM (13)
Apr 13, 8-9 PM (8)
Apr 13, 9-10 PM (11)
Apr 13, 10-11 PM (17)
Apr 13, 11-12 AM (20)
Apr 14, 12-1 AM (5)
Apr 14, 1-2 AM (2)
Apr 14, 2-3 AM (7)
Apr 14, 3-4 AM (6)
Apr 14, 4-5 AM (4)
Apr 14, 5-6 AM (5)
Apr 14, 6-7 AM (7)
Apr 14, 7-8 AM (10)
Apr 14, 8-9 AM (2)
Apr 14, 9-10 AM (1)
Apr 14, 10-11 AM (6)
Apr 14, 11-12 PM (40)
Apr 14, 12-1 PM (23)
Apr 14, 1-2 PM (9)
Apr 14, 2-3 PM (13)
Apr 14, 3-4 PM (6)
Apr 14, 4-5 PM (2)
Apr 14, 5-6 PM (17)
Apr 14, 6-7 PM (0)
Apr 14, 7-8 PM (2)
Apr 14, 8-9 PM (18)
Apr 14, 9-10 PM (13)
Apr 14, 10-11 PM (27)
Apr 14, 11-12 AM (7)
Apr 15, 12-1 AM (5)
Apr 15, 1-2 AM (16)
Apr 15, 2-3 AM (26)
Apr 15, 3-4 AM (15)
Apr 15, 4-5 AM (4)
Apr 15, 5-6 AM (26)
Apr 15, 6-7 AM (23)
Apr 15, 7-8 AM (41)
Apr 15, 8-9 AM (48)
Apr 15, 9-10 AM (79)
Apr 15, 10-11 AM (60)
Apr 15, 11-12 PM (80)
Apr 15, 12-1 PM (66)
Apr 15, 1-2 PM (53)
Apr 15, 2-3 PM (100)
Apr 15, 3-4 PM (58)
Apr 15, 4-5 PM (89)
Apr 15, 5-6 PM (24)
Apr 15, 6-7 PM (34)
Apr 15, 7-8 PM (24)
Apr 15, 8-9 PM (17)
Apr 15, 9-10 PM (17)
Apr 15, 10-11 PM (38)
Apr 15, 11-12 AM (25)
Apr 16, 12-1 AM (8)
Apr 16, 1-2 AM (8)
Apr 16, 2-3 AM (13)
Apr 16, 3-4 AM (7)
Apr 16, 4-5 AM (3)
Apr 16, 5-6 AM (17)
Apr 16, 6-7 AM (43)
Apr 16, 7-8 AM (48)
Apr 16, 8-9 AM (79)
Apr 16, 9-10 AM (49)
Apr 16, 10-11 AM (78)
Apr 16, 11-12 PM (66)
Apr 16, 12-1 PM (77)
Apr 16, 1-2 PM (92)
Apr 16, 2-3 PM (95)
Apr 16, 3-4 PM (64)
Apr 16, 4-5 PM (29)
Apr 16, 5-6 PM (17)
Apr 16, 6-7 PM (20)
Apr 16, 7-8 PM (36)
Apr 16, 8-9 PM (10)
Apr 16, 9-10 PM (16)
Apr 16, 10-11 PM (34)
Apr 16, 11-12 AM (16)
Apr 17, 12-1 AM (18)
Apr 17, 1-2 AM (10)
Apr 17, 2-3 AM (8)
Apr 17, 3-4 AM (15)
Apr 17, 4-5 AM (19)
Apr 17, 5-6 AM (93)
Apr 17, 6-7 AM (24)
Apr 17, 7-8 AM (43)
Apr 17, 8-9 AM (51)
Apr 17, 9-10 AM (47)
Apr 17, 10-11 AM (62)
Apr 17, 11-12 PM (63)
Apr 17, 12-1 PM (50)
Apr 17, 1-2 PM (47)
Apr 17, 2-3 PM (51)
Apr 17, 3-4 PM (105)
Apr 17, 4-5 PM (27)
Apr 17, 5-6 PM (24)
Apr 17, 6-7 PM (28)
Apr 17, 7-8 PM (42)
Apr 17, 8-9 PM (17)
Apr 17, 9-10 PM (3)
Apr 17, 10-11 PM (24)
Apr 17, 11-12 AM (17)
Apr 18, 12-1 AM (6)
Apr 18, 1-2 AM (7)
Apr 18, 2-3 AM (8)
Apr 18, 3-4 AM (23)
Apr 18, 4-5 AM (15)
Apr 18, 5-6 AM (16)
Apr 18, 6-7 AM (42)
Apr 18, 7-8 AM (25)
Apr 18, 8-9 AM (48)
Apr 18, 9-10 AM (65)
Apr 18, 10-11 AM (63)
Apr 18, 11-12 PM (69)
Apr 18, 12-1 PM (44)
Apr 18, 1-2 PM (6)
4,666 commits this week Apr 11, 2024 - Apr 18, 2024
[ADP-3272] Simplify handling of UTxOs in inner helper function of `balanceTx`. (#4548)
## Issue

ADP-3272

## Description

This PR simplifies the handling of UTxOs within the inner helper
function of `balanceTransaction`, so that it only has to handle two
UTxO-related data structures, both supplied by the outer function:

- `utxoReference`: the set of all UTxOs (formerly known as
`combinedUTxO`).
- `utxoSelection`: the set of all UTxOs that the transaction is allowed
to spend, along with a pre-selected subset.

As a bonus, because this PR moves the computation of UTxO-related data
structures from the inner helper function to the outer function, the
above data structures should now be evaluated **_at most once_**,
instead of multiple times (once per strategy).

## Notes

The `balanceTransaction` function delegates the main portion of its work
to an inner helper function that is parameterised by
`SelectionStrategy`. It initially calls the inner helper function with
`SelectionStrategyOptimal`, but if that strategy fails, then it
(potentially) calls the inner helper function a **_second time_** with
`SelectionStrategyMinimal`.

In the event that the inner helper function is evaluated more than once
(with two different strategies), we ideally want to avoid recomputing
potentially expensive data structures that should be constant across
both evaluations.