geniusyield / atlas

Application backend for Plutus smart contracts on Cardano
https://atlas-app.io
Apache License 2.0
65 stars 18 forks source link

Replace PSM with CLB and Update to GHC 9.6.5; cardano-api 8.38, cardano-wallet v2024-03-27 #313

Closed TotallyNotChase closed 3 months ago

TotallyNotChase commented 3 months ago

Summary

The main purpose of this PR is to add CLB. A WIP replacement for PSM. In order to do so, we also updated cardano-api and cardano-wallet to newer versions, prompting a significant overhaul. The associated versions of the dependencies should allow conway support.

There's definitely some changes to be made pending review. Such as version bumps etc.

Type of Change

Please mark the relevant option(s) for your pull request:

Checklist

Please ensure that your pull request meets the following criteria:

Testing

Please describe the tests you have added or modified, and provide any additional context or instructions needed to run the tests.

This PR was originally supposed to come with an extra test suite. However, we are having some issues with plutus tx compilation (classic) so I had to temporarily remove it (see last commit: 476b2f4)

Additional Information

sourabhxyz commented 3 months ago

@TotallyNotChase

This PR was originally supposed to come with an extra test suite. However, we are having some issues with plutus tx compilation (classic) so I had to temporarily remove it (see last commit: 476b2f4)

Could it be due to missing target-version plutus-tx plugin option? Could you try importing common plutus-ghc-options in your test suite?

TotallyNotChase commented 3 months ago

@TotallyNotChase

This PR was originally supposed to come with an extra test suite. However, we are having some issues with plutus tx compilation (classic) so I had to temporarily remove it (see last commit: 476b2f4)

Could it be due to missing target-version plutus-tx plugin option? Could you try importing common plutus-ghc-options in your test suite?

Doesn't seem to fix it unfortunately. Here's the actual error:

suite/OnChain/BetRef.hs:41:1: error: [GHC-83865]
    • Couldn't match type: forall fun2.
                           PlutusTx.Lift.Class.RTCompile
                             plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                             fun2
                             (plutus-core-1.21.0.0:plutus-ir:PlutusIR.Core.Type.Term
                                PlutusCore.Name.TyName
                                PlutusCore.Name.Name
                                plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                                fun2
                                ())
                     with: plutus-core-1.21.0.0:plutus-ir:PlutusIR.Compiler.Definitions.DefT
                             template-haskell-2.20.0.0:Language.Haskell.TH.Syntax.Name
                             plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                             fun1
                             ()
                             PlutusCore.Quote.Quote
                             (plutus-core-1.21.0.0:plutus-ir:PlutusIR.Core.Type.Term
                                PlutusCore.Name.TyName
                                PlutusCore.Name.Name
                                plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                                fun1
                                ())
      Expected: plutus-tx-1.21.0.0:PlutusTx.Lift.TH.CompileTerm
                -> plutus-core-1.21.0.0:plutus-ir:PlutusIR.Compiler.Definitions.DefT
                     template-haskell-2.20.0.0:Language.Haskell.TH.Syntax.Name
                     plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                     fun1
                     ()
                     PlutusCore.Quote.Quote
                     (plutus-core-1.21.0.0:plutus-ir:PlutusIR.Core.Type.Term
                        PlutusCore.Name.TyName
                        PlutusCore.Name.Name
                        plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                        fun1
                        ())
        Actual: plutus-tx-1.21.0.0:PlutusTx.Lift.TH.CompileTerm
                -> forall fun.
                   PlutusTx.Lift.Class.RTCompile
                     plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                     fun
                     (plutus-core-1.21.0.0:plutus-ir:PlutusIR.Core.Type.Term
                        PlutusCore.Name.TyName
                        PlutusCore.Name.Name
                        plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                        fun
                        ())
    • In the first argument of ‘(Data.Functor.<$>)’, namely
        ‘plutus-tx-1.21.0.0:PlutusTx.Lift.TH.unCompileTerm’
      In the first argument of ‘Data.Traversable.sequence’, namely
        ‘(plutus-tx-1.21.0.0:PlutusTx.Lift.TH.unCompileTerm
            Data.Functor.<$> liftExprs'_a7NH)’
      In a stmt of a 'do' block:
        lifts_a7NL :: [plutus-core-1.21.0.0:plutus-ir:PlutusIR.Core.Type.Term PlutusCore.Name.TyName PlutusCore.Name.Name plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni fun ()] <- Data.Traversable.sequence
                                                                                                                                                                                                   (plutus-tx-1.21.0.0:PlutusTx.Lift.TH.unCompileTerm
                                                                                                                                                                                                      Data.Functor.<$>
                                                                                                                                                                                                        liftExprs'_a7NH)
    • Relevant bindings include
        constr_a7NK :: plutus-core-1.21.0.0:plutus-ir:PlutusIR.Core.Type.Term
                         PlutusCore.Name.TyName
                         PlutusCore.Name.Name
                         plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                         fun1
                         ()
          (bound at suite/OnChain/BetRef.hs:41:1)
        constrs_a7NJ :: [plutus-core-1.21.0.0:plutus-ir:PlutusIR.Core.Type.Term
                           PlutusCore.Name.TyName
                           PlutusCore.Name.Name
                           plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                           fun1
                           ()]
          (bound at suite/OnChain/BetRef.hs:41:1)
        maybeConstructors_a7NI :: Maybe
                                    [plutus-core-1.21.0.0:plutus-ir:PlutusIR.Core.Type.Term
                                       PlutusCore.Name.TyName
                                       PlutusCore.Name.Name
                                       plutus-core-1.21.0.0:PlutusCore.Default.Universe.DefaultUni
                                       fun1
                                       ()]
          (bound at suite/OnChain/BetRef.hs:41:1)
   |
41 | PlutusTx.makeLift ''BetRefParams