Skip to content

Commit

Permalink
Merge pull request #649 from input-output-hk/kderme/epoch_params_alonzo
Browse files Browse the repository at this point in the history
Extend ProtocolParams for Alonzo
  • Loading branch information
erikd committed Jun 17, 2021
2 parents 47217be + 45ee94d commit 52ae70e
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 0 deletions.
11 changes: 11 additions & 0 deletions cardano-db-sync/src/Cardano/DbSync/Era/Shelley/Insert.hs
Expand Up @@ -718,6 +718,17 @@ insertEpochParam _tracer blkId (EpochNo epoch) params nonce =
, DB.epochParamMinUtxoValue = Generic.coinToDbLovelace (Generic.ppMinUTxOValue params)
, DB.epochParamMinPoolCost = Generic.coinToDbLovelace (Generic.ppMinPoolCost params)
, DB.epochParamNonce = Generic.nonceToBytes nonce
, DB.epochParamAdaPerUTxOWord = Generic.coinToDbLovelace <$> Generic.ppAdaPerUTxOWord params
, DB.epochParamCostModels = Generic.renderLanguageCostModel <$> Generic.ppCostmdls params
, DB.epochParamPriceMem = Generic.coinToDbLovelace <$> Generic.ppPriceMem params
, DB.epochParamPriceStep = Generic.coinToDbLovelace <$> Generic.ppPriceStep params
, DB.epochParamMaxTxExMem = DbWord64 <$> Generic.ppMaxTxExMem params
, DB.epochParamMaxTxExSteps = DbWord64 <$> Generic.ppMaxTxExSteps params
, DB.epochParamMaxBlockExMem = DbWord64 <$> Generic.ppMaxBlockExMem params
, DB.epochParamMaxBlockExSteps = DbWord64 <$> Generic.ppMaxBlockExSteps params
, DB.epochParamMaxValSize = DbWord64 . fromIntegral <$> Generic.ppMaxValSize params
, DB.epochParamCollateralPercent = fromIntegral <$> Generic.ppCollateralPercentage params
, DB.epochParamMaxCollateralInputs = fromIntegral <$> Generic.ppMaxCollateralInputs params
, DB.epochParamBlockId = blkId
}

Expand Down
12 changes: 12 additions & 0 deletions cardano-db/src/Cardano/Db/Schema.hs
Expand Up @@ -407,6 +407,18 @@ share

nonce ByteString Maybe sqltype=hash32type

adaPerUTxOWord DbLovelace Maybe sqltype=lovelace
costModels Text Maybe
priceMem DbLovelace Maybe sqltype=lovelace
priceStep DbLovelace Maybe sqltype=lovelace
maxTxExMem DbWord64 Maybe sqltype=word64type
maxTxExSteps DbWord64 Maybe sqltype=word64type
maxBlockExMem DbWord64 Maybe sqltype=word64type
maxBlockExSteps DbWord64 Maybe sqltype=word64type
maxValSize DbWord64 Maybe sqltype=word64type
collateralPercent Word16 Maybe sqltype=uinteger
maxCollateralInputs Word16 Maybe sqltype=uinteger

blockId BlockId OnDeleteCascade -- The first block where these parameters are valid.
UniqueEpochParam epochNo blockId

Expand Down
37 changes: 37 additions & 0 deletions cardano-sync/src/Cardano/Sync/Era/Shelley/Generic/ProtoParams.hs
Expand Up @@ -8,7 +8,9 @@ module Cardano.Sync.Era.Shelley.Generic.ProtoParams
import Cardano.Prelude

import qualified Cardano.Ledger.Alonzo as Alonzo
import Cardano.Ledger.Alonzo.Language (Language)
import qualified Cardano.Ledger.Alonzo.PParams as Alonzo
import qualified Cardano.Ledger.Alonzo.Scripts as Alonzo
import Cardano.Ledger.BaseTypes (UnitInterval)
import Cardano.Ledger.Coin (Coin (..))
import Cardano.Slotting.Slot (EpochNo (..))
Expand Down Expand Up @@ -45,6 +47,19 @@ data ProtoParams = ProtoParams
, ppProtocolVersion :: !ProtVer
, ppMinUTxOValue :: !Coin
, ppMinPoolCost :: !Coin

-- New for Alonzo.
, ppAdaPerUTxOWord :: !(Maybe Coin)
, ppCostmdls :: !(Maybe (Map Language Alonzo.CostModel))
, ppPriceMem :: !(Maybe Coin)
, ppPriceStep :: !(Maybe Coin)
, ppMaxTxExMem :: !(Maybe Word64)
, ppMaxTxExSteps :: !(Maybe Word64)
, ppMaxBlockExMem :: !(Maybe Word64)
, ppMaxBlockExSteps :: !(Maybe Word64)
, ppMaxValSize :: !(Maybe Natural)
, ppCollateralPercentage :: !(Maybe Natural)
, ppMaxCollateralInputs :: !(Maybe Natural)
}

epochProtoParams :: ExtLedgerState CardanoBlock -> Maybe ProtoParams
Expand Down Expand Up @@ -94,6 +109,17 @@ fromAlonzoParams params =
, ppProtocolVersion = Alonzo._protocolVersion params
, ppMinUTxOValue = Alonzo._adaPerUTxOWord params
, ppMinPoolCost = Alonzo._minPoolCost params
, ppAdaPerUTxOWord = Just $ Alonzo._adaPerUTxOWord params
, ppCostmdls = Just $ Alonzo._costmdls params
, ppPriceMem = Just $ Alonzo.prMem (Alonzo._prices params)
, ppPriceStep = Just $ Alonzo.prSteps (Alonzo._prices params)
, ppMaxTxExMem = Just $ Alonzo.exUnitsMem (Alonzo._maxTxExUnits params)
, ppMaxTxExSteps = Just $ Alonzo.exUnitsSteps (Alonzo._maxTxExUnits params)
, ppMaxBlockExMem = Just $ Alonzo.exUnitsMem (Alonzo._maxBlockExUnits params)
, ppMaxBlockExSteps = Just $ Alonzo.exUnitsSteps (Alonzo._maxBlockExUnits params)
, ppMaxValSize = Just $ Alonzo._maxValSize params
, ppCollateralPercentage = Just $ Alonzo._collateralPercentage params
, ppMaxCollateralInputs = Just $ Alonzo._maxCollateralInputs params
}

fromShelleyParams :: Shelley.PParams' Identity era -> ProtoParams
Expand All @@ -116,4 +142,15 @@ fromShelleyParams params =
, ppProtocolVersion = Shelley._protocolVersion params
, ppMinUTxOValue = Shelley._minUTxOValue params
, ppMinPoolCost = Shelley._minPoolCost params
, ppAdaPerUTxOWord = Nothing
, ppCostmdls = Nothing
, ppPriceMem = Nothing
, ppPriceStep = Nothing
, ppMaxTxExMem = Nothing
, ppMaxTxExSteps = Nothing
, ppMaxBlockExMem = Nothing
, ppMaxBlockExSteps = Nothing
, ppMaxValSize = Nothing
, ppCollateralPercentage = Nothing
, ppMaxCollateralInputs = Nothing
}
29 changes: 29 additions & 0 deletions schema/migration-2-0007-20210617.sql
@@ -0,0 +1,29 @@
-- Persistent generated migration.

CREATE FUNCTION migrate() RETURNS void AS $$
DECLARE
next_version int ;
BEGIN
SELECT stage_two + 1 INTO next_version FROM schema_version ;
IF next_version = 7 THEN
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "ada_per_u_tx_o_word" lovelace NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "cost_models" VARCHAR NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "price_mem" lovelace NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "price_step" lovelace NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "max_tx_ex_mem" word64type NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "max_tx_ex_steps" word64type NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "max_block_ex_mem" word64type NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "max_block_ex_steps" word64type NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "max_val_size" word64type NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "collateral_percent" uinteger NULL' ;
EXECUTE 'ALTER TABLE "epoch_param" ADD COLUMN "max_collateral_inputs" uinteger NULL' ;
-- Hand written SQL statements can be added here.
UPDATE schema_version SET stage_two = next_version ;
RAISE NOTICE 'DB has been migrated to stage_two version %', next_version ;
END IF ;
END ;
$$ LANGUAGE plpgsql ;

SELECT migrate() ;

DROP FUNCTION migrate() ;

0 comments on commit 52ae70e

Please sign in to comment.