3
3
module Utilities.Serialise
4
4
( validatorToScript
5
5
, policyToScript
6
+ , codeToScript
7
+ , writeCodeToFile
6
8
, writeValidatorToFile
7
9
, writePolicyToFile
8
10
, dataToJSON
@@ -15,19 +17,24 @@ import Cardano.Api (Error (displayError), PlutusScript,
15
17
writeFileJSON , writeFileTextEnvelope )
16
18
import Cardano.Api.Shelley (PlutusScript (.. ), fromPlutusData ,
17
19
scriptDataToJsonDetailedSchema )
18
- import Codec.Serialise (serialise , Serialise )
20
+ import Codec.Serialise (Serialise , serialise )
19
21
import Data.Aeson (Value )
20
22
import qualified Data.ByteString.Char8 as BS8
21
23
import qualified Data.ByteString.Lazy as BSL
22
24
import qualified Data.ByteString.Short as BSS
23
25
import Plutus.V1.Ledger.Api (ToData )
24
26
import qualified Plutus.V2.Ledger.Api as PlutusV2
27
+ import PlutusTx (CompiledCode )
25
28
import Text.Printf (printf )
26
29
27
30
28
31
serializableToScript :: Serialise a => a -> PlutusScript PlutusScriptV2
29
32
serializableToScript = PlutusScriptSerialised . BSS. toShort . BSL. toStrict . serialise
30
33
34
+ -- Serialize compiled code
35
+ codeToScript :: CompiledCode a -> PlutusScript PlutusScriptV2
36
+ codeToScript = serializableToScript . PlutusV2. fromCompiledCode
37
+
31
38
-- Serialize validator
32
39
validatorToScript :: PlutusV2. Validator -> PlutusScript PlutusScriptV2
33
40
validatorToScript = serializableToScript
@@ -36,19 +43,24 @@ validatorToScript = serializableToScript
36
43
policyToScript :: PlutusV2. MintingPolicy -> PlutusScript PlutusScriptV2
37
44
policyToScript = serializableToScript
38
45
46
+ -- Create file with Plutus script
47
+ writeScriptToFile :: FilePath -> PlutusScript PlutusScriptV2 -> IO ()
48
+ writeScriptToFile filePath script =
49
+ writeFileTextEnvelope filePath Nothing script >>= \ case
50
+ Left err -> print $ displayError err
51
+ Right () -> putStrLn $ " Serialized script to: " ++ filePath
52
+
53
+ -- Create file with compiled code
54
+ writeCodeToFile :: FilePath -> CompiledCode a -> IO ()
55
+ writeCodeToFile filePath = writeScriptToFile filePath . codeToScript
56
+
39
57
-- Create file with compiled Plutus validator
40
58
writeValidatorToFile :: FilePath -> PlutusV2. Validator -> IO ()
41
- writeValidatorToFile filePath validator =
42
- writeFileTextEnvelope filePath Nothing (validatorToScript validator) >>= \ case
43
- Left err -> print $ displayError err
44
- Right () -> putStrLn $ " Compiled Plutus script at: " ++ filePath
59
+ writeValidatorToFile filePath = writeScriptToFile filePath . validatorToScript
45
60
46
61
-- Create file with compiled Plutus minting policy
47
62
writePolicyToFile :: FilePath -> PlutusV2. MintingPolicy -> IO ()
48
- writePolicyToFile filePath policy =
49
- writeFileTextEnvelope filePath Nothing (policyToScript policy) >>= \ case
50
- Left err -> print $ displayError err
51
- Right () -> putStrLn $ " Compiled Plutus script at: " ++ filePath
63
+ writePolicyToFile filePath = writeScriptToFile filePath . policyToScript
52
64
53
65
dataToJSON :: ToData a => a -> Value
54
66
dataToJSON = scriptDataToJsonDetailedSchema . fromPlutusData . PlutusV2. toData
0 commit comments