| Copyright | 2018 DFINITY Stiftung |
|---|---|
| License | GPL-3 |
| Maintainer | Enzo Haussecker <enzo@dfinity.org> |
| Stability | Stable |
| Safe Haskell | None |
| Language | Haskell2010 |
DFINITY.RadixTree
Description
A generic data integrity layer.
Synopsis
- class Monad m => RadixDatabase m database where
- data RadixError
- data RadixProof
- type RadixRoot = ShortByteString
- data RadixTree database
- getCheckpoint :: RadixTree database -> RadixRoot
- getRoot :: RadixTree database -> RadixRoot
- getValue :: RadixProof -> ByteString
- createRadixTree :: RadixDatabase m database => Int -> Int -> Maybe RadixRoot -> database -> m (RadixTree database)
- insertRadixTree :: RadixDatabase m database => ByteString -> ByteString -> RadixTree database -> m (RadixTree database)
- deleteRadixTree :: RadixDatabase m database => ByteString -> RadixTree database -> m (RadixTree database)
- merkleizeRadixTree :: RadixDatabase m database => RadixTree database -> m (RadixRoot, RadixTree database)
- lookupRadixTree :: RadixDatabase m database => ByteString -> RadixTree database -> m (Maybe (ByteString, RadixTree database))
- createRadixProof :: RadixDatabase m database => ByteString -> RadixTree database -> m (Maybe (RadixProof, RadixTree database))
- verifyRadixProof :: ByteString -> RadixRoot -> RadixProof -> Bool
- isEmptyRadixTree :: RadixTree database -> Bool
- isValidRadixRoot :: RadixDatabase m database => RadixRoot -> RadixTree database -> m Bool
- contentsRadixTree :: RadixDatabase m database => RadixTree database -> m [(ByteString, ByteString)]
- contentsMerkleizedRadixTree :: RadixDatabase m database => RadixTree database -> m [(ByteString, ByteString)]
- contentsNonMerkleizedRadixTree :: RadixDatabase m database => RadixTree database -> m [(ByteString, ByteString)]
- printRadixTree :: MonadIO m => RadixDatabase m database => RadixTree database -> m ()
- printMerkleizedRadixTree :: MonadIO m => RadixDatabase m database => RadixTree database -> m ()
- printNonMerkleizedRadixTree :: MonadIO m => RadixDatabase m database => RadixTree database -> m ()
Class
class Monad m => RadixDatabase m database where Source #
Methods
load :: database -> ByteString -> m (Maybe ByteString) Source #
store :: database -> ByteString -> ByteString -> m () Source #
Instances
Types
data RadixError Source #
Constructors
| InvalidArgument String | |
| StateRootDoesNotExist RadixRoot |
Instances
| Eq RadixError Source # | |
Defined in DFINITY.RadixTree.Types | |
| Data RadixError Source # | |
Defined in DFINITY.RadixTree.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RadixError -> c RadixError # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RadixError # toConstr :: RadixError -> Constr # dataTypeOf :: RadixError -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RadixError) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RadixError) # gmapT :: (forall b. Data b => b -> b) -> RadixError -> RadixError # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RadixError -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RadixError -> r # gmapQ :: (forall d. Data d => d -> u) -> RadixError -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> RadixError -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RadixError -> m RadixError # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RadixError -> m RadixError # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RadixError -> m RadixError # | |
| Show RadixError Source # | |
Defined in DFINITY.RadixTree.Types Methods showsPrec :: Int -> RadixError -> ShowS # show :: RadixError -> String # showList :: [RadixError] -> ShowS # | |
| Exception RadixError Source # | |
Defined in DFINITY.RadixTree.Types Methods toException :: RadixError -> SomeException # fromException :: SomeException -> Maybe RadixError # displayException :: RadixError -> String # | |
data RadixProof Source #
Instances
| Eq RadixProof Source # | |
Defined in DFINITY.RadixTree.Types | |
| Data RadixProof Source # | |
Defined in DFINITY.RadixTree.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RadixProof -> c RadixProof # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RadixProof # toConstr :: RadixProof -> Constr # dataTypeOf :: RadixProof -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RadixProof) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RadixProof) # gmapT :: (forall b. Data b => b -> b) -> RadixProof -> RadixProof # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RadixProof -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RadixProof -> r # gmapQ :: (forall d. Data d => d -> u) -> RadixProof -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> RadixProof -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RadixProof -> m RadixProof # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RadixProof -> m RadixProof # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RadixProof -> m RadixProof # | |
| Show RadixProof Source # | |
Defined in DFINITY.RadixTree.Types Methods showsPrec :: Int -> RadixProof -> ShowS # show :: RadixProof -> String # showList :: [RadixProof] -> ShowS # | |
| NFData RadixProof Source # | |
Defined in DFINITY.RadixTree.Types Methods rnf :: RadixProof -> () # | |
| Serialise RadixProof Source # | |
Defined in DFINITY.RadixTree.Types Methods encode :: RadixProof -> Encoding # decode :: Decoder s RadixProof # encodeList :: [RadixProof] -> Encoding # decodeList :: Decoder s [RadixProof] # | |
type RadixRoot = ShortByteString Source #
Getters
getCheckpoint :: RadixTree database -> RadixRoot Source #
getValue :: RadixProof -> ByteString Source #
Create
Arguments
| :: RadixDatabase m database | |
| => Int | Bloom filter size in bits. |
| -> Int | LRU cache size in items. |
| -> Maybe RadixRoot | Previous state root. |
| -> database | Database. |
| -> m (RadixTree database) |
Create a radix tree.
Insert
Arguments
| :: RadixDatabase m database | |
| => ByteString | Key. |
| -> ByteString | Value. |
| -> RadixTree database | Radix tree. |
| -> m (RadixTree database) |
Insert a value into a radix tree.
Delete
Arguments
| :: RadixDatabase m database | |
| => ByteString | Key. |
| -> RadixTree database | Radix tree. |
| -> m (RadixTree database) |
Delete a value from a radix tree.
Merkleize
Arguments
| :: RadixDatabase m database | |
| => RadixTree database | Radix tree. |
| -> m (RadixRoot, RadixTree database) |
Merkleize a radix tree. This will flush the buffer to the database.
Query
Arguments
| :: RadixDatabase m database | |
| => ByteString | Key. |
| -> RadixTree database | Radix tree. |
| -> m (Maybe (ByteString, RadixTree database)) |
Lookup a value in a radix tree.
Prove
Arguments
| :: RadixDatabase m database | |
| => ByteString | Key. |
| -> RadixTree database | Radix tree. |
| -> m (Maybe (RadixProof, RadixTree database)) |
Prove that a value exists in a radix tree.
Verify
Arguments
| :: ByteString | Key. |
| -> RadixRoot | State root. |
| -> RadixProof | Radix proof. |
| -> Bool |
Verify that a value exists in a radix tree.
Test
Check if a radix tree is empty.
Arguments
| :: RadixDatabase m database | |
| => RadixRoot | State root. |
| -> RadixTree database | Radix tree. |
| -> m Bool |
Check if a state root is valid.
Debug
Contents
Arguments
| :: RadixDatabase m database | |
| => RadixTree database | Radix tree. |
| -> m [(ByteString, ByteString)] |
A convenient alias for contentsNonMerkleizedRadixTree.
contentsMerkleizedRadixTree Source #
Arguments
| :: RadixDatabase m database | |
| => RadixTree database | Radix tree. |
| -> m [(ByteString, ByteString)] |
Get the contents of a Merkleized radix tree.
contentsNonMerkleizedRadixTree Source #
Arguments
| :: RadixDatabase m database | |
| => RadixTree database | Radix tree. |
| -> m [(ByteString, ByteString)] |
Get the contents of a non-Merkleized radix tree.
Arguments
| :: MonadIO m | |
| => RadixDatabase m database | |
| => RadixTree database | Radix tree. |
| -> m () |
A convenient alias for printNonMerkleizedRadixTree.
printMerkleizedRadixTree Source #
Arguments
| :: MonadIO m | |
| => RadixDatabase m database | |
| => RadixTree database | Radix tree. |
| -> m () |
Print a Merkleized radix tree.
printNonMerkleizedRadixTree Source #
Arguments
| :: MonadIO m | |
| => RadixDatabase m database | |
| => RadixTree database | Radix tree. |
| -> m () |
Print a non-Merkleized radix tree.