@@ -36,9 +36,8 @@ import PlutusTx.Prelude as Tx hiding (Semigroup (..), (.), (<$>))
3636import Prelude as Haskell (String , (.) , (<$>) )
3737import PlutusTx
3838import qualified Data.ByteString.Short as SBS
39- import qualified PlutusLedgerApi.V1.Scripts as V1
39+ import qualified PlutusLedgerApi.V3.Contexts as V3
4040import qualified PlutusLedgerApi.V3 as V3
41- import qualified PlutusTx.AssocMap as PlutusTx
4241import qualified PlutusTx.Builtins as PlutusTx
4342import qualified PlutusTx.Prelude as PlutusTx
4443
@@ -53,15 +52,18 @@ script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusS
5352{-# INLINABLE typedValidator #-}
5453typedValidator :: V3. ScriptContext -> Bool
5554typedValidator scriptContext =
56- PlutusTx. elem supplementalDatum datums
55+ PlutusTx. isJust ( V3. findDatum supplementalDatumHash txInfo)
5756 where
5857 txInfo = V3. scriptContextTxInfo scriptContext
59- datumMap = V3. txInfoData txInfo
60- datums = PlutusTx. elems datumMap
6158
62- {-# INLINABLE supplementalDatum #-}
63- supplementalDatum :: V1. Datum
64- supplementalDatum = V1. Datum (PlutusTx. mkI 1 )
59+ {- On chain we are dealing with raw bytes. You can generate the datum hash from the cli via:
60+ > cardano-cli transaction hash-script-data --script-data-value 1
61+ > ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25
62+ However this result is hex encoded. Therefore we have to convert to decimal notation and then use `integerToByteString` to convert to bytes.
63+ -}
64+ {-# INLINABLE supplementalDatumHash #-}
65+ supplementalDatumHash :: V3. DatumHash
66+ supplementalDatumHash = V3. DatumHash $ PlutusTx. integerToByteString PlutusTx. BigEndian 0 107688188478553082748947992068553556338831975613033640413719911361848497815077
6567
6668untypedValidator :: BuiltinData -> BuiltinUnit
6769untypedValidator ctx =
0 commit comments