Skip to content

Commit

Permalink
plutus-ledger: Fix scriptHash function
Browse files Browse the repository at this point in the history
  • Loading branch information
j-mueller committed Sep 10, 2021
1 parent 9839104 commit 298946c
Showing 1 changed file with 21 additions and 10 deletions.
31 changes: 21 additions & 10 deletions plutus-ledger/src/Ledger/Scripts.hs
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,19 @@ module Ledger.Scripts (
, validatorHash
, mintingPolicyHash
, stakeValidatorHash
, toCardanoApiScript
, scriptHash
) where

import Cardano.Api (AsType, HasTextEnvelope (textEnvelopeType), HasTypeProxy (proxyToAsType),
SerialiseAsCBOR, TextEnvelopeType (TextEnvelopeType))
import qualified Cardano.Api as Script
import qualified Cardano.Api.Shelley as Script
import Cardano.Binary (FromCBOR (fromCBOR), ToCBOR (toCBOR))
import qualified Cardano.Crypto.Hash as Crypto
import Codec.Serialise (Serialise, decode, encode, serialise)
import Codec.Serialise (decode, encode, serialise)
import qualified Data.ByteArray as BA
import qualified Data.ByteString.Lazy as BSL
import qualified Data.ByteString.Short as SBS
import qualified Data.Text as Text
import Plutus.V1.Ledger.Api (plutusDatumEnvelopeType, plutusRedeemerEnvelopeType,
plutusScriptEnvelopeType)
Expand Down Expand Up @@ -85,20 +89,27 @@ redeemerHash :: Redeemer -> RedeemerHash
redeemerHash = RedeemerHash . Builtins.sha2_256 . BA.convert

validatorHash :: Validator -> ValidatorHash
validatorHash = ValidatorHash . scriptHash
validatorHash = ValidatorHash . scriptHash . getValidator

mintingPolicyHash :: MintingPolicy -> MintingPolicyHash
mintingPolicyHash = MintingPolicyHash . scriptHash
mintingPolicyHash = MintingPolicyHash . scriptHash . getMintingPolicy

stakeValidatorHash :: StakeValidator -> StakeValidatorHash
stakeValidatorHash = StakeValidatorHash . scriptHash
stakeValidatorHash = StakeValidatorHash . scriptHash . getStakeValidator

scriptHash :: Serialise a => a -> Builtins.BuiltinByteString
-- | Hash a 'Script'
scriptHash :: Script -> Builtins.BuiltinByteString
scriptHash =
toBuiltin
. Crypto.hashToBytes
. Crypto.hashWith @Crypto.Blake2b_224 id
. Crypto.hashToBytes
. Crypto.hashWith @Crypto.Blake2b_224 id
. Script.serialiseToRawBytes
. Script.hashScript
. toCardanoApiScript

-- | Convert a 'Script' to a 'cardano-api' script
toCardanoApiScript :: Script -> Script.Script Script.PlutusScriptV1
toCardanoApiScript =
Script.PlutusScript Script.PlutusScriptV1
. Script.PlutusScriptSerialised
. SBS.toShort
. BSL.toStrict
. serialise

0 comments on commit 298946c

Please sign in to comment.