minor-fix: extracted SignedBox and code sweeped

This commit is contained in:
Dmitry Zuikov 2023-09-15 09:43:05 +03:00
parent ed279f1d34
commit 93137d8f4c
7 changed files with 40 additions and 83 deletions

View File

@ -81,6 +81,7 @@ library
, HBS2.Data.Types.Crypto
, HBS2.Data.Types.Peer
, HBS2.Data.Types.Refs
, HBS2.Data.Types.SignedBox
, HBS2.Data.Bundle
, HBS2.Defaults
, HBS2.Events

View File

@ -26,6 +26,7 @@ import Streaming()
{- HLINT ignore "Use newtype instead of data" -}
-- у нас может быть много способов хранить данные:
-- сжимать целиком (эффективно, но медленно)
-- сжимать по секциям (быстрее, но менее эффективно)

View File

@ -38,10 +38,6 @@ newtype HashRefMetadata =
deriving newtype (Eq,Ord,Pretty)
deriving stock (Data,Show,Generic)
newtype HashRefPrevState = HashRefPrevState HashRef
deriving newtype (Eq,Ord,Pretty,IsString)
deriving stock (Data,Show,Generic)
data HashRefType =
HashRefMerkle HashRefObject
| HashRefBlob HashRefObject
@ -58,81 +54,7 @@ data SequentialRef =
instance Serialise AnnotatedHashRef
instance Serialise SequentialRef
instance Serialise HashRef
instance Serialise HashRefMetadata
instance Serialise HashRefObject
---
data RefGenesis s = RefGenesis
{ refOwner :: !(PubKey 'Sign s)
, refName :: !Text
, refMeta :: !AnnMetaData
}
deriving stock (Generic)
instance Serialise (PubKey 'Sign s) => Serialise (RefGenesis s)
data RefForm
= LinearRef
---
data family Refs e ( f :: RefForm )
newtype instance Refs e 'LinearRef
-- List of hashes of stored RefGenesis
= LinearRefs { unLinearRefs :: [Hash HbSync] }
deriving stock (Generic)
instance Serialise (Refs e 'LinearRef)
---
data family MutableRef e ( f :: RefForm )
data instance MutableRef s 'LinearRef
= LinearMutableRef
{ lrefId :: !(Hash HbSync)
, lrefHeight :: !Int
-- , lrefMTree :: !(MTreeAnn [Hash HbSync])
, lrefVal :: !(Hash HbSync)
}
deriving stock (Generic, Show)
instance Serialise (MutableRef s 'LinearRef)
---
data SignPhase = SignaturePresent | SignatureVerified
data family Signed ( p :: SignPhase ) a
data instance Signed SignaturePresent (MutableRef s 'LinearRef)
= LinearMutableRefSigned
{ signature :: Signature s
, signedRef :: MutableRef s 'LinearRef
}
deriving stock (Generic)
instance Serialise (Signature s) =>
Serialise (Signed 'SignaturePresent (MutableRef s 'LinearRef))
data instance Signed 'SignatureVerified (MutableRef s 'LinearRef)
= LinearMutableRefSignatureVerified
{ signature :: Signature s
, signedRef :: MutableRef s 'LinearRef
, signer :: PubKey 'Sign s
}
deriving stock (Generic)
---
nodeLinearRefsRef :: PubKey 'Sign s -> RefGenesis s
nodeLinearRefsRef pk = RefGenesis
{ refOwner = pk
, refName = "List of node linear refs"
, refMeta = NoMetaData
}
type IsRefPubKey s = ( Eq (PubKey 'Sign s)

View File

@ -0,0 +1,35 @@
{-# LANGUAGE UndecidableInstances #-}
module HBS2.Data.Types.SignedBox where
import HBS2.Prelude.Plated
import HBS2.Net.Proto.Types
import HBS2.Net.Auth.Credentials
import Codec.Serialise
import Data.Hashable
import Data.ByteString (ByteString)
data SignedBox p e =
SignedBox (PubKey 'Sign (Encryption e)) ByteString (Signature (Encryption e))
deriving stock (Generic)
deriving stock instance
( Eq (PubKey 'Sign (Encryption e))
, Eq (Signature (Encryption e))
) => Eq (SignedBox p e)
instance ( Eq (PubKey 'Sign (Encryption e))
, Eq (Signature (Encryption e))
, Serialise (SignedBox p e)
) => Hashable (SignedBox p e) where
hashWithSalt salt box = hashWithSalt salt (serialise box)
type ForSignedBox e = ( Serialise ( PubKey 'Sign (Encryption e))
, FromStringMaybe (PubKey 'Sign (Encryption e))
, Serialise (Signature (Encryption e))
, Hashable (PubKey 'Sign (Encryption e))
)
instance ForSignedBox e => Serialise (SignedBox p e)

View File

@ -18,6 +18,7 @@ import HBS2.Net.Proto.Peer
import HBS2.Net.Proto.BlockAnnounce
import HBS2.Net.Proto.Sessions
import HBS2.Data.Types.Refs
import HBS2.Data.Types.SignedBox
import HBS2.Actors.Peer.Types
import HBS2.Data.Types.Peer
import HBS2.Storage
@ -51,10 +52,6 @@ type RefChanId e = PubKey 'Sign (Encryption e)
type RefChanOwner e = PubKey 'Sign (Encryption e)
type RefChanAuthor e = PubKey 'Sign (Encryption e)
data SignedBox p e =
SignedBox (PubKey 'Sign (Encryption e)) ByteString (Signature (Encryption e))
deriving stock (Generic)
type Weight = Integer
data RefChanHeadBlock e =
@ -77,7 +74,6 @@ type ForRefChans e = ( Serialise ( PubKey 'Sign (Encryption e))
)
instance ForRefChans e => Serialise (RefChanHeadBlock e)
instance ForRefChans e => Serialise (SignedBox p e)
type instance SessionData e (RefChanHeadBlock e) = RefChanHeadBlock e

View File

@ -14,6 +14,7 @@ import HBS2.Defaults
import HBS2.Events
import HBS2.Hash
import HBS2.Data.Types.Refs
import HBS2.Data.Types.SignedBox
import HBS2.Data.Types
import HBS2.Net.Auth.Credentials
import HBS2.Net.IP.Addr

View File

@ -19,6 +19,7 @@ import HBS2.Base58
import HBS2.Clock
import HBS2.Data.Detect
import HBS2.Data.Types.Refs
import HBS2.Data.Types.SignedBox
import HBS2.Events
import HBS2.Merkle
import HBS2.Net.Auth.Credentials