| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Plutus.ChainIndex
Synopsis
- runChainIndexEffects :: RunRequirements -> Eff '[ChainIndexQueryEffect, ChainIndexControlEffect, BeamEffect Sqlite] a -> IO (Either ChainIndexError a)
- handleChainIndexEffects :: (LastMember IO effs, Member (LogMsg ChainIndexLog) effs) => RunRequirements -> Eff (ChainIndexQueryEffect ': (ChainIndexControlEffect ': (BeamEffect Sqlite ': effs))) a -> Eff effs (Either ChainIndexError a)
- data RunRequirements = RunRequirements {
- trace :: Trace IO (PrettyObject ChainIndexLog)
- stateTVar :: TVar ChainIndexState
- pool :: Pool Connection
- securityParam :: Int
- newtype Value = Value {}
- pageOf :: Eq a => PageQuery a -> Set a -> Page a
- data PageQuery a = PageQuery {}
- newtype PageSize = PageSize {}
- data Page a = Page {
- currentPageQuery :: PageQuery a
- nextPageQuery :: Maybe (PageQuery a)
- pageItems :: [a]
- newtype BlockId = BlockId {}
- data Address = Address {}
- data OutputDatum
- data ChainIndexTxOutputs
- data ChainIndexTxOut = ChainIndexTxOut {}
- data ReferenceScript
- fromReferenceScript :: ReferenceScript -> Maybe (Versioned Script)
- data ChainIndexTx = ChainIndexTx {}
- _InvalidTx :: Prism' ChainIndexTxOutputs (Maybe ChainIndexTxOut)
- _ValidTx :: Prism' ChainIndexTxOutputs [ChainIndexTxOut]
- data Tip
- = TipAtGenesis
- | Tip { }
- newtype BlockNumber = BlockNumber {}
- citxCardanoTx :: Lens' ChainIndexTx (Maybe SomeCardanoApiTx)
- citxData :: Lens' ChainIndexTx (Map DatumHash Datum)
- citxInputs :: Lens' ChainIndexTx [TxIn]
- citxOutputs :: Lens' ChainIndexTx ChainIndexTxOutputs
- citxRedeemers :: Lens' ChainIndexTx Redeemers
- citxScripts :: Lens' ChainIndexTx (Map ScriptHash (Versioned Script))
- citxTxId :: Lens' ChainIndexTx TxId
- citxValidRange :: Lens' ChainIndexTx SlotRange
- blockId :: Block -> BlockId
- data Point
- = PointAtGenesis
- | Point {
- pointSlot :: Slot
- pointBlockId :: BlockId
- data TxOutBalance = TxOutBalance {}
- data TxConfirmedState = TxConfirmedState {}
- data TxIdState = TxIdState {
- txnsConfirmed :: Map TxId TxConfirmedState
- txnsDeleted :: Map TxId (Sum Int)
- data TxStatusFailure
- data Diagnostics = Diagnostics {}
- data TxOutState
- type TxOutStatus = RollbackState TxOutState
- data RollbackState a
- type TxStatus = RollbackState ()
- newtype Depth = Depth {}
- data TxValidity
- _PointAtGenesis :: Prism' Point ()
- _Point :: Prism' Point (Slot, BlockId)
- tipAsPoint :: Tip -> Point
- pointsToTip :: Point -> Tip -> Bool
- txOutStatusTxOutState :: TxOutStatus -> Maybe TxOutState
- liftTxOutStatus :: TxOutStatus -> TxStatus
- data TxUtxoBalance = TxUtxoBalance {}
- tobSpentOutputs :: Lens' TxOutBalance (Map TxOutRef TxId)
- tobUnspentOutputs :: Lens' TxOutBalance (Set TxOutRef)
- data ChainSyncBlock = Block {
- blockTip :: Tip
- blockTxs :: [(ChainIndexTx, TxProcessOption)]
- newtype TxProcessOption = TxProcessOption {
- tpoStoreTx :: Bool
- tubUnmatchedSpentInputs :: Lens' TxUtxoBalance (Set TxOutRef)
- tubUnspentOutputs :: Lens' TxUtxoBalance (Set TxOutRef)
- data RollbackFailed
- = RollbackNoTip
- | TipMismatch {
- foundTip :: Tip
- targetPoint :: Point
- | OldPointNotFound Point
- data InsertUtxoFailed
- data ChainIndexError
- txOuts :: ChainIndexTx -> [ChainIndexTxOut]
- txOutRefs :: ChainIndexTx -> [TxOutRef]
- txOutsWithRef :: ChainIndexTx -> [(ChainIndexTxOut, TxOutRef)]
- txOutRefMap :: ChainIndexTx -> Map TxOutRef (ChainIndexTxOut, ChainIndexTx)
- txOutRefMapForAddr :: CardanoAddress -> ChainIndexTx -> Map TxOutRef (ChainIndexTxOut, ChainIndexTx)
- validityFromChainIndex :: ChainIndexTx -> TxValidity
- fromOnChainTx :: OnChainTx -> ChainIndexTx
- txRedeemersWithHash :: ChainIndexTx -> Map RedeemerHash Redeemer
- data ChainIndexQueryEffect r where
- DatumFromHash :: DatumHash -> ChainIndexQueryEffect (Maybe Datum)
- ValidatorFromHash :: ValidatorHash -> ChainIndexQueryEffect (Maybe (Versioned Validator))
- MintingPolicyFromHash :: MintingPolicyHash -> ChainIndexQueryEffect (Maybe (Versioned MintingPolicy))
- RedeemerFromHash :: RedeemerHash -> ChainIndexQueryEffect (Maybe Redeemer)
- StakeValidatorFromHash :: StakeValidatorHash -> ChainIndexQueryEffect (Maybe (Versioned StakeValidator))
- UnspentTxOutFromRef :: TxOutRef -> ChainIndexQueryEffect (Maybe DecoratedTxOut)
- TxOutFromRef :: TxOutRef -> ChainIndexQueryEffect (Maybe DecoratedTxOut)
- TxFromTxId :: TxId -> ChainIndexQueryEffect (Maybe ChainIndexTx)
- UtxoSetMembership :: TxOutRef -> ChainIndexQueryEffect IsUtxoResponse
- UtxoSetAtAddress :: PageQuery TxOutRef -> Credential -> ChainIndexQueryEffect UtxosResponse
- UnspentTxOutSetAtAddress :: PageQuery TxOutRef -> Credential -> ChainIndexQueryEffect (QueryResponse [(TxOutRef, DecoratedTxOut)])
- DatumsAtAddress :: PageQuery TxOutRef -> Credential -> ChainIndexQueryEffect (QueryResponse [Datum])
- UtxoSetWithCurrency :: PageQuery TxOutRef -> AssetClass -> ChainIndexQueryEffect UtxosResponse
- TxsFromTxIds :: [TxId] -> ChainIndexQueryEffect [ChainIndexTx]
- TxoSetAtAddress :: PageQuery TxOutRef -> Credential -> ChainIndexQueryEffect TxosResponse
- GetTip :: ChainIndexQueryEffect Tip
- data ChainIndexControlEffect r where
- datumFromHash :: forall effs. Member ChainIndexQueryEffect effs => DatumHash -> Eff effs (Maybe Datum)
- validatorFromHash :: forall effs. Member ChainIndexQueryEffect effs => ValidatorHash -> Eff effs (Maybe (Versioned Validator))
- mintingPolicyFromHash :: forall effs. Member ChainIndexQueryEffect effs => MintingPolicyHash -> Eff effs (Maybe (Versioned MintingPolicy))
- redeemerFromHash :: forall effs. Member ChainIndexQueryEffect effs => RedeemerHash -> Eff effs (Maybe Redeemer)
- stakeValidatorFromHash :: forall effs. Member ChainIndexQueryEffect effs => StakeValidatorHash -> Eff effs (Maybe (Versioned StakeValidator))
- unspentTxOutFromRef :: forall effs. Member ChainIndexQueryEffect effs => TxOutRef -> Eff effs (Maybe DecoratedTxOut)
- txOutFromRef :: forall effs. Member ChainIndexQueryEffect effs => TxOutRef -> Eff effs (Maybe DecoratedTxOut)
- txFromTxId :: forall effs. Member ChainIndexQueryEffect effs => TxId -> Eff effs (Maybe ChainIndexTx)
- utxoSetMembership :: forall effs. Member ChainIndexQueryEffect effs => TxOutRef -> Eff effs IsUtxoResponse
- utxoSetAtAddress :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> Credential -> Eff effs UtxosResponse
- unspentTxOutSetAtAddress :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> Credential -> Eff effs (QueryResponse [(TxOutRef, DecoratedTxOut)])
- datumsAtAddress :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> Credential -> Eff effs (QueryResponse [Datum])
- utxoSetWithCurrency :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> AssetClass -> Eff effs UtxosResponse
- txsFromTxIds :: forall effs. Member ChainIndexQueryEffect effs => [TxId] -> Eff effs [ChainIndexTx]
- txoSetAtAddress :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> Credential -> Eff effs TxosResponse
- getTip :: forall effs. Member ChainIndexQueryEffect effs => Eff effs Tip
- appendBlocks :: forall effs. Member ChainIndexControlEffect effs => [ChainSyncBlock] -> Eff effs ()
- rollback :: forall effs. Member ChainIndexControlEffect effs => Point -> Eff effs ()
- resumeSync :: forall effs. Member ChainIndexControlEffect effs => Point -> Eff effs ()
- collectGarbage :: forall effs. Member ChainIndexControlEffect effs => Eff effs ()
- getDiagnostics :: forall effs. Member ChainIndexControlEffect effs => Eff effs Diagnostics
- data InsertUtxoPosition
- data ChainIndexLog
- data UtxoState a = UtxoState {
- _usTxUtxoData :: a
- _usTip :: Tip
- data ReduceBlockCountResult a
- data RollbackResult a = RollbackResult {
- newTip :: Tip
- rolledBackIndex :: UtxoIndex a
- data InsertUtxoSuccess a = InsertUtxoSuccess {}
- type UtxoIndex a = FingerTree (BlockCount, UtxoState a) (UtxoState a)
- newtype BlockCount = BlockCount {
- getBlockCount :: Int
- usTip :: forall a. Lens' (UtxoState a) Tip
- usTxUtxoData :: forall a a. Lens (UtxoState a) (UtxoState a) a a
- utxoState :: Monoid a => UtxoIndex a -> UtxoState a
- utxoBlockCount :: Monoid a => UtxoIndex a -> Int
- tip :: UtxoState a -> Tip
- viewTip :: Monoid a => UtxoIndex a -> Tip
- insert :: (Monoid a, Eq a) => UtxoState a -> UtxoIndex a -> Either InsertUtxoFailed (InsertUtxoSuccess a)
- rollbackWith :: Monoid a => (UtxoIndex a -> UtxoIndex a -> UtxoIndex a) -> Point -> UtxoIndex a -> Either RollbackFailed (RollbackResult a)
- reduceBlockCount :: Monoid a => Depth -> UtxoIndex a -> ReduceBlockCountResult a
- pointLessThanTip :: Point -> Tip -> Bool
- initialStatus :: OnChainTx -> TxStatus
- increaseDepth :: TxStatus -> TxStatus
- chainConstant :: Depth
- dropOlder :: Monoid a => BlockNumber -> UtxoIndex a -> UtxoIndex a
- transactionStatus :: BlockNumber -> TxIdState -> TxId -> Either TxStatusFailure TxStatus
- transactionOutputStatus :: BlockNumber -> TxIdState -> TxOutBalance -> TxOutRef -> Either TxStatusFailure TxOutStatus
- transactionOutputState :: TxOutBalance -> TxOutRef -> Maybe TxOutState
- unspentOutputs :: UtxoState TxOutBalance -> Set TxOutRef
- spentOutputs :: UtxoState TxOutBalance -> Set TxOutRef
- type ChainIndexState = UtxoIndex TxUtxoBalance
- getResumePoints :: Member (BeamEffect Sqlite) effs => Eff effs [ChainPoint]
- handleQuery :: (Member (State ChainIndexState) effs, Member (BeamEffect Sqlite) effs, Member (Error ChainIndexError) effs, Member (LogMsg ChainIndexLog) effs) => ChainIndexQueryEffect ~> Eff effs
- handleControl :: forall effs. (Member (State ChainIndexState) effs, Member (Reader Depth) effs, Member (BeamEffect Sqlite) effs, Member (Error ChainIndexError) effs, Member (LogMsg ChainIndexLog) effs) => ChainIndexControlEffect ~> Eff effs
- restoreStateFromDb :: Member (BeamEffect Sqlite) effs => Eff effs ChainIndexState
Documentation
runChainIndexEffects :: RunRequirements -> Eff '[ChainIndexQueryEffect, ChainIndexControlEffect, BeamEffect Sqlite] a -> IO (Either ChainIndexError a) Source #
Run the chain index effects.
handleChainIndexEffects :: (LastMember IO effs, Member (LogMsg ChainIndexLog) effs) => RunRequirements -> Eff (ChainIndexQueryEffect ': (ChainIndexControlEffect ': (BeamEffect Sqlite ': effs))) a -> Eff effs (Either ChainIndexError a) Source #
Handle the chain index effects from the set of all effects.
data RunRequirements Source #
The required arguments to run the chain index effects.
Constructors
| RunRequirements | |
Fields
| |
A cryptocurrency value. This is a map from CurrencySymbols to a
quantity of that currency.
Operations on currencies are usually implemented pointwise. That is,
we apply the operation to the quantities for each currency in turn. So
when we add two Values the resulting Value has, for each currency,
the sum of the quantities of that particular currency in the argument
Value. The effect of this is that the currencies in the Value are "independent",
and are operated on separately.
Whenever we need to get the quantity of a currency in a Value where there
is no explicit quantity of that currency in the Value, then the quantity is
taken to be zero.
See note [Currencies] for more details.
Instances
Query parameters for pagination.
Constructors
| PageQuery | |
Fields
| |
Instances
Constructors
| PageSize | |
Fields | |
Instances
| Eq PageSize | |
| Num PageSize | |
Defined in Control.Monad.Freer.Extras.Pagination Methods (+) :: PageSize -> PageSize -> PageSize Source # (-) :: PageSize -> PageSize -> PageSize Source # (*) :: PageSize -> PageSize -> PageSize Source # negate :: PageSize -> PageSize Source # abs :: PageSize -> PageSize Source # signum :: PageSize -> PageSize Source # fromInteger :: Integer -> PageSize Source # | |
| Ord PageSize | |
Defined in Control.Monad.Freer.Extras.Pagination | |
| Show PageSize | |
| Generic PageSize | |
| ToJSON PageSize | |
| FromJSON PageSize | |
| Default PageSize | |
Defined in Control.Monad.Freer.Extras.Pagination | |
| ToSchema PageSize | |
Defined in Control.Monad.Freer.Extras.Pagination Methods declareNamedSchema :: Proxy PageSize -> Declare (Definitions Schema) NamedSchema Source # | |
| type Rep PageSize | |
Defined in Control.Monad.Freer.Extras.Pagination | |
Part of a collection.
Constructors
| Page | |
Instances
| Functor Page | |
| Eq a => Eq (Page a) | |
| Ord a => Ord (Page a) | |
Defined in Control.Monad.Freer.Extras.Pagination | |
| Show a => Show (Page a) | |
| Generic (Page a) | |
| ToJSON a => ToJSON (Page a) | |
| FromJSON a => FromJSON (Page a) | |
| ToSchema a => ToSchema (Page a) | |
Defined in Control.Monad.Freer.Extras.Pagination Methods declareNamedSchema :: Proxy (Page a) -> Declare (Definitions Schema) NamedSchema Source # | |
| type Rep (Page a) | |
Defined in Control.Monad.Freer.Extras.Pagination type Rep (Page a) = D1 ('MetaData "Page" "Control.Monad.Freer.Extras.Pagination" "freer-extras-1.1.0.0-EyJCycsLf6M9CsqRdBgpX0" 'False) (C1 ('MetaCons "Page" 'PrefixI 'True) (S1 ('MetaSel ('Just "currentPageQuery") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PageQuery a)) :*: (S1 ('MetaSel ('Just "nextPageQuery") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (PageQuery a))) :*: S1 ('MetaSel ('Just "pageItems") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a])))) | |
Block identifier (usually a hash)
Constructors
| BlockId | |
Fields | |
Instances
| Eq BlockId | |
| Ord BlockId | |
Defined in Ledger.Blockchain | |
| Show BlockId | |
| Generic BlockId | |
| ToJSON BlockId | |
| FromJSON BlockId | |
| ToSchema BlockId | |
Defined in Ledger.Blockchain Methods declareNamedSchema :: Proxy BlockId -> Declare (Definitions Schema) NamedSchema Source # | |
| Pretty BlockId | |
| HasDbType BlockId Source # | |
| type Rep BlockId | |
Defined in Ledger.Blockchain type Rep BlockId = D1 ('MetaData "BlockId" "Ledger.Blockchain" "plutus-ledger-1.1.0.0-JskZbcPMCdRJVHaAZ0to82" 'True) (C1 ('MetaCons "BlockId" 'PrefixI 'True) (S1 ('MetaSel ('Just "getBlockId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))) | |
| type DbType BlockId Source # | |
Defined in Plutus.ChainIndex.DbSchema | |
Address with two kinds of credentials, normal and staking.
Constructors
| Address | |
Instances
data OutputDatum Source #
The datum attached to an output: either nothing; a datum hash; or the datum itself (an "inline datum").
Constructors
| NoOutputDatum | |
| OutputDatumHash DatumHash | |
| OutputDatum Datum |
Instances
data ChainIndexTxOutputs Source #
List of outputs of a transaction. There is only an optional collateral output if the transaction is invalid.
Constructors
| InvalidTx (Maybe ChainIndexTxOut) | The transaction is invalid so there is maybe a collateral output. |
| ValidTx [ChainIndexTxOut] |
Instances
data ChainIndexTxOut Source #
Constructors
| ChainIndexTxOut | |
Fields
| |
Instances
data ReferenceScript Source #
Instances
data ChainIndexTx Source #
Constructors
| ChainIndexTx | |
Fields
| |
Instances
The tip of the chain index.
Constructors
| TipAtGenesis | |
| Tip | |
Fields
| |
Instances
newtype BlockNumber Source #
Constructors
| BlockNumber | |
Fields | |
Instances
citxInputs :: Lens' ChainIndexTx [TxIn] Source #
When performing a rollback the chain sync protocol does not provide a block number where to resume from.
Constructors
| PointAtGenesis | |
| Point | |
Fields
| |
Instances
| Eq Point Source # | |
| Ord Point Source # | |
Defined in Plutus.ChainIndex.Types | |
| Show Point Source # | |
| Generic Point Source # | |
| Semigroup Point Source # | |
| Monoid Point Source # | |
| ToJSON Point Source # | |
| FromJSON Point Source # | |
| Pretty Point Source # | |
| type Rep Point Source # | |
Defined in Plutus.ChainIndex.Types type Rep Point = D1 ('MetaData "Point" "Plutus.ChainIndex.Types" "plutus-chain-index-core-1.1.0.0-K7whjMLv5AnJVt0avXcbFn" 'False) (C1 ('MetaCons "PointAtGenesis" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Point" 'PrefixI 'True) (S1 ('MetaSel ('Just "pointSlot") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Slot) :*: S1 ('MetaSel ('Just "pointBlockId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 BlockId))) | |
data TxOutBalance Source #
The effect of a transaction (or a number of them) on the tx output set.
Constructors
| TxOutBalance | |
Fields
| |
Instances
data TxConfirmedState Source #
Constructors
| TxConfirmedState | |
Fields
| |
Instances
Constructors
| TxIdState | |
Fields
| |
Instances
| Eq TxIdState Source # | |
| Show TxIdState Source # | |
| Generic TxIdState Source # | |
| Semigroup TxIdState Source # | |
| Monoid TxIdState Source # | |
| type Rep TxIdState Source # | |
Defined in Plutus.ChainIndex.Types type Rep TxIdState = D1 ('MetaData "TxIdState" "Plutus.ChainIndex.Types" "plutus-chain-index-core-1.1.0.0-K7whjMLv5AnJVt0avXcbFn" 'False) (C1 ('MetaCons "TxIdState" 'PrefixI 'True) (S1 ('MetaSel ('Just "txnsConfirmed") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Map TxId TxConfirmedState)) :*: S1 ('MetaSel ('Just "txnsDeleted") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Map TxId (Sum Int))))) | |
data TxStatusFailure Source #
Datatype returned when we couldn't get the state of a tx or a tx output.
Constructors
| TxIdStateInvalid BlockNumber TxId TxIdState | We couldn't return the status because the |
| TxOutBalanceStateInvalid BlockNumber TxOutRef TxOutBalance | We couldn't return the status because the |
| InvalidRollbackAttempt BlockNumber TxId TxIdState |
Instances
| Eq TxStatusFailure Source # | |
Defined in Plutus.ChainIndex.Types Methods (==) :: TxStatusFailure -> TxStatusFailure -> Bool Source # (/=) :: TxStatusFailure -> TxStatusFailure -> Bool Source # | |
| Show TxStatusFailure Source # | |
Defined in Plutus.ChainIndex.Types | |
data Diagnostics Source #
Constructors
| Diagnostics | |
Fields
| |
Instances
data TxOutState Source #
Instances
type TxOutStatus = RollbackState TxOutState Source #
data RollbackState a Source #
The rollback state of a Cardano transaction
Constructors
| Unknown | The transaction is not on the chain. That's all we can say. |
| TentativelyConfirmed Depth TxValidity a | The transaction is on the chain, n blocks deep. It can still be rolled back. |
| Committed TxValidity a | The transaction is on the chain. It cannot be rolled back anymore. |
Instances
type TxStatus = RollbackState () Source #
The status of a Cardano transaction
How many blocks deep the tx is on the chain
Instances
| Enum Depth Source # | |
Defined in Plutus.ChainIndex.Types Methods succ :: Depth -> Depth Source # pred :: Depth -> Depth Source # toEnum :: Int -> Depth Source # fromEnum :: Depth -> Int Source # enumFrom :: Depth -> [Depth] Source # enumFromThen :: Depth -> Depth -> [Depth] Source # enumFromTo :: Depth -> Depth -> [Depth] Source # enumFromThenTo :: Depth -> Depth -> Depth -> [Depth] Source # | |
| Eq Depth Source # | |
| Integral Depth Source # | |
Defined in Plutus.ChainIndex.Types | |
| Num Depth Source # | |
| Ord Depth Source # | |
Defined in Plutus.ChainIndex.Types | |
| Real Depth Source # | |
Defined in Plutus.ChainIndex.Types Methods toRational :: Depth -> Rational Source # | |
| Show Depth Source # | |
| Generic Depth Source # | |
| ToJSON Depth Source # | |
| FromJSON Depth Source # | |
| Pretty Depth Source # | |
| MeetSemiLattice Depth Source # | |
| type Rep Depth Source # | |
Defined in Plutus.ChainIndex.Types | |
data TxValidity Source #
Validity of a transaction that has been added to the ledger
Constructors
| TxValid | |
| TxInvalid | |
| UnknownValidity |
Instances
_PointAtGenesis :: Prism' Point () Source #
tipAsPoint :: Tip -> Point Source #
txOutStatusTxOutState :: TxOutStatus -> Maybe TxOutState Source #
Maybe extract the TxOutState (Spent or Unspent) of a TxOutStatus.
liftTxOutStatus :: TxOutStatus -> TxStatus Source #
Converts a TxOutStatus to a TxStatus. Possible since a transaction
output belongs to a transaction.
Note, however, that we can't convert a TxStatus to a TxOutStatus.
data TxUtxoBalance Source #
The effect of a transaction (or a number of them) on the utxo set.
Constructors
| TxUtxoBalance | |
Fields
| |
Instances
data ChainSyncBlock Source #
A block of transactions to be synced.
Constructors
| Block | |
Fields
| |
Instances
| Show ChainSyncBlock Source # | |
Defined in Plutus.ChainIndex.Types | |
newtype TxProcessOption Source #
User-customizable options to process a transaction. See #73 for more motivations.
Constructors
| TxProcessOption | |
Fields
| |
Instances
| Show TxProcessOption Source # | |
Defined in Plutus.ChainIndex.Types | |
| Default TxProcessOption Source # | |
Defined in Plutus.ChainIndex.Types Methods | |
data RollbackFailed Source #
Reason why the rollback operation failed
Constructors
| RollbackNoTip | Rollback failed because the utxo index had no tip (not synchronised) |
| TipMismatch | Unable to roll back to |
Fields
| |
| OldPointNotFound Point | Unable to find the old tip |
Instances
data InsertUtxoFailed Source #
UTXO state could not be inserted into the chain index
Constructors
| DuplicateBlock Tip | Insertion failed as there was already a block with the given number |
| InsertUtxoNoTip | The |
Instances
data ChainIndexError Source #
Constructors
| InsertionFailed InsertUtxoFailed | |
| RollbackFailed RollbackFailed | |
| ResumeNotSupported | |
| QueryFailedNoTip | Query failed because the chain index does not have a tip (not synchronised with node) |
| BeamEffectError BeamError |
Instances
txOuts :: ChainIndexTx -> [ChainIndexTxOut] Source #
Get tx outputs from tx.
txOutRefs :: ChainIndexTx -> [TxOutRef] Source #
Get tx output references from tx.
txOutsWithRef :: ChainIndexTx -> [(ChainIndexTxOut, TxOutRef)] Source #
Get tx output references and tx outputs from tx.
txOutRefMap :: ChainIndexTx -> Map TxOutRef (ChainIndexTxOut, ChainIndexTx) Source #
Get Map of tx outputs references to tx.
txOutRefMapForAddr :: CardanoAddress -> ChainIndexTx -> Map TxOutRef (ChainIndexTxOut, ChainIndexTx) Source #
Get Map of tx outputs from tx for a specific address.
fromOnChainTx :: OnChainTx -> ChainIndexTx Source #
Convert a OnChainTx to a ChainIndexTx. An invalid OnChainTx will not
produce any ChainIndexTx outputs and the collateral inputs of the
OnChainTx will be the inputs of the ChainIndexTx.
data ChainIndexQueryEffect r where Source #
Constructors
| DatumFromHash :: DatumHash -> ChainIndexQueryEffect (Maybe Datum) | Get the datum from a datum hash (if available) |
| ValidatorFromHash :: ValidatorHash -> ChainIndexQueryEffect (Maybe (Versioned Validator)) | Get the validator from a validator hash (if available) |
| MintingPolicyFromHash :: MintingPolicyHash -> ChainIndexQueryEffect (Maybe (Versioned MintingPolicy)) | Get the monetary policy from an MPS hash (if available) |
| RedeemerFromHash :: RedeemerHash -> ChainIndexQueryEffect (Maybe Redeemer) | Get the redeemer from a redeemer hash (if available) |
| StakeValidatorFromHash :: StakeValidatorHash -> ChainIndexQueryEffect (Maybe (Versioned StakeValidator)) | Get the stake validator from a stake validator hash (if available) |
| UnspentTxOutFromRef :: TxOutRef -> ChainIndexQueryEffect (Maybe DecoratedTxOut) | Get the TxOut from a TxOutRef (if available) |
| TxOutFromRef :: TxOutRef -> ChainIndexQueryEffect (Maybe DecoratedTxOut) | Get the TxOut from a TxOutRef (if available) |
| TxFromTxId :: TxId -> ChainIndexQueryEffect (Maybe ChainIndexTx) | Get the transaction for a tx ID |
| UtxoSetMembership :: TxOutRef -> ChainIndexQueryEffect IsUtxoResponse | Whether a tx output is part of the UTXO set |
| UtxoSetAtAddress :: PageQuery TxOutRef -> Credential -> ChainIndexQueryEffect UtxosResponse | Unspent outputs located at addresses with the given credential. |
| UnspentTxOutSetAtAddress :: PageQuery TxOutRef -> Credential -> ChainIndexQueryEffect (QueryResponse [(TxOutRef, DecoratedTxOut)]) | Get the unspent txouts located at an address This is to avoid multiple queries from chain-index when using utxosAt |
| DatumsAtAddress :: PageQuery TxOutRef -> Credential -> ChainIndexQueryEffect (QueryResponse [Datum]) | get the datums located at addresses with the given credential. |
| UtxoSetWithCurrency :: PageQuery TxOutRef -> AssetClass -> ChainIndexQueryEffect UtxosResponse | Unspent outputs containing a specific currency ( Note that requesting unspent outputs containing Ada should not return anything, as this request will always return all unspent outputs. |
| TxsFromTxIds :: [TxId] -> ChainIndexQueryEffect [ChainIndexTx] | Get the transactions for a list of tx IDs. |
| TxoSetAtAddress :: PageQuery TxOutRef -> Credential -> ChainIndexQueryEffect TxosResponse | Outputs located at addresses with the given credential. |
| GetTip :: ChainIndexQueryEffect Tip | Get the tip of the chain index |
data ChainIndexControlEffect r where Source #
Constructors
| AppendBlocks :: [ChainSyncBlock] -> ChainIndexControlEffect () | Add new blocks to the chain index. |
| Rollback :: Point -> ChainIndexControlEffect () | Roll back to a previous state (previous tip) |
| ResumeSync :: Point -> ChainIndexControlEffect () | Resume syncing from a certain point |
| CollectGarbage :: ChainIndexControlEffect () | Delete all data that is not covered by current UTxOs. |
| GetDiagnostics :: ChainIndexControlEffect Diagnostics |
datumFromHash :: forall effs. Member ChainIndexQueryEffect effs => DatumHash -> Eff effs (Maybe Datum) Source #
validatorFromHash :: forall effs. Member ChainIndexQueryEffect effs => ValidatorHash -> Eff effs (Maybe (Versioned Validator)) Source #
mintingPolicyFromHash :: forall effs. Member ChainIndexQueryEffect effs => MintingPolicyHash -> Eff effs (Maybe (Versioned MintingPolicy)) Source #
redeemerFromHash :: forall effs. Member ChainIndexQueryEffect effs => RedeemerHash -> Eff effs (Maybe Redeemer) Source #
stakeValidatorFromHash :: forall effs. Member ChainIndexQueryEffect effs => StakeValidatorHash -> Eff effs (Maybe (Versioned StakeValidator)) Source #
unspentTxOutFromRef :: forall effs. Member ChainIndexQueryEffect effs => TxOutRef -> Eff effs (Maybe DecoratedTxOut) Source #
txOutFromRef :: forall effs. Member ChainIndexQueryEffect effs => TxOutRef -> Eff effs (Maybe DecoratedTxOut) Source #
txFromTxId :: forall effs. Member ChainIndexQueryEffect effs => TxId -> Eff effs (Maybe ChainIndexTx) Source #
utxoSetMembership :: forall effs. Member ChainIndexQueryEffect effs => TxOutRef -> Eff effs IsUtxoResponse Source #
utxoSetAtAddress :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> Credential -> Eff effs UtxosResponse Source #
unspentTxOutSetAtAddress :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> Credential -> Eff effs (QueryResponse [(TxOutRef, DecoratedTxOut)]) Source #
datumsAtAddress :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> Credential -> Eff effs (QueryResponse [Datum]) Source #
utxoSetWithCurrency :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> AssetClass -> Eff effs UtxosResponse Source #
txsFromTxIds :: forall effs. Member ChainIndexQueryEffect effs => [TxId] -> Eff effs [ChainIndexTx] Source #
txoSetAtAddress :: forall effs. Member ChainIndexQueryEffect effs => PageQuery TxOutRef -> Credential -> Eff effs TxosResponse Source #
appendBlocks :: forall effs. Member ChainIndexControlEffect effs => [ChainSyncBlock] -> Eff effs () Source #
resumeSync :: forall effs. Member ChainIndexControlEffect effs => Point -> Eff effs () Source #
collectGarbage :: forall effs. Member ChainIndexControlEffect effs => Eff effs () Source #
getDiagnostics :: forall effs. Member ChainIndexControlEffect effs => Eff effs Diagnostics Source #
data InsertUtxoPosition Source #
Outcome of inserting a UtxoState into the utxo index
Constructors
| InsertAtEnd | The utxo state was added to the end. Returns the new index |
| InsertBeforeEnd | The utxo state was added somewhere before the end. Returns the new index and the tip |
Instances
data ChainIndexLog Source #
Constructors
Instances
UTXO / ledger state, kept in memory. We are only interested in the UTXO set, everything else is stored on disk. This is OK because we don't need to validate transactions when they come in.
Constructors
| UtxoState | |
Fields
| |
Instances
data ReduceBlockCountResult a Source #
Constructors
| BlockCountNotReduced | |
| ReduceBlockCountResult | |
Fields
| |
data RollbackResult a Source #
Constructors
| RollbackResult | |
Fields
| |
data InsertUtxoSuccess a Source #
Constructors
| InsertUtxoSuccess | |
Fields | |
Instances
| Pretty (InsertUtxoSuccess a) Source # | |
Defined in Plutus.ChainIndex.UtxoState Methods pretty :: InsertUtxoSuccess a -> Doc ann Source # prettyList :: [InsertUtxoSuccess a] -> Doc ann Source # | |
type UtxoIndex a = FingerTree (BlockCount, UtxoState a) (UtxoState a) Source #
newtype BlockCount Source #
Constructors
| BlockCount | |
Fields
| |
Instances
| Semigroup BlockCount Source # | |
Defined in Plutus.ChainIndex.UtxoState Methods (<>) :: BlockCount -> BlockCount -> BlockCount Source # sconcat :: NonEmpty BlockCount -> BlockCount Source # stimes :: Integral b => b -> BlockCount -> BlockCount Source # | |
| Monoid BlockCount Source # | |
Defined in Plutus.ChainIndex.UtxoState Methods mempty :: BlockCount Source # mappend :: BlockCount -> BlockCount -> BlockCount Source # mconcat :: [BlockCount] -> BlockCount Source # | |
| Monoid a => Measured (BlockCount, UtxoState a) (UtxoState a) Source # | |
Defined in Plutus.ChainIndex.UtxoState | |
insert :: (Monoid a, Eq a) => UtxoState a -> UtxoIndex a -> Either InsertUtxoFailed (InsertUtxoSuccess a) Source #
Insert a UtxoState into the index
Arguments
| :: Monoid a | |
| => (UtxoIndex a -> UtxoIndex a -> UtxoIndex a) | Calculate the new index given the index before and the index after the rollback point. |
| -> Point | |
| -> UtxoIndex a | |
| -> Either RollbackFailed (RollbackResult a) |
Perform a rollback on the utxo index, with a callback to calculate the new index.
reduceBlockCount :: Monoid a => Depth -> UtxoIndex a -> ReduceBlockCountResult a Source #
pointLessThanTip :: Point -> Tip -> Bool Source #
Is the given point earlier than the provided tip. Yes, if the point is the genersis point, no if the tip is the genesis point, otherwise, just compare the slots.
initialStatus :: OnChainTx -> TxStatus Source #
The TxStatus of a transaction right after it was added to the chain
increaseDepth :: TxStatus -> TxStatus Source #
Increase the depth of a tentatively confirmed transaction
chainConstant :: Depth Source #
The depth (in blocks) after which a transaction cannot be rolled back anymore
dropOlder :: Monoid a => BlockNumber -> UtxoIndex a -> UtxoIndex a Source #
Drop everything older than BlockNumber in the index.
transactionStatus :: BlockNumber -> TxIdState -> TxId -> Either TxStatusFailure TxStatus Source #
Given the current block, compute the status for the given transaction by checking to see if it has been deleted.
transactionOutputStatus Source #
Arguments
| :: BlockNumber | Current block number for inspecting the state of the transaction output |
| -> TxIdState | Information on the state of a transaction. Needed for determining its status. |
| -> TxOutBalance | Balance of spent and unspent transaction outputs. |
| -> TxOutRef | Target transaction output for inspecting its state. |
| -> Either TxStatusFailure TxOutStatus |
Given the current block, compute the status for the given transaction output by getting the state of the transaction that produced it and checking if the output is spent or unspent.
unspentOutputs :: UtxoState TxOutBalance -> Set TxOutRef Source #
The UTXO set
spentOutputs :: UtxoState TxOutBalance -> Set TxOutRef Source #
The spent output set
type ChainIndexState = UtxoIndex TxUtxoBalance Source #
getResumePoints :: Member (BeamEffect Sqlite) effs => Eff effs [ChainPoint] Source #
handleQuery :: (Member (State ChainIndexState) effs, Member (BeamEffect Sqlite) effs, Member (Error ChainIndexError) effs, Member (LogMsg ChainIndexLog) effs) => ChainIndexQueryEffect ~> Eff effs Source #
handleControl :: forall effs. (Member (State ChainIndexState) effs, Member (Reader Depth) effs, Member (BeamEffect Sqlite) effs, Member (Error ChainIndexError) effs, Member (LogMsg ChainIndexLog) effs) => ChainIndexControlEffect ~> Eff effs Source #
restoreStateFromDb :: Member (BeamEffect Sqlite) effs => Eff effs ChainIndexState Source #