Jan 21, 9-10 AM (15)
Jan 21, 10-11 AM (75)
Jan 21, 11-12 PM (44)
Jan 21, 12-1 PM (46)
Jan 21, 1-2 PM (30)
Jan 21, 2-3 PM (28)
Jan 21, 3-4 PM (34)
Jan 21, 4-5 PM (32)
Jan 21, 5-6 PM (22)
Jan 21, 6-7 PM (16)
Jan 21, 7-8 PM (6)
Jan 21, 8-9 PM (14)
Jan 21, 9-10 PM (18)
Jan 21, 10-11 PM (14)
Jan 21, 11-12 AM (9)
Jan 22, 12-1 AM (11)
Jan 22, 1-2 AM (4)
Jan 22, 2-3 AM (12)
Jan 22, 3-4 AM (7)
Jan 22, 4-5 AM (2)
Jan 22, 5-6 AM (14)
Jan 22, 6-7 AM (6)
Jan 22, 7-8 AM (17)
Jan 22, 8-9 AM (11)
Jan 22, 9-10 AM (35)
Jan 22, 10-11 AM (30)
Jan 22, 11-12 PM (44)
Jan 22, 12-1 PM (52)
Jan 22, 1-2 PM (32)
Jan 22, 2-3 PM (67)
Jan 22, 3-4 PM (25)
Jan 22, 4-5 PM (29)
Jan 22, 5-6 PM (9)
Jan 22, 6-7 PM (5)
Jan 22, 7-8 PM (10)
Jan 22, 8-9 PM (12)
Jan 22, 9-10 PM (65)
Jan 22, 10-11 PM (1)
Jan 22, 11-12 AM (1)
Jan 23, 12-1 AM (6)
Jan 23, 1-2 AM (4)
Jan 23, 2-3 AM (4)
Jan 23, 3-4 AM (2)
Jan 23, 4-5 AM (1)
Jan 23, 5-6 AM (2)
Jan 23, 6-7 AM (0)
Jan 23, 7-8 AM (3)
Jan 23, 8-9 AM (2)
Jan 23, 9-10 AM (6)
Jan 23, 10-11 AM (2)
Jan 23, 11-12 PM (3)
Jan 23, 12-1 PM (7)
Jan 23, 1-2 PM (4)
Jan 23, 2-3 PM (3)
Jan 23, 3-4 PM (3)
Jan 23, 4-5 PM (1)
Jan 23, 5-6 PM (3)
Jan 23, 6-7 PM (3)
Jan 23, 7-8 PM (0)
Jan 23, 8-9 PM (3)
Jan 23, 9-10 PM (1)
Jan 23, 10-11 PM (4)
Jan 23, 11-12 AM (2)
Jan 24, 12-1 AM (4)
Jan 24, 1-2 AM (3)
Jan 24, 2-3 AM (2)
Jan 24, 3-4 AM (3)
Jan 24, 4-5 AM (0)
Jan 24, 5-6 AM (0)
Jan 24, 6-7 AM (0)
Jan 24, 7-8 AM (0)
Jan 24, 8-9 AM (1)
Jan 24, 9-10 AM (9)
Jan 24, 10-11 AM (2)
Jan 24, 11-12 PM (0)
Jan 24, 12-1 PM (0)
Jan 24, 1-2 PM (1)
Jan 24, 2-3 PM (0)
Jan 24, 3-4 PM (0)
Jan 24, 4-5 PM (0)
Jan 24, 5-6 PM (0)
Jan 24, 6-7 PM (7)
Jan 24, 7-8 PM (2)
Jan 24, 8-9 PM (0)
Jan 24, 9-10 PM (4)
Jan 24, 10-11 PM (3)
Jan 24, 11-12 AM (5)
Jan 25, 12-1 AM (8)
Jan 25, 1-2 AM (5)
Jan 25, 2-3 AM (0)
Jan 25, 3-4 AM (2)
Jan 25, 4-5 AM (7)
Jan 25, 5-6 AM (2)
Jan 25, 6-7 AM (12)
Jan 25, 7-8 AM (41)
Jan 25, 8-9 AM (20)
Jan 25, 9-10 AM (49)
Jan 25, 10-11 AM (44)
Jan 25, 11-12 PM (36)
Jan 25, 12-1 PM (36)
Jan 25, 1-2 PM (32)
Jan 25, 2-3 PM (66)
Jan 25, 3-4 PM (12)
Jan 25, 4-5 PM (18)
Jan 25, 5-6 PM (14)
Jan 25, 6-7 PM (10)
Jan 25, 7-8 PM (20)
Jan 25, 8-9 PM (6)
Jan 25, 9-10 PM (4)
Jan 25, 10-11 PM (5)
Jan 25, 11-12 AM (8)
Jan 26, 12-1 AM (5)
Jan 26, 1-2 AM (1)
Jan 26, 2-3 AM (5)
Jan 26, 3-4 AM (13)
Jan 26, 4-5 AM (3)
Jan 26, 5-6 AM (4)
Jan 26, 6-7 AM (14)
Jan 26, 7-8 AM (12)
Jan 26, 8-9 AM (33)
Jan 26, 9-10 AM (21)
Jan 26, 10-11 AM (39)
Jan 26, 11-12 PM (18)
Jan 26, 12-1 PM (50)
Jan 26, 1-2 PM (61)
Jan 26, 2-3 PM (42)
Jan 26, 3-4 PM (50)
Jan 26, 4-5 PM (28)
Jan 26, 5-6 PM (15)
Jan 26, 6-7 PM (10)
Jan 26, 7-8 PM (19)
Jan 26, 8-9 PM (11)
Jan 26, 9-10 PM (10)
Jan 26, 10-11 PM (7)
Jan 26, 11-12 AM (7)
Jan 27, 12-1 AM (9)
Jan 27, 1-2 AM (7)
Jan 27, 2-3 AM (11)
Jan 27, 3-4 AM (5)
Jan 27, 4-5 AM (6)
Jan 27, 5-6 AM (2)
Jan 27, 6-7 AM (17)
Jan 27, 7-8 AM (12)
Jan 27, 8-9 AM (26)
Jan 27, 9-10 AM (42)
Jan 27, 10-11 AM (22)
Jan 27, 11-12 PM (68)
Jan 27, 12-1 PM (104)
Jan 27, 1-2 PM (49)
Jan 27, 2-3 PM (74)
Jan 27, 3-4 PM (50)
Jan 27, 4-5 PM (20)
Jan 27, 5-6 PM (15)
Jan 27, 6-7 PM (44)
Jan 27, 7-8 PM (14)
Jan 27, 8-9 PM (34)
Jan 27, 9-10 PM (12)
Jan 27, 10-11 PM (26)
Jan 27, 11-12 AM (6)
Jan 28, 12-1 AM (11)
Jan 28, 1-2 AM (8)
Jan 28, 2-3 AM (5)
Jan 28, 3-4 AM (7)
Jan 28, 4-5 AM (14)
Jan 28, 5-6 AM (3)
Jan 28, 6-7 AM (16)
Jan 28, 7-8 AM (15)
Jan 28, 8-9 AM (78)
Jan 28, 9-10 AM (28)
2,806 commits this week Jan 21, 2021 - Jan 28, 2021
Merge #2468
2468: Replace `hardfork_at` with `eras` object r=Anviking a=Anviking

# Issue Number

ADP-676


# Overview

<!-- Detail in a few bullet points the work accomplished in this PR -->

- [x] Replace `hardfork_at` with info of all eras
- [x] Instead of storing ProtocolParameters in DB, just keep them in a `TVar`
- [ ] <s>See if we can order the eras correctly in the `era` object (for when the JSON is viewed by humans)</s> Seems impossible to do.
- [x] TODO: Extend swagger
- [ ] Tiny doc tweaks

# Comments

- Could add absolute `slot` field also
- Arguably a bit sad that the eras get sorted seemingly alphabetically in the json

```json
$ cardano-wallet network parameters
{
    "slot_length": {
        "quantity": 1,
        "unit": "second"
    },
    "decentralization_level": {
        "quantity": 74,
        "unit": "percent"
    },
    "genesis_block_hash": "5f20df933584822601f9e3f8c024eb5eb252fe8cefb24d1317dc3d432e940ebb",
    "blockchain_start_time": "2017-09-23T21:44:51Z",
    "desired_pool_number": 500,
    "epoch_length": {
        "quantity": 432000,
        "unit": "slot"
    },
    "eras": {
        "shelley": {
            "epoch_start_time": "2020-07-29T21:44:51Z",
            "epoch_number": 208
        },
        "mary": null,
        "byron": {
            "epoch_start_time": "2017-09-23T21:44:51Z",
            "epoch_number": 0
        },
        "allegra": {
            "epoch_start_time": "2020-12-16T21:44:51Z",
            "epoch_number": 236
        }
    },
    "active_slot_coefficient": {
        "quantity": 5,
        "unit": "percent"
    },
    "security_parameter": {
        "quantity": 2160,
        "unit": "block"
    },
    "minimum_utxo_value": {
        "quantity": 1000000,
        "unit": "lovelace"
    }
}
```

<!-- Additional comments or screenshots to attach if any -->

<!--
Don't forget to:

 āœ“ Self-review your changes to make sure nothing unexpected slipped through
 āœ“ Assign yourself to the PR
 āœ“ Assign one or several reviewer(s)
 āœ“ Jira will detect and link to this PR once created, but you can also link this PR in the description of the corresponding ticket
 āœ“ Acknowledge any changes required to the Wiki
 āœ“ Finally, in the PR description delete any empty sections and all text commented in <!--, so that this text does not appear in merge commit messages.
-->


Co-authored-by: Johannes Lund <[email protected]>