Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
Synopsis
- type DatumType = State
- type RedeemerType = Input
- headValidator :: State -> Input -> ScriptContext -> Bool
- checkAbort :: ScriptContext -> CurrencySymbol -> [Party] -> Bool
- checkCollectCom :: ScriptContext -> (ContestationPeriod, [Party], CurrencySymbol) -> Bool
- commitDatum :: TxOut -> [Commit]
- checkIncrement :: ScriptContext -> OpenDatum -> IncrementRedeemer -> Bool
- checkDecrement :: ScriptContext -> OpenDatum -> DecrementRedeemer -> Bool
- checkClose :: ScriptContext -> OpenDatum -> CloseRedeemer -> Bool
- checkContest :: ScriptContext -> ClosedDatum -> ContestRedeemer -> Bool
- checkFanout :: ScriptContext -> ClosedDatum -> Integer -> Integer -> Bool
- makeContestationDeadline :: ContestationPeriod -> ScriptContext -> POSIXTime
- getHeadInput :: ScriptContext -> TxInInfo
- getHeadAddress :: ScriptContext -> Address
- mustNotChangeParameters :: ([Party], [Party]) -> (ContestationPeriod, ContestationPeriod) -> (CurrencySymbol, CurrencySymbol) -> Bool
- mustBeSignedByParticipant :: ScriptContext -> CurrencySymbol -> Bool
- findParticipationTokens :: CurrencySymbol -> Value -> [TokenName]
- headOutputDatum :: ScriptContext -> Datum
- getTxOutDatum :: TxOut -> Datum
- hashPreSerializedCommits :: [Commit] -> BuiltinByteString
- hashTxOuts :: [TxOut] -> BuiltinByteString
- hasPT :: CurrencySymbol -> TxOut -> Bool
- verifySnapshotSignature :: [Party] -> (CurrencySymbol, SnapshotVersion, SnapshotNumber, Hash, Hash, Hash) -> [Signature] -> Bool
- verifyPartySignature :: (CurrencySymbol, SnapshotVersion, SnapshotNumber, Hash, Hash, Hash) -> Party -> Signature -> Bool
- compareRef :: TxOutRef -> TxOutRef -> Ordering
- compiledValidator :: CompiledCode ValidatorType
- validatorScript :: SerialisedScript
- validatorHash :: ScriptHash
- decodeHeadOutputClosedDatum :: ScriptContext -> ClosedDatum
- decodeHeadOutputOpenDatum :: ScriptContext -> OpenDatum
- emptyHash :: Hash
Documentation
type RedeemerType = Input Source #
checkAbort :: ScriptContext -> CurrencySymbol -> [Party] -> Bool Source #
On-Chain verification for Abort
transition. It verifies that:
- All PTs have been burnt: The right number of Head tokens with the correct head id are burnt, one PT for each party and a state token ST.
- All committed funds have been redistributed. This is done via v_commit and it only needs to ensure that we have spent all comitted outputs, which follows from burning all the PTs.
:: ScriptContext | Script execution context |
-> (ContestationPeriod, [Party], CurrencySymbol) | |
-> Bool |
On-Chain verification for CollectCom
transition. It verifies that:
- All participants have committed (even empty commits)
- All commits are properly collected and locked into η as a hash of serialized tx outputs in the same sequence as commit inputs!
- The transaction is performed (i.e. signed) by one of the head participants
- State token (ST) is present in the output
commitDatum :: TxOut -> [Commit] Source #
Try to find the commit datum in the input and if it is there return the committed utxo
:: ScriptContext | |
-> OpenDatum | Open state before the decrement |
-> IncrementRedeemer | |
-> Bool |
Verify a increment transaction.
:: ScriptContext | |
-> OpenDatum | Open state before the decrement |
-> DecrementRedeemer | |
-> Bool |
Verify a decrement transaction.
:: ScriptContext | |
-> OpenDatum | Open state before the close |
-> CloseRedeemer | Type of close transition. |
-> Bool |
Verify a close transaction.
:: ScriptContext | |
-> ClosedDatum | Closed state before the close |
-> ContestRedeemer | Type of contest transition. |
-> Bool |
Verify a contest transaction.
:: ScriptContext | |
-> ClosedDatum | Closed state before the fanout |
-> Integer | Number of normal outputs to fanout |
-> Integer | Number of delta outputs to fanout |
-> Bool |
Verify a fanout transaction.
makeContestationDeadline :: ContestationPeriod -> ScriptContext -> POSIXTime Source #
getHeadInput :: ScriptContext -> TxInInfo Source #
getHeadAddress :: ScriptContext -> Address Source #
mustNotChangeParameters :: ([Party], [Party]) -> (ContestationPeriod, ContestationPeriod) -> (CurrencySymbol, CurrencySymbol) -> Bool Source #
mustBeSignedByParticipant :: ScriptContext -> CurrencySymbol -> Bool Source #
findParticipationTokens :: CurrencySymbol -> Value -> [TokenName] Source #
headOutputDatum :: ScriptContext -> Datum Source #
getTxOutDatum :: TxOut -> Datum Source #
hashPreSerializedCommits :: [Commit] -> BuiltinByteString Source #
Hash a potentially unordered list of commits by sorting them, concatenating
their preSerializedOutput
bytes and creating a SHA2_256 digest over that.
NOTE: See note from hashTxOuts
.
hashTxOuts :: [TxOut] -> BuiltinByteString Source #
Hash a pre-ordered list of transaction outputs by serializing each
individual TxOut
, concatenating all bytes together and creating a SHA2_256
digest over that.
NOTE: In general, from asserting that `hash(x || y) = hash (x' || y')` it is
not safe to conclude that `(x,y) = (x', y')` as the same hash could be
obtained by moving one or more bytes from the end of x
to the beginning of
y
, but in the context of Hydra validators it seems impossible to exploit
this property without breaking other logic or verification (eg. producing a
valid and meaningful TxOut
).
verifySnapshotSignature :: [Party] -> (CurrencySymbol, SnapshotVersion, SnapshotNumber, Hash, Hash, Hash) -> [Signature] -> Bool Source #
Verify the multi-signature of a snapshot using given constituents State
,
ClosedDatum
, number
, ClosedDatum
and utxoToDecommitHash
. See
'SignableRepresentation Snapshot' for more details.
verifyPartySignature :: (CurrencySymbol, SnapshotVersion, SnapshotNumber, Hash, Hash, Hash) -> Party -> Signature -> Bool Source #
Verify individual party signature of a snapshot. See 'SignableRepresentation Snapshot' for more details.
compareRef :: TxOutRef -> TxOutRef -> Ordering Source #
compiledValidator :: CompiledCode ValidatorType Source #
validatorScript :: SerialisedScript Source #
validatorHash :: ScriptHash Source #
decodeHeadOutputClosedDatum :: ScriptContext -> ClosedDatum Source #
decodeHeadOutputOpenDatum :: ScriptContext -> OpenDatum Source #