Skip to content

Commit

Permalink
Use the Adapots from Ledger
Browse files Browse the repository at this point in the history
This wans't exported but now it is
  • Loading branch information
kderme committed Jul 29, 2021
1 parent 31e5966 commit f25adeb
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 52 deletions.
15 changes: 8 additions & 7 deletions cardano-db-sync/src/Cardano/DbSync/Era/Shelley/Insert.hs
Expand Up @@ -73,6 +73,7 @@ import Database.Persist.Sql (SqlBackend)
import Ouroboros.Consensus.Cardano.Block (StandardCrypto)

import qualified Shelley.Spec.Ledger.PParams as Shelley
import qualified Shelley.Spec.Ledger.STS.Chain as Shelley
import qualified Shelley.Spec.Ledger.TxBody as Shelley

insertShelleyBlock
Expand Down Expand Up @@ -801,18 +802,18 @@ insertPots
:: (MonadBaseControl IO m, MonadIO m)
=> DB.BlockId
-> SlotNo -> EpochNo
-> Generic.AdaPots
-> Shelley.AdaPots
-> ExceptT e (ReaderT SqlBackend m) ()
insertPots blockId slotNo epochNo pots =
void . lift $ DB.insertAdaPots $
DB.AdaPots
{ DB.adaPotsSlotNo = unSlotNo slotNo
, DB.adaPotsEpochNo = unEpochNo epochNo
, DB.adaPotsTreasury = Generic.coinToDbLovelace $ Generic.apTreasury pots
, DB.adaPotsReserves = Generic.coinToDbLovelace $ Generic.apReserves pots
, DB.adaPotsRewards = Generic.coinToDbLovelace $ Generic.apRewards pots
, DB.adaPotsUtxo = Generic.coinToDbLovelace $ Generic.apUtxo pots
, DB.adaPotsDeposits = Generic.coinToDbLovelace $ Generic.apDeposits pots
, DB.adaPotsFees = Generic.coinToDbLovelace $ Generic.apFees pots
, DB.adaPotsTreasury = Generic.coinToDbLovelace $ Shelley.treasuryAdaPot pots
, DB.adaPotsReserves = Generic.coinToDbLovelace $ Shelley.reservesAdaPot pots
, DB.adaPotsRewards = Generic.coinToDbLovelace $ Shelley.rewardsAdaPot pots
, DB.adaPotsUtxo = Generic.coinToDbLovelace $ Shelley.utxoAdaPot pots
, DB.adaPotsDeposits = Generic.coinToDbLovelace $ Shelley.depositsAdaPot pots
, DB.adaPotsFees = Generic.coinToDbLovelace $ Shelley.feesAdaPot pots
, DB.adaPotsBlockId = blockId
}
15 changes: 2 additions & 13 deletions cardano-sync/src/Cardano/Sync/Era/Shelley/Generic/EpochUpdate.hs
Expand Up @@ -2,7 +2,6 @@
module Cardano.Sync.Era.Shelley.Generic.EpochUpdate
( NewEpoch (..)
, EpochUpdate (..)
, AdaPots (..)
, epochUpdate
) where

Expand All @@ -11,7 +10,6 @@ import Cardano.Prelude hiding (Maybe (..), fromMaybe)
import Cardano.Slotting.Slot (EpochNo (..))

import qualified Cardano.Ledger.BaseTypes as Ledger
import Cardano.Ledger.Coin (Coin (..))

import Cardano.Sync.Era.Shelley.Generic.ProtoParams
import Cardano.Sync.Types
Expand All @@ -26,12 +24,13 @@ import Ouroboros.Consensus.Ledger.Extended (ExtLedgerState (..))
import qualified Ouroboros.Consensus.Shelley.Protocol as Consensus

import qualified Shelley.Spec.Ledger.API.Protocol as Shelley
import qualified Shelley.Spec.Ledger.STS.Chain as Shelley
import qualified Shelley.Spec.Ledger.STS.Tickn as Shelley

data NewEpoch = NewEpoch
{ neEpoch :: !EpochNo
, neIsEBB :: !Bool
, neAdaPots :: !(Maybe AdaPots)
, neAdaPots :: !(Maybe Shelley.AdaPots)
, neEpochUpdate :: !EpochUpdate
}

Expand All @@ -40,16 +39,6 @@ data EpochUpdate = EpochUpdate
, euNonce :: !Ledger.Nonce
}

-- There is a similar type in ledger-spec, but it is not exported yet.
data AdaPots = AdaPots
{ apTreasury :: !Coin
, apReserves :: !Coin
, apRewards :: !Coin
, apUtxo :: !Coin
, apDeposits :: !Coin
, apFees :: !Coin
}

epochUpdate :: ExtLedgerState CardanoBlock -> EpochUpdate
epochUpdate lstate =
EpochUpdate
Expand Down
37 changes: 5 additions & 32 deletions cardano-sync/src/Cardano/Sync/LedgerState.hs
Expand Up @@ -48,7 +48,6 @@ import Cardano.Ledger.Core (PParams)
import Cardano.Ledger.Era
import Cardano.Ledger.Keys (KeyHash (..), KeyRole (..))
import Cardano.Ledger.Shelley.Constraints (UsesValue)
import qualified Cardano.Ledger.Val as Val

import Cardano.Sync.Config.Types
import qualified Cardano.Sync.Era.Cardano.Util as Cardano
Expand Down Expand Up @@ -103,10 +102,10 @@ import qualified Ouroboros.Network.AnchoredSeq as AS
import Ouroboros.Network.Block (HeaderHash, Point (..))
import qualified Ouroboros.Network.Point as Point

import Shelley.Spec.Ledger.LedgerState (AccountState, EpochState (..), UTxOState)
import Shelley.Spec.Ledger.LedgerState (EpochState (..))
import qualified Shelley.Spec.Ledger.LedgerState as Shelley
import qualified Shelley.Spec.Ledger.Rewards as Shelley
import qualified Shelley.Spec.Ledger.UTxO as Shelley
import qualified Shelley.Spec.Ledger.STS.Chain as Shelley

import System.Directory (doesFileExist, listDirectory, removeFile)
import System.FilePath (dropExtension, takeExtension, (</>))
Expand Down Expand Up @@ -704,7 +703,7 @@ getPoolParamsShelley lState =

-- We only compute 'AdaPots' for later eras. This is a time consuming
-- function and we only want to run it on epoch boundaries.
getAdaPots :: CardanoLedgerState -> Maybe Generic.AdaPots
getAdaPots :: CardanoLedgerState -> Maybe Shelley.AdaPots
getAdaPots st =
case ledgerState $ clsState st of
LedgerStateByron _ -> Nothing
Expand Down Expand Up @@ -747,34 +746,8 @@ tickThenReapplyCheckHash cfg block lsb =
totalAdaPots
:: forall era. UsesValue era
=> LedgerState (ShelleyBlock era)
-> Generic.AdaPots
totalAdaPots lState =
Generic.AdaPots
{ Generic.apTreasury = Shelley._treasury accountState
, Generic.apReserves = Shelley._reserves accountState
, Generic.apRewards = rewards
, Generic.apUtxo = utxo
, Generic.apDeposits = Shelley._deposited uState
, Generic.apFees = Shelley._fees uState
}
where
eState :: EpochState era
eState = Shelley.nesEs $ Consensus.shelleyLedgerState lState

accountState :: AccountState
accountState = Shelley.esAccountState eState

slState :: Shelley.LedgerState era
slState = Shelley.esLState eState

uState :: UTxOState era
uState = Shelley._utxoState slState

rewards :: Coin
rewards = fold (Map.elems (Shelley._rewards . Shelley._dstate $ Shelley._delegationState slState))

utxo :: Coin
utxo = Val.coin $ Shelley.balance (Shelley._utxo uState)
-> Shelley.AdaPots
totalAdaPots = Shelley.totalAdaPotsES . Shelley.nesEs . Consensus.shelleyLedgerState

getHeaderHash :: HeaderHash CardanoBlock -> ByteString
getHeaderHash bh = BSS.fromShort (Consensus.getOneEraHash bh)
Expand Down

0 comments on commit f25adeb

Please sign in to comment.