Skip to content

Commit

Permalink
Serialise some datums and redeemers for manual submission
Browse files Browse the repository at this point in the history
  • Loading branch information
abailly-iohk committed Oct 11, 2021
1 parent e8bc727 commit 93c5b89
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 12 deletions.
48 changes: 36 additions & 12 deletions hydra-plutus/exe/inspect-script/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ import Data.Text (pack)
import Hydra.Contract.Commit as Commit
import Hydra.Contract.Head as Head
import Hydra.Contract.Initial as Initial
import Ledger (Datum (..))
import Ledger.Value
import Plutus.V1.Ledger.Api (Redeemer (Redeemer), dataToBuiltinData, toData)

-- | Serialise Hydra scripts to files for submission through cardano-cli
-- This small utility is useful to manually construct transactions payload for Hydra on-chain
Expand All @@ -25,11 +27,26 @@ main = do
( unAssetClass $
assetClass (currencySymbol $ encodeUtf8 currency) (tokenName $ encodeUtf8 token)
)
putTextLn "Serialise scripts"
putTextLn "Serialise scripts:"
forM_ (scripts policyId) $ \(script, scriptName) -> do
let scriptFile = scriptName <> ".plutus"
BL.writeFile scriptFile script
putTextLn $ " " <> pack scriptFile <> ": " <> sizeInKb (headScript policyId)
serialised = Aeson.encode $ serialiseToTextEnvelope (Just $ fromString scriptName) script
BL.writeFile scriptFile serialised
putTextLn $ " " <> pack scriptFile <> ": " <> sizeInKb serialised

putTextLn "Serialise datums:"
forM_ datums $ \(aDatum, datumName) -> do
let datumFile = datumName <> ".plutus"
serialised = Aeson.encode $ serialiseToTextEnvelope (Just $ fromString datumName) aDatum
BL.writeFile datumFile serialised
putTextLn $ " " <> pack datumFile <> ": " <> sizeInKb serialised

putTextLn "Serialise redeemers:"
forM_ redeemers $ \(aRedeemer, redeemerName) -> do
let redeemerFile = redeemerName <> ".plutus"
serialised = Aeson.encode $ serialiseToTextEnvelope (Just $ fromString redeemerName) aRedeemer
BL.writeFile redeemerFile serialised
putTextLn $ " " <> pack redeemerFile <> ": " <> sizeInKb serialised
where
sizeInKb = (<> " KB") . show . (`div` 1024) . BL.length

Expand All @@ -39,14 +56,21 @@ main = do
, (commitScript, "commitScript")
]

headScript policyId =
Aeson.encode $
serialiseToTextEnvelope Nothing $ Head.validatorScript policyId
headScript policyId = Head.validatorScript policyId

commitScript = Commit.validatorScript

initialScript = Initial.validatorScript

datums =
[ (headDatum, "headDatum")
, (abortDatum, "abortDatum")
]

headDatum = Datum $ dataToBuiltinData $ toData $ Head.Initial 1_000_000_000_000 []

abortDatum = Datum $ dataToBuiltinData $ toData $ Head.Final

commitScript =
Aeson.encode $
serialiseToTextEnvelope Nothing Commit.validatorScript
redeemers = [(headRedeemer, "headRedeemer")]

initialScript =
Aeson.encode $
serialiseToTextEnvelope Nothing Initial.validatorScript
headRedeemer = Redeemer $ dataToBuiltinData $ toData Head.Abort
1 change: 1 addition & 0 deletions hydra-plutus/hydra-plutus.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ executable inspect-script
, optparse-applicative
, plutus-contract
, plutus-ledger
, plutus-ledger-api
, serialise
, text

Expand Down

0 comments on commit 93c5b89

Please sign in to comment.