Skip to content

Commit 3c95502

Browse files
committed
Update to ghc@9.6.3, cardano-node@8.7.2, cardano-api@8.36.1.
1 parent 62713d6 commit 3c95502

File tree

30 files changed

+275
-343
lines changed

30 files changed

+275
-343
lines changed

.github/workflows/ci-linux.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ jobs:
8383
- uses: haskell-actions/setup@v2
8484
id: setuphaskell
8585
with:
86-
ghc-version: '9.2.8'
86+
ghc-version: '9.6.3'
8787
cabal-version: '3.10.1.0'
8888

8989
- name: Cache .cabal
@@ -100,8 +100,8 @@ jobs:
100100
- name: Build dependencies for integration test
101101
run: |
102102
cabal update
103-
cabal install -j cardano-node-8.1.1 --overwrite-policy=always
104-
cabal install -j cardano-cli-8.4.0.0 --overwrite-policy=always
103+
cabal install -j cardano-node-8.7.2 --overwrite-policy=always
104+
cabal install -j cardano-cli-8.17.0.0 --overwrite-policy=always
105105
cabal install -j convex-wallet --overwrite-policy=always
106106
echo "/home/runner/.cabal/bin" >> $GITHUB_PATH
107107

cabal.project

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

22
-- Custom repository for cardano haskell packages, see
3-
-- https://github.com/input-output-hk/cardano-haskell-packages
3+
-- https://github.com/IntersectMBO/cardano-haskell-packages
44
-- for more information.
55
repository cardano-haskell-packages
6-
url: https://input-output-hk.github.io/cardano-haskell-packages
6+
url: https://chap.intersectmbo.org/
77
secure: True
88
root-keys:
99
3e0cce471cf09815f930210f7827266fd09045445d65923e6d0238a6cd15126f
@@ -14,11 +14,14 @@ repository cardano-haskell-packages
1414
d4a35cd3121aa00d18544bb0ac01c3e1691d618f462c46129271bccf39f7e8ee
1515

1616
index-state:
17-
, hackage.haskell.org 2023-07-22T22:41:49Z
18-
, cardano-haskell-packages 2023-07-26T01:36:26Z
17+
, hackage.haskell.org 2023-11-20T23:52:53Z
18+
, cardano-haskell-packages 2023-12-08T09:30:26Z
1919

20+
with-compiler: ghc-9.6.3
2021

21-
with-compiler: ghc-9.2.8
22+
constraints:
23+
cardano-api == 8.36.1.1,
24+
cardano-node == 8.7.2
2225

2326
packages:
2427
src/base
@@ -27,10 +30,3 @@ packages:
2730
src/mockchain
2831
src/coin-selection
2932
src/devnet
30-
31-
-- https://github.com/obsidiansystems/dependent-sum-template/issues/5
32-
-- requires cabal 3.10
33-
if impl(ghc >= 9.2)
34-
constraints :
35-
dependent-sum-template < 0.1.2
36-

src/base/convex-base.cabal

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ library
5454
either-result
5555

5656
build-depends:
57-
cardano-api == 8.8.0.0,
57+
cardano-api,
5858
cardano-ledger-core,
5959
cardano-crypto-wrapper,
6060

@@ -73,4 +73,5 @@ library
7373
serialise,
7474
bytestring,
7575
dlist,
76-
either-result
76+
either-result,
77+
strict-sop-core

src/base/lib/Convex/BuildTx.hs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -280,23 +280,23 @@ addAuxScript :: MonadBuildTx m => C.ScriptInEra C.BabbageEra -> m ()
280280
addAuxScript s = addBtx (over (L.txAuxScripts . L._TxAuxScripts) ((:) s))
281281

282282
payToAddressTxOut :: C.AddressInEra C.BabbageEra -> C.Value -> C.TxOut C.CtxTx C.BabbageEra
283-
payToAddressTxOut addr vl = C.TxOut addr (C.TxOutValue C.MultiAssetInBabbageEra vl) C.TxOutDatumNone C.ReferenceScriptNone
283+
payToAddressTxOut addr vl = C.TxOut addr (C.TxOutValueShelleyBased C.ShelleyBasedEraBabbage $ C.toMaryValue vl) C.TxOutDatumNone C.ReferenceScriptNone
284284

285285
payToAddress :: MonadBuildTx m => C.AddressInEra C.BabbageEra -> C.Value -> m ()
286286
payToAddress addr vl = addBtx $ over L.txOuts ((:) (payToAddressTxOut addr vl))
287287

288288
payToPublicKey :: MonadBuildTx m => NetworkId -> Hash PaymentKey -> C.Value -> m ()
289289
payToPublicKey network pk vl =
290-
let val = C.TxOutValue C.MultiAssetInBabbageEra vl
291-
addr = C.makeShelleyAddressInEra network (C.PaymentCredentialByKey pk) C.NoStakeAddress
290+
let val = C.TxOutValueShelleyBased C.ShelleyBasedEraBabbage $ C.toMaryValue vl
291+
addr = C.makeShelleyAddressInEra C.ShelleyBasedEraBabbage network (C.PaymentCredentialByKey pk) C.NoStakeAddress
292292
txo = C.TxOut addr val C.TxOutDatumNone C.ReferenceScriptNone
293293
in prependTxOut txo
294294

295295
payToScriptHash :: MonadBuildTx m => NetworkId -> ScriptHash -> HashableScriptData -> C.StakeAddressReference -> C.Value -> m ()
296296
payToScriptHash network script datum stakeAddress vl =
297-
let val = C.TxOutValue C.MultiAssetInBabbageEra vl
298-
addr = C.makeShelleyAddressInEra network (C.PaymentCredentialByScript script) stakeAddress
299-
dat = C.TxOutDatumInTx C.ScriptDataInBabbageEra datum
297+
let val = C.TxOutValueShelleyBased C.ShelleyBasedEraBabbage $ C.toMaryValue vl
298+
addr = C.makeShelleyAddressInEra C.ShelleyBasedEraBabbage network (C.PaymentCredentialByScript script) stakeAddress
299+
dat = C.TxOutDatumInTx C.AlonzoEraOnwardsBabbage datum
300300
txo = C.TxOut addr val dat C.ReferenceScriptNone
301301
in prependTxOut txo
302302

@@ -314,8 +314,8 @@ payToPlutusV2 network s datum stakeRef vl =
314314

315315
payToPlutusV2InlineBase :: MonadBuildTx m => C.AddressInEra C.BabbageEra -> C.PlutusScript C.PlutusScriptV2 -> C.TxOutDatum C.CtxTx C.BabbageEra -> C.Value -> m ()
316316
payToPlutusV2InlineBase addr script dat vl =
317-
let refScript = C.ReferenceScript C.ReferenceTxInsScriptsInlineDatumsInBabbageEra (C.toScriptInAnyLang $ C.PlutusScript C.PlutusScriptV2 script)
318-
txo = C.TxOut addr (C.TxOutValue C.MultiAssetInBabbageEra vl) dat refScript
317+
let refScript = C.ReferenceScript C.BabbageEraOnwardsBabbage (C.toScriptInAnyLang $ C.PlutusScript C.PlutusScriptV2 script)
318+
txo = C.TxOut addr (C.TxOutValueShelleyBased C.ShelleyBasedEraBabbage $ C.toMaryValue vl) dat refScript
319319
in prependTxOut txo
320320

321321
payToPlutusV2Inline :: MonadBuildTx m => C.AddressInEra C.BabbageEra -> PlutusScript PlutusScriptV2 -> C.Value -> m ()
@@ -324,38 +324,38 @@ payToPlutusV2Inline addr script vl = payToPlutusV2InlineBase addr script C.TxOut
324324
{-| same as payToPlutusV2Inline but also specify an inline datum -}
325325
payToPlutusV2InlineWithInlineDatum :: forall a m. (MonadBuildTx m, Plutus.ToData a) => C.AddressInEra C.BabbageEra -> C.PlutusScript C.PlutusScriptV2 -> a -> C.Value -> m ()
326326
payToPlutusV2InlineWithInlineDatum addr script datum vl =
327-
let dat = C.TxOutDatumInline C.ReferenceTxInsScriptsInlineDatumsInBabbageEra (toHashableScriptData datum)
327+
let dat = C.TxOutDatumInline C.BabbageEraOnwardsBabbage (toHashableScriptData datum)
328328
in payToPlutusV2InlineBase addr script dat vl
329329

330330
{-| same as payToPlutusV2Inline but also specify a datum -}
331331
payToPlutusV2InlineWithDatum :: forall a m. (MonadBuildTx m, Plutus.ToData a) => C.AddressInEra C.BabbageEra -> C.PlutusScript C.PlutusScriptV2 -> a -> C.Value -> m ()
332332
payToPlutusV2InlineWithDatum addr script datum vl =
333-
let dat = C.TxOutDatumInTx C.ScriptDataInBabbageEra (toHashableScriptData datum)
333+
let dat = C.TxOutDatumInTx C.AlonzoEraOnwardsBabbage (toHashableScriptData datum)
334334
in payToPlutusV2InlineBase addr script dat vl
335335

336336
payToPlutusV2InlineDatum :: forall a m. (MonadBuildTx m, Plutus.ToData a) => NetworkId -> PlutusScript PlutusScriptV2 -> a -> C.StakeAddressReference -> C.Value -> m ()
337337
payToPlutusV2InlineDatum network script datum stakeRef vl =
338-
let val = C.TxOutValue C.MultiAssetInBabbageEra vl
338+
let val = C.TxOutValueShelleyBased C.ShelleyBasedEraBabbage $ C.toMaryValue vl
339339
sh = C.hashScript (C.PlutusScript C.PlutusScriptV2 script)
340-
addr = C.makeShelleyAddressInEra network (C.PaymentCredentialByScript sh) stakeRef
341-
dat = C.TxOutDatumInline C.ReferenceTxInsScriptsInlineDatumsInBabbageEra (toHashableScriptData datum)
340+
addr = C.makeShelleyAddressInEra C.ShelleyBasedEraBabbage network (C.PaymentCredentialByScript sh) stakeRef
341+
dat = C.TxOutDatumInline C.BabbageEraOnwardsBabbage (toHashableScriptData datum)
342342
txo = C.TxOut addr val dat C.ReferenceScriptNone
343343
in prependTxOut txo
344344
-- TODO: Functions for building outputs (Output -> Output)
345345

346346
setScriptsValid :: MonadBuildTx m => m ()
347-
setScriptsValid = addBtx $ set L.txScriptValidity (C.TxScriptValidity C.TxScriptValiditySupportedInBabbageEra C.ScriptValid)
347+
setScriptsValid = addBtx $ set L.txScriptValidity (C.TxScriptValidity C.AlonzoEraOnwardsBabbage C.ScriptValid)
348348

349349
{-| Set the Ada component in an output's value to at least the amount needed to cover the
350350
minimum UTxO deposit for this output
351351
-}
352-
setMinAdaDeposit :: C.BundledProtocolParameters C.BabbageEra -> C.TxOut C.CtxTx C.BabbageEra -> C.TxOut C.CtxTx C.BabbageEra
352+
setMinAdaDeposit :: C.LedgerProtocolParameters C.BabbageEra -> C.TxOut C.CtxTx C.BabbageEra -> C.TxOut C.CtxTx C.BabbageEra
353353
setMinAdaDeposit params txOut =
354354
let minUtxo = minAdaDeposit params txOut
355355
in txOut & over (L._TxOut . _2 . L._TxOutValue . L._Value . at C.AdaAssetId) (maybe (Just minUtxo) (Just . max minUtxo))
356356

357-
minAdaDeposit :: C.BundledProtocolParameters C.BabbageEra -> C.TxOut C.CtxTx C.BabbageEra -> C.Quantity
358-
minAdaDeposit params txOut =
357+
minAdaDeposit :: C.LedgerProtocolParameters C.BabbageEra -> C.TxOut C.CtxTx C.BabbageEra -> C.Quantity
358+
minAdaDeposit (C.LedgerProtocolParameters params) txOut =
359359
let minAdaValue = C.Quantity 3_000_000
360360
txo = txOut
361361
-- set the Ada value to a dummy amount to ensure that it is not 0 (if it was 0, the size of the output
@@ -367,7 +367,7 @@ minAdaDeposit params txOut =
367367

368368
{-| Apply 'setMinAdaDeposit' to all outputs
369369
-}
370-
setMinAdaDepositAll :: MonadBuildTx m => C.BundledProtocolParameters C.BabbageEra -> m ()
370+
setMinAdaDepositAll :: MonadBuildTx m => C.LedgerProtocolParameters C.BabbageEra -> m ()
371371
setMinAdaDepositAll params = addBtx $ over (L.txOuts . mapped) (setMinAdaDeposit params)
372372

373373
{-| Add a public key hash to the list of required signatures.

src/base/lib/Convex/Class.hs

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ module Convex.Class(
2525

2626
import qualified Cardano.Api as C
2727
import Cardano.Api.Shelley (BabbageEra,
28-
CardanoMode,
2928
EraHistory (..),
3029
Hash,
30+
LedgerProtocolParameters (..),
3131
LocalNodeConnectInfo,
3232
NetworkId,
3333
PoolId,
@@ -60,7 +60,6 @@ import Convex.Utils (posixTimeToS
6060
import Data.Aeson (FromJSON,
6161
ToJSON)
6262
import Data.Set (Set)
63-
import qualified Data.Text as Text
6463
import Data.Time.Clock (UTCTime)
6564
import GHC.Generics (Generic)
6665
import Ouroboros.Consensus.HardFork.History (interpretQuery,
@@ -73,10 +72,10 @@ import qualified PlutusLedgerApi.V1 as PV1
7372
class Monad m => MonadBlockchain m where
7473
sendTx :: Tx BabbageEra -> m TxId -- ^ Submit a transaction to the network
7574
utxoByTxIn :: Set C.TxIn -> m (C.UTxO C.BabbageEra) -- ^ Resolve tx inputs
76-
queryProtocolParameters :: m (C.BundledProtocolParameters C.BabbageEra) -- ^ Get the protocol parameters
75+
queryProtocolParameters :: m (LedgerProtocolParameters C.BabbageEra) -- ^ Get the protocol parameters
7776
queryStakePools :: m (Set PoolId) -- ^ Get the stake pools
7877
querySystemStart :: m SystemStart
79-
queryEraHistory :: m (EraHistory CardanoMode)
78+
queryEraHistory :: m EraHistory
8079
querySlotNo :: m (SlotNo, SlotLength, UTCTime)
8180
-- ^ returns the current slot number, slot length and begin utc time for slot.
8281
-- Slot 0 is returned when at genesis.
@@ -198,7 +197,7 @@ This MAY move the clock backwards!
198197
setTimeToValidRange :: MonadMockchain m => (C.TxValidityLowerBound C.BabbageEra, C.TxValidityUpperBound C.BabbageEra) -> m ()
199198
setTimeToValidRange = \case
200199
(C.TxValidityLowerBound _ lowerSlot, _) -> setSlot lowerSlot
201-
(_, C.TxValidityUpperBound _ upperSlot) -> setSlot (pred upperSlot)
200+
(_, C.TxValidityUpperBound _ (Just upperSlot)) -> setSlot (pred upperSlot)
202201
_ -> pure ()
203202

204203
{-| Increase the slot number by 1.
@@ -208,32 +207,27 @@ nextSlot = modifySlot (\s -> (succ s, ()))
208207

209208
data MonadBlockchainError e =
210209
MonadBlockchainError e
211-
| ProtocolConversionError Text.Text
212210
| FailWith String
213211
deriving stock (Eq, Functor, Generic)
214212
deriving anyclass (ToJSON, FromJSON)
215213

216-
protocolConversionError :: C.ProtocolParametersConversionError -> MonadBlockchainError e
217-
protocolConversionError = ProtocolConversionError . C.textShow
218-
219214
instance Show e => Show (MonadBlockchainError e) where
220-
show (MonadBlockchainError e) = show e
221-
show (FailWith str) = str
222-
show (ProtocolConversionError e) = show e
215+
show (MonadBlockchainError e) = show e
216+
show (FailWith str) = str
223217

224218
{-| 'MonadBlockchain' implementation that connects to a cardano node
225219
-}
226-
newtype MonadBlockchainCardanoNodeT e m a = MonadBlockchainCardanoNodeT { unMonadBlockchainCardanoNodeT :: ReaderT (LocalNodeConnectInfo CardanoMode) (ExceptT (MonadBlockchainError e) m) a }
220+
newtype MonadBlockchainCardanoNodeT e m a = MonadBlockchainCardanoNodeT { unMonadBlockchainCardanoNodeT :: ReaderT LocalNodeConnectInfo (ExceptT (MonadBlockchainError e) m) a }
227221
deriving newtype (Functor, Applicative, Monad, MonadIO)
228222

229223
instance Monad m => MonadError e (MonadBlockchainCardanoNodeT e m) where
230224
throwError = MonadBlockchainCardanoNodeT . throwError . MonadBlockchainError
231225
catchError (MonadBlockchainCardanoNodeT action) handler = MonadBlockchainCardanoNodeT $ catchError action (\case { MonadBlockchainError e -> unMonadBlockchainCardanoNodeT (handler e); e' -> throwError e' })
232226

233-
runMonadBlockchainCardanoNodeT :: LocalNodeConnectInfo CardanoMode -> MonadBlockchainCardanoNodeT e m a -> m (Either (MonadBlockchainError e) a)
227+
runMonadBlockchainCardanoNodeT :: LocalNodeConnectInfo -> MonadBlockchainCardanoNodeT e m a -> m (Either (MonadBlockchainError e) a)
234228
runMonadBlockchainCardanoNodeT info (MonadBlockchainCardanoNodeT action) = runExceptT (runReaderT action info)
235229

236-
runQuery :: (MonadIO m, MonadLog m) => C.QueryInMode CardanoMode a -> MonadBlockchainCardanoNodeT e m a
230+
runQuery :: (MonadIO m, MonadLog m) => C.QueryInMode a -> MonadBlockchainCardanoNodeT e m a
237231
runQuery qry = MonadBlockchainCardanoNodeT $ do
238232
info <- ask
239233
result <- liftIO (C.queryNodeLocalState info Nothing qry)
@@ -245,7 +239,7 @@ runQuery qry = MonadBlockchainCardanoNodeT $ do
245239
Right result' -> do
246240
pure result'
247241

248-
runQuery' :: (MonadIO m, MonadLog m, Show e1) => C.QueryInMode CardanoMode (Either e1 a) -> MonadBlockchainCardanoNodeT e2 m a
242+
runQuery' :: (MonadIO m, MonadLog m, Show e1) => C.QueryInMode (Either e1 a) -> MonadBlockchainCardanoNodeT e2 m a
249243
runQuery' qry = runQuery qry >>= \case
250244
Left err -> MonadBlockchainCardanoNodeT $ do
251245
let msg = "runQuery': Era mismatch: " <> show err
@@ -257,7 +251,7 @@ instance (MonadLog m, MonadIO m) => MonadBlockchain (MonadBlockchainCardanoNodeT
257251
sendTx tx = MonadBlockchainCardanoNodeT $ do
258252
let txId = C.getTxId (C.getTxBody tx)
259253
info <- ask
260-
result <- liftIO (C.submitTxToNodeLocal info (C.TxInMode tx C.BabbageEraInCardanoMode))
254+
result <- liftIO (C.submitTxToNodeLocal info (C.TxInMode C.ShelleyBasedEraBabbage tx))
261255
-- TODO: Error should be reflected in return type of 'sendTx'
262256
case result of
263257
SubmitSuccess -> do
@@ -269,24 +263,21 @@ instance (MonadLog m, MonadIO m) => MonadBlockchain (MonadBlockchainCardanoNodeT
269263
throwError $ FailWith msg
270264

271265
utxoByTxIn txIns =
272-
runQuery' (C.QueryInEra C.BabbageEraInCardanoMode (C.QueryInShelleyBasedEra C.ShelleyBasedEraBabbage (C.QueryUTxO (C.QueryUTxOByTxIn txIns))))
266+
runQuery' (C.QueryInEra (C.QueryInShelleyBasedEra C.ShelleyBasedEraBabbage (C.QueryUTxO (C.QueryUTxOByTxIn txIns))))
273267

274268
queryProtocolParameters = do
275-
p <- runQuery' (C.QueryInEra C.BabbageEraInCardanoMode (C.QueryInShelleyBasedEra C.ShelleyBasedEraBabbage C.QueryProtocolParameters))
276-
case C.bundleProtocolParams C.BabbageEra p of
277-
Right x -> pure x
278-
Left err -> MonadBlockchainCardanoNodeT $ throwError (protocolConversionError err)
269+
LedgerProtocolParameters <$> runQuery' (C.QueryInEra (C.QueryInShelleyBasedEra C.ShelleyBasedEraBabbage C.QueryProtocolParameters))
279270

280271
queryStakePools =
281-
runQuery' (C.QueryInEra C.BabbageEraInCardanoMode (C.QueryInShelleyBasedEra C.ShelleyBasedEraBabbage C.QueryStakePools))
272+
runQuery' (C.QueryInEra (C.QueryInShelleyBasedEra C.ShelleyBasedEraBabbage C.QueryStakePools))
282273

283274
querySystemStart = runQuery C.QuerySystemStart
284275

285-
queryEraHistory = runQuery (C.QueryEraHistory C.CardanoModeIsMultiEra)
276+
queryEraHistory = runQuery C.QueryEraHistory
286277

287278
querySlotNo = do
288-
(eraHistory@(EraHistory _ interpreter), systemStart) <- (,) <$> queryEraHistory <*> querySystemStart
289-
slotNo <- runQuery (C.QueryChainPoint C.CardanoMode) >>= \case
279+
(eraHistory@(EraHistory interpreter), systemStart) <- (,) <$> queryEraHistory <*> querySystemStart
280+
slotNo <- runQuery C.QueryChainPoint >>= \case
290281
C.ChainPointAtGenesis -> pure $ fromIntegral (0 :: Integer)
291282
C.ChainPoint slot _hsh -> pure slot
292283
MonadBlockchainCardanoNodeT $ do

0 commit comments

Comments
 (0)