/
Hydra-Chain-Direct-Tx.html
35 lines (35 loc) · 53.1 KB
/
Hydra-Chain-Direct-Tx.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>Hydra.Chain.Direct.Tx</title><link href="linuwial.css" rel="stylesheet" type="text/css" title="Linuwial" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400i,700" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script type="text/x-mathjax-config">MathJax.Hub.Config({ tex2jax: { processClass: "mathjax", ignoreClass: ".*" } });</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><span class="caption">hydra-node-0.1.0: The Hydra node</span><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr><tr><th>Language</th><td>Haskell2010</td></tr></table><p class="caption">Hydra.Chain.Direct.Tx</p></div><div id="table-of-contents"><div id="contents-list"><p class="caption" onclick="window.scrollTo(0,0)">Contents</p><ul><li><a href="#g:1">Post Hydra Head transactions</a></li><li><a href="#g:2">Observe Hydra Head transactions</a></li><li><a href="#g:3">Functions related to OnChainHeadState</a></li><li><a href="#g:4">Helpers</a></li></ul></div></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Smart constructors for creating Hydra protocol transactions to be used in
the <code><a href="Hydra-Chain.html#v:Direct" title="Hydra.Chain">Direct</a></code> way of talking to the main-chain.</p><p>This module also encapsulates the transaction format used when talking to the
cardano-node, which is currently different from the <code><a href="Hydra-Ledger.html#v:Cardano" title="Hydra.Ledger">Cardano</a></code>,
thus we have not yet "reached" <code>isomorphism</code>.</p></div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><a href="#v:network">network</a> :: Network</li><li class="src short"><span class="keyword">data</span> <a href="#t:OnChainHeadState">OnChainHeadState</a><ul class="subs"><li>= <a href="#v:None">None</a></li><li>| <a href="#v:Initial">Initial</a> { <ul class="subs"><li><a href="#v:threadOutput">threadOutput</a> :: (TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</li><li><a href="#v:initials">initials</a> :: [(TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)]</li></ul> }</li><li>| <a href="#v:OpenOrClosed">OpenOrClosed</a> { <ul class="subs"><li><a href="#v:threadOutput">threadOutput</a> :: (TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</li></ul> }</li><li>| <a href="#v:Final">Final</a></li></ul></li><li class="src short"><a href="#v:threadToken">threadToken</a> :: AssetClass</li><li class="src short"><a href="#v:policyId">policyId</a> :: MintingPolicyHash</li><li class="src short"><a href="#v:initTx">initTx</a> :: [<a href="Hydra-Chain-Direct-Util.html#t:VerificationKey" title="Hydra.Chain.Direct.Util">VerificationKey</a>] -> <a href="Hydra-Chain.html#t:HeadParameters" title="Hydra.Chain">HeadParameters</a> -> TxIn StandardCrypto -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:commitTx">commitTx</a> :: <a href="Hydra-Party.html#t:Party" title="Hydra.Party">Party</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Ledger-Cardano.html#t:TxIn" title="Hydra.Ledger.Cardano">TxIn</a>, <a href="Hydra-Ledger-Cardano.html#t:TxOut" title="Hydra.Ledger.Cardano">TxOut</a> <a href="Hydra-Ledger-Cardano.html#t:CtxUTxO" title="Hydra.Ledger.Cardano">CtxUTxO</a> <a href="Hydra-Ledger-Cardano.html#t:Era" title="Hydra.Ledger.Cardano">Era</a>) -> (TxIn StandardCrypto, PubKeyHash) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:collectComTx">collectComTx</a> :: <a href="Hydra-Ledger-Cardano.html#t:Utxo" title="Hydra.Ledger.Cardano">Utxo</a> -> (TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:closeTx">closeTx</a> :: <a href="Hydra-Snapshot.html#t:SnapshotNumber" title="Hydra.Snapshot">SnapshotNumber</a> -> <a href="Hydra-Ledger-Cardano.html#t:Utxo" title="Hydra.Ledger.Cardano">Utxo</a> -> (TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:fanoutTx">fanoutTx</a> :: <a href="Hydra-Ledger-Cardano.html#t:Utxo" title="Hydra.Ledger.Cardano">Utxo</a> -> (TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:abortTx">abortTx</a> :: (TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> [(TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)] -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:observeInitTx">observeInitTx</a> :: <a href="Hydra-Party.html#t:Party" title="Hydra.Party">Party</a> -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</li><li class="src short"><a href="#v:convertParty">convertParty</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-plutus-0.1.0/doc/html/hydra-plutus/Hydra-Data-Party.html#t:Party" title="Hydra.Data.Party">Party</a> -> <a href="Hydra-Party.html#t:Party" title="Hydra.Party">Party</a></li><li class="src short"><a href="#v:observeCommitTx">observeCommitTx</a> :: ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>)</li><li class="src short"><a href="#v:observeCollectComTx">observeCollectComTx</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</li><li class="src short"><a href="#v:observeCloseTx">observeCloseTx</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</li><li class="src short"><a href="#v:observeFanoutTx">observeFanoutTx</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</li><li class="src short"><a href="#v:observeAbortTx">observeAbortTx</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</li><li class="src short"><a href="#v:knownUtxo">knownUtxo</a> :: <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</li><li class="src short"><a href="#v:ownInitial">ownInitial</a> :: <a href="Hydra-Chain-Direct-Util.html#t:VerificationKey" title="Hydra.Chain.Direct.Util">VerificationKey</a> -> [(TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)] -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (TxIn StandardCrypto, PubKeyHash)</li><li class="src short"><a href="#v:mkUnsignedTx">mkUnsignedTx</a> :: TxBody <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> TxDats <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> Redeemers <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (ScriptHash StandardCrypto) (Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:scriptAddr">scriptAddr</a> :: Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> Addr StandardCrypto</li><li class="src short"><a href="#v:plutusScript">plutusScript</a> :: Script -> Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:withDataHash">withDataHash</a> :: Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> (DataHash StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</li><li class="src short"><a href="#v:withScriptHash">withScriptHash</a> :: Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> (ScriptHash StandardCrypto, Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</li><li class="src short"><a href="#v:datumsFromList">datumsFromList</a> :: [Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>] -> TxDats <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:redeemersFromList">redeemersFromList</a> :: [(StrictMaybe RdmrPtr, (Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, ExUnits))] -> Redeemers <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></li><li class="src short"><a href="#v:lookupDatum">lookupDatum</a> :: TxWitness <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</li><li class="src short"><a href="#v:getRedeemerSpending">getRedeemerSpending</a> :: FromData a => ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> TxIn StandardCrypto -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> a</li><li class="src short"><a href="#v:findScriptOutput">findScriptOutput</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</li><li class="src short"><a href="#v:utxoFromTx">utxoFromTx</a> :: ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</li></ul></details></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a id="v:network" class="def">network</a> :: Network <a href="#v:network" class="selflink">#</a></p></div><a href="#g:1" id="g:1"><h1>Post Hydra Head transactions</h1></a><div class="top"><p class="src"><span class="keyword">data</span> <a id="t:OnChainHeadState" class="def">OnChainHeadState</a> <a href="#t:OnChainHeadState" class="selflink">#</a></p><div class="doc"><p>Maintains information needed to construct on-chain transactions
depending on the current state of the head.</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a id="v:None" class="def">None</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a id="v:Initial" class="def">Initial</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:threadOutput" class="def">threadOutput</a> :: (TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</dfn><div class="doc"><p>The state machine UTxO produced by the Init transaction
This output should always be present and <code>threaded</code> across all
transactions.
NOTE(SN): The Head's identifier is somewhat encoded in the TxOut's address</p></div></li><li><dfn class="src"><a id="v:initials" class="def">initials</a> :: [(TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)]</dfn><div class="doc empty"> </div></li></ul></div></td></tr><tr><td class="src"><a id="v:OpenOrClosed" class="def">OpenOrClosed</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><ul><li><dfn class="src"><a id="v:threadOutput" class="def">threadOutput</a> :: (TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</dfn><div class="doc"><p>The state machine UTxO produced by the Init transaction
This output should always be present and <code>threaded</code> across all
transactions.
NOTE(SN): The Head's identifier is somewhat encoded in the TxOut's address</p></div></li></ul></div></td></tr><tr><td class="src"><a id="v:Final" class="def">Final</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:OnChainHeadState">Instances</h4><details id="i:OnChainHeadState" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:OnChainHeadState:Eq:1"></span> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Eq" title="Hydra.Prelude">Eq</a> <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a></span> <a href="#t:OnChainHeadState" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:OnChainHeadState:Eq:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Hydra-Chain-Direct-Tx.html">Hydra.Chain.Direct.Tx</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:-61--61-">(==)</a> :: <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Bool" title="Hydra.Prelude">Bool</a> <a href="#v:-61--61-" class="selflink">#</a></p><p class="src"><a href="#v:-47--61-">(/=)</a> :: <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Bool" title="Hydra.Prelude">Bool</a> <a href="#v:-47--61-" class="selflink">#</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:OnChainHeadState:Show:2"></span> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Show" title="Hydra.Prelude">Show</a> <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a></span> <a href="#t:OnChainHeadState" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:OnChainHeadState:Show:2"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Hydra-Chain-Direct-Tx.html">Hydra.Chain.Direct.Tx</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:showsPrec">showsPrec</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Int" title="Hydra.Prelude">Int</a> -> <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> ShowS</p><p class="src"><a href="#v:show">show</a> :: <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:String" title="Hydra.Prelude">String</a></p><p class="src"><a href="#v:showList">showList</a> :: [<a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>] -> ShowS</p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:OnChainHeadState:Generic:3"></span> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Generic" title="Hydra.Prelude">Generic</a> <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a></span> <a href="#t:OnChainHeadState" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:OnChainHeadState:Generic:3"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Hydra-Chain-Direct-Tx.html">Hydra.Chain.Direct.Tx</a></p> <div class="subs associated-types"><p class="caption">Associated Types</p><p class="src"><span class="keyword">type</span> Rep <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Type" title="Hydra.Prelude">Type</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Type" title="Hydra.Prelude">Type</a></p></div> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:from">from</a> :: <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> Rep <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> x</p><p class="src"><a href="#v:to">to</a> :: Rep <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> x -> <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a></p></div></details></td></tr><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:id:OnChainHeadState:Rep:4"></span> <span class="keyword">type</span> Rep <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a></span> <a href="#t:OnChainHeadState" class="selflink">#</a></td><td class="doc empty"> </td></tr><tr><td colspan="2"><details id="i:id:OnChainHeadState:Rep:4"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="Hydra-Chain-Direct-Tx.html">Hydra.Chain.Direct.Tx</a></p> <div class="src"><span class="keyword">type</span> Rep <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> = D1 ('MetaData "OnChainHeadState" "Hydra.Chain.Direct.Tx" "hydra-node-0.1.0-inplace" '<a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#v:False" title="Hydra.Prelude">False</a>) ((C1 ('MetaCons "None" 'PrefixI '<a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#v:False" title="Hydra.Prelude">False</a>) (U1 :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Type" title="Hydra.Prelude">Type</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Type" title="Hydra.Prelude">Type</a>) :+: C1 ('MetaCons "Initial" 'PrefixI '<a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#v:True" title="Hydra.Prelude">True</a>) (S1 ('MetaSel ('<a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#v:Just" title="Hydra.Prelude">Just</a> "threadOutput") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)) :*: S1 ('MetaSel ('<a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#v:Just" title="Hydra.Prelude">Just</a> "initials") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)]))) :+: (C1 ('MetaCons "OpenOrClosed" 'PrefixI '<a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#v:True" title="Hydra.Prelude">True</a>) (S1 ('MetaSel ('<a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#v:Just" title="Hydra.Prelude">Just</a> "threadOutput") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>))) :+: C1 ('MetaCons "Final" 'PrefixI '<a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#v:False" title="Hydra.Prelude">False</a>) (U1 :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Type" title="Hydra.Prelude">Type</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Type" title="Hydra.Prelude">Type</a>)))</div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:threadToken" class="def">threadToken</a> :: AssetClass <a href="#v:threadToken" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:policyId" class="def">policyId</a> :: MintingPolicyHash <a href="#v:policyId" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:initTx" class="def">initTx</a> <a href="#v:initTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: [<a href="Hydra-Chain-Direct-Util.html#t:VerificationKey" title="Hydra.Chain.Direct.Util">VerificationKey</a>]</td><td class="doc"><p>Participant's cardano public keys.</p></td></tr><tr><td class="src">-> <a href="Hydra-Chain.html#t:HeadParameters" title="Hydra.Chain">HeadParameters</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> TxIn StandardCrypto</td><td class="doc empty"> </td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Create the init transaction from some <code><a href="Hydra-Chain.html#t:HeadParameters" title="Hydra.Chain">HeadParameters</a></code> and a single TxIn
which will be used as unique parameter for minting NFTs.</p></div></div><div class="top"><p class="src"><a id="v:commitTx" class="def">commitTx</a> <a href="#v:commitTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Hydra-Party.html#t:Party" title="Hydra.Party">Party</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Ledger-Cardano.html#t:TxIn" title="Hydra.Ledger.Cardano">TxIn</a>, <a href="Hydra-Ledger-Cardano.html#t:TxOut" title="Hydra.Ledger.Cardano">TxOut</a> <a href="Hydra-Ledger-Cardano.html#t:CtxUTxO" title="Hydra.Ledger.Cardano">CtxUTxO</a> <a href="Hydra-Ledger-Cardano.html#t:Era" title="Hydra.Ledger.Cardano">Era</a>)</td><td class="doc"><p>A single UTxO to commit to the Head
We currently limit committing one UTxO to the head because of size limitations.</p></td></tr><tr><td class="src">-> (TxIn StandardCrypto, PubKeyHash)</td><td class="doc"><p>The inital output (sent to each party) which should contain the PT and is
locked by initial script</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Craft a commit transaction which includes the "committed" utxo as a datum.
TODO(SN): Eventually, this might not be necessary as the 'Utxo tx' would need
to be inputs of this transaction.</p></div></div><div class="top"><p class="src"><a id="v:collectComTx" class="def">collectComTx</a> <a href="#v:collectComTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Hydra-Ledger-Cardano.html#t:Utxo" title="Hydra.Ledger.Cardano">Utxo</a></td><td class="doc"><p>Total UTXO to be made available in the Head.</p></td></tr><tr><td class="src">-> (TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</td><td class="doc"><p>Everything needed to spend the Head state-machine output.
FIXME(SN): should also contain some Head identifier/address and stored Value (maybe the TxOut + Data?)</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Create a transaction collecting all "committed" utxo and opening a Head,
i.e. driving the Head script state.
FIXME(SN): Right now, this is ignoring the actually committed utxo and not
collecting anything.</p></div></div><div class="top"><p class="src"><a id="v:closeTx" class="def">closeTx</a> <a href="#v:closeTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Hydra-Snapshot.html#t:SnapshotNumber" title="Hydra.Snapshot">SnapshotNumber</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="Hydra-Ledger-Cardano.html#t:Utxo" title="Hydra.Ledger.Cardano">Utxo</a></td><td class="doc"><p>Snapshotted Utxo to close the Head with.</p></td></tr><tr><td class="src">-> (TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</td><td class="doc"><p>Everything needed to spend the Head state-machine output.
FIXME(SN): should also contain some Head identifier/address and stored Value (maybe the TxOut + Data?)</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Create a transaction closing a head with given snapshot number and utxo.</p></div></div><div class="top"><p class="src"><a id="v:fanoutTx" class="def">fanoutTx</a> <a href="#v:fanoutTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Hydra-Ledger-Cardano.html#t:Utxo" title="Hydra.Ledger.Cardano">Utxo</a></td><td class="doc"><p>Snapshotted Utxo to fanout on layer 1</p></td></tr><tr><td class="src">-> (TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</td><td class="doc"><p>Everything needed to spend the Head state-machine output.
FIXME(SN): should also contain some Head identifier/address and stored Value (maybe the TxOut + Data?)</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><a id="v:abortTx" class="def">abortTx</a> <a href="#v:abortTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</td><td class="doc"><p>Everything needed to spend the Head state-machine output.</p></td></tr><tr><td class="src">-> [(TxIn StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)]</td><td class="doc"><p>Data needed to spend the inital output sent to each party to the Head
which should contain the PT and is locked by initial script.</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Create transaction which aborts by spending one input. This is currently
only possible if this is governed by the initial script and only for a single
input. Of course, the Head protocol specifies we need to spend ALL the Utxo
containing PTs.</p></div></div><a href="#g:2" id="g:2"><h1>Observe Hydra Head transactions</h1></a><div class="top"><p class="src"><a id="v:observeInitTx" class="def">observeInitTx</a> :: <a href="Hydra-Party.html#t:Party" title="Hydra.Party">Party</a> -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>) <a href="#v:observeInitTx" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:convertParty" class="def">convertParty</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-plutus-0.1.0/doc/html/hydra-plutus/Hydra-Data-Party.html#t:Party" title="Hydra.Data.Party">Party</a> -> <a href="Hydra-Party.html#t:Party" title="Hydra.Party">Party</a> <a href="#v:convertParty" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:observeCommitTx" class="def">observeCommitTx</a> :: ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>) <a href="#v:observeCommitTx" class="selflink">#</a></p><div class="doc"><p>Identify a commit tx by looking for an output which pays to v_commit.</p></div></div><div class="top"><p class="src"><a id="v:observeCollectComTx" class="def">observeCollectComTx</a> <a href="#v:observeCollectComTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</td><td class="doc"><p>A Utxo set to lookup tx inputs</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Identify a collectCom tx by lookup up the input spending the Head output
and decoding its redeemer.</p></div></div><div class="top"><p class="src"><a id="v:observeCloseTx" class="def">observeCloseTx</a> <a href="#v:observeCloseTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</td><td class="doc"><p>A Utxo set to lookup tx inputs</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Identify a close tx by lookup up the input spending the Head output and
decoding its redeemer.</p></div></div><div class="top"><p class="src"><a id="v:observeFanoutTx" class="def">observeFanoutTx</a> <a href="#v:observeFanoutTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</td><td class="doc"><p>A Utxo set to lookup tx inputs</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Identify a fanout tx by lookup up the input spending the Head output and
decoding its redeemer.</p><p>TODO: Ideally, the fanout does not produce any state-machine output. That
means, to observe it, we need to look for a transaction with an input spent
from a known script (the head state machine script) with a "fanout" redeemer.</p></div></div><div class="top"><p class="src"><a id="v:observeAbortTx" class="def">observeAbortTx</a> <a href="#v:observeAbortTx" class="selflink">#</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)</td><td class="doc"><p>A Utxo set to lookup tx inputs</p></td></tr><tr><td class="src">-> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a></td><td class="doc empty"> </td></tr><tr><td class="src">-> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (<a href="Hydra-Chain.html#t:OnChainTx" title="Hydra.Chain">OnChainTx</a> <a href="Hydra-Ledger-Cardano.html#t:CardanoTx" title="Hydra.Ledger.Cardano">CardanoTx</a>, <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a>)</td><td class="doc empty"> </td></tr></table></div><div class="doc"><p>Identify an abort tx by looking up the input spending the Head output and
decoding its redeemer.</p></div></div><a href="#g:3" id="g:3"><h1>Functions related to OnChainHeadState</h1></a><div class="top"><p class="src"><a id="v:knownUtxo" class="def">knownUtxo</a> :: <a href="Hydra-Chain-Direct-Tx.html#t:OnChainHeadState" title="Hydra.Chain.Direct.Tx">OnChainHeadState</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) <a href="#v:knownUtxo" class="selflink">#</a></p><div class="doc"><p>Provide a UTXO map for given OnChainHeadState. Used by the TinyWallet and
the direct chain component to lookup inputs for balancing / constructing txs.
XXX(SN): This is a hint that we might want to track the Utxo directly?</p></div></div><div class="top"><p class="src"><a id="v:ownInitial" class="def">ownInitial</a> :: <a href="Hydra-Chain-Direct-Util.html#t:VerificationKey" title="Hydra.Chain.Direct.Util">VerificationKey</a> -> [(TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>)] -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (TxIn StandardCrypto, PubKeyHash) <a href="#v:ownInitial" class="selflink">#</a></p><div class="doc"><p>Look for the "initial" which corresponds to given cardano verification key.</p></div></div><a href="#g:4" id="g:4"><h1>Helpers</h1></a><div class="top"><p class="src"><a id="v:mkUnsignedTx" class="def">mkUnsignedTx</a> :: TxBody <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> TxDats <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> Redeemers <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (ScriptHash StandardCrypto) (Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> <a href="#v:mkUnsignedTx" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:scriptAddr" class="def">scriptAddr</a> :: Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> Addr StandardCrypto <a href="#v:scriptAddr" class="selflink">#</a></p><div class="doc"><p>Get the ledger address for a given plutus script.</p></div></div><div class="top"><p class="src"><a id="v:plutusScript" class="def">plutusScript</a> :: Script -> Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> <a href="#v:plutusScript" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:withDataHash" class="def">withDataHash</a> :: Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> (DataHash StandardCrypto, Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) <a href="#v:withDataHash" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:withScriptHash" class="def">withScriptHash</a> :: Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> (ScriptHash StandardCrypto, Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) <a href="#v:withScriptHash" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:datumsFromList" class="def">datumsFromList</a> :: [Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>] -> TxDats <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> <a href="#v:datumsFromList" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:redeemersFromList" class="def">redeemersFromList</a> :: [(StrictMaybe RdmrPtr, (Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>, ExUnits))] -> Redeemers <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> <a href="#v:redeemersFromList" class="selflink">#</a></p><div class="doc"><p>Slightly unsafe, as it drops <code>SNothing</code> values from the list silently.</p></div></div><div class="top"><p class="src"><a id="v:lookupDatum" class="def">lookupDatum</a> :: TxWitness <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (Data <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) <a href="#v:lookupDatum" class="selflink">#</a></p><div class="doc"><p>Lookup included datum of given <code>TxOut</code>.</p></div></div><div class="top"><p class="src"><a id="v:getRedeemerSpending" class="def">getRedeemerSpending</a> :: FromData a => ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> TxIn StandardCrypto -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> a <a href="#v:getRedeemerSpending" class="selflink">#</a></p><div class="doc"><p>Lookup and decode redeemer which is spending a given <code>TxIn</code>.</p></div></div><div class="top"><p class="src"><a id="v:findScriptOutput" class="def">findScriptOutput</a> :: <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) -> Script <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Maybe" title="Hydra.Prelude">Maybe</a> (TxIn StandardCrypto, TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) <a href="#v:findScriptOutput" class="selflink">#</a></p></div><div class="top"><p class="src"><a id="v:utxoFromTx" class="def">utxoFromTx</a> :: ValidatedTx <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a> -> <a href="file:///home/runner/work/hydra-poc/hydra-poc/dist-newstyle/build/x86_64-linux/ghc-8.10.7/hydra-prelude-0.1.0/doc/html/hydra-prelude/Hydra-Prelude.html#t:Map" title="Hydra.Prelude">Map</a> (TxIn StandardCrypto) (TxOut <a href="Hydra-Chain-Direct-Util.html#t:Era" title="Hydra.Chain.Direct.Util">Era</a>) <a href="#v:utxoFromTx" class="selflink">#</a></p><div class="doc"><p>Get the Utxo set created by given transaction.
TODO(SN): DRY with Hydra.Ledger.Cardano.utxoFromTx</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.24.2</p></div></body></html>