From ba1171563d9f6c0d11c2a4e2d273650f660fe95e Mon Sep 17 00:00:00 2001 From: Nikolaos Bezirgiannis Date: Fri, 25 Aug 2023 18:41:06 +0200 Subject: [PATCH 1/2] Bump Plutus deps to 1.11. Bump cardano dependants for chap --- cabal.project | 2 +- eras/alonzo/impl/cardano-ledger-alonzo.cabal | 4 ++-- eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal | 4 ++-- eras/babbage/impl/cardano-ledger-babbage.cabal | 2 +- eras/conway/impl/cardano-ledger-conway.cabal | 2 +- flake.lock | 6 +++--- libs/cardano-ledger-binary/cardano-ledger-binary.cabal | 4 ++-- libs/cardano-ledger-test/cardano-ledger-test.cabal | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/cabal.project b/cabal.project index 8efcbe17c20..1aa39f67a83 100644 --- a/cabal.project +++ b/cabal.project @@ -14,7 +14,7 @@ index-state: -- Bump this if you need newer packages from Hackage , hackage.haskell.org 2023-07-17T00:00:00Z -- Bump this if you need newer packages from CHaP - , cardano-haskell-packages 2023-07-22T00:00:00Z + , cardano-haskell-packages 2023-08-26T00:00:00Z packages: eras/allegra/impl diff --git a/eras/alonzo/impl/cardano-ledger-alonzo.cabal b/eras/alonzo/impl/cardano-ledger-alonzo.cabal index bf09af4618c..d82660bc2e3 100644 --- a/eras/alonzo/impl/cardano-ledger-alonzo.cabal +++ b/eras/alonzo/impl/cardano-ledger-alonzo.cabal @@ -81,8 +81,8 @@ library mtl, microlens, nothunks, - plutus-ledger-api ^>=1.9, - plutus-core ^>=1.9, + plutus-ledger-api ^>=1.11, + plutus-core ^>=1.11, prettyprinter, serialise, set-algebra >=1.0, diff --git a/eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal b/eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal index 0dd1d4eaa81..f1dec523c99 100644 --- a/eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal +++ b/eras/alonzo/test-suite/cardano-ledger-alonzo-test.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: cardano-ledger-alonzo-test -version: 1.1.2.4 +version: 1.1.2.5 license: Apache-2.0 maintainer: operations@iohk.io author: IOHK @@ -66,7 +66,7 @@ library data-default-class, microlens, plutus-tx, - plutus-ledger-api:{plutus-ledger-api, plutus-ledger-api-testlib} ^>=1.9, + plutus-ledger-api:{plutus-ledger-api, plutus-ledger-api-testlib} ^>=1.11, QuickCheck, random, serialise, diff --git a/eras/babbage/impl/cardano-ledger-babbage.cabal b/eras/babbage/impl/cardano-ledger-babbage.cabal index 1867ec2f29f..d6984d5cc4d 100644 --- a/eras/babbage/impl/cardano-ledger-babbage.cabal +++ b/eras/babbage/impl/cardano-ledger-babbage.cabal @@ -71,7 +71,7 @@ library deepseq, microlens, nothunks, - plutus-ledger-api ^>=1.9, + plutus-ledger-api ^>=1.11, set-algebra, small-steps, text, diff --git a/eras/conway/impl/cardano-ledger-conway.cabal b/eras/conway/impl/cardano-ledger-conway.cabal index 0b738bb6ace..7f1e7f17ad0 100644 --- a/eras/conway/impl/cardano-ledger-conway.cabal +++ b/eras/conway/impl/cardano-ledger-conway.cabal @@ -83,7 +83,7 @@ library deepseq, microlens, nothunks, - plutus-ledger-api ^>=1.9, + plutus-ledger-api ^>=1.11, set-algebra, small-steps, text, diff --git a/flake.lock b/flake.lock index 00c3178bd70..88a88c70b59 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1689944957, - "narHash": "sha256-yVbSo0FMJi5QWg5yuqkHE314U6FKaz2zA8nFhspM66k=", + "lastModified": 1692973747, + "narHash": "sha256-mTlxhYzPUYJ/LggHQzsPomhqslCfTbjq8vqAhMaQN/o=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "2c01954d7cce23ce9e779fcdc69da63760d85215", + "rev": "1f0aed302bafbf897d3deefd9fc5de8229d04e1a", "type": "github" }, "original": { diff --git a/libs/cardano-ledger-binary/cardano-ledger-binary.cabal b/libs/cardano-ledger-binary/cardano-ledger-binary.cabal index cd2f3ad6b42..1652d81f801 100644 --- a/libs/cardano-ledger-binary/cardano-ledger-binary.cabal +++ b/libs/cardano-ledger-binary/cardano-ledger-binary.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: cardano-ledger-binary -version: 1.1.2.0 +version: 1.1.2.1 license: Apache-2.0 maintainer: operations@iohk.io author: IOHK @@ -67,7 +67,7 @@ library network, nothunks, primitive, - plutus-ledger-api ^>=1.9, + plutus-ledger-api ^>=1.11, recursion-schemes, serialise, tagged, diff --git a/libs/cardano-ledger-test/cardano-ledger-test.cabal b/libs/cardano-ledger-test/cardano-ledger-test.cabal index a190da65619..f8d2f5e0525 100644 --- a/libs/cardano-ledger-test/cardano-ledger-test.cabal +++ b/libs/cardano-ledger-test/cardano-ledger-test.cabal @@ -117,7 +117,7 @@ library nothunks, plutus-core, hspec, - plutus-ledger-api ^>=1.9, + plutus-ledger-api ^>=1.11, prettyprinter, QuickCheck, small-steps, From 9141820cdb66cb694a69f0b576ef66cbea6fa09e Mon Sep 17 00:00:00 2001 From: Nikolaos Bezirgiannis Date: Mon, 4 Sep 2023 14:14:46 +0200 Subject: [PATCH 2/2] Stub code to make it compile with plutus 1.11 --- .../impl/src/Cardano/Ledger/Alonzo/Scripts.hs | 2 +- .../impl/src/Cardano/Ledger/Alonzo/TxInfo.hs | 9 +- .../test-suite/golden/translations.cbor | Bin 2911676 -> 2912185 bytes .../Alonzo/Translation/TranslationInstance.hs | 66 +++++++++---- .../test-suite/golden/translations.cbor | Bin 3913280 -> 3915089 bytes .../impl/src/Cardano/Ledger/Conway/TxInfo.hs | 88 ++++++++++++------ .../test-suite/golden/translations.cbor | Bin 48982 -> 68526 bytes 7 files changed, 115 insertions(+), 50 deletions(-) diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs index ceb0084cffd..362bd462f4b 100644 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs +++ b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/Scripts.hs @@ -476,7 +476,7 @@ decodeCostModels = legacyCostModelLength :: Language -> Int legacyCostModelLength PlutusV1 = 166 legacyCostModelLength PlutusV2 = 175 -legacyCostModelLength PlutusV3 = 217 +legacyCostModelLength PlutusV3 = 223 -- | See the note for 'legacyCostModelLength'. legacyDecodeCostModel :: Language -> Decoder s CostModel diff --git a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxInfo.hs b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxInfo.hs index 4211cb387c0..99b8a80eeb6 100644 --- a/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxInfo.hs +++ b/eras/alonzo/impl/src/Cardano/Ledger/Alonzo/TxInfo.hs @@ -426,7 +426,7 @@ transValue (MaryValue n m) = justAda <> transMultiAsset m data PlutusTxCert (l :: Language) where TxCertPlutusV1 :: PV1.DCert -> PlutusTxCert 'PlutusV1 TxCertPlutusV2 :: PV2.DCert -> PlutusTxCert 'PlutusV2 - TxCertPlutusV3 :: PV3.DCert -> PlutusTxCert 'PlutusV3 + TxCertPlutusV3 :: PV3.TxCert -> PlutusTxCert 'PlutusV3 unTxCertV1 :: PlutusTxCert 'PlutusV1 -> PV1.DCert unTxCertV1 (TxCertPlutusV1 x) = x @@ -434,7 +434,7 @@ unTxCertV1 (TxCertPlutusV1 x) = x unTxCertV2 :: PlutusTxCert 'PlutusV2 -> PV2.DCert unTxCertV2 (TxCertPlutusV2 x) = x -unTxCertV3 :: PlutusTxCert 'PlutusV3 -> PV3.DCert +unTxCertV3 :: PlutusTxCert 'PlutusV3 -> PV3.TxCert unTxCertV3 (TxCertPlutusV3 x) = x class Era era => EraPlutusContext (l :: Language) era where @@ -613,8 +613,9 @@ valContext (TxInfoPV1 txinfo) sp = Data (PV1.toData (PV1.ScriptContext txinfo (transScriptPurpose sp))) valContext (TxInfoPV2 txinfo) sp = Data (PV2.toData (PV2.ScriptContext txinfo (transScriptPurpose sp))) -valContext (TxInfoPV3 txinfo) sp = - Data (PV3.toData (PV3.ScriptContext txinfo (transScriptPurpose sp))) +valContext (TxInfoPV3 txinfo) _sp = + -- FIXME: add support for PlutusV3 + Data (PV3.toData (PV3.ScriptContext txinfo (error "Unimplemented"))) data ScriptFailure = PlutusSF Text PlutusDebug deriving (Show, Generic) diff --git a/eras/alonzo/test-suite/golden/translations.cbor b/eras/alonzo/test-suite/golden/translations.cbor index 38e8490ac0e3253ba57eb5f017ef528d4985e50e..667687112952d00cbd5efcc96f64b4e42f3671e5 100644 GIT binary patch delta 1972 zcmXAqd0Z1`8pmfQ$xLDn5<-&6A-qGvedR!$1zFTqw19xFs};0r6{te1peTY`1vP?N zS{3l@DoU~90k!gYARb7y$byzr0YyQ@``8a6Vzp!U&-ah_dEfW@JKm~}3jEaV3cUR3 zMbg{f%m{hMpI-d2NH~%m&g!rL1#FDNcl<&I_}cv3ZD5iTF~uZ?5e&h=;$wtAK_Z;M z2@LjC5Sv2L{FZ-E{gR`pvsS5JmdqL5U7b`B)J7S6rd*kp_NYo-2os+Z7qcjpgrId+ zSGz+p4;+&DtHq>Wpj5#(L;g~J-)bRC8x?9+KLVBw@K0aij>8!S1Iu|q+&|GwYfVfu z^d9@Ud?0k%zI8vXs;_h17=Etc(W>Ru8)6sy4rT8JRSA?prVR36^^i1=jK~wI__Us& z^{fsmo{=pUZXzOZ9M&VMc^t|uHN_v=-ze`4(8a!A7JuvMX9?n|)c3D)dxk;^4@I4W z%tY!lLg*?s($4g7!d~+g1vOs@tA#=tkJSt1EDdW?g$NF1wrW8)^jT}Pzq6_4!%)Qa)IB5DYvfj)SsvNaP^^ko06e?g6vQbiE}Q&2#EVuwl4-vS$Z@( z=jv-s{0}qN8l34rUNl-`;}=T;Mit%m9rB;w2l__Yx;r8XZP3VQXHK=f{n~4avO^XAsPeke>}jZH@beM&us+@!@Z%=F>ehLN6P~`&=#AwQ?6)KjpO;Tx|5(+%qfA_s7WvMQaVx(j z%PpB~4NRZV6y6R`Tpi~fBoW4uU?BFYo=P;6VC zT5`|`ulk%E9+Msf&tg^r-mFUWB^eG6PMkW+-Bg}1IH>t=2IWW! z%(PwuzopUh6NEI)qxDv^)gI7JLqNN>Cyuh%0$IH`363^h-VzFvvb4KKW#3(@gWaY2 zSsN$|-^{SX85jyM@Mlp%CC(az8u;*?K~_L=-u!4uscHCkX7tkS=Ax9=l&BAz<%Zze zq}xlJ=7u#n%IB^vmRy&&6lTGhDZ{&Z$d4t)g={Fa0Umu@`z7q0r0pD@ECitX5^@Vq!7r^&jh=;ix4< znT(NWdvUgK5n1e*_~-53hcnZf)X$SGNzIX64R?>899q4y5)KxbJ|{?<&`25mD|ec* zb_%#^!!gJVbXzkSz3&cI@BJmLY~k)!_WIeUY&R9twSUW(m@-@3yqV$kfZpy_Kb?{W z(KM!#+8=bg!Gmsh;s>D&r*&?uo`i>~9@Dw1f|K3mb;V0ssI2 delta 1394 zcmV-&1&#W--?0I_+pz(#?ZUJ3!k(A6nOXsvvbQ)50#Bm1jjsYO0=L1j0*pN%0!r(m zr0h+Tpoxpn5E_{;mNs5@M!0N28m)h?qH-TGw{7nN!h44{YXi47YXpD`x4d=)=zzDZ z_XN7gw`{-#T0S81Tu((~X}JsRDGT8-$|7euhMMpt7+xK(;Aed{i&N#d=Kck|Ww)th z21<&z{O$(TF}K$s2h>F%mVtvfAqq+YwwGV!L}Pe};cWm*&`+B+Dl6XB;ci>fx65V+ zNdku)X$Q9)X$Zaux8iXK&fK@RP6@$mw|=_`!0CrYr3$x2r3M8CEMz#2Dw_|b*OhmV~ zwhdrGw;cElKLWR5`VHYuAnG*WHYGfvyk#wN{GVptoX4 z4yrb{5`Ye&ParksYg6drs;ib+!|TJ>QP(_4K7eHOLAKRvs5S4t>}a>s&klv*w_&jl zT7tL3GZ1DMw=YW&y*(f*5#GnGU96SJN!~MNtFMl+hFu2jtC9u_C}WZ$>r+v;42clq zS-1A$5GwAsCeaasQXo~ttHYYN_XcX->t-j4sI)&~a|Rn7r&*-g6N)EyRj0SeBNAk& zw=&EUX-go8@Hp=s)i*SXJzq`r0aMj(&VG|#1dY+Le+)k;+eA^fyB8B`0=Fz06M9^? zt#%VZTetMl6W;5$*u50G47Zrd6g(dw*qg)hhfaz6QjstLd^W3>{t@JcC4B%ehw1LO z1oX=GxAf^059_xH)fHwew{-y)VLBkOA#EC;PMf(T4lgCoS|wp?gPyE2;fl08 z3yHTi#uhTgw{43TtZ%m;`xni4xASutX=R6G*%-HE*%{+nw@x$~igbtHs2aE5s2g91 zw?#1=1YfsMkQ@$`w`3(9jxZo$Efp?&@I0trjL@x(GR%3zD{UwqI@*r~3{F%UD!S*l z5>_4E}t#!9v z@*Xy#x0;k6TmrZJmLDcRAffh3LPYkgc_v@!)STz%hAgHeW=F9`kOwxNm|SpdsJBAa zA9Dh?yVxI>tG8H$AV5GMsKd#*J82ep+sD_IPEq!OX`BkTFnN6r9B`Pf(|4OYx46V0 zSOT{f#~`tChtD}7x6e5ud!@Hf-y(%bAn6WpfZy(|h!k1Yq|w-T*|_S4bvNIVczsA^ zeJWjOaJTg*BQOJpEGr|oEGs0m2e;=kBpVyI2u>s;OCXX%={er#odo6J(a33Ak;lxB zPKIPYO{8g?pgEckclftUnIu>Ox2c;Xdz!Z@HYI>kAYUdXO6s@z7l;zG0-NFspZpHK z-#{wa@1)Hi3r9|(>bJ^>CCpieo#G|8o#G|}k+-LFCs{JL2Bs$%G9X@8RkZ~(SwPoA zj##ZoYPzm#k^ZmM>n}3aECk$>*gCg9*e7xVhq>A(x4GIVMHsgQ^C(66w^8gV`OLRb zxhfaiw{VmzS0uO1xGTdgATit-1RDW>ClK0*NQjRYr7Uzj9HW7AC-}ZJQh;d6vbV72 zE4Tr-Z|EzGF}DF4ESFUwao_ugM%$4;%I6#?^c_s3i})K&?j1;RI)774{DqbQ|6c}= As{jB1 diff --git a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslationInstance.hs b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslationInstance.hs index 3ab194862d4..99d7a035641 100644 --- a/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslationInstance.hs +++ b/eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/Translation/TranslationInstance.hs @@ -44,9 +44,14 @@ import qualified Codec.Serialise as Cborg (Serialise (..)) import qualified Data.ByteString.Lazy as BSL import GHC.Generics (Generic) import qualified PlutusLedgerApi.V1 as PV1 +import qualified PlutusLedgerApi.V2 as PV2 import qualified PlutusLedgerApi.V3 as PV3 +-- FIXME: remove following line after plutus patch + import Cardano.Ledger.Alonzo.TxInfo (VersionedTxInfo) +import qualified PlutusLedgerApi.V3.Contexts as PV3 +import PlutusTx.Ratio as PlutusTx import Data.Typeable (Typeable) @@ -63,32 +68,59 @@ data TranslationInstance era = TranslationInstance deriving instance (Era era, Eq (PParams era), Eq (UTxO era), Eq (Core.Tx era)) => Eq (TranslationInstance era) deriving instance (Era era, Show (PParams era), Show (UTxO era), Show (Core.Tx era)) => Show (TranslationInstance era) -instance Cborg.Serialise PV1.TxInfo +instance Cborg.Serialise PV1.DCert instance Cborg.Serialise PV1.TxInInfo +instance Cborg.Serialise PV1.TxInfo instance Cborg.Serialise PV1.TxOut -instance Cborg.Serialise PV3.POSIXTime -instance Cborg.Serialise a => Cborg.Serialise (PV3.Extended a) -instance Cborg.Serialise a => Cborg.Serialise (PV3.LowerBound a) -instance Cborg.Serialise a => Cborg.Serialise (PV3.UpperBound a) -instance Cborg.Serialise a => Cborg.Serialise (PV3.Interval a) +instance Cborg.Serialise PV2.ScriptPurpose +instance Cborg.Serialise PV2.TxInfo instance Cborg.Serialise PV3.Address +instance Cborg.Serialise PV3.BuiltinData +instance Cborg.Serialise PV3.ChangedParameters +instance Cborg.Serialise PV3.ColdCommitteeCredential +instance Cborg.Serialise PV3.Committee +instance Cborg.Serialise PV3.Constitution instance Cborg.Serialise PV3.Credential instance Cborg.Serialise PV3.CurrencySymbol -instance Cborg.Serialise PV3.DCert -instance Cborg.Serialise PV3.TxOutRef -instance Cborg.Serialise PV3.TxId -instance Cborg.Serialise PV3.Value -instance Cborg.Serialise PV3.PubKeyHash -instance (Cborg.Serialise k, Cborg.Serialise v) => Cborg.Serialise (PV3.Map k v) -instance Cborg.Serialise PV3.TokenName -instance Cborg.Serialise PV3.TxInInfo +instance Cborg.Serialise PV3.DRep +instance Cborg.Serialise PV3.DRepCredential instance Cborg.Serialise PV3.DatumHash -instance Cborg.Serialise PV3.StakingCredential -instance Cborg.Serialise PV3.ScriptHash -instance Cborg.Serialise PV3.TxOut +instance Cborg.Serialise PV3.Delegatee +instance Cborg.Serialise PV3.GovernanceAction +instance Cborg.Serialise PV3.GovernanceActionId +instance Cborg.Serialise PV3.HotCommitteeCredential instance Cborg.Serialise PV3.OutputDatum +instance Cborg.Serialise PV3.POSIXTime +instance Cborg.Serialise PV3.ProposalProcedure +instance Cborg.Serialise PV3.ProtocolVersion +instance Cborg.Serialise PV3.PubKeyHash +instance Cborg.Serialise PV3.ScriptHash instance Cborg.Serialise PV3.ScriptPurpose +instance Cborg.Serialise PV3.StakingCredential +instance Cborg.Serialise PV3.TokenName +instance Cborg.Serialise PV3.TxCert +instance Cborg.Serialise PV3.TxId +instance Cborg.Serialise PV3.TxInInfo instance Cborg.Serialise PV3.TxInfo +instance Cborg.Serialise PV3.TxOut +instance Cborg.Serialise PV3.TxOutRef +instance Cborg.Serialise PV3.Value +instance Cborg.Serialise PV3.Vote +instance Cborg.Serialise PV3.Voter +instance (Cborg.Serialise k, Cborg.Serialise v) => Cborg.Serialise (PV3.Map k v) +instance Cborg.Serialise a => Cborg.Serialise (PV3.Extended a) +instance Cborg.Serialise a => Cborg.Serialise (PV3.Interval a) +instance Cborg.Serialise a => Cborg.Serialise (PV3.LowerBound a) +instance Cborg.Serialise a => Cborg.Serialise (PV3.UpperBound a) + +-- FIXME: remove following line after plutus patch +deriving instance Generic PV3.BuiltinData + +-- FIXME: fix following after plutus patch +instance Cborg.Serialise PlutusTx.Rational where + encode = error "fixme rational" + decode = error "fixme rational" + instance Cborg.Serialise VersionedTxInfo instance EncCBOR VersionedTxInfo where diff --git a/eras/babbage/test-suite/golden/translations.cbor b/eras/babbage/test-suite/golden/translations.cbor index ffb37aa6d0d341be282a407b202fae55dfdc409b..80479c75ff95b63c9952bc31334ac8d79a00ea24 100644 GIT binary patch delta 3993 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 diff --git a/eras/conway/impl/src/Cardano/Ledger/Conway/TxInfo.hs b/eras/conway/impl/src/Cardano/Ledger/Conway/TxInfo.hs index 1a3a248043b..98c61311deb 100644 --- a/eras/conway/impl/src/Cardano/Ledger/Conway/TxInfo.hs +++ b/eras/conway/impl/src/Cardano/Ledger/Conway/TxInfo.hs @@ -12,7 +12,10 @@ module Cardano.Ledger.Conway.TxInfo (conwayTxInfo) where +import Cardano.Ledger.Address (RewardAcnt (..)) import Cardano.Ledger.Alonzo.Language (Language (..)) +import Cardano.Ledger.Alonzo.Scripts +import Cardano.Ledger.Alonzo.Tx import Cardano.Ledger.Alonzo.TxInfo ( EraPlutusContext, TranslationError (..), @@ -20,20 +23,16 @@ import Cardano.Ledger.Alonzo.TxInfo ( unTxCertV3, ) import qualified Cardano.Ledger.Alonzo.TxInfo as Alonzo -import Cardano.Ledger.Alonzo.TxWits ( - AlonzoEraTxWits (..), - unRedeemers, - unTxDats, - ) +import Cardano.Ledger.Alonzo.TxWits (AlonzoEraTxWits (..), RdmrPtr, unRedeemers, unTxDats) import Cardano.Ledger.Babbage.TxInfo (babbageTxInfoV1, babbageTxInfoV2) import qualified Cardano.Ledger.Babbage.TxInfo as B -import Cardano.Ledger.BaseTypes (EpochNo (..)) +import Cardano.Ledger.BaseTypes (StrictMaybe (..)) +import Cardano.Ledger.Coin (Coin (..)) import Cardano.Ledger.Conway.Core hiding (TranslationError) import Cardano.Ledger.Conway.Era (ConwayEra) import Cardano.Ledger.Conway.TxCert () import Cardano.Ledger.Crypto (Crypto) import Cardano.Ledger.Mary.Value (MaryValue (..)) -import Cardano.Ledger.PoolParams (PoolParams (..)) import Cardano.Ledger.SafeHash (hashAnnotated) import Cardano.Ledger.Shelley.TxCert import Cardano.Ledger.UTxO (UTxO (..)) @@ -47,14 +46,15 @@ import qualified Data.Map.Strict as Map import qualified Data.Set as Set import Data.Text (Text) import Lens.Micro -import qualified PlutusLedgerApi.V1 as PV1 import qualified PlutusLedgerApi.V3 as PV3 instance Crypto c => EraPlutusContext 'PlutusV1 (ConwayEra c) where - transTxCert = Alonzo.TxCertPlutusV1 . conwayTransTxCert + -- FIXME: implement for conway era + transTxCert = Alonzo.TxCertPlutusV1 . error "Unimplemented" instance Crypto c => EraPlutusContext 'PlutusV2 (ConwayEra c) where - transTxCert = Alonzo.TxCertPlutusV2 . conwayTransTxCert + -- FIXME: implement for conway era + transTxCert = Alonzo.TxCertPlutusV2 . error "Unimplemented" instance Crypto c => EraPlutusContext 'PlutusV3 (ConwayEra c) where transTxCert = Alonzo.TxCertPlutusV3 . conwayTransTxCert @@ -90,7 +90,7 @@ conwayTxInfo pp lang ei sysS utxo tx = do -- * `txInfoFee` no longer gets a zero ADA inserted into the field, since minting ADA is -- not possible. -- --- * `txInfoDCert` is renamed to `txInfoCert`. Certificates are no longer just +-- * `txInfoDCert` is renamed to `txInfoTxCerts`. Certificates are no longer just -- about delegation, so @D@ prefix no longer make sense. conwayTxInfoV3 :: forall era. @@ -99,7 +99,6 @@ conwayTxInfoV3 :: , BabbageEraTxBody era , Value era ~ MaryValue (EraCrypto era) , EraPlutusContext 'PlutusV3 era - , EraPlutusContext 'PlutusV1 era ) => PV3.POSIXTimeRange -> Tx era -> @@ -113,7 +112,7 @@ conwayTxInfoV3 timeRange tx utxo = do (B.txInfoOutV2 . Alonzo.TxOutFromOutput) [minBound ..] (foldr (:) [] outs) - rdmrs' <- mapM (B.transRedeemerPtr txBody) rdmrs + rdmrs' <- mapM (transRedeemerPtr txBody) rdmrs pure . TxInfoPV3 $ PV3.TxInfo -- TODO Add relevant CIP-1694 data to PV3.TxInfo { PV3.txInfoInputs = inputs @@ -123,14 +122,22 @@ conwayTxInfoV3 timeRange tx utxo = do , -- Note that this translation is different from previous Plutus versions, since we no -- longer add a zero ADA value to the mint field during translation: PV3.txInfoMint = Alonzo.transMultiAsset (txBody ^. mintTxBodyL) - , PV3.txInfoDCert = toList $ fmap (unTxCertV3 . Alonzo.transTxCert) (txBody ^. certsTxBodyL) - , PV3.txInfoWdrl = PV3.fromList $ Map.toList (Alonzo.transWithdrawals (txBody ^. withdrawalsTxBodyL)) + , PV3.txInfoTxCerts = toList $ fmap (unTxCertV3 . Alonzo.transTxCert) (txBody ^. certsTxBodyL) + , PV3.txInfoWdrl = PV3.fromList $ Map.toList (transWithdrawals (txBody ^. withdrawalsTxBodyL)) , PV3.txInfoValidRange = timeRange , PV3.txInfoSignatories = map Alonzo.transKeyHash (Set.toList (txBody ^. reqSignerHashesTxBodyL)) , PV3.txInfoRedeemers = PV3.fromList rdmrs' , PV3.txInfoData = PV3.fromList $ map Alonzo.transDataPair datpairs , PV3.txInfoId = PV3.TxId (Alonzo.transSafeHash (hashAnnotated txBody)) + , -- FIXME: implement for plutus v3 + PV3.txInfoVotes = error "Unimplemented" + , -- FIXME: implement for plutus v3 + PV3.txInfoProposalProcedures = error "Unimplemented" + , -- FIXME: implement for plutus v3 + PV3.txInfoCurrentTreasuryAmount = error "Unimplemented" + , -- FIXME: implement for plutus v3 + PV3.txInfoTreasuryDonation = error "Unimplemented" } where txBody = tx ^. bodyTxL @@ -142,20 +149,45 @@ conwayTxInfoV3 timeRange tx utxo = do -- | This is a temporary version that only translates certificates from previous eras, -- none of them are Conway specific. -conwayTransTxCert :: ShelleyEraTxCert era => TxCert era -> PV1.DCert +conwayTransTxCert :: ShelleyEraTxCert era => TxCert era -> PV3.TxCert conwayTransTxCert = \case RegTxCert stakeCred -> - PV1.DCertDelegRegKey (PV1.StakingHash (Alonzo.transCred stakeCred)) + PV3.TxCertRegStaking (Alonzo.transCred stakeCred) (error "unimplemented") UnRegTxCert stakeCred -> - PV1.DCertDelegDeRegKey (PV1.StakingHash (Alonzo.transCred stakeCred)) - DelegStakeTxCert stakeCred keyHash -> - PV1.DCertDelegDelegate - (PV1.StakingHash (Alonzo.transCred stakeCred)) - (Alonzo.transKeyHash keyHash) - RegPoolTxCert (PoolParams {ppId, ppVrf}) -> - PV1.DCertPoolRegister - (Alonzo.transKeyHash ppId) - (PV1.PubKeyHash (PV1.toBuiltin (Alonzo.transHash ppVrf))) - RetirePoolTxCert poolId (EpochNo i) -> - PV1.DCertPoolRetire (Alonzo.transKeyHash poolId) (fromIntegral i) + PV3.TxCertUnRegStaking (Alonzo.transCred stakeCred) (error "unimplemented") + DelegStakeTxCert stakeCred _keyHash -> + PV3.TxCertDelegStaking + (Alonzo.transCred stakeCred) + (error "unimplemented") _ -> error "Translation of Conway Certificate is not implemented yet" + +-- adapted from Alonzo.TxInfo so as to drop the 'StakingCredential' constructor. +transWithdrawals :: Withdrawals c -> Map.Map PV3.Credential Integer +transWithdrawals (Withdrawals mp) = Map.foldlWithKey' accum Map.empty mp + where + accum ans (RewardAcnt _network cred) (Coin n) = + Map.insert (Alonzo.transCred cred) n ans + +transRedeemerPtr :: + ( MaryEraTxBody era + , EraPlutusContext 'PlutusV3 era + ) => + TxBody era -> + (RdmrPtr, (Data era, ExUnits)) -> + Either (TranslationError (EraCrypto era)) (PV3.ScriptPurpose, PV3.Redeemer) +transRedeemerPtr txb (ptr, (d, _)) = + case rdptrInv txb ptr of + SNothing -> Left (RdmrPtrPointsToNothing ptr) + SJust sp -> Right (transScriptPurpose sp, B.transRedeemer d) + +transScriptPurpose :: + EraPlutusContext 'PlutusV3 era => + ScriptPurpose era -> + PV3.ScriptPurpose +transScriptPurpose (Minting policyid) = PV3.Minting (Alonzo.transPolicyID policyid) +transScriptPurpose (Spending txin) = PV3.Spending (Alonzo.txInfoIn' txin) +transScriptPurpose (Rewarding (RewardAcnt _network cred)) = + PV3.Rewarding (Alonzo.transCred cred) +transScriptPurpose (Certifying dcert) = PV3.Certifying $ unTxCertV3 $ Alonzo.transTxCert dcert + +-- FIXME: Add support for PV3, add voting , proposing diff --git a/eras/conway/test-suite/golden/translations.cbor b/eras/conway/test-suite/golden/translations.cbor index 235d2aa7e414090246e48b1a38097883bdc24fb2..b7854d16260f07b59cb4fc3cc0f904a6f231da0b 100644 GIT binary patch delta 56980 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