Skip to content

Commit

Permalink
Starting to case on era when querying pparams
Browse files Browse the repository at this point in the history
  • Loading branch information
noonio committed Aug 7, 2024
1 parent b5d5e3c commit f104995
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
15 changes: 13 additions & 2 deletions hydra-node/src/Hydra/Chain/Direct.hs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import Control.Concurrent.Class.MonadSTM (
import Control.Exception (IOException)
import Control.Monad.Trans.Except (runExcept)
import Hydra.Cardano.Api (
AnyCardanoEra (..),
BlockInMode (..),
CardanoEra (..),
ChainPoint,
Expand Down Expand Up @@ -55,11 +56,13 @@ import Hydra.Chain (
)
import Hydra.Chain.CardanoClient (
QueryPoint (..),
queryCurrentEraExpr,
queryEraHistory,
queryProtocolParameters,
queryProtocolParameters',
querySystemStart,
queryTip,
queryUTxO,
runQueryExpr,
)
import Hydra.Chain.Direct.Handlers (
ChainSyncHandler,
Expand All @@ -80,6 +83,7 @@ import Hydra.Chain.Direct.Util (
readKeyPair,
)
import Hydra.Chain.Direct.Wallet (
SomePParams (..),
TinyWallet (..),
WalletInfoOnChain (..),
newTinyWallet,
Expand Down Expand Up @@ -144,7 +148,14 @@ mkTinyWallet tracer config = do
QueryAt point -> pure point
QueryTip -> queryTip networkId nodeSocket
walletUTxO <- Ledger.unUTxO . toLedgerUTxO <$> queryUTxO networkId nodeSocket QueryTip [address]
pparams <- queryProtocolParameters networkId nodeSocket QueryTip

AnyCardanoEra era <- runQueryExpr networkId nodeSocket QueryTip queryCurrentEraExpr

pparams <- case era of
BabbageEra{} -> BabbagePParams <$> queryProtocolParameters' networkId nodeSocket QueryTip
ConwayEra{} -> ConwayPParams <$> queryProtocolParameters' networkId nodeSocket QueryTip
_ -> error $ "Unsupported era: " <> show era

systemStart <- querySystemStart networkId nodeSocket QueryTip
epochInfo <- queryEpochInfo
pure $ WalletInfoOnChain{walletUTxO, pparams, systemStart, epochInfo, tip = point}
Expand Down
14 changes: 8 additions & 6 deletions hydra-node/src/Hydra/Chain/Direct/Wallet.hs
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,14 @@ data TinyWallet m = TinyWallet
-- wallet is still initializing.
}

data SomePParams
= BabbagePParams (PParams Babbage)
| ConwayPParams (PParams Conway)

data WalletInfoOnChain = WalletInfoOnChain
{ walletUTxO :: Map TxIn TxOut
, pparams :: Core.PParams LedgerEra
, pparams :: SomePParams
-- ^ The wallet can support Babbage or Conway; you have to pick.
, systemStart :: SystemStart
, epochInfo :: EpochInfo (Either Text)
, tip :: ChainPoint
Expand Down Expand Up @@ -177,7 +182,8 @@ newTinyWallet tracer networkId (vk, sk) queryWalletInfo queryEpochInfo = do
WalletInfoOnChain{walletUTxO, pparams, systemStart} <- readTVarIO walletInfoVar
pure $
fromLedgerTx
<$> coverFee_ pparams systemStart epochInfo (unUTxO $ toLedgerUTxO lookupUTxO) walletUTxO (toLedgerTx partialTx)
<$> case pparams of
(BabbagePParams pp) -> coverFee_ pp systemStart epochInfo (unUTxO $ toLedgerUTxO lookupUTxO) walletUTxO (toLedgerTx partialTx)
, reset = initialize >>= atomically . writeTVar walletInfoVar
, update = \header txs -> do
let point = getChainPoint header
Expand Down Expand Up @@ -248,10 +254,6 @@ data ErrCoverFee
data ChangeError = ChangeError {inputBalance :: Coin, outputBalance :: Coin}
deriving stock (Show)

data SomePParams
= BabbagePParams (PParams Babbage)
| ConwayPParams (PParams Conway)

-- | Cover fee for a transaction body using the given UTXO set. This calculate
-- necessary fees and augments inputs / outputs / collateral accordingly to
-- cover for the transaction cost and get the change back.
Expand Down

0 comments on commit f104995

Please sign in to comment.