diff --git a/auxx/src/Command/Rollback.hs b/auxx/src/Command/Rollback.hs index 21fe3e39e0c..10f0bc5ef0a 100644 --- a/auxx/src/Command/Rollback.hs +++ b/auxx/src/Command/Rollback.hs @@ -13,10 +13,9 @@ import Data.List (genericTake) import Formatting (build, int, sformat, string, (%)) import System.Wlog (logInfo) -import Pos.Chain.Block (Blund) +import Pos.Chain.Block (Blund, mainBlockTxPayload) import Pos.Chain.Txp (flattenTxPayload) import Pos.Core (difficultyL, epochIndexL) -import Pos.Core.Block (mainBlockTxPayload) import Pos.Core.Chrono (NewestFirst, _NewestFirst) import Pos.Core.Txp (TxAux) import Pos.Crypto (ProtocolMagic) diff --git a/chain/bench/block-bench.hs b/chain/bench/block-bench.hs index 1517dcab088..1a64b7351ed 100644 --- a/chain/bench/block-bench.hs +++ b/chain/bench/block-bench.hs @@ -10,7 +10,7 @@ import qualified Data.ByteString.Lazy as LBS import System.Environment (lookupEnv) import Pos.Binary.Class (Bi, serialize, unsafeDeserialize) -import Pos.Core.Block (Body, BodyProof, ConsensusData, ExtraBodyData, +import Pos.Chain.Block (Body, BodyProof, ConsensusData, ExtraBodyData, ExtraHeaderData, MainBlock, MainBlockHeader, MainBlockchain, _gbBody, _gbExtra, _gbHeader, _gbhBodyProof, _gbhConsensus, _gbhExtra, _mbDlgPayload, diff --git a/chain/cardano-sl-chain.cabal b/chain/cardano-sl-chain.cabal index 69268d59280..a83df5abd2f 100644 --- a/chain/cardano-sl-chain.cabal +++ b/chain/cardano-sl-chain.cabal @@ -27,6 +27,18 @@ library other-modules: + Pos.Chain.Block.Blockchain + Pos.Chain.Block.Genesis + Pos.Chain.Block.Genesis.Lens + Pos.Chain.Block.Genesis.Instances + Pos.Chain.Block.Genesis.Types + Pos.Chain.Block.Main + Pos.Chain.Block.Main.Instances + Pos.Chain.Block.Main.Types + Pos.Chain.Block.Union + Pos.Chain.Block.Union.ComponentBlock + Pos.Chain.Block.Union.Types + Pos.Chain.Block.Constructors Pos.Chain.Block.BHelpers Pos.Chain.Block.Configuration Pos.Chain.Block.Error @@ -35,6 +47,7 @@ library Pos.Chain.Block.Types Pos.Chain.Block.Slog.Types Pos.Chain.Block.Logic.Integrity + Pos.Chain.Block.JsonLog Pos.Chain.Delegation.Cede Pos.Chain.Delegation.Cede.Class @@ -109,6 +122,8 @@ library , cardano-sl-core , cardano-sl-crypto , cardano-sl-util + , cborg + , cereal , conduit , containers , cryptonite @@ -131,6 +146,7 @@ library , neat-interpolation , parsec , plutus-prototype + , safecopy , safe-exceptions , serokell-util , reflection @@ -182,8 +198,10 @@ test-suite test other-modules: Spec Test.Pos.Chain.Block.Arbitrary + Test.Pos.Chain.Block.Bi Test.Pos.Chain.Block.BlockSpec Test.Pos.Chain.Block.CborSpec + Test.Pos.Chain.Block.Gen Test.Pos.Chain.Block.SafeCopySpec Test.Pos.Chain.Delegation.Arbitrary Test.Pos.Chain.Lrc.FtsSpec diff --git a/chain/src/Pos/Chain/Block.hs b/chain/src/Pos/Chain/Block.hs index 64688163b1b..b1dd9810f07 100644 --- a/chain/src/Pos/Chain/Block.hs +++ b/chain/src/Pos/Chain/Block.hs @@ -2,8 +2,14 @@ module Pos.Chain.Block ( module X ) where +import Pos.Chain.Block.Blockchain as X import Pos.Chain.Block.Configuration as X +import Pos.Chain.Block.Constructors as X import Pos.Chain.Block.Error as X +import Pos.Chain.Block.Genesis as X +import Pos.Chain.Block.JsonLog as X import Pos.Chain.Block.Logic as X +import Pos.Chain.Block.Main as X import Pos.Chain.Block.Slog as X import Pos.Chain.Block.Types as X +import Pos.Chain.Block.Union as X diff --git a/chain/src/Pos/Chain/Block/BHelpers.hs b/chain/src/Pos/Chain/Block/BHelpers.hs index 2db619d6427..2750b5d881f 100644 --- a/chain/src/Pos/Chain/Block/BHelpers.hs +++ b/chain/src/Pos/Chain/Block/BHelpers.hs @@ -21,15 +21,15 @@ import Universum import Control.Monad.Except (MonadError (throwError)) import Pos.Binary.Class (Bi) -import Pos.Chain.Ssc (verifySscPayload) -import Pos.Core.Block (Block, GenesisBlockchain, MainBlockchain, - MainConsensusData (..), MainToSign (..)) -import Pos.Core.Block.Blockchain (Blockchain (..), GenericBlock (..), +import Pos.Chain.Block.Blockchain (Blockchain (..), GenericBlock (..), GenericBlockHeader (..), gbExtra) -import Pos.Core.Block.Main (MainBody (..), MainExtraHeaderData (..), +import Pos.Chain.Block.Main (MainBody (..), MainExtraHeaderData (..), MainProof) -import Pos.Core.Block.Union (BlockHeader (..), BlockSignature (..), +import Pos.Chain.Block.Union (Block, BlockHeader (..), + BlockSignature (..), GenesisBlockchain, MainBlockchain, + MainConsensusData (..), MainToSign (..), mainBlockEBDataProof) +import Pos.Chain.Ssc (verifySscPayload) import Pos.Core.Configuration (HasProtocolConstants) import Pos.Core.Delegation (LightDlgIndices (..), checkDlgPayload) import Pos.Core.Slotting (SlotId (..)) diff --git a/core/src/Pos/Core/Block/Blockchain.hs b/chain/src/Pos/Chain/Block/Blockchain.hs similarity index 99% rename from core/src/Pos/Core/Block/Blockchain.hs rename to chain/src/Pos/Chain/Block/Blockchain.hs index 0056f02c8ff..4304a731ee3 100644 --- a/core/src/Pos/Core/Block/Blockchain.hs +++ b/chain/src/Pos/Chain/Block/Blockchain.hs @@ -1,10 +1,11 @@ {-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE Rank2Types #-} +{-# LANGUAGE TypeFamilies #-} -- | This module contains some general definitions related to blocks -- and headers. The heart of this module is 'Blockchain' type class. -module Pos.Core.Block.Blockchain +module Pos.Chain.Block.Blockchain ( Blockchain (..) , GenericBlockHeader (..) , GenericBlock (..) diff --git a/core/src/Pos/Core/Block/Constructors.hs b/chain/src/Pos/Chain/Block/Constructors.hs similarity index 93% rename from core/src/Pos/Core/Block/Constructors.hs rename to chain/src/Pos/Chain/Block/Constructors.hs index 31d01eb17c6..bc950cf2ddf 100644 --- a/core/src/Pos/Core/Block/Constructors.hs +++ b/chain/src/Pos/Chain/Block/Constructors.hs @@ -1,6 +1,6 @@ -- | Block constructors and basic functions. -module Pos.Core.Block.Constructors +module Pos.Chain.Block.Constructors ( mkMainBlockExplicit , mkMainBlock , mkMainHeaderExplicit @@ -13,21 +13,21 @@ module Pos.Core.Block.Constructors import Universum -import Pos.Core.Attributes (mkAttributes) -import Pos.Core.Block.Blockchain (GenericBlock (..), mkGenericHeader) -import Pos.Core.Block.Genesis (GenesisBody (..), +import Pos.Chain.Block.Blockchain (GenericBlock (..), mkGenericHeader) +import Pos.Chain.Block.Genesis (GenesisBody (..), GenesisConsensusData (..), GenesisExtraBodyData (..), GenesisExtraHeaderData (..)) -import Pos.Core.Block.Main (MainBody (..), MainExtraBodyData (..), +import Pos.Chain.Block.Main (MainBody (..), MainExtraBodyData (..), MainExtraHeaderData (..)) -import Pos.Core.Block.Union (BlockHeader, BlockSignature (..), +import Pos.Chain.Block.Union (BlockHeader, BlockSignature (..), GenesisBlock, GenesisBlockHeader, HeaderHash, MainBlock, MainBlockHeader, MainConsensusData (..), MainToSign (..), headerHash) +import Pos.Core.Attributes (mkAttributes) import Pos.Core.Common (ChainDifficulty, HasDifficulty (..), SlotLeaders) import Pos.Core.Configuration (GenesisHash (..)) -import Pos.Core.Delegation.HeavyDlgIndex (ProxySKBlockInfo) +import Pos.Core.Delegation (ProxySKBlockInfo) import Pos.Core.Slotting (EpochIndex, SlotId) import Pos.Core.Update (BlockVersion, SoftwareVersion) import Pos.Crypto (ProtocolMagic, SecretKey, SignTag (..), hash, diff --git a/chain/src/Pos/Chain/Block/Error.hs b/chain/src/Pos/Chain/Block/Error.hs index b2ab589a91e..b5bec810f30 100644 --- a/chain/src/Pos/Chain/Block/Error.hs +++ b/chain/src/Pos/Chain/Block/Error.hs @@ -16,7 +16,7 @@ import Formatting (bprint, stext, (%)) import Formatting.Buildable (Buildable (..)) import GHC.Generics (Generic) -import Pos.Core.Block (HeaderHash) +import Pos.Chain.Block.Union (HeaderHash) import Pos.Crypto (shortHashF) diff --git a/chain/src/Pos/Chain/Block/Genesis.hs b/chain/src/Pos/Chain/Block/Genesis.hs new file mode 100644 index 00000000000..220ffee1156 --- /dev/null +++ b/chain/src/Pos/Chain/Block/Genesis.hs @@ -0,0 +1,12 @@ +{-# OPTIONS_GHC -Wno-unused-imports #-} +{-# OPTIONS_GHC -Wno-dodgy-exports #-} + +module Pos.Chain.Block.Genesis + ( module Pos.Chain.Block.Genesis.Instances + , module Pos.Chain.Block.Genesis.Lens + , module Pos.Chain.Block.Genesis.Types + ) where + +import Pos.Chain.Block.Genesis.Instances +import Pos.Chain.Block.Genesis.Lens +import Pos.Chain.Block.Genesis.Types diff --git a/core/src/Pos/Core/Block/Genesis/Instances.hs b/chain/src/Pos/Chain/Block/Genesis/Instances.hs similarity index 85% rename from core/src/Pos/Core/Block/Genesis/Instances.hs rename to chain/src/Pos/Chain/Block/Genesis/Instances.hs index 6b6d1feccf0..2b59bb3c855 100644 --- a/core/src/Pos/Core/Block/Genesis/Instances.hs +++ b/chain/src/Pos/Chain/Block/Genesis/Instances.hs @@ -2,7 +2,7 @@ -- | Miscellaneous instances, etc. Related to the genesis blockchain of course. -module Pos.Core.Block.Genesis.Instances +module Pos.Chain.Block.Genesis.Instances ( ) where @@ -12,11 +12,11 @@ import Formatting (bprint, build, sformat, stext, (%)) import qualified Formatting.Buildable as Buildable import Serokell.Util (Color (Magenta), colorize) -import Pos.Core.Block.Blockchain (GenericBlock (..), gbHeader, +import Pos.Chain.Block.Blockchain (GenericBlock (..), gbHeader, gbhConsensus) -import Pos.Core.Block.Genesis.Lens (gcdEpoch) -import Pos.Core.Block.Genesis.Types (GenesisBody (..)) -import Pos.Core.Block.Union.Types (BlockHeader (..), GenesisBlock, +import Pos.Chain.Block.Genesis.Lens (gcdEpoch) +import Pos.Chain.Block.Genesis.Types (GenesisBody (..)) +import Pos.Chain.Block.Union.Types (BlockHeader (..), GenesisBlock, GenesisBlockHeader, HasHeaderHash (..), IsGenesisHeader, IsHeader, blockHeaderHash) import Pos.Core.Common (slotLeadersF) diff --git a/core/src/Pos/Core/Block/Genesis/Lens.hs b/chain/src/Pos/Chain/Block/Genesis/Lens.hs similarity index 94% rename from core/src/Pos/Core/Block/Genesis/Lens.hs rename to chain/src/Pos/Chain/Block/Genesis/Lens.hs index 566e11d3da3..4b4d25f585b 100644 --- a/core/src/Pos/Core/Block/Genesis/Lens.hs +++ b/chain/src/Pos/Chain/Block/Genesis/Lens.hs @@ -6,7 +6,7 @@ -- small parts of it. It makes it clear what exactly is stored in -- 'GenesisBlock'. Similar fact is true for `genHeader' prefix. -module Pos.Core.Block.Genesis.Lens +module Pos.Chain.Block.Genesis.Lens ( -- * Extra types gehAttributes @@ -40,14 +40,14 @@ import Universum import Control.Lens (makeLenses) -import Pos.Core.Block.Blockchain (gbBody, gbExtra, gbHeader, +import Pos.Chain.Block.Blockchain (gbBody, gbExtra, gbHeader, gbPrevBlock, gbhBodyProof, gbhConsensus, gbhExtra, gbhPrevBlock) -import Pos.Core.Block.Genesis.Types (GenesisBody (..), +import Pos.Chain.Block.Genesis.Types (GenesisBody (..), GenesisBodyAttributes, GenesisExtraBodyData (..), GenesisExtraHeaderData (..), GenesisHeaderAttributes, GenesisProof (..), gcdDifficulty, gcdEpoch) -import Pos.Core.Block.Union.Types (GenesisBlock, GenesisBlockHeader, +import Pos.Chain.Block.Union.Types (GenesisBlock, GenesisBlockHeader, HeaderHash) import Pos.Core.Common (ChainDifficulty, SlotLeaders) import Pos.Core.Slotting (EpochIndex (..)) diff --git a/core/src/Pos/Core/Block/Genesis/Types.hs b/chain/src/Pos/Chain/Block/Genesis/Types.hs similarity index 99% rename from core/src/Pos/Core/Block/Genesis/Types.hs rename to chain/src/Pos/Chain/Block/Genesis/Types.hs index ed7cd34ef66..603968ed575 100644 --- a/core/src/Pos/Core/Block/Genesis/Types.hs +++ b/chain/src/Pos/Chain/Block/Genesis/Types.hs @@ -1,6 +1,6 @@ -- | Types defining the genesis blockchain. -module Pos.Core.Block.Genesis.Types +module Pos.Chain.Block.Genesis.Types ( GenesisProof (..) , GenesisConsensusData (..) , GenesisBody (..) diff --git a/chain/src/Pos/Chain/Block/JsonLog.hs b/chain/src/Pos/Chain/Block/JsonLog.hs new file mode 100644 index 00000000000..b84863459b8 --- /dev/null +++ b/chain/src/Pos/Chain/Block/JsonLog.hs @@ -0,0 +1,46 @@ +module Pos.Chain.Block.JsonLog + ( jlCreatedBlock + , jlAdoptedBlock + ) where + +import Universum + +import Formatting (sformat) + +import Pos.Chain.Block.Blockchain (gbHeader, gbhPrevBlock) +import Pos.Chain.Block.Genesis (genBlockEpoch) +import Pos.Chain.Block.Union (Block, HeaderHash, headerHash, + headerHashF, mainBlockSlot, mainBlockTxPayload) +import Pos.Core (HasConfiguration, SlotId (..), getEpochIndex, + getSlotIndex, mkLocalSlotIndex) +import Pos.Core.JsonLog.LogEvents (JLBlock (..), JLEvent (..)) +import Pos.Core.Txp (txpTxs) +import Pos.Crypto (hash, hashHexF) + +-- | Return event of created block. +jlCreatedBlock :: HasConfiguration => Block -> JLEvent +jlCreatedBlock block = JLCreatedBlock $ JLBlock {..} + where + jlHash = showHeaderHash $ headerHash block + jlPrevBlock = showHeaderHash $ case block of + Left gB -> view gbhPrevBlock (gB ^. gbHeader) + Right mB -> view gbhPrevBlock (mB ^. gbHeader) + jlSlot = (getEpochIndex $ siEpoch slot, getSlotIndex $ siSlot slot) + jlTxs = case block of + Left _ -> [] + Right mB -> map fromTx . toList $ mB ^. mainBlockTxPayload . txpTxs + slot :: SlotId + slot = case block of + Left gB -> let slotZero = case mkLocalSlotIndex 0 of + Right sz -> sz + Left _ -> error "impossible branch" + in SlotId (gB ^. genBlockEpoch) slotZero + Right mB -> mB ^. mainBlockSlot + fromTx = sformat hashHexF . hash + +-- | Returns event of created 'Block'. +jlAdoptedBlock :: Block -> JLEvent +jlAdoptedBlock = JLAdoptedBlock . showHeaderHash . headerHash + +showHeaderHash :: HeaderHash -> Text +showHeaderHash = sformat headerHashF diff --git a/chain/src/Pos/Chain/Block/Logic/Integrity.hs b/chain/src/Pos/Chain/Block/Logic/Integrity.hs index 81bc052f59f..b09ef5ce262 100644 --- a/chain/src/Pos/Chain/Block/Logic/Integrity.hs +++ b/chain/src/Pos/Chain/Block/Logic/Integrity.hs @@ -26,16 +26,18 @@ import Serokell.Util (VerificationRes (..), verifyGeneric) import qualified Pos.Binary.Class as Bi import qualified Pos.Chain.Block.BHelpers as BHelpers +import Pos.Chain.Block.Blockchain (gbExtra, gbhExtra) +import Pos.Chain.Block.Genesis (gebAttributes, gehAttributes, + genBlockLeaders) +import Pos.Chain.Block.Union (Block, BlockHeader (..), + HasHeaderHash (..), HeaderHash, blockHeaderProtocolMagic, + getBlockHeader, headerSlotL, mainHeaderLeaderKey, + mebAttributes, mehAttributes, prevBlockL) import Pos.Core (ChainDifficulty, EpochOrSlot, HasDifficulty (..), HasEpochIndex (..), HasEpochOrSlot (..), HasProtocolConstants, SlotId (..), SlotLeaders, addressHash, getSlotIndex) import Pos.Core.Attributes (areAttributesKnown) -import Pos.Core.Block (Block, BlockHeader (..), HasHeaderHash (..), - HeaderHash, blockHeaderProtocolMagic, gbExtra, gbhExtra, - gebAttributes, gehAttributes, genBlockLeaders, - getBlockHeader, headerSlotL, mainHeaderLeaderKey, - mebAttributes, mehAttributes, prevBlockL) import Pos.Core.Chrono (NewestFirst (..), OldestFirst) import Pos.Core.Slotting (EpochIndex) import Pos.Core.Update (BlockVersionData (..)) diff --git a/chain/src/Pos/Chain/Block/Main.hs b/chain/src/Pos/Chain/Block/Main.hs new file mode 100644 index 00000000000..d404c154d95 --- /dev/null +++ b/chain/src/Pos/Chain/Block/Main.hs @@ -0,0 +1,10 @@ +{-# OPTIONS_GHC -Wno-unused-imports #-} +{-# OPTIONS_GHC -Wno-dodgy-exports #-} + +module Pos.Chain.Block.Main + ( module Pos.Chain.Block.Main.Instances + , module Pos.Chain.Block.Main.Types + ) where + +import Pos.Chain.Block.Main.Instances +import Pos.Chain.Block.Main.Types diff --git a/core/src/Pos/Core/Block/Main/Instances.hs b/chain/src/Pos/Chain/Block/Main/Instances.hs similarity index 92% rename from core/src/Pos/Core/Block/Main/Instances.hs rename to chain/src/Pos/Chain/Block/Main/Instances.hs index 46350008779..1705cea633c 100644 --- a/core/src/Pos/Core/Block/Main/Instances.hs +++ b/chain/src/Pos/Chain/Block/Main/Instances.hs @@ -2,7 +2,7 @@ -- | Miscellaneous instances, etc. Related to the main blockchain of course. -module Pos.Core.Block.Main.Instances +module Pos.Chain.Block.Main.Instances ( ) where @@ -12,10 +12,10 @@ import Formatting (bprint, build, int, stext, (%)) import qualified Formatting.Buildable as Buildable import Serokell.Util (Color (Magenta), colorize, listJson) -import Pos.Core.Block.Blockchain (GenericBlock (..)) -import Pos.Core.Block.Main.Types (MainBody (..), +import Pos.Chain.Block.Blockchain (GenericBlock (..)) +import Pos.Chain.Block.Main.Types (MainBody (..), MainExtraHeaderData (..)) -import Pos.Core.Block.Union.Types (BlockHeader (..), +import Pos.Chain.Block.Union.Types (BlockHeader (..), HasHeaderHash (..), IsHeader, IsMainHeader (..), MainBlock, MainBlockHeader, MainConsensusData (..), blockHeaderHash, mainBlockBlockVersion, mainBlockSlot, diff --git a/core/src/Pos/Core/Block/Main/Types.hs b/chain/src/Pos/Chain/Block/Main/Types.hs similarity index 97% rename from core/src/Pos/Core/Block/Main/Types.hs rename to chain/src/Pos/Chain/Block/Main/Types.hs index adaf5060baa..ecad7b2783b 100644 --- a/core/src/Pos/Core/Block/Main/Types.hs +++ b/chain/src/Pos/Chain/Block/Main/Types.hs @@ -1,6 +1,6 @@ -- | Types defining the main blockchain. -module Pos.Core.Block.Main.Types +module Pos.Chain.Block.Main.Types ( MainProof (..) , MainExtraHeaderData (..) , MainBody (..) @@ -54,7 +54,7 @@ instance Bi MainProof where decode <*> decode -instance SafeCopy SscProof => SafeCopy MainProof where +instance SafeCopy MainProof where getCopy = contain $ do mpTxProof <- safeGet mpMpcProof <- safeGet @@ -128,8 +128,7 @@ instance Bi MainBody where instance NFData MainBody -instance SafeCopy SscPayload => - SafeCopy MainBody where +instance SafeCopy MainBody where getCopy = contain $ do _mbTxPayload <- safeGet _mbSscPayload <- safeGet diff --git a/chain/src/Pos/Chain/Block/Types.hs b/chain/src/Pos/Chain/Block/Types.hs index 0f306074d91..a72718489e8 100644 --- a/chain/src/Pos/Chain/Block/Types.hs +++ b/chain/src/Pos/Chain/Block/Types.hs @@ -18,10 +18,10 @@ import Serokell.Util.Text (listJson) import Pos.Binary.Class (Cons (..), Field (..), deriveSimpleBi) import Pos.Chain.Block.Slog.Types (SlogUndo (..)) +import Pos.Chain.Block.Union (Block, BlockHeader, HasHeaderHash (..)) import Pos.Chain.Delegation (DlgUndo) import Pos.Chain.Update (USUndo) import Pos.Core (HasConfiguration, HasDifficulty (..)) -import Pos.Core.Block (Block, BlockHeader, HasHeaderHash (..)) import Pos.Core.Txp (TxpUndo) import Pos.Util.Util (HasLens (..)) diff --git a/chain/src/Pos/Chain/Block/Union.hs b/chain/src/Pos/Chain/Block/Union.hs new file mode 100644 index 00000000000..ba52884836d --- /dev/null +++ b/chain/src/Pos/Chain/Block/Union.hs @@ -0,0 +1,7 @@ +module Pos.Chain.Block.Union + ( module Pos.Chain.Block.Union.ComponentBlock + , module Pos.Chain.Block.Union.Types + ) where + +import Pos.Chain.Block.Union.ComponentBlock +import Pos.Chain.Block.Union.Types diff --git a/core/src/Pos/Core/Block/Union/ComponentBlock.hs b/chain/src/Pos/Chain/Block/Union/ComponentBlock.hs similarity index 91% rename from core/src/Pos/Core/Block/Union/ComponentBlock.hs rename to chain/src/Pos/Chain/Block/Union/ComponentBlock.hs index 9db6d63265d..7c93e248c5e 100644 --- a/core/src/Pos/Core/Block/Union/ComponentBlock.hs +++ b/chain/src/Pos/Chain/Block/Union/ComponentBlock.hs @@ -1,4 +1,4 @@ -module Pos.Core.Block.Union.ComponentBlock +module Pos.Chain.Block.Union.ComponentBlock ( ComponentBlock (..) ) where @@ -6,9 +6,9 @@ import Universum import Control.Lens (lens) -import Pos.Core.Block.Genesis () -import Pos.Core.Block.Main () -import Pos.Core.Block.Union.Types (HasHeaderHash (..), +import Pos.Chain.Block.Genesis () +import Pos.Chain.Block.Main () +import Pos.Chain.Block.Union.Types (HasHeaderHash (..), HasPrevBlock (..), IsGenesisHeader, IsMainHeader (..)) import Pos.Core.Slotting (EpochOrSlot (..), HasEpochIndex (..), HasEpochOrSlot (..)) diff --git a/core/src/Pos/Core/Block/Union/Types.hs b/chain/src/Pos/Chain/Block/Union/Types.hs similarity index 98% rename from core/src/Pos/Core/Block/Union/Types.hs rename to chain/src/Pos/Chain/Block/Union/Types.hs index c570939fb91..1dd1dfc3f09 100644 --- a/core/src/Pos/Core/Block/Union/Types.hs +++ b/chain/src/Pos/Chain/Block/Union/Types.hs @@ -1,10 +1,11 @@ {-# OPTIONS_GHC -Wno-redundant-constraints #-} -- for the Getter instances +{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} -- | Union of blockchain types. -module Pos.Core.Block.Union.Types +module Pos.Chain.Block.Union.Types ( BlockHeader (..) , _BlockHeaderGenesis , _BlockHeaderMain @@ -43,8 +44,8 @@ module Pos.Core.Block.Union.Types , IsGenesisHeader , IsMainHeader (..) - , module Pos.Core.Block.Genesis.Types - , module Pos.Core.Block.Main.Types + , module Pos.Chain.Block.Genesis.Types + , module Pos.Chain.Block.Main.Types -- ** Lenses -- * MainToSign @@ -116,14 +117,14 @@ import qualified Formatting.Buildable as Buildable import Pos.Binary.Class (Bi (..), decodeListLenCanonicalOf, encodeListLen, enforceSize) -import Pos.Core.Block.Blockchain (Blockchain (..), GenericBlock (..), +import Pos.Chain.Block.Blockchain (Blockchain (..), GenericBlock (..), GenericBlockHeader (..), gbBody, gbExtra, gbHeader, gbPrevBlock, gbhBodyProof, gbhConsensus, gbhExtra, gbhPrevBlock) -import Pos.Core.Block.Genesis.Types (GenesisBody (..), +import Pos.Chain.Block.Genesis.Types (GenesisBody (..), GenesisConsensusData (..), GenesisExtraBodyData (..), GenesisExtraHeaderData (..), GenesisProof (..), gcdEpoch) -import Pos.Core.Block.Main.Types (BlockBodyAttributes, +import Pos.Chain.Block.Main.Types (BlockBodyAttributes, BlockHeaderAttributes, MainBody (..), MainExtraBodyData, MainExtraHeaderData, MainProof (..)) import Pos.Core.Common (ChainDifficulty, HasDifficulty (..)) diff --git a/chain/src/Pos/Chain/Delegation/Class.hs b/chain/src/Pos/Chain/Delegation/Class.hs index 88a834310de..20347b410cc 100644 --- a/chain/src/Pos/Chain/Delegation/Class.hs +++ b/chain/src/Pos/Chain/Delegation/Class.hs @@ -25,8 +25,8 @@ import qualified Data.Cache.LRU as LRU import Data.Time.Clock (UTCTime) import Serokell.Data.Memory.Units (Byte) +import Pos.Chain.Block.Union (HeaderHash) import Pos.Chain.Delegation.Types (DlgMemPool, ProxySKHeavy) -import Pos.Core.Block (HeaderHash) import Pos.Util.Util (HasLens (..)) --------------------------------------------------------------------------- diff --git a/chain/src/Pos/Chain/Delegation/Types.hs b/chain/src/Pos/Chain/Delegation/Types.hs index ecb9104d0f8..55ee75bdfdc 100644 --- a/chain/src/Pos/Chain/Delegation/Types.hs +++ b/chain/src/Pos/Chain/Delegation/Types.hs @@ -18,8 +18,8 @@ import qualified Formatting.Buildable as Buildable import Serokell.Util.Text (listJson) import Pos.Binary.Class (Cons (..), Field (..), deriveSimpleBi) +import Pos.Chain.Block.Union (ComponentBlock (..)) import Pos.Core (StakeholderId) -import Pos.Core.Block (ComponentBlock (..)) import Pos.Core.Delegation (DlgPayload (..), ProxySKBlockInfo, ProxySKHeavy, checkDlgPayload) import Pos.Crypto (ProxySecretKey, PublicKey, isSelfSignedPsk) diff --git a/chain/src/Pos/Chain/Ssc/Functions.hs b/chain/src/Pos/Chain/Ssc/Functions.hs index 661914481d5..2f225ef9cbe 100644 --- a/chain/src/Pos/Chain/Ssc/Functions.hs +++ b/chain/src/Pos/Chain/Ssc/Functions.hs @@ -21,6 +21,7 @@ import Control.Monad.Except (MonadError (throwError)) import qualified Data.HashMap.Strict as HM import Serokell.Util.Verify (isVerSuccess) +import Pos.Chain.Block.Union (IsMainHeader, headerSlotL) import Pos.Chain.Ssc.Base (checkCertTTL, isCommitmentId, isOpeningId, isSharesId, verifySignedCommitment, vssThreshold) import Pos.Chain.Ssc.Error (SscVerifyError (..)) @@ -30,7 +31,6 @@ import qualified Pos.Chain.Ssc.VssCertData as VCD import Pos.Core (EpochIndex (..), HasGenesisData, HasProtocolConstants, SlotId (..), StakeholderId, genesisVssCerts) -import Pos.Core.Block (IsMainHeader, headerSlotL) import Pos.Core.Slotting (crucialSlot) import Pos.Core.Ssc (CommitmentsMap (..), SscPayload (..), VssCertificatesMap) diff --git a/chain/src/Pos/Chain/Ssc/Toss/Logic.hs b/chain/src/Pos/Chain/Ssc/Toss/Logic.hs index 397b54c3dc5..c8da96236b4 100644 --- a/chain/src/Pos/Chain/Ssc/Toss/Logic.hs +++ b/chain/src/Pos/Chain/Ssc/Toss/Logic.hs @@ -16,6 +16,7 @@ import Crypto.Random (MonadRandom) import qualified Data.HashMap.Strict as HM import System.Wlog (logError) +import Pos.Chain.Block.Union (IsMainHeader, headerSlotL) import Pos.Chain.Ssc.Error (SscVerifyError (..)) import Pos.Chain.Ssc.Functions (verifySscPayload) import Pos.Chain.Ssc.Toss.Base (checkPayload) @@ -25,7 +26,6 @@ import Pos.Core (EpochIndex, EpochOrSlot (..), HasProtocolConstants, LocalSlotIndex, SlotCount, SlotId (siSlot), StakeholderId, epochIndexL, epochOrSlot, getEpochOrSlot, mkCoin, slotSecurityParam) -import Pos.Core.Block (IsMainHeader, headerSlotL) import Pos.Core.Chrono (NewestFirst (..)) import Pos.Core.Ssc (CommitmentsMap (..), InnerSharesMap, Opening, SignedCommitment, SscPayload (..), VssCertificate, diff --git a/chain/src/Pos/Chain/Ssc/Types.hs b/chain/src/Pos/Chain/Ssc/Types.hs index 0c15795568e..9167531c4d1 100644 --- a/chain/src/Pos/Chain/Ssc/Types.hs +++ b/chain/src/Pos/Chain/Ssc/Types.hs @@ -48,11 +48,11 @@ import Universum import Pos.Binary.Class (Cons (..), Field (..), deriveSimpleBi, deriveSimpleBiCxt) +import Pos.Chain.Block.Union (ComponentBlock (..)) import Pos.Chain.Ssc.Behavior (SscBehavior) import Pos.Chain.Ssc.Toss.Types (TossModifier) import Pos.Chain.Ssc.VssCertData as VCD import Pos.Core (EpochIndex) -import Pos.Core.Block (ComponentBlock (..)) import Pos.Core.Ssc (CommitmentsMap (getCommitmentsMap), Opening, OpeningsMap, SharesMap, SignedCommitment, SscPayload) import Pos.Crypto (VssKeyPair) diff --git a/chain/src/Pos/Chain/Txp/Toil/Failure.hs b/chain/src/Pos/Chain/Txp/Toil/Failure.hs index c3f3fc97f4d..f2df068bffd 100644 --- a/chain/src/Pos/Chain/Txp/Toil/Failure.hs +++ b/chain/src/Pos/Chain/Txp/Toil/Failure.hs @@ -17,12 +17,12 @@ import GHC.TypeLits (TypeError) import Serokell.Data.Memory.Units (Byte, memory) import Serokell.Util (listJson) +import Pos.Chain.Block.Union (HeaderHash) import Pos.Chain.Script (PlutusError) import Pos.Chain.Txp.Toil.Types (TxFee) import Pos.Core (Address, ScriptVersion, TxFeePolicy, addressDetailedF, addressF) import Pos.Core.Attributes (UnparsedFields) -import Pos.Core.Block (HeaderHash) import Pos.Core.Txp (TxIn, TxInWitness, TxOut (..)) import Pos.Util (DisallowException) diff --git a/chain/src/Pos/Chain/Update/Poll/Failure.hs b/chain/src/Pos/Chain/Update/Poll/Failure.hs index 97c35b73d38..9876f8a1266 100644 --- a/chain/src/Pos/Chain/Update/Poll/Failure.hs +++ b/chain/src/Pos/Chain/Update/Poll/Failure.hs @@ -11,9 +11,9 @@ import Formatting (bprint, build, int, sformat, stext, (%)) import qualified Formatting.Buildable import Serokell.Data.Memory.Units (Byte, memory) +import Pos.Chain.Block.Union (HeaderHash) import Pos.Core (Coin, EpochIndex, ScriptVersion, StakeholderId, coinF) -import Pos.Core.Block (HeaderHash) import Pos.Core.Reporting (MonadReporting, reportError) import Pos.Core.Update (ApplicationName, BlockVersion, BlockVersionData, BlockVersionModifier, diff --git a/chain/src/Pos/Chain/Update/Poll/Types.hs b/chain/src/Pos/Chain/Update/Poll/Types.hs index c2437831968..ee57ceb5b9f 100644 --- a/chain/src/Pos/Chain/Update/Poll/Types.hs +++ b/chain/src/Pos/Chain/Update/Poll/Types.hs @@ -56,9 +56,9 @@ import Serokell.Data.Memory.Units (Byte) import Pos.Binary.Class (Bi (..), Cons (..), Field (..), decodeListLenCanonical, deriveIndexedBi, deriveSimpleBi, encodeListLen) +import Pos.Chain.Block.Union (HeaderHash) import Pos.Core (ChainDifficulty, Coin, ScriptVersion, StakeholderId, mkCoin) -import Pos.Core.Block (HeaderHash) import Pos.Core.Slotting (EpochIndex, SlotId, SlottingData) import Pos.Core.Update (ApplicationName, BlockVersion, BlockVersionModifier (..), NumSoftwareVersion, diff --git a/chain/test/Test/Pos/Chain/Block/Arbitrary.hs b/chain/test/Test/Pos/Chain/Block/Arbitrary.hs index 9251595ecdc..151d226e316 100644 --- a/chain/test/Test/Pos/Chain/Block/Arbitrary.hs +++ b/chain/test/Test/Pos/Chain/Block/Arbitrary.hs @@ -30,13 +30,12 @@ import Test.QuickCheck.Arbitrary.Generic (genericArbitrary, genericShrink) import Pos.Binary.Class (biSize) +import Pos.Chain.Block (HeaderHash) import qualified Pos.Chain.Block as Block import Pos.Core (GenesisHash (..), HasGenesisHash, HasProtocolConstants, epochSlots, genesisHash) import qualified Pos.Core as Core import Pos.Core.Attributes (areAttributesKnown) -import Pos.Core.Block (HeaderHash) -import qualified Pos.Core.Block as Block import qualified Pos.Core.Delegation as Core import Pos.Crypto (ProtocolMagic, PublicKey, SecretKey, createPsk, hash, toPublic) diff --git a/chain/test/Test/Pos/Chain/Block/Arbitrary/Generate.hs b/chain/test/Test/Pos/Chain/Block/Arbitrary/Generate.hs index 93c016d31e9..08791db8e5f 100644 --- a/chain/test/Test/Pos/Chain/Block/Arbitrary/Generate.hs +++ b/chain/test/Test/Pos/Chain/Block/Arbitrary/Generate.hs @@ -13,9 +13,9 @@ import Test.QuickCheck (arbitrary) import qualified Test.QuickCheck.Gen as QC import qualified Test.QuickCheck.Random as QC +import Pos.Chain.Block (MainBlock) import Pos.Core (HasGenesisHash, HasProtocolConstants, ProtocolConstants, ProtocolMagic) -import Pos.Core.Block (MainBlock) -- Also brings in the 'Arbitrary' instance for 'MainBlock'. import Test.Pos.Chain.Block.Arbitrary (genMainBlock) diff --git a/chain/test/Test/Pos/Chain/Block/Bi.hs b/chain/test/Test/Pos/Chain/Block/Bi.hs new file mode 100644 index 00000000000..c5d0184bd9c --- /dev/null +++ b/chain/test/Test/Pos/Chain/Block/Bi.hs @@ -0,0 +1,308 @@ +module Test.Pos.Chain.Block.Bi + ( tests + ) where + +import Universum + +import Data.Coerce (coerce) +import Data.List ((!!)) +import Hedgehog (Property) +import qualified Hedgehog as H + +import Pos.Chain.Block (BlockHeader (..), BlockHeaderAttributes, + BlockSignature (..), GenesisBlockHeader, GenesisBody (..), + GenesisConsensusData (..), GenesisProof (..), HeaderHash, + MainBlockHeader, MainBody (..), MainConsensusData (..), + MainExtraBodyData (..), MainExtraHeaderData (..), + MainProof (..), MainToSign (..), mkGenesisHeader, + mkMainHeaderExplicit) +import Pos.Core (EpochIndex (..), ProtocolMagic (..)) +import Pos.Core.Attributes (mkAttributes) +import Pos.Core.Configuration (GenesisHash (..)) +import Pos.Core.Delegation (DlgPayload (..)) +import Pos.Crypto (Hash, SignTag (..), abstractHash, createPsk, hash, + proxySign, sign, toPublic) + +import Test.Pos.Binary.Helpers.GoldenRoundTrip (goldenTestBi, + roundTripsBiBuildable, roundTripsBiShow) +import Test.Pos.Chain.Block.Gen +import Test.Pos.Core.Bi (exampleBlockVersion, exampleChainDifficulty, + exampleEpochIndex, exampleLightDlgIndices, + examplePublicKey, exampleSecretKey, exampleSecretKeys, + exampleSlotId, exampleSlotLeaders, exampleSoftwareVersion, + exampleSscPayload, exampleSscProof, exampleTxPayload, + exampleTxProof, exampleUpdatePayload, exampleUpdateProof, + feedPM, feedPMC, staticHeavyDlgIndexes, + staticProxySKHeavys) +import Test.Pos.Util.Golden (discoverGolden, eachOf) +import Test.Pos.Util.Tripping (discoverRoundTrip) + +-------------------------------------------------------------------------------- +-- BlockBodyAttributes +-------------------------------------------------------------------------------- +golden_BlockBodyAttributes :: Property +golden_BlockBodyAttributes = goldenTestBi bba "test/golden/BlockBodyAttributes" + where + bba = mkAttributes () + +roundTripBlockBodyAttributesBi :: Property +roundTripBlockBodyAttributesBi = eachOf 1000 genBlockBodyAttributes roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- BlockHeader +-------------------------------------------------------------------------------- +golden_BlockHeader_Genesis :: Property +golden_BlockHeader_Genesis = + goldenTestBi exampleBlockHeaderGenesis "test/golden/BlockHeader_Genesis" + +-- We use `Nothing` as the ProxySKBlockInfo to avoid clashing key errors +-- (since we use example keys which aren't related to each other) +golden_BlockHeaderMain :: Property +golden_BlockHeaderMain = + goldenTestBi exampleBlockHeaderMain "test/golden/BlockHeaderMain" + +roundTripBlockHeaderBi :: Property +roundTripBlockHeaderBi = eachOf 10 (feedPMC genBlockHeader) roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- BlockHeaderAttributes +-------------------------------------------------------------------------------- +golden_BlockHeaderAttributes :: Property +golden_BlockHeaderAttributes = goldenTestBi (mkAttributes () :: BlockHeaderAttributes) + "test/golden/BlockHeaderAttributes" + +roundTripBlockHeaderAttributesBi :: Property +roundTripBlockHeaderAttributesBi = eachOf 1000 genBlockHeaderAttributes roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- BlockSignature +-------------------------------------------------------------------------------- +golden_BlockSignature :: Property +golden_BlockSignature = goldenTestBi exampleBlockSignature "test/golden/BlockSignature" + +golden_BlockSignature_Light :: Property +golden_BlockSignature_Light = + goldenTestBi exampleBlockPSignatureLight "test/golden/BlockSignature_Light" + +golden_BlockSignature_Heavy :: Property +golden_BlockSignature_Heavy = + goldenTestBi exampleBlockPSignatureHeavy "test/golden/BlockSignature_Heavy" + +roundTripBlockSignatureBi :: Property +roundTripBlockSignatureBi = eachOf 10 (feedPMC genBlockSignature) roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- GenesisBlockHeader +-------------------------------------------------------------------------------- +golden_GenesisBlockHeader :: Property +golden_GenesisBlockHeader = goldenTestBi exampleGenesisBlockHeader + "test/golden/GenesisBlockHeader" + +roundTripGenesisBlockHeaderBi :: Property +roundTripGenesisBlockHeaderBi = eachOf 1000 (feedPM genGenesisBlockHeader) roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- GenesisBody +-------------------------------------------------------------------------------- +golden_GenesisBody :: Property +golden_GenesisBody = goldenTestBi exampleGenesisBody "test/golden/GenesisBody" + +roundTripGenesisBodyBi :: Property +roundTripGenesisBodyBi = eachOf 1000 genGenesisBody roundTripsBiShow + +-------------------------------------------------------------------------------- +-- GenesisConsensusData +-------------------------------------------------------------------------------- +golden_GenesisConsensusData :: Property +golden_GenesisConsensusData = goldenTestBi cd "test/golden/GenesisConsensusData" + where cd = GenesisConsensusData exampleEpochIndex exampleChainDifficulty + +roundTripGenesisConsensusDataBi :: Property +roundTripGenesisConsensusDataBi = eachOf 1000 genGenesisConsensusData roundTripsBiShow + +-------------------------------------------------------------------------------- +-- HeaderHash +-------------------------------------------------------------------------------- +golden_HeaderHash :: Property +golden_HeaderHash = goldenTestBi exampleHeaderHash "test/golden/HeaderHash" + +roundTripHeaderHashBi :: Property +roundTripHeaderHashBi = eachOf 1000 genHeaderHash roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- GenesisProof +-------------------------------------------------------------------------------- +golden_GenesisProof :: Property +golden_GenesisProof = goldenTestBi gp "test/golden/GenesisProof" + where gp = GenesisProof (abstractHash exampleSlotLeaders) + +roundTripGenesisProofBi :: Property +roundTripGenesisProofBi = eachOf 1000 genGenesisProof roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- MainBlockHeader +-------------------------------------------------------------------------------- +golden_MainBlockHeader :: Property +golden_MainBlockHeader = goldenTestBi exampleMainBlockHeader "test/golden/MainBlockHeader" + +roundTripMainBlockHeaderBi :: Property +roundTripMainBlockHeaderBi = eachOf 20 (feedPMC genMainBlockHeader) roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- MainBody +-------------------------------------------------------------------------------- +golden_MainBody :: Property +golden_MainBody = goldenTestBi exampleMainBody "test/golden/MainBody" + +roundTripMainBodyBi :: Property +roundTripMainBodyBi = eachOf 20 (feedPM genMainBody) roundTripsBiShow + +-------------------------------------------------------------------------------- +-- MainConsensusData +-------------------------------------------------------------------------------- +golden_MainConsensusData :: Property +golden_MainConsensusData = goldenTestBi mcd "test/golden/MainConsensusData" + where mcd = MainConsensusData exampleSlotId examplePublicKey + exampleChainDifficulty exampleBlockSignature + +roundTripMainConsensusData :: Property +roundTripMainConsensusData = eachOf 20 (feedPMC genMainConsensusData) roundTripsBiShow + +-------------------------------------------------------------------------------- +-- MainExtraBodyData +-------------------------------------------------------------------------------- +golden_MainExtraBodyData :: Property +golden_MainExtraBodyData = goldenTestBi mebd "test/golden/MainExtraBodyData" + where mebd = MainExtraBodyData (mkAttributes ()) + +roundTripMainExtraBodyDataBi :: Property +roundTripMainExtraBodyDataBi = eachOf 1000 genMainExtraBodyData roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- MainExtraHeaderData +-------------------------------------------------------------------------------- +golden_MainExtraHeaderData :: Property +golden_MainExtraHeaderData = goldenTestBi exampleMainExtraHeaderData + "test/golden/MainExtraHeaderData" + +roundTripMainExtraHeaderDataBi :: Property +roundTripMainExtraHeaderDataBi = eachOf 1000 genMainExtraHeaderData roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- MainProof +-------------------------------------------------------------------------------- +golden_MainProof :: Property +golden_MainProof = goldenTestBi exampleMainProof "test/golden/MainProof" + +roundTripMainProofBi :: Property +roundTripMainProofBi = eachOf 20 (feedPM genMainProof) roundTripsBiBuildable + +-------------------------------------------------------------------------------- +-- MainToSign +-------------------------------------------------------------------------------- +golden_MainToSign :: Property +golden_MainToSign = goldenTestBi exampleMainToSign "test/golden/MainToSign" + +roundTripMainToSignBi :: Property +roundTripMainToSignBi = eachOf 20 (feedPMC genMainToSign) roundTripsBiShow + +-------------------------------------------------------------------------------- +-- Example golden datatypes +-------------------------------------------------------------------------------- + +exampleBlockHeaderGenesis :: BlockHeader +exampleBlockHeaderGenesis = (BlockHeaderGenesis exampleGenesisBlockHeader) + +exampleBlockHeaderMain :: MainBlockHeader +exampleBlockHeaderMain = + mkMainHeaderExplicit (ProtocolMagic 0) exampleHeaderHash + exampleChainDifficulty exampleSlotId + exampleSecretKey Nothing + exampleMainBody exampleMainExtraHeaderData + +exampleBlockSignature :: BlockSignature +exampleBlockSignature = BlockSignature (sign (ProtocolMagic 7) + SignMainBlock + exampleSecretKey + exampleMainToSign) + +exampleBlockPSignatureLight :: BlockSignature +exampleBlockPSignatureLight = BlockPSignatureLight sig + where + sig = proxySign pm SignProxySK delegateSk psk exampleMainToSign + [delegateSk, issuerSk] = exampleSecretKeys 5 2 + psk = createPsk pm issuerSk (toPublic delegateSk) exampleLightDlgIndices + pm = ProtocolMagic 2 + +exampleBlockPSignatureHeavy :: BlockSignature +exampleBlockPSignatureHeavy = BlockPSignatureHeavy sig + where + sig = proxySign pm SignProxySK delegateSk psk exampleMainToSign + [delegateSk, issuerSk] = exampleSecretKeys 5 2 + psk = createPsk pm issuerSk (toPublic delegateSk) (staticHeavyDlgIndexes !! 0) + pm = ProtocolMagic 2 + +exampleMainConsensusData :: MainConsensusData +exampleMainConsensusData = MainConsensusData exampleSlotId + examplePublicKey + exampleChainDifficulty + exampleBlockSignature + +exampleMainExtraHeaderData :: MainExtraHeaderData +exampleMainExtraHeaderData = + MainExtraHeaderData exampleBlockVersion + exampleSoftwareVersion + (mkAttributes ()) + (abstractHash (MainExtraBodyData (mkAttributes ()))) + +exampleGenesisBlockHeader :: GenesisBlockHeader +exampleGenesisBlockHeader = mkGenesisHeader (ProtocolMagic 0) + (Left (GenesisHash prevHash)) + (EpochIndex 11) + exampleGenesisBody + where + prevHash = coerce (hash ("genesisHash" :: Text)) :: Hash a + +-- We use `Nothing` as the ProxySKBlockInfo to avoid clashing key errors +-- (since we use example keys which aren't related to each other) +exampleMainBlockHeader :: MainBlockHeader +exampleMainBlockHeader = mkMainHeaderExplicit (ProtocolMagic 7) + exampleHeaderHash + exampleChainDifficulty + exampleSlotId + exampleSecretKey + Nothing + exampleMainBody + exampleMainExtraHeaderData + +exampleMainProof :: MainProof +exampleMainProof = MainProof exampleTxProof exampleSscProof + (abstractHash dp) exampleUpdateProof + where + dp = UnsafeDlgPayload (take 4 staticProxySKHeavys) + +exampleHeaderHash :: HeaderHash +exampleHeaderHash = coerce (hash ("HeaderHash" :: Text)) + +exampleGenesisBody :: GenesisBody +exampleGenesisBody = GenesisBody exampleSlotLeaders + +exampleMainBody :: MainBody +exampleMainBody = MainBody exampleTxPayload exampleSscPayload + dp exampleUpdatePayload + where + dp = UnsafeDlgPayload (take 4 staticProxySKHeavys) + +exampleMainToSign :: MainToSign +exampleMainToSign = MainToSign (abstractHash (BlockHeaderGenesis exampleGenesisBlockHeader)) + exampleMainProof exampleSlotId exampleChainDifficulty exampleMainExtraHeaderData + +----------------------------------------------------------------------- +-- Main test export +----------------------------------------------------------------------- + +tests :: IO Bool +tests = and <$> sequence + [ H.checkSequential $$discoverGolden + , H.checkParallel $$discoverRoundTrip + ] diff --git a/chain/test/Test/Pos/Chain/Block/BlockSpec.hs b/chain/test/Test/Pos/Chain/Block/BlockSpec.hs index 3aae1cbd3ac..a4eceede441 100644 --- a/chain/test/Test/Pos/Chain/Block/BlockSpec.hs +++ b/chain/test/Test/Pos/Chain/Block/BlockSpec.hs @@ -18,17 +18,17 @@ import Test.Hspec.QuickCheck (modifyMaxSuccess, prop) import Test.QuickCheck (Property, (===), (==>)) import Pos.Binary.Class (Bi) -import qualified Pos.Chain.Block as Block -import Pos.Core (EpochIndex (..), GenesisHash (..), HasConfiguration, - SlotId (..), difficultyL, genesisHash) -import Pos.Core.Attributes (mkAttributes) -import Pos.Core.Block (BlockHeader (..), BlockSignature (..), +import Pos.Chain.Block (BlockHeader (..), BlockSignature (..), GenericBlockHeader (..), GenesisBlockchain, GenesisBody (..), GenesisConsensusData (..), GenesisExtraHeaderData (..), MainBlockchain, MainBody (..), MainConsensusData (..), MainExtraHeaderData (..), MainToSign (..), headerHash, mkBodyProof, mkGenericHeader, mkGenesisHeader) +import qualified Pos.Chain.Block as Block +import Pos.Core (EpochIndex (..), GenesisHash (..), HasConfiguration, + SlotId (..), difficultyL, genesisHash) +import Pos.Core.Attributes (mkAttributes) import Pos.Core.Chrono (NewestFirst (..)) import Pos.Core.Configuration (defaultCoreConfiguration, withGenesisSpec) diff --git a/chain/test/Test/Pos/Chain/Block/CborSpec.hs b/chain/test/Test/Pos/Chain/Block/CborSpec.hs index 1adc331258e..fb5424e5e52 100644 --- a/chain/test/Test/Pos/Chain/Block/CborSpec.hs +++ b/chain/test/Test/Pos/Chain/Block/CborSpec.hs @@ -9,7 +9,7 @@ import Universum import Test.Hspec (Spec, describe) import Test.Hspec.QuickCheck (modifyMaxSuccess) -import qualified Pos.Core.Block as Core +import qualified Pos.Chain.Block as Core import Pos.Core.Configuration (defaultCoreConfiguration, withGenesisSpec) diff --git a/chain/test/Test/Pos/Chain/Block/Gen.hs b/chain/test/Test/Pos/Chain/Block/Gen.hs new file mode 100644 index 00000000000..9ae52263a2d --- /dev/null +++ b/chain/test/Test/Pos/Chain/Block/Gen.hs @@ -0,0 +1,154 @@ +module Test.Pos.Chain.Block.Gen + ( genBlockBodyAttributes + , genBlockHeader + , genBlockHeaderAttributes + , genBlockSignature + , genGenesisBlockHeader + , genGenesisBody + , genGenesisConsensusData + , genGenesisProof + , genHeaderHash + , genMainBlockHeader + , genMainBody + , genMainConsensusData + , genMainExtraBodyData + , genMainExtraHeaderData + , genMainProof + , genMainToSign + ) where + +import Universum + +import Data.Coerce (coerce) +import Hedgehog (Gen) +import qualified Hedgehog.Gen as Gen + +import Pos.Chain.Block (BlockBodyAttributes, BlockHeader (..), + BlockHeaderAttributes, BlockSignature (..), + GenesisBlockHeader, GenesisBody (..), + GenesisConsensusData (..), GenesisExtraHeaderData (..), + GenesisProof (..), HeaderHash, MainBlockHeader, + MainBody (..), MainConsensusData (..), + MainExtraBodyData (..), MainExtraHeaderData (..), + MainProof (..), MainToSign (..), mkGenericHeader, + mkMainHeaderExplicit) +import Pos.Core (ProtocolConstants, ProtocolMagic) +import Pos.Core.Attributes (mkAttributes) + +import Test.Pos.Core.Gen (genBlockVersion, genChainDifficulty, + genDlgPayload, genEpochIndex, genHeavyDlgIndex, + genLightDlgIndices, genSlotId, genSlotLeaders, + genSoftwareVersion, genSscPayload, genSscProof, + genTextHash, genTxPayload, genTxProof, genUpdatePayload, + genUpdateProof) +import Test.Pos.Crypto.Gen (genAbstractHash, genProxySignature, + genPublicKey, genSecretKey, genSignature) + +genBlockBodyAttributes :: Gen BlockBodyAttributes +genBlockBodyAttributes = pure $ mkAttributes () + +genBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen BlockHeader +genBlockHeader pm pc = + Gen.choice [ BlockHeaderGenesis <$> genGenesisBlockHeader pm + , BlockHeaderMain <$> genMainBlockHeader pm pc + ] + +genBlockHeaderAttributes :: Gen BlockHeaderAttributes +genBlockHeaderAttributes = pure $ mkAttributes () + +genBlockSignature :: ProtocolMagic -> ProtocolConstants -> Gen BlockSignature +genBlockSignature pm pc = do + Gen.choice + [ BlockSignature + <$> genSignature pm mts + , BlockPSignatureLight + <$> genProxySignature pm mts genLightDlgIndices + , BlockPSignatureHeavy + <$> genProxySignature pm mts genHeavyDlgIndex + ] + where + mts = genMainToSign pm pc + +genGenesisBlockHeader :: ProtocolMagic -> Gen GenesisBlockHeader +genGenesisBlockHeader pm = do + epoch <- genEpochIndex + body <- genGenesisBody + prevHash <- coerce <$> genTextHash + difficulty <- genChainDifficulty + let consensus = const (GenesisConsensusData {_gcdEpoch = epoch + ,_gcdDifficulty = difficulty}) + gehd = GenesisExtraHeaderData $ mkAttributes () + pure (mkGenericHeader pm prevHash body consensus gehd) + +genGenesisBody :: Gen GenesisBody +genGenesisBody = GenesisBody <$> genSlotLeaders + +genGenesisConsensusData :: Gen GenesisConsensusData +genGenesisConsensusData = + GenesisConsensusData + <$> genEpochIndex + <*> genChainDifficulty + +genHeaderHash :: Gen HeaderHash +genHeaderHash = coerce <$> genTextHash + +genGenesisProof :: Gen GenesisProof +genGenesisProof = GenesisProof <$> genAbstractHash genSlotLeaders + +genMainBody :: ProtocolMagic -> Gen MainBody +genMainBody pm = + MainBody + <$> genTxPayload pm + <*> genSscPayload pm + <*> genDlgPayload pm + <*> genUpdatePayload pm + +-- We use `Nothing` as the ProxySKBlockInfo to avoid clashing key errors +-- (since we use example keys which aren't related to each other) +genMainBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen MainBlockHeader +genMainBlockHeader pm pc = + mkMainHeaderExplicit pm + <$> genHeaderHash + <*> genChainDifficulty + <*> genSlotId pc + <*> genSecretKey + <*> pure Nothing + <*> genMainBody pm + <*> genMainExtraHeaderData + +genMainConsensusData :: ProtocolMagic -> ProtocolConstants -> Gen MainConsensusData +genMainConsensusData pm pc = + MainConsensusData + <$> genSlotId pc + <*> genPublicKey + <*> genChainDifficulty + <*> genBlockSignature pm pc + + +genMainExtraBodyData :: Gen MainExtraBodyData +genMainExtraBodyData = MainExtraBodyData <$> genBlockBodyAttributes + +genMainExtraHeaderData :: Gen MainExtraHeaderData +genMainExtraHeaderData = + MainExtraHeaderData + <$> genBlockVersion + <*> genSoftwareVersion + <*> genBlockHeaderAttributes + <*> genAbstractHash genMainExtraBodyData + +genMainProof :: ProtocolMagic -> Gen MainProof +genMainProof pm = + MainProof + <$> genTxProof pm + <*> genSscProof pm + <*> genAbstractHash (genDlgPayload pm) + <*> genUpdateProof pm + +genMainToSign :: ProtocolMagic -> ProtocolConstants -> Gen MainToSign +genMainToSign pm pc = + MainToSign + <$> genAbstractHash (genBlockHeader pm pc) + <*> genMainProof pm + <*> genSlotId pc + <*> genChainDifficulty + <*> genMainExtraHeaderData diff --git a/chain/test/Test/Pos/Chain/Block/SafeCopySpec.hs b/chain/test/Test/Pos/Chain/Block/SafeCopySpec.hs index 34e9ada4227..0273e3e589d 100644 --- a/chain/test/Test/Pos/Chain/Block/SafeCopySpec.hs +++ b/chain/test/Test/Pos/Chain/Block/SafeCopySpec.hs @@ -9,7 +9,7 @@ module Test.Pos.Chain.Block.SafeCopySpec import Test.Hspec (Spec, describe) import Universum -import qualified Pos.Core.Block as Core +import qualified Pos.Chain.Block as Core import Pos.Core.Configuration (defaultCoreConfiguration, withGenesisSpec) diff --git a/chain/test/cardano-sl-chain-test.cabal b/chain/test/cardano-sl-chain-test.cabal index d33ea3b04c7..0a8e1c2ba41 100644 --- a/chain/test/cardano-sl-chain-test.cabal +++ b/chain/test/cardano-sl-chain-test.cabal @@ -14,6 +14,8 @@ cabal-version: >=1.10 library exposed-modules: Test.Pos.Chain.Block.Arbitrary Test.Pos.Chain.Block.Arbitrary.Generate + Test.Pos.Chain.Block.Bi + Test.Pos.Chain.Block.Gen Test.Pos.Chain.Delegation.Arbitrary Test.Pos.Chain.Lrc.Arbitrary Test.Pos.Chain.Ssc.Arbitrary @@ -26,6 +28,7 @@ library build-depends: base , bytestring , cardano-crypto + , cardano-sl-binary-test , cardano-sl-binary , cardano-sl-chain , cardano-sl-core diff --git a/core/test/golden/BlockBodyAttributes b/chain/test/golden/BlockBodyAttributes similarity index 100% rename from core/test/golden/BlockBodyAttributes rename to chain/test/golden/BlockBodyAttributes diff --git a/core/test/golden/BlockHeaderAttributes b/chain/test/golden/BlockHeaderAttributes similarity index 100% rename from core/test/golden/BlockHeaderAttributes rename to chain/test/golden/BlockHeaderAttributes diff --git a/core/test/golden/BlockHeaderMain b/chain/test/golden/BlockHeaderMain similarity index 100% rename from core/test/golden/BlockHeaderMain rename to chain/test/golden/BlockHeaderMain diff --git a/core/test/golden/BlockHeader_Genesis b/chain/test/golden/BlockHeader_Genesis similarity index 100% rename from core/test/golden/BlockHeader_Genesis rename to chain/test/golden/BlockHeader_Genesis diff --git a/core/test/golden/BlockSignature b/chain/test/golden/BlockSignature similarity index 100% rename from core/test/golden/BlockSignature rename to chain/test/golden/BlockSignature diff --git a/core/test/golden/BlockSignature_Heavy b/chain/test/golden/BlockSignature_Heavy similarity index 100% rename from core/test/golden/BlockSignature_Heavy rename to chain/test/golden/BlockSignature_Heavy diff --git a/core/test/golden/BlockSignature_Light b/chain/test/golden/BlockSignature_Light similarity index 100% rename from core/test/golden/BlockSignature_Light rename to chain/test/golden/BlockSignature_Light diff --git a/core/test/golden/GenesisBlockHeader b/chain/test/golden/GenesisBlockHeader similarity index 100% rename from core/test/golden/GenesisBlockHeader rename to chain/test/golden/GenesisBlockHeader diff --git a/core/test/golden/GenesisBody b/chain/test/golden/GenesisBody similarity index 100% rename from core/test/golden/GenesisBody rename to chain/test/golden/GenesisBody diff --git a/core/test/golden/GenesisConsensusData b/chain/test/golden/GenesisConsensusData similarity index 100% rename from core/test/golden/GenesisConsensusData rename to chain/test/golden/GenesisConsensusData diff --git a/core/test/golden/GenesisProof b/chain/test/golden/GenesisProof similarity index 100% rename from core/test/golden/GenesisProof rename to chain/test/golden/GenesisProof diff --git a/core/test/golden/HeaderHash b/chain/test/golden/HeaderHash similarity index 100% rename from core/test/golden/HeaderHash rename to chain/test/golden/HeaderHash diff --git a/core/test/golden/MainBlockHeader b/chain/test/golden/MainBlockHeader similarity index 100% rename from core/test/golden/MainBlockHeader rename to chain/test/golden/MainBlockHeader diff --git a/core/test/golden/MainBody b/chain/test/golden/MainBody similarity index 100% rename from core/test/golden/MainBody rename to chain/test/golden/MainBody diff --git a/core/test/golden/MainConsensusData b/chain/test/golden/MainConsensusData similarity index 100% rename from core/test/golden/MainConsensusData rename to chain/test/golden/MainConsensusData diff --git a/core/test/golden/MainExtraBodyData b/chain/test/golden/MainExtraBodyData similarity index 100% rename from core/test/golden/MainExtraBodyData rename to chain/test/golden/MainExtraBodyData diff --git a/core/test/golden/MainExtraHeaderData b/chain/test/golden/MainExtraHeaderData similarity index 100% rename from core/test/golden/MainExtraHeaderData rename to chain/test/golden/MainExtraHeaderData diff --git a/core/test/golden/MainProof b/chain/test/golden/MainProof similarity index 100% rename from core/test/golden/MainProof rename to chain/test/golden/MainProof diff --git a/core/test/golden/MainToSign b/chain/test/golden/MainToSign similarity index 100% rename from core/test/golden/MainToSign rename to chain/test/golden/MainToSign diff --git a/chain/test/test.hs b/chain/test/test.hs index 2aae70a4b6b..9252be9c6ee 100644 --- a/chain/test/test.hs +++ b/chain/test/test.hs @@ -5,11 +5,13 @@ import Test.Hspec (hspec) import Spec (spec) import Test.Pos.Binary.Helpers (runTests) +import qualified Test.Pos.Chain.Block.Bi import qualified Test.Pos.Chain.Ssc.Json main :: IO () main = do hspec spec runTests - [ Test.Pos.Chain.Ssc.Json.tests + [ Test.Pos.Chain.Block.Bi.tests + , Test.Pos.Chain.Ssc.Json.tests ] diff --git a/client/src/Pos/Client/Txp/History.hs b/client/src/Pos/Client/Txp/History.hs index 84dfb4baff7..aef7da679d2 100644 --- a/client/src/Pos/Client/Txp/History.hs +++ b/client/src/Pos/Client/Txp/History.hs @@ -36,6 +36,8 @@ import qualified Formatting.Buildable import Serokell.Util.Text (listJson) import System.Wlog (WithLogger) +import Pos.Chain.Block (Block, MainBlock, genesisBlock0, headerHash, + mainBlockSlot, mainBlockTxPayload) import Pos.Chain.Lrc (genesisLeaders) import Pos.Chain.Txp (ToilVerFailure, Tx (..), TxAux (..), TxId, TxOut, TxOutAux (..), TxWitness, TxpConfiguration, @@ -46,9 +48,6 @@ import Pos.Chain.Txp (ToilVerFailure, Tx (..), TxAux (..), TxId, import Pos.Core (Address, ChainDifficulty, GenesisHash (..), HasConfiguration, Timestamp (..), difficultyL, epochSlots, genesisHash) -import Pos.Core.Block (Block, MainBlock, headerHash, mainBlockSlot, - mainBlockTxPayload) -import Pos.Core.Block.Constructors (genesisBlock0) import Pos.Core.JsonLog (CanJsonLog (..)) import Pos.Crypto (ProtocolMagic, WithHash (..), withHash) import Pos.DB (MonadDBRead, MonadGState) diff --git a/core/cardano-sl-core.cabal b/core/cardano-sl-core.cabal index f095e45a70a..83df816c7a9 100644 --- a/core/cardano-sl-core.cabal +++ b/core/cardano-sl-core.cabal @@ -29,13 +29,6 @@ library Pos.Core.NetworkAddress - Pos.Core.Block - Pos.Core.Block.Blockchain - Pos.Core.Block.Genesis - Pos.Core.Block.Main - Pos.Core.Block.Union - Pos.Core.Block.Constructors - Pos.Core.Common Pos.Core.Configuration Pos.Core.Constants @@ -61,7 +54,6 @@ library Pos.Core.Script Pos.Core.Slotting - Pos.Core.StateLock Pos.Core.Ssc Pos.Core.Txp Pos.Core.Update @@ -82,15 +74,6 @@ library -- Binary Pos.Core.Binary.Orphans - -- Block - Pos.Core.Block.Genesis.Lens - Pos.Core.Block.Genesis.Instances - Pos.Core.Block.Genesis.Types - Pos.Core.Block.Main.Instances - Pos.Core.Block.Main.Types - Pos.Core.Block.Union.ComponentBlock - Pos.Core.Block.Union.Types - -- Common Pos.Core.Common.AddrAttributes Pos.Core.Common.Address diff --git a/core/src/Pos/Core/Block.hs b/core/src/Pos/Core/Block.hs deleted file mode 100644 index 1ea2e2eba43..00000000000 --- a/core/src/Pos/Core/Block.hs +++ /dev/null @@ -1,14 +0,0 @@ --- | Reexport module -module Pos.Core.Block - ( module Pos.Core.Block.Union - , module Pos.Core.Block.Main - , module Pos.Core.Block.Genesis - , module Pos.Core.Block.Blockchain - , module Pos.Core.Block.Constructors - ) where - -import Pos.Core.Block.Blockchain -import Pos.Core.Block.Constructors -import Pos.Core.Block.Genesis -import Pos.Core.Block.Main -import Pos.Core.Block.Union diff --git a/core/src/Pos/Core/Block/Genesis.hs b/core/src/Pos/Core/Block/Genesis.hs deleted file mode 100644 index 146d15ad516..00000000000 --- a/core/src/Pos/Core/Block/Genesis.hs +++ /dev/null @@ -1,12 +0,0 @@ -{-# OPTIONS_GHC -Wno-unused-imports #-} -{-# OPTIONS_GHC -Wno-dodgy-exports #-} - -module Pos.Core.Block.Genesis - ( module Pos.Core.Block.Genesis.Instances - , module Pos.Core.Block.Genesis.Lens - , module Pos.Core.Block.Genesis.Types - ) where - -import Pos.Core.Block.Genesis.Instances -import Pos.Core.Block.Genesis.Lens -import Pos.Core.Block.Genesis.Types diff --git a/core/src/Pos/Core/Block/Main.hs b/core/src/Pos/Core/Block/Main.hs deleted file mode 100644 index a20fab357c4..00000000000 --- a/core/src/Pos/Core/Block/Main.hs +++ /dev/null @@ -1,10 +0,0 @@ -{-# OPTIONS_GHC -Wno-unused-imports #-} -{-# OPTIONS_GHC -Wno-dodgy-exports #-} - -module Pos.Core.Block.Main - ( module Pos.Core.Block.Main.Instances - , module Pos.Core.Block.Main.Types - ) where - -import Pos.Core.Block.Main.Instances -import Pos.Core.Block.Main.Types diff --git a/core/src/Pos/Core/Block/Union.hs b/core/src/Pos/Core/Block/Union.hs deleted file mode 100644 index 0acc1f5b3be..00000000000 --- a/core/src/Pos/Core/Block/Union.hs +++ /dev/null @@ -1,7 +0,0 @@ -module Pos.Core.Block.Union - ( module Pos.Core.Block.Union.ComponentBlock - , module Pos.Core.Block.Union.Types - ) where - -import Pos.Core.Block.Union.ComponentBlock -import Pos.Core.Block.Union.Types diff --git a/core/src/Pos/Core/JsonLog/LogEvents.hs b/core/src/Pos/Core/JsonLog/LogEvents.hs index d1b2a3dcc31..a1a1d03b263 100644 --- a/core/src/Pos/Core/JsonLog/LogEvents.hs +++ b/core/src/Pos/Core/JsonLog/LogEvents.hs @@ -21,8 +21,6 @@ module Pos.Core.JsonLog.LogEvents , JsonLogConfig (..) , MemPoolModifyReason (..) , appendJL - , jlAdoptedBlock - , jlCreatedBlock , jsonLogConfigFromHandle , jsonLogDefault , fromJLSlotId @@ -40,19 +38,12 @@ import Data.Aeson.TH (deriveJSON) import Data.Aeson.Types (typeMismatch) import qualified Data.ByteString.Lazy as LBS import qualified Data.HashMap.Strict as HMS -import Formatting (sformat) import System.Wlog (WithLogger) import Pos.Core (EpochIndex (..), HasConfiguration, SlotId (..), - getSlotIndex, mkLocalSlotIndex) -import Pos.Core.Block (Block, HeaderHash, gbHeader, gbhPrevBlock, - headerHash, headerHashF, mainBlockTxPayload) -import Pos.Core.Block.Genesis (genBlockEpoch) -import Pos.Core.Block.Union (mainBlockSlot) + mkLocalSlotIndex) import Pos.Core.JsonLog.JsonLogT (JsonLogConfig (..)) import qualified Pos.Core.JsonLog.JsonLogT as JL -import Pos.Core.Txp (txpTxs) -import Pos.Crypto (hash, hashHexF) import Pos.Util.Util (realTime) type BlockId = Text @@ -194,40 +185,12 @@ fromJLSlotIdUnsafe x = case fromJLSlotId x of Right y -> y Left _ -> error "illegal slot id" --- | Return event of created block. -jlCreatedBlock :: HasConfiguration => Block -> JLEvent -jlCreatedBlock block = JLCreatedBlock $ JLBlock {..} - where - jlHash = showHeaderHash $ headerHash block - jlPrevBlock = showHeaderHash $ case block of - Left gB -> view gbhPrevBlock (gB ^. gbHeader) - Right mB -> view gbhPrevBlock (mB ^. gbHeader) - jlSlot = (getEpochIndex $ siEpoch slot, getSlotIndex $ siSlot slot) - jlTxs = case block of - Left _ -> [] - Right mB -> map fromTx . toList $ mB ^. mainBlockTxPayload . txpTxs - slot :: SlotId - slot = case block of - Left gB -> let slotZero = case mkLocalSlotIndex 0 of - Right sz -> sz - Left _ -> error "impossible branch" - in SlotId (gB ^. genBlockEpoch) slotZero - Right mB -> mB ^. mainBlockSlot - fromTx = sformat hashHexF . hash - -showHeaderHash :: HeaderHash -> Text -showHeaderHash = sformat headerHashF - -- | Append event into log by given 'FilePath'. appendJL :: (MonadIO m) => FilePath -> JLEvent -> m () appendJL path ev = liftIO $ do time <- realTime -- TODO: Do we want to mock time in logs? LBS.appendFile path . encode $ JLTimedEvent (fromIntegral time) ev --- | Returns event of created 'Block'. -jlAdoptedBlock :: Block -> JLEvent -jlAdoptedBlock = JLAdoptedBlock . showHeaderHash . headerHash - jsonLogConfigFromHandle :: MonadIO m => Handle -> m JsonLogConfig jsonLogConfigFromHandle h = do v <- newMVar h diff --git a/core/test/Test/Pos/Core/Bi.hs b/core/test/Test/Pos/Core/Bi.hs index d74750e54e4..2d725e8f301 100644 --- a/core/test/Test/Pos/Core/Bi.hs +++ b/core/test/Test/Pos/Core/Bi.hs @@ -1,7 +1,30 @@ {-# LANGUAGE OverloadedStrings #-} module Test.Pos.Core.Bi ( tests + + -- Example data + , exampleBlockVersion + , exampleChainDifficulty + , exampleEpochIndex + , exampleLightDlgIndices + , examplePublicKey + , exampleSecretKey + , exampleSecretKeys + , exampleSlotId + , exampleSlotLeaders + , exampleSoftwareVersion + , exampleSscPayload + , exampleSscProof + , exampleTxPayload + , exampleTxProof + , exampleUpdatePayload + , exampleUpdateProof + , staticHeavyDlgIndexes + , staticProxySKHeavys + + -- Helpers , feedPM + , feedPMC ) where import Universum @@ -27,13 +50,6 @@ import qualified Hedgehog.Gen as Gen import Pos.Binary.Class (Bi, Case (..), LengthOf, Raw (..), SizeOverride (..), asBinary, szCases) import Pos.Core.Attributes (Attributes, mkAttributes) -import Pos.Core.Block (BlockHeader (..), BlockHeaderAttributes, - BlockSignature (..), GenesisBlockHeader, GenesisBody (..), - GenesisConsensusData (..), GenesisProof (..), HeaderHash, - MainBlockHeader, MainBody (..), MainConsensusData (..), - MainExtraBodyData (..), MainExtraHeaderData (..), - MainProof (..), MainToSign (..), mkGenesisHeader, - mkMainHeaderExplicit) import Pos.Core.Common (AddrAttributes (..), AddrSpendingData (..), AddrStakeDistribution (..), AddrType (..), BlockCount (..), ChainDifficulty (..), Coeff (..), @@ -42,7 +58,6 @@ import Pos.Core.Common (AddrAttributes (..), AddrSpendingData (..), StakeholderId, StakesList, TxFeePolicy (..), TxSizeLinear (..), addressHash, makeAddress, makePubKeyAddress) -import Pos.Core.Configuration (GenesisHash (..)) import Pos.Core.Delegation (DlgPayload (..), HeavyDlgIndex (..), LightDlgIndices (..), ProxySKBlockInfo, ProxySKHeavy) import Pos.Core.Merkle (mkMerkleTree, mtRoot) @@ -73,10 +88,10 @@ import Pos.Crypto (AbstractHash (..), EncShare (..), PublicKey (..), RedeemPublicKey, RedeemSignature, SafeSigner (..), Secret (..), SecretKey (..), SecretProof (..), SignTag (..), Signature, VssKeyPair, - VssPublicKey (..), abstractHash, createPsk, decryptShare, - deterministic, deterministicVssKeyGen, hash, proxySign, + VssPublicKey (..), abstractHash, decryptShare, + deterministic, deterministicVssKeyGen, hash, redeemDeterministicKeyGen, redeemSign, safeCreatePsk, - sign, toPublic, toVssPublicKey) + sign, toVssPublicKey) import Serokell.Data.Memory.Units (Byte) @@ -90,174 +105,6 @@ import Test.Pos.Util.Golden (discoverGolden, eachOf) import Test.Pos.Util.Tripping (discoverRoundTrip) --------------------------------------------------------------------------------- --- BlockBodyAttributes --------------------------------------------------------------------------------- -golden_BlockBodyAttributes :: Property -golden_BlockBodyAttributes = goldenTestBi bba "test/golden/BlockBodyAttributes" - where - bba = mkAttributes () - -roundTripBlockBodyAttributesBi :: Property -roundTripBlockBodyAttributesBi = eachOf 1000 genBlockBodyAttributes roundTripsBiBuildable - --------------------------------------------------------------------------------- --- BlockHeader --------------------------------------------------------------------------------- -golden_BlockHeader_Genesis :: Property -golden_BlockHeader_Genesis = - goldenTestBi exampleBlockHeaderGenesis "test/golden/BlockHeader_Genesis" - --- We use `Nothing` as the ProxySKBlockInfo to avoid clashing key errors --- (since we use example keys which aren't related to each other) -golden_BlockHeaderMain :: Property -golden_BlockHeaderMain = - goldenTestBi exampleBlockHeaderMain "test/golden/BlockHeaderMain" - -roundTripBlockHeaderBi :: Property -roundTripBlockHeaderBi = eachOf 10 (feedPMC genBlockHeader) roundTripsBiBuildable - --------------------------------------------------------------------------------- --- BlockHeaderAttributes --------------------------------------------------------------------------------- -golden_BlockHeaderAttributes :: Property -golden_BlockHeaderAttributes = goldenTestBi (mkAttributes () :: BlockHeaderAttributes) - "test/golden/BlockHeaderAttributes" - -roundTripBlockHeaderAttributesBi :: Property -roundTripBlockHeaderAttributesBi = eachOf 1000 genBlockHeaderAttributes roundTripsBiBuildable - --------------------------------------------------------------------------------- --- BlockSignature --------------------------------------------------------------------------------- -golden_BlockSignature :: Property -golden_BlockSignature = goldenTestBi exampleBlockSignature "test/golden/BlockSignature" - -golden_BlockSignature_Light :: Property -golden_BlockSignature_Light = - goldenTestBi exampleBlockPSignatureLight "test/golden/BlockSignature_Light" - -golden_BlockSignature_Heavy :: Property -golden_BlockSignature_Heavy = - goldenTestBi exampleBlockPSignatureHeavy "test/golden/BlockSignature_Heavy" - -roundTripBlockSignatureBi :: Property -roundTripBlockSignatureBi = eachOf 10 (feedPMC genBlockSignature) roundTripsBiBuildable - --------------------------------------------------------------------------------- --- GenesisBlockHeader --------------------------------------------------------------------------------- -golden_GenesisBlockHeader :: Property -golden_GenesisBlockHeader = goldenTestBi exampleGenesisBlockHeader - "test/golden/GenesisBlockHeader" - -roundTripGenesisBlockHeaderBi :: Property -roundTripGenesisBlockHeaderBi = eachOf 1000 (feedPM genGenesisBlockHeader) roundTripsBiBuildable - --------------------------------------------------------------------------------- --- GenesisBody --------------------------------------------------------------------------------- -golden_GenesisBody :: Property -golden_GenesisBody = goldenTestBi exampleGenesisBody "test/golden/GenesisBody" - -roundTripGenesisBodyBi :: Property -roundTripGenesisBodyBi = eachOf 1000 genGenesisBody roundTripsBiShow - --------------------------------------------------------------------------------- --- GenesisConsensusData --------------------------------------------------------------------------------- -golden_GenesisConsensusData :: Property -golden_GenesisConsensusData = goldenTestBi cd "test/golden/GenesisConsensusData" - where cd = GenesisConsensusData exampleEpochIndex exampleChainDifficulty - -roundTripGenesisConsensusDataBi :: Property -roundTripGenesisConsensusDataBi = eachOf 1000 genGenesisConsensusData roundTripsBiShow - --------------------------------------------------------------------------------- --- HeaderHash --------------------------------------------------------------------------------- -golden_HeaderHash :: Property -golden_HeaderHash = goldenTestBi exampleHeaderHash "test/golden/HeaderHash" - -roundTripHeaderHashBi :: Property -roundTripHeaderHashBi = eachOf 1000 genHeaderHash roundTripsBiBuildable - --------------------------------------------------------------------------------- --- GenesisProof --------------------------------------------------------------------------------- -golden_GenesisProof :: Property -golden_GenesisProof = goldenTestBi gp "test/golden/GenesisProof" - where gp = GenesisProof (abstractHash exampleSlotLeaders) - -roundTripGenesisProofBi :: Property -roundTripGenesisProofBi = eachOf 1000 genGenesisProof roundTripsBiBuildable - --------------------------------------------------------------------------------- --- MainBlockHeader --------------------------------------------------------------------------------- -golden_MainBlockHeader :: Property -golden_MainBlockHeader = goldenTestBi exampleMainBlockHeader "test/golden/MainBlockHeader" - -roundTripMainBlockHeaderBi :: Property -roundTripMainBlockHeaderBi = eachOf 20 (feedPMC genMainBlockHeader) roundTripsBiBuildable - --------------------------------------------------------------------------------- --- MainBody --------------------------------------------------------------------------------- -golden_MainBody :: Property -golden_MainBody = goldenTestBi exampleMainBody "test/golden/MainBody" - -roundTripMainBodyBi :: Property -roundTripMainBodyBi = eachOf 20 (feedPM genMainBody) roundTripsBiShow - --------------------------------------------------------------------------------- --- MainConsensusData --------------------------------------------------------------------------------- -golden_MainConsensusData :: Property -golden_MainConsensusData = goldenTestBi mcd "test/golden/MainConsensusData" - where mcd = MainConsensusData exampleSlotId examplePublicKey - exampleChainDifficulty exampleBlockSignature - -roundTripMainConsensusData :: Property -roundTripMainConsensusData = eachOf 20 (feedPMC genMainConsensusData) roundTripsBiShow - --------------------------------------------------------------------------------- --- MainExtraBodyData --------------------------------------------------------------------------------- -golden_MainExtraBodyData :: Property -golden_MainExtraBodyData = goldenTestBi mebd "test/golden/MainExtraBodyData" - where mebd = MainExtraBodyData (mkAttributes ()) - -roundTripMainExtraBodyDataBi :: Property -roundTripMainExtraBodyDataBi = eachOf 1000 genMainExtraBodyData roundTripsBiBuildable - --------------------------------------------------------------------------------- --- MainExtraHeaderData --------------------------------------------------------------------------------- -golden_MainExtraHeaderData :: Property -golden_MainExtraHeaderData = goldenTestBi exampleMainExtraHeaderData - "test/golden/MainExtraHeaderData" - -roundTripMainExtraHeaderDataBi :: Property -roundTripMainExtraHeaderDataBi = eachOf 1000 genMainExtraHeaderData roundTripsBiBuildable - --------------------------------------------------------------------------------- --- MainProof --------------------------------------------------------------------------------- -golden_MainProof :: Property -golden_MainProof = goldenTestBi exampleMainProof "test/golden/MainProof" - -roundTripMainProofBi :: Property -roundTripMainProofBi = eachOf 20 (feedPM genMainProof) roundTripsBiBuildable - --------------------------------------------------------------------------------- --- MainToSign --------------------------------------------------------------------------------- -golden_MainToSign :: Property -golden_MainToSign = goldenTestBi exampleMainToSign "test/golden/MainToSign" - -roundTripMainToSignBi :: Property -roundTripMainToSignBi = eachOf 20 (feedPMC genMainToSign) roundTripsBiShow -------------------------------------------------------------------------------- -- Address @@ -1265,38 +1112,6 @@ feedPMC genA = do exampleAttributes :: Attributes () exampleAttributes = mkAttributes () -exampleBlockHeaderGenesis :: BlockHeader -exampleBlockHeaderGenesis = (BlockHeaderGenesis exampleGenesisBlockHeader) - -exampleBlockHeaderMain :: MainBlockHeader -exampleBlockHeaderMain = - mkMainHeaderExplicit (ProtocolMagic 0) exampleHeaderHash - exampleChainDifficulty exampleSlotId - exampleSecretKey Nothing - exampleMainBody exampleMainExtraHeaderData - -exampleBlockSignature :: BlockSignature -exampleBlockSignature = BlockSignature (sign (ProtocolMagic 7) - SignMainBlock - exampleSecretKey - exampleMainToSign) - -exampleBlockPSignatureLight :: BlockSignature -exampleBlockPSignatureLight = BlockPSignatureLight sig - where - sig = proxySign pm SignProxySK delegateSk psk exampleMainToSign - [delegateSk, issuerSk] = exampleSecretKeys 5 2 - psk = createPsk pm issuerSk (toPublic delegateSk) exampleLightDlgIndices - pm = ProtocolMagic 2 - -exampleBlockPSignatureHeavy :: BlockSignature -exampleBlockPSignatureHeavy = BlockPSignatureHeavy sig - where - sig = proxySign pm SignProxySK delegateSk psk exampleMainToSign - [delegateSk, issuerSk] = exampleSecretKeys 5 2 - psk = createPsk pm issuerSk (toPublic delegateSk) (staticHeavyDlgIndexes !! 0) - pm = ProtocolMagic 2 - exampleBlockVersion :: BlockVersion exampleBlockVersion = BlockVersion 1 1 1 @@ -1399,19 +1214,6 @@ exampleVssPublicKeys offset count = map (toKey . (*offset)) [0..count] where toKey start = toVssPublicKey . deterministicVssKeyGen $ (getBytes start 32) -exampleMainConsensusData :: MainConsensusData -exampleMainConsensusData = MainConsensusData exampleSlotId - examplePublicKey - exampleChainDifficulty - exampleBlockSignature - -exampleMainExtraHeaderData :: MainExtraHeaderData -exampleMainExtraHeaderData = - MainExtraHeaderData exampleBlockVersion - exampleSoftwareVersion - (mkAttributes ()) - (abstractHash (MainExtraBodyData (mkAttributes ()))) - exampleBlockVersionModifier :: BlockVersionModifier exampleBlockVersionModifier = BlockVersionModifier (Just (999 :: ScriptVersion)) @@ -1677,54 +1479,12 @@ getText offset len = T.take len $ T.drop offset staticText exampleTxPayload :: TxPayload exampleTxPayload = mkTxPayload [exampleTxAux] -exampleGenesisBlockHeader :: GenesisBlockHeader -exampleGenesisBlockHeader = mkGenesisHeader (ProtocolMagic 0) - (Left (GenesisHash prevHash)) - (EpochIndex 11) - exampleGenesisBody - where - prevHash = coerce (hash ("genesisHash" :: Text)) :: Hash a - -exampleMainProof :: MainProof -exampleMainProof = MainProof exampleTxProof exampleSscProof - (abstractHash dp) exampleUpdateProof - where - dp = UnsafeDlgPayload (take 4 staticProxySKHeavys) - exampleSoftwareVersion :: SoftwareVersion exampleSoftwareVersion = SoftwareVersion (ApplicationName "Golden") 99 --- We use `Nothing` as the ProxySKBlockInfo to avoid clashing key errors --- (since we use example keys which aren't related to each other) -exampleMainBlockHeader :: MainBlockHeader -exampleMainBlockHeader = mkMainHeaderExplicit (ProtocolMagic 7) - exampleHeaderHash - exampleChainDifficulty - exampleSlotId - exampleSecretKey - Nothing - exampleMainBody - exampleMainExtraHeaderData - -exampleHeaderHash :: HeaderHash -exampleHeaderHash = coerce (hash ("HeaderHash" :: Text)) - exampleHashTx :: Hash Tx exampleHashTx = coerce (hash "golden" :: Hash Text) -exampleGenesisBody :: GenesisBody -exampleGenesisBody = GenesisBody exampleSlotLeaders - -exampleMainBody :: MainBody -exampleMainBody = MainBody exampleTxPayload exampleSscPayload - dp exampleUpdatePayload - where - dp = UnsafeDlgPayload (take 4 staticProxySKHeavys) - -exampleMainToSign :: MainToSign -exampleMainToSign = MainToSign (abstractHash (BlockHeaderGenesis exampleGenesisBlockHeader)) - exampleMainProof exampleSlotId exampleChainDifficulty exampleMainExtraHeaderData - exampleSscProof :: SscProof exampleSscProof = CommitmentsProof (hash exampleCommitmentsMap) (exampleVssCertificatesHash 10 4) diff --git a/core/test/Test/Pos/Core/Gen.hs b/core/test/Test/Pos/Core/Gen.hs index 51594034c8d..95ccefd93e2 100644 --- a/core/test/Test/Pos/Core/Gen.hs +++ b/core/test/Test/Pos/Core/Gen.hs @@ -1,23 +1,5 @@ module Test.Pos.Core.Gen - ( - -- Pos.Core.Block Generators - genBlockBodyAttributes - , genBlockHeader - , genBlockHeaderAttributes - , genBlockSignature - , genGenesisBlockHeader - , genGenesisBody - , genGenesisConsensusData - , genGenesisHash - , genGenesisProof - , genHeaderHash - , genMainBlockHeader - , genMainBody - , genMainConsensusData - , genMainExtraBodyData - , genMainExtraHeaderData - , genMainProof - , genMainToSign + ( genGenesisHash -- Pos.Core.Common Generators , genAddrAttributes @@ -145,6 +127,7 @@ module Test.Pos.Core.Gen , genMerkleTree -- Helpers + , genTextHash , genByte , genUTF8Byte , genWord16 @@ -168,15 +151,6 @@ import qualified Hedgehog.Gen as Gen import qualified Hedgehog.Range as Range import Pos.Binary.Class (Bi, Raw (..), asBinary) import Pos.Core.Attributes (Attributes (..), mkAttributes) -import Pos.Core.Block (BlockBodyAttributes, BlockHeader (..), - BlockHeaderAttributes, BlockSignature (..), - GenesisBlockHeader, GenesisBody (..), - GenesisConsensusData (..), GenesisExtraHeaderData (..), - GenesisProof (..), HeaderHash, MainBlockHeader, - MainBody (..), MainConsensusData (..), - MainExtraBodyData (..), MainExtraHeaderData (..), - MainProof (..), MainToSign (..), mkGenericHeader, - mkMainHeaderExplicit) import Pos.Core.Common (AddrAttributes (..), AddrSpendingData (..), AddrStakeDistribution (..), AddrType (..), Address (..), BlockCount (..), ChainDifficulty (..), Coeff (..), @@ -227,130 +201,15 @@ import Pos.Util.Util (leftToPanic) import Serokell.Data.Memory.Units (Byte) import Test.Pos.Crypto.Gen (genAbstractHash, genDecShare, - genHDAddressPayload, genProtocolMagic, genProxySignature, - genPublicKey, genRedeemPublicKey, genRedeemSignature, - genSafeSigner, genSecretKey, genSignTag, genSignature, - genVssPublicKey) - - ----------------------------------------------------------------------------- --- Pos.Core.Block Generators ----------------------------------------------------------------------------- - -genBlockBodyAttributes :: Gen BlockBodyAttributes -genBlockBodyAttributes = pure $ mkAttributes () - -genBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen BlockHeader -genBlockHeader pm pc = - Gen.choice [ BlockHeaderGenesis <$> genGenesisBlockHeader pm - , BlockHeaderMain <$> genMainBlockHeader pm pc - ] - -genBlockHeaderAttributes :: Gen BlockHeaderAttributes -genBlockHeaderAttributes = pure $ mkAttributes () - -genBlockSignature :: ProtocolMagic -> ProtocolConstants -> Gen BlockSignature -genBlockSignature pm pc = do - Gen.choice - [ BlockSignature - <$> genSignature pm mts - , BlockPSignatureLight - <$> genProxySignature pm mts genLightDlgIndices - , BlockPSignatureHeavy - <$> genProxySignature pm mts genHeavyDlgIndex - ] - where - mts = genMainToSign pm pc - -genGenesisBlockHeader :: ProtocolMagic -> Gen GenesisBlockHeader -genGenesisBlockHeader pm = do - epoch <- genEpochIndex - body <- genGenesisBody - prevHash <- coerce <$> genTextHash - difficulty <- genChainDifficulty - let consensus = const (GenesisConsensusData {_gcdEpoch = epoch - ,_gcdDifficulty = difficulty}) - gehd = GenesisExtraHeaderData $ mkAttributes () - pure (mkGenericHeader pm prevHash body consensus gehd) - -genGenesisBody :: Gen GenesisBody -genGenesisBody = GenesisBody <$> genSlotLeaders - -genGenesisConsensusData :: Gen GenesisConsensusData -genGenesisConsensusData = - GenesisConsensusData - <$> genEpochIndex - <*> genChainDifficulty + genHDAddressPayload, genProtocolMagic, genPublicKey, + genRedeemPublicKey, genRedeemSignature, genSafeSigner, + genSecretKey, genSignTag, genSignature, genVssPublicKey) genGenesisHash :: Gen GenesisHash genGenesisHash = do th <- genTextHash pure (GenesisHash (coerce th)) -genHeaderHash :: Gen HeaderHash -genHeaderHash = coerce <$> genTextHash - -genGenesisProof :: Gen GenesisProof -genGenesisProof = GenesisProof <$> genAbstractHash genSlotLeaders - -genMainBody :: ProtocolMagic -> Gen MainBody -genMainBody pm = - MainBody - <$> genTxPayload pm - <*> genSscPayload pm - <*> genDlgPayload pm - <*> genUpdatePayload pm - --- We use `Nothing` as the ProxySKBlockInfo to avoid clashing key errors --- (since we use example keys which aren't related to each other) -genMainBlockHeader :: ProtocolMagic -> ProtocolConstants -> Gen MainBlockHeader -genMainBlockHeader pm pc = - mkMainHeaderExplicit pm - <$> genHeaderHash - <*> genChainDifficulty - <*> genSlotId pc - <*> genSecretKey - <*> pure Nothing - <*> genMainBody pm - <*> genMainExtraHeaderData - -genMainConsensusData :: ProtocolMagic -> ProtocolConstants -> Gen MainConsensusData -genMainConsensusData pm pc = - MainConsensusData - <$> genSlotId pc - <*> genPublicKey - <*> genChainDifficulty - <*> genBlockSignature pm pc - - -genMainExtraBodyData :: Gen MainExtraBodyData -genMainExtraBodyData = MainExtraBodyData <$> genBlockBodyAttributes - -genMainExtraHeaderData :: Gen MainExtraHeaderData -genMainExtraHeaderData = - MainExtraHeaderData - <$> genBlockVersion - <*> genSoftwareVersion - <*> genBlockHeaderAttributes - <*> genAbstractHash genMainExtraBodyData - -genMainProof :: ProtocolMagic -> Gen MainProof -genMainProof pm = - MainProof - <$> genTxProof pm - <*> genSscProof pm - <*> genAbstractHash (genDlgPayload pm) - <*> genUpdateProof pm - -genMainToSign :: ProtocolMagic -> ProtocolConstants -> Gen MainToSign -genMainToSign pm pc = - MainToSign - <$> genAbstractHash (genBlockHeader pm pc) - <*> genMainProof pm - <*> genSlotId pc - <*> genChainDifficulty - <*> genMainExtraHeaderData - ---------------------------------------------------------------------------- -- Pos.Core.Common Generators ---------------------------------------------------------------------------- diff --git a/db/cardano-sl-db.cabal b/db/cardano-sl-db.cabal index e341fab4456..0d7465f64c6 100644 --- a/db/cardano-sl-db.cabal +++ b/db/cardano-sl-db.cabal @@ -21,6 +21,7 @@ library Pos.DB.Functions Pos.DB.BlockIndex Pos.DB.GState.Common + Pos.DB.GState.Lock Pos.DB.GState.Stakes Pos.DB.Misc.Common Pos.DB.Pure @@ -135,6 +136,7 @@ library , directory , ekg-core , ether >= 0.5 + , exceptions , filepath , formatting , lens diff --git a/db/src/Pos/DB/Block.hs b/db/src/Pos/DB/Block.hs index 6b78138a4e3..d3e6bbce497 100644 --- a/db/src/Pos/DB/Block.hs +++ b/db/src/Pos/DB/Block.hs @@ -46,10 +46,10 @@ import System.IO (IOMode (WriteMode), hClose, hFlush, openBinaryFile) import System.IO.Error (IOError, isDoesNotExistError) import Pos.Binary.Class (decodeFull', serialize') -import Pos.Chain.Block (SlogUndo (..), Undo (..)) +import Pos.Chain.Block (Block, GenesisBlock, HeaderHash, + SlogUndo (..), Undo (..), headerHash) +import qualified Pos.Chain.Block as CB import Pos.Chain.Delegation (DlgUndo (..)) -import Pos.Core.Block (Block, GenesisBlock, HeaderHash, headerHash) -import qualified Pos.Core.Block as CB import Pos.Crypto (hashHexF) import Pos.DB.BlockIndex (deleteHeaderIndex, putHeadersIndex) import Pos.DB.Class (MonadDB (..), MonadDBRead (..), Serialized (..), diff --git a/db/src/Pos/DB/Block/GState/BlockExtra.hs b/db/src/Pos/DB/Block/GState/BlockExtra.hs index bb55d473830..7c618b60ad5 100644 --- a/db/src/Pos/DB/Block/GState/BlockExtra.hs +++ b/db/src/Pos/DB/Block/GState/BlockExtra.hs @@ -27,12 +27,11 @@ import qualified Formatting.Buildable import Serokell.Util.Text (listJson) import Pos.Binary.Class (serialize') -import Pos.Chain.Block (LastBlkSlots, noLastBlkSlots) +import Pos.Chain.Block (Block, BlockHeader, HasHeaderHash, HeaderHash, + LastBlkSlots, headerHash, noLastBlkSlots) import Pos.Core (FlatSlotId, HasCoreConfiguration, HasProtocolConstants, genesisHash, slotIdF, unflattenSlotId) -import Pos.Core.Block (Block, BlockHeader, HasHeaderHash, HeaderHash, - headerHash) import Pos.Core.Chrono (OldestFirst (..)) import Pos.Crypto (shortHashF) import Pos.DB (DBError (..), MonadDB, MonadDBRead (..), diff --git a/db/src/Pos/DB/Block/Load.hs b/db/src/Pos/DB/Block/Load.hs index 8650718df66..31d163fcf46 100644 --- a/db/src/Pos/DB/Block/Load.hs +++ b/db/src/Pos/DB/Block/Load.hs @@ -25,12 +25,11 @@ import Control.Lens (_Wrapped) import Formatting (sformat, (%)) import Pos.Binary.Class (serialize') -import Pos.Chain.Block (Blund, Undo (..)) +import Pos.Chain.Block (Block, BlockHeader, Blund, HasPrevBlock (..), + HeaderHash, Undo (..)) +import qualified Pos.Chain.Block as CB import Pos.Core (BlockCount, HasDifficulty (difficultyL), HasGenesisHash) -import Pos.Core.Block (Block, BlockHeader, HasPrevBlock (..), - HeaderHash) -import qualified Pos.Core.Block as CB import Pos.Core.Chrono (NewestFirst (..)) import Pos.Core.Configuration (genesisHash) import Pos.Crypto (shortHashF) diff --git a/db/src/Pos/DB/Block/Logic/Creation.hs b/db/src/Pos/DB/Block/Logic/Creation.hs index 401dfa9bfee..a1405dbfdd3 100644 --- a/db/src/Pos/DB/Block/Logic/Creation.hs +++ b/db/src/Pos/DB/Block/Logic/Creation.hs @@ -24,7 +24,10 @@ import Serokell.Data.Memory.Units (Byte, memory) import System.Wlog (WithLogger, logDebug) import Pos.Binary.Class (biSize) -import Pos.Chain.Block (HasSlogGState (..)) +import Pos.Chain.Block (BlockHeader (..), Blockchain (..), + GenesisBlock, HasSlogGState (..), HeaderHash, MainBlock, + MainBlockchain, headerHash, mkGenesisBlock, mkMainBlock) +import qualified Pos.Chain.Block as BC import Pos.Chain.Delegation (DelegationVar, DlgPayload (..), ProxySKBlockInfo) import Pos.Chain.Ssc (MonadSscMem, defaultSscPayload, stripSscPayload) @@ -34,19 +37,12 @@ import Pos.Chain.Update (HasUpdateConfiguration, curSoftwareVersion, import Pos.Core (EpochIndex, EpochOrSlot (..), HasProtocolConstants, SlotId (..), chainQualityThreshold, epochIndexL, epochSlots, flattenSlotId, getEpochOrSlot) -import Pos.Core.Block (BlockHeader (..), Blockchain (..), - GenesisBlock, HeaderHash, MainBlock, MainBlockchain, - headerHash) -import qualified Pos.Core.Block as BC -import Pos.Core.Block.Constructors (mkGenesisBlock, mkMainBlock) import Pos.Core.Context (HasPrimaryKey, getOurSecretKey) import Pos.Core.Exception (assertionFailed, reportFatalError) import Pos.Core.JsonLog (CanJsonLog (..)) import Pos.Core.JsonLog.LogEvents (MemPoolModifyReason (..)) import Pos.Core.Reporting (HasMisbehaviorMetrics, reportError) import Pos.Core.Ssc (SscPayload) -import Pos.Core.StateLock (Priority (..), StateLock, StateLockMetrics, - modifyStateLock) import Pos.Core.Txp (TxAux (..), mkTxPayload) import Pos.Core.Update (UpdatePayload (..)) import Pos.Core.Util.LogSafe (logInfoS) @@ -62,6 +58,8 @@ import Pos.DB.Block.Slog.Logic (ShouldCallBListener (..)) import qualified Pos.DB.BlockIndex as DB import Pos.DB.Class (MonadDBRead) import Pos.DB.Delegation (clearDlgMemPool, getDlgMempool) +import Pos.DB.GState.Lock (Priority (..), StateLock, StateLockMetrics, + modifyStateLock) import Pos.DB.Lrc (HasLrcContext, lrcActionOnEpochReason) import qualified Pos.DB.Lrc as LrcDB import Pos.DB.Ssc (sscGetLocalPayload, sscResetLocal) diff --git a/db/src/Pos/DB/Block/Logic/Header.hs b/db/src/Pos/DB/Block/Logic/Header.hs index 82100ee2df5..fe648c03a25 100644 --- a/db/src/Pos/DB/Block/Logic/Header.hs +++ b/db/src/Pos/DB/Block/Logic/Header.hs @@ -28,11 +28,11 @@ import Serokell.Util.Verify (VerificationRes (..)) import System.Wlog (WithLogger, logDebug) import UnliftIO (MonadUnliftIO) -import Pos.Chain.Block (VerifyHeaderParams (..), verifyHeader) +import Pos.Chain.Block (BlockHeader (..), HeaderHash, + VerifyHeaderParams (..), headerHash, headerHashG, + headerSlotL, prevBlockL, verifyHeader) import Pos.Core (blkSecurityParam, difficultyL, epochIndexL, getEpochOrSlot) -import Pos.Core.Block (BlockHeader (..), HeaderHash, headerHash, - headerHashG, headerSlotL, prevBlockL) import Pos.Core.Chrono (NE, NewestFirst, OldestFirst (..), toNewestFirst, toOldestFirst, _NewestFirst, _OldestFirst) import Pos.Core.Slotting (MonadSlots (getCurrentSlot)) diff --git a/db/src/Pos/DB/Block/Logic/Internal.hs b/db/src/Pos/DB/Block/Logic/Internal.hs index 5bf83e77c11..26164c611e4 100644 --- a/db/src/Pos/DB/Block/Logic/Internal.hs +++ b/db/src/Pos/DB/Block/Logic/Internal.hs @@ -32,16 +32,16 @@ import Formatting (sformat, (%)) import Serokell.Util.Text (listJson) import UnliftIO (MonadUnliftIO) -import Pos.Chain.Block (Blund, Undo (undoDlg, undoTx, undoUS)) +import Pos.Chain.Block (Block, Blund, ComponentBlock (..), + GenesisBlock, IsGenesisHeader, MainBlock, + Undo (undoDlg, undoTx, undoUS), gbHeader, headerHash, + mainBlockDlgPayload, mainBlockSscPayload, + mainBlockTxPayload, mainBlockUpdatePayload) import Pos.Chain.Delegation (DlgBlock, DlgBlund, MonadDelegation) import Pos.Chain.Ssc (HasSscConfiguration, MonadSscMem, SscBlock) import Pos.Chain.Txp (TxpConfiguration) import Pos.Chain.Update (PollModifier) import Pos.Core (epochIndexL) -import Pos.Core.Block (Block, ComponentBlock (..), GenesisBlock, - IsGenesisHeader, MainBlock, gbHeader, headerHash, - mainBlockDlgPayload, mainBlockSscPayload, - mainBlockTxPayload, mainBlockUpdatePayload) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..)) import Pos.Core.Exception (assertionFailed) import Pos.Core.Reporting (MonadReporting) diff --git a/db/src/Pos/DB/Block/Logic/Util.hs b/db/src/Pos/DB/Block/Logic/Util.hs index d544a434b77..76e11dfc59e 100644 --- a/db/src/Pos/DB/Block/Logic/Util.hs +++ b/db/src/Pos/DB/Block/Logic/Util.hs @@ -24,12 +24,11 @@ import qualified Data.List.NonEmpty as NE import Formatting (int, sformat, (%)) import System.Wlog (WithLogger) -import Pos.Chain.Block (HasBlockConfiguration, HasSlogGState, - fixedTimeCQ) +import Pos.Chain.Block (BlockHeader, HasBlockConfiguration, + HasSlogGState, HeaderHash, fixedTimeCQ, headerHash, + prevBlockL) import Pos.Core (BlockCount, FlatSlotId, HasProtocolConstants, Timestamp (..), difficultyL, flattenSlotId) -import Pos.Core.Block (BlockHeader, HeaderHash, headerHash, - prevBlockL) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..)) import Pos.Core.Configuration (blkSecurityParam) import Pos.Core.Exception (reportFatalError) diff --git a/db/src/Pos/DB/Block/Logic/VAR.hs b/db/src/Pos/DB/Block/Logic/VAR.hs index 9f30aecac4e..f6f4fb225ad 100644 --- a/db/src/Pos/DB/Block/Logic/VAR.hs +++ b/db/src/Pos/DB/Block/Logic/VAR.hs @@ -23,13 +23,12 @@ import qualified Data.List.NonEmpty as NE import Formatting (sformat, shown, (%)) import System.Wlog (logDebug) -import Pos.Chain.Block (ApplyBlocksException (..), Blund, - RollbackException (..), Undo (..), - VerifyBlocksException (..)) +import Pos.Chain.Block (ApplyBlocksException (..), Block, Blund, + HeaderHash, RollbackException (..), Undo (..), + VerifyBlocksException (..), headerHashG, prevBlockL) import Pos.Chain.Txp (TxpConfiguration) import Pos.Chain.Update (PollModifier) import Pos.Core (epochIndexL) -import Pos.Core.Block (Block, HeaderHash, headerHashG, prevBlockL) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..), toNewestFirst, toOldestFirst) import Pos.Core.Reporting (HasMisbehaviorMetrics) diff --git a/db/src/Pos/DB/Block/Slog/Logic.hs b/db/src/Pos/DB/Block/Slog/Logic.hs index cf76d995ac8..6e338935b90 100644 --- a/db/src/Pos/DB/Block/Slog/Logic.hs +++ b/db/src/Pos/DB/Block/Slog/Logic.hs @@ -31,14 +31,13 @@ import Serokell.Util (Color (Red), colorize) import Serokell.Util.Verify (formatAllErrors, verResToMonadError) import System.Wlog (WithLogger) -import Pos.Chain.Block (Blund, HasSlogGState, SlogUndo (..), - Undo (..), verifyBlocks) +import Pos.Chain.Block (Block, Blund, HasSlogGState, SlogUndo (..), + Undo (..), genBlockLeaders, headerHash, headerHashG, + mainBlockSlot, prevBlockL, verifyBlocks) import Pos.Chain.Update (HasUpdateConfiguration, lastKnownBlockVersion) import Pos.Core (FlatSlotId, blkSecurityParam, difficultyL, epochIndexL, flattenSlotId) -import Pos.Core.Block (Block, genBlockLeaders, headerHash, - headerHashG, mainBlockSlot, prevBlockL) import Pos.Core.Chrono (NE, NewestFirst (getNewestFirst), OldestFirst (..), toOldestFirst, _OldestFirst) import Pos.Core.Exception (assertionFailed, reportFatalError) diff --git a/db/src/Pos/DB/BlockIndex.hs b/db/src/Pos/DB/BlockIndex.hs index 5fabbbaf26f..ce79496aca9 100644 --- a/db/src/Pos/DB/BlockIndex.hs +++ b/db/src/Pos/DB/BlockIndex.hs @@ -13,7 +13,7 @@ import Data.ByteArray (convert) import qualified Database.RocksDB as Rocks -import Pos.Core.Block (BlockHeader, HeaderHash, headerHash) +import Pos.Chain.Block (BlockHeader, HeaderHash, headerHash) import Pos.DB.Class (DBTag (BlockIndexDB), MonadBlockDBRead, MonadDB (..)) import Pos.DB.Functions (dbGetBi, dbSerializeValue) diff --git a/db/src/Pos/DB/Class.hs b/db/src/Pos/DB/Class.hs index c08454489f5..ac532a2ace0 100644 --- a/db/src/Pos/DB/Class.hs +++ b/db/src/Pos/DB/Class.hs @@ -58,8 +58,8 @@ import qualified Database.RocksDB as Rocks import Serokell.Data.Memory.Units (Byte) import Pos.Binary.Class (Bi, decodeFull') +import Pos.Chain.Block (Block, BlockHeader, HeaderHash) import Pos.Core (EpochIndex, HasConfiguration, isBootstrapEra) -import Pos.Core.Block (Block, BlockHeader, HeaderHash) import Pos.Core.Update (BlockVersionData (..)) import Pos.DB.Error (DBError (DBMalformed)) import Pos.Util.Util (eitherToThrow) diff --git a/db/src/Pos/DB/Delegation/Cede/Logic.hs b/db/src/Pos/DB/Delegation/Cede/Logic.hs index e50a0a5de04..1007b9303ca 100644 --- a/db/src/Pos/DB/Delegation/Cede/Logic.hs +++ b/db/src/Pos/DB/Delegation/Cede/Logic.hs @@ -20,12 +20,12 @@ import qualified Data.HashMap.Strict as HM import qualified Data.HashSet as HS import Formatting (build, sformat, (%)) +import Pos.Chain.Block (BlockSignature (..), MainBlockHeader, + gbhConsensus, mainHeaderLeaderKey, mcdSignature) import Pos.Chain.Delegation (DlgMemPool, MonadCedeRead (..), getPskPk, isRevokePsk) import Pos.Chain.Lrc (RichmenSet) import Pos.Core (EpochIndex, StakeholderId, addressHash) -import Pos.Core.Block (BlockSignature (..), MainBlockHeader, - gbhConsensus, mainHeaderLeaderKey, mcdSignature) import Pos.Core.Delegation (HeavyDlgIndex (..), ProxySKHeavy) import Pos.Crypto (ProtocolMagic, ProxySecretKey (..), PublicKey, psigPsk, validateProxySecretKey) diff --git a/db/src/Pos/DB/Delegation/Logic/Mempool.hs b/db/src/Pos/DB/Delegation/Logic/Mempool.hs index 601c54b59c5..a6afd70c688 100644 --- a/db/src/Pos/DB/Delegation/Logic/Mempool.hs +++ b/db/src/Pos/DB/Delegation/Logic/Mempool.hs @@ -25,15 +25,14 @@ import qualified Data.HashMap.Strict as HM import UnliftIO (MonadUnliftIO) import Pos.Binary.Class (biSize) +import Pos.Chain.Block (headerHash) import Pos.Chain.Delegation (DlgMemPool, DlgPayload (..), MonadDelegation, cmPskMods, dwMessageCache, dwPoolSize, dwProxySKPool, dwTip, emptyCedeModifier, isRevokePsk, pskToDlgEdgeAction) import Pos.Core (addressHash, epochIndexL) -import Pos.Core.Block (headerHash) import Pos.Core.Conc (currentTime) import Pos.Core.Delegation (ProxySKHeavy) -import Pos.Core.StateLock (StateLock, withStateLockNoMetrics) import Pos.Core.Update (bvdMaxBlockSize) import Pos.Crypto (ProtocolMagic, ProxySecretKey (..), PublicKey) import Pos.DB (MonadDBRead, MonadGState) @@ -43,6 +42,7 @@ import Pos.DB.Delegation.Cede.Logic (CheckForCycle (..), dlgVerifyPskHeavy) import Pos.DB.Delegation.Logic.Common (DelegationStateAction, runDelegationStateAction) +import Pos.DB.GState.Lock (StateLock, withStateLockNoMetrics) import Pos.DB.Lrc (HasLrcContext, getDlgRichmen) import Pos.Util (HasLens', microsecondsToUTC) import Pos.Util.Concurrent.PriorityLock (Priority (..)) diff --git a/db/src/Pos/DB/Delegation/Logic/VAR.hs b/db/src/Pos/DB/Delegation/Logic/VAR.hs index ba6a5c814d4..424e5bb9255 100644 --- a/db/src/Pos/DB/Delegation/Logic/VAR.hs +++ b/db/src/Pos/DB/Delegation/Logic/VAR.hs @@ -25,6 +25,9 @@ import Serokell.Util (listJson, mapJson) import System.Wlog (WithLogger, logDebug) import UnliftIO (MonadUnliftIO) +import Pos.Chain.Block (Block, ComponentBlock (..), gbHeader, + headerHash, mainBlockDlgPayload, mainBlockSlot, + prevBlockL) import Pos.Chain.Delegation (CedeModifier (..), DlgBlund, DlgEdgeAction (..), DlgPayload (getDlgPayload), DlgUndo (..), MonadCede (..), MonadCedeRead (..), @@ -34,9 +37,6 @@ import Pos.Chain.Delegation (CedeModifier (..), DlgBlund, import Pos.Chain.Lrc (RichmenSet) import Pos.Core (EpochIndex (..), StakeholderId, addressHash, epochIndexL, siEpoch) -import Pos.Core.Block (Block, ComponentBlock (..), gbHeader, - headerHash, mainBlockDlgPayload, mainBlockSlot, - prevBlockL) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..)) import Pos.Crypto (ProtocolMagic, ProxySecretKey (..), shortHashF) import Pos.DB (DBError (DBMalformed), MonadDBRead, SomeBatchOp (..)) diff --git a/db/src/Pos/DB/Delegation/Var.hs b/db/src/Pos/DB/Delegation/Var.hs index d872e01ae0c..8cc394bf9aa 100644 --- a/db/src/Pos/DB/Delegation/Var.hs +++ b/db/src/Pos/DB/Delegation/Var.hs @@ -12,9 +12,9 @@ import Universum import qualified Data.Cache.LRU as LRU +import Pos.Chain.Block (headerHash) import Pos.Chain.Delegation (DelegationVar, DelegationWrap (..), HasDlgConfiguration, dlgCacheParam) -import Pos.Core.Block (headerHash) import Pos.DB (MonadBlockDBRead) import Pos.DB.BlockIndex (getTipHeader) diff --git a/db/src/Pos/DB/GState/Common.hs b/db/src/Pos/DB/GState/Common.hs index 874a43001a8..8859358c857 100644 --- a/db/src/Pos/DB/GState/Common.hs +++ b/db/src/Pos/DB/GState/Common.hs @@ -32,8 +32,8 @@ import Formatting (bprint, int, sformat, stext, (%)) import qualified Formatting.Buildable import Pos.Binary.Class (Bi) +import Pos.Chain.Block (HeaderHash) import Pos.Core (ChainDifficulty) -import Pos.Core.Block (HeaderHash) import Pos.Core.Configuration (HasCoreConfiguration) import Pos.Crypto (shortHashF) import Pos.DB.BatchOp (RocksBatchOp (..), dbWriteBatch') diff --git a/core/src/Pos/Core/StateLock.hs b/db/src/Pos/DB/GState/Lock.hs similarity index 98% rename from core/src/Pos/Core/StateLock.hs rename to db/src/Pos/DB/GState/Lock.hs index 689e90aa5ce..a8e0ecd84c3 100644 --- a/core/src/Pos/Core/StateLock.hs +++ b/db/src/Pos/DB/GState/Lock.hs @@ -5,7 +5,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-| -Module: Pos.Core.StateLock +Module: Pos.DB.GState.Lock Description: A lock on the local state of a node Provides a lock that is to be taken while modifying, or requiring a @@ -14,7 +14,7 @@ consistent view on, the local state (the database and mempool). It collects metrics on how long a given action waits on the lock, and how long the action takes. -} -module Pos.Core.StateLock +module Pos.DB.GState.Lock ( Priority (..) , StateLock (..) , newEmptyStateLock @@ -37,7 +37,7 @@ import System.Mem (getAllocationCounter) import System.Wlog (LoggerNameBox, WithLogger, askLoggerName, usingLoggerName) -import Pos.Core.Block (HeaderHash) +import Pos.Chain.Block (HeaderHash) import Pos.Core.Conc (currentTime) import Pos.Core.JsonLog (CanJsonLog (..)) import Pos.Util.Concurrent (modifyMVar, withMVar) diff --git a/db/src/Pos/DB/Pure.hs b/db/src/Pos/DB/Pure.hs index 8dc55caeabc..a44a2a8adb1 100644 --- a/db/src/Pos/DB/Pure.hs +++ b/db/src/Pos/DB/Pure.hs @@ -47,8 +47,8 @@ import qualified Data.Set as S import qualified Database.RocksDB as Rocks import Pos.Binary.Class (Bi) +import Pos.Chain.Block (HeaderHash) import Pos.Core (HasCoreConfiguration) -import Pos.Core.Block (HeaderHash) import Pos.DB.Class (DBIteratorClass (..), DBTag (..), IterType, iterKeyPrefix) import Pos.DB.Functions (processIterEntry) diff --git a/db/src/Pos/DB/Ssc/Logic/VAR.hs b/db/src/Pos/DB/Ssc/Logic/VAR.hs index 8bf2a74d163..2a18ac465ad 100644 --- a/db/src/Pos/DB/Ssc/Logic/VAR.hs +++ b/db/src/Pos/DB/Ssc/Logic/VAR.hs @@ -20,6 +20,7 @@ import Serokell.Util (listJson) import System.Wlog (WithLogger, logDebug) import Universum +import Pos.Chain.Block (ComponentBlock (..), HeaderHash, headerHash) import Pos.Chain.Lrc (RichmenStakes) import Pos.Chain.Ssc (HasSscConfiguration, MonadSscMem, MultiRichmenStakes, PureToss, SscBlock, @@ -30,7 +31,6 @@ import Pos.Chain.Ssc (HasSscConfiguration, MonadSscMem, supplyPureTossEnv, verifyAndApplySscPayload) import Pos.Core (HasCoreConfiguration, HasGenesisData, HasProtocolConstants, epochIndexL, epochOrSlotG) -import Pos.Core.Block (ComponentBlock (..), HeaderHash, headerHash) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..)) import Pos.Core.Exception (assertionFailed) import Pos.Core.Reporting (MonadReporting, reportError) diff --git a/db/src/Pos/DB/Txp/Logic/Global.hs b/db/src/Pos/DB/Txp/Logic/Global.hs index 29858d0e3cf..b19f48c3e78 100644 --- a/db/src/Pos/DB/Txp/Logic/Global.hs +++ b/db/src/Pos/DB/Txp/Logic/Global.hs @@ -22,6 +22,7 @@ import qualified Data.HashMap.Strict as HM import qualified Data.List.NonEmpty as NE import Formatting (build, sformat, (%)) +import Pos.Chain.Block (ComponentBlock (..)) import Pos.Chain.Txp (ExtendedGlobalToilM, GlobalToilEnv (..), GlobalToilM, GlobalToilState (..), StakesView (..), ToilVerFailure, TxpConfiguration (..), Utxo, UtxoM, @@ -30,7 +31,6 @@ import Pos.Chain.Txp (ExtendedGlobalToilM, GlobalToilEnv (..), runGlobalToilMBase, runUtxoM, utxoToLookup, verifyToil) import Pos.Core (HasCoreConfiguration, HasGenesisData, ProtocolMagic, epochIndexL) -import Pos.Core.Block.Union (ComponentBlock (..)) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..)) import Pos.Core.Exception (assertionFailed) import Pos.Core.Txp (TxAux, TxUndo, TxpUndo) diff --git a/db/src/Pos/DB/Txp/Logic/Local.hs b/db/src/Pos/DB/Txp/Logic/Local.hs index 098efb03150..13f88988725 100644 --- a/db/src/Pos/DB/Txp/Logic/Local.hs +++ b/db/src/Pos/DB/Txp/Logic/Local.hs @@ -27,24 +27,24 @@ import Formatting (build, sformat, (%)) import System.Wlog (NamedPureLogger, WithLogger, launchNamedPureLog, logDebug, logError, logWarning) +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (ExtendedLocalToilM, LocalToilState (..), MemPool, ToilVerFailure (..), TxpConfiguration (..), UndoMap, Utxo, UtxoLookup, UtxoModifier, extendLocalToilM, mpLocalTxs, normalizeToil, processTx, topsortTxs, utxoToLookup) import Pos.Core (EpochIndex, ProtocolMagic, siEpoch) -import Pos.Core.Block (HeaderHash) import Pos.Core.JsonLog (CanJsonLog (..)) import Pos.Core.JsonLog.LogEvents (MemPoolModifyReason (..)) import Pos.Core.Reporting (reportError) import Pos.Core.Slotting (MonadSlots (..)) -import Pos.Core.StateLock (Priority (..), StateLock, StateLockMetrics, - withStateLock) import Pos.Core.Txp (TxAux (..), TxId, TxUndo) import Pos.Core.Update (BlockVersionData) import Pos.Crypto (WithHash (..)) import Pos.DB.Class (MonadGState (..)) import qualified Pos.DB.GState.Common as GS +import Pos.DB.GState.Lock (Priority (..), StateLock, StateLockMetrics, + withStateLock) import Pos.DB.Txp.Logic.Common (buildUtxo) import Pos.DB.Txp.MemState (GenericTxpLocalData (..), MempoolExt, MonadTxpMem, TxpLocalWorkMode, getLocalTxsMap, diff --git a/db/src/Pos/DB/Txp/MemState/Class.hs b/db/src/Pos/DB/Txp/MemState/Class.hs index 1d03791f9bd..f728425bc86 100644 --- a/db/src/Pos/DB/Txp/MemState/Class.hs +++ b/db/src/Pos/DB/Txp/MemState/Class.hs @@ -29,9 +29,9 @@ import qualified Control.Concurrent.STM as STM import Data.Default (Default (..)) import qualified Data.HashMap.Strict as HM +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (MemPool (..), ToilVerFailure, TxpConfiguration, UndoMap, UtxoModifier) -import Pos.Core.Block (HeaderHash) import Pos.Core.Reporting (MonadReporting) import Pos.Core.Slotting (MonadSlots (..)) import Pos.Core.Txp (TxAux, TxId) diff --git a/db/src/Pos/DB/Txp/MemState/Metrics.hs b/db/src/Pos/DB/Txp/MemState/Metrics.hs index f8c7fccf2b5..f90545d234e 100644 --- a/db/src/Pos/DB/Txp/MemState/Metrics.hs +++ b/db/src/Pos/DB/Txp/MemState/Metrics.hs @@ -16,7 +16,7 @@ import Pos.Chain.Txp (MemPool (_mpSize)) import Pos.Core.JsonLog.LogEvents (JLEvent (..), JLMemPool (..), MemPoolModifyReason (..)) import Pos.Core.Metrics.Constants (withCardanoNamespace) -import Pos.Core.StateLock (StateLockMetrics (..)) +import Pos.DB.GState.Lock (StateLockMetrics (..)) -- | 'StateLockMetrics' to record txp MemPool metrics. recordTxpMetrics :: Metrics.Store -> TVar MemPool -> IO (StateLockMetrics MemPoolModifyReason) diff --git a/db/src/Pos/DB/Txp/MemState/Types.hs b/db/src/Pos/DB/Txp/MemState/Types.hs index ab57f9284f4..3862f1df46c 100644 --- a/db/src/Pos/DB/Txp/MemState/Types.hs +++ b/db/src/Pos/DB/Txp/MemState/Types.hs @@ -7,8 +7,8 @@ module Pos.DB.Txp.MemState.Types import Universum +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (MemPool, UndoMap, UtxoModifier) -import Pos.Core.Block (HeaderHash) -- | LocalData of transactions processing. -- There are two invariants which must hold for local data diff --git a/db/src/Pos/DB/Txp/Settings.hs b/db/src/Pos/DB/Txp/Settings.hs index ae94694e911..494fcccaa33 100644 --- a/db/src/Pos/DB/Txp/Settings.hs +++ b/db/src/Pos/DB/Txp/Settings.hs @@ -18,8 +18,8 @@ import Universum import System.Wlog (WithLogger) +import Pos.Chain.Block (ComponentBlock) import Pos.Chain.Txp (ToilVerFailure) -import Pos.Core.Block (ComponentBlock) import Pos.Core.Chrono (NE, NewestFirst, OldestFirst) import Pos.Core.Slotting (MonadSlots) import Pos.Core.Txp (TxPayload, TxpUndo) diff --git a/db/src/Pos/DB/Update/Logic/Global.hs b/db/src/Pos/DB/Update/Logic/Global.hs index 150cb04375d..8fff60c0412 100644 --- a/db/src/Pos/DB/Update/Logic/Global.hs +++ b/db/src/Pos/DB/Update/Logic/Global.hs @@ -16,6 +16,8 @@ import Data.Default (Default (def)) import System.Wlog (WithLogger, modifyLoggerName) import UnliftIO (MonadUnliftIO) +import Pos.Chain.Block (ComponentBlock (..), headerHashG, + headerLeaderKeyL, headerSlotL) import Pos.Chain.Update (BlockVersionState, ConfirmedProposalState, HasUpdateConfiguration, MonadPoll, PollModifier (..), PollT, PollVerFailure, ProposalState, USUndo, execPollT, @@ -23,8 +25,6 @@ import Pos.Chain.Update (BlockVersionState, ConfirmedProposalState, reportUnexpectedError, runPollT) import Pos.Core (HasCoreConfiguration, HasProtocolConstants, ProtocolMagic, StakeholderId, addressHash, epochIndexL) -import Pos.Core.Block (ComponentBlock (..), headerHashG, - headerLeaderKeyL, headerSlotL) import Pos.Core.Chrono (NE, NewestFirst, OldestFirst) import Pos.Core.Exception (reportFatalError) import Pos.Core.Reporting (MonadReporting) diff --git a/db/src/Pos/DB/Update/Logic/Local.hs b/db/src/Pos/DB/Update/Logic/Local.hs index e9224d60789..ef58c4ca94e 100644 --- a/db/src/Pos/DB/Update/Logic/Local.hs +++ b/db/src/Pos/DB/Update/Logic/Local.hs @@ -33,6 +33,7 @@ import System.Wlog (WithLogger, logWarning) import UnliftIO (MonadUnliftIO) import Pos.Binary.Class (biSize) +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Update (HasUpdateConfiguration, MonadPoll (deactivateProposal), MonadPollRead (getProposal), PollModifier, @@ -40,14 +41,13 @@ import Pos.Chain.Update (HasUpdateConfiguration, execPollT, getAdoptedBV, modifyPollModifier, psVotes, reportUnexpectedError, runPollT) import Pos.Core (ProtocolMagic, SlotId (..), slotIdF) -import Pos.Core.Block (HeaderHash) import Pos.Core.Reporting (MonadReporting) -import Pos.Core.StateLock (StateLock) import Pos.Core.Update (BlockVersionData (..), UpId, UpdatePayload (..), UpdateProposal, UpdateVote (..)) import Pos.Crypto (PublicKey, shortHashF) import Pos.DB.Class (MonadDBRead) import qualified Pos.DB.GState.Common as DB +import Pos.DB.GState.Lock (StateLock) import Pos.DB.Lrc (HasLrcContext) import Pos.DB.Update.Context (UpdateContext (..)) import qualified Pos.DB.Update.GState as DB diff --git a/db/src/Pos/DB/Update/MemState/Functions.hs b/db/src/Pos/DB/Update/MemState/Functions.hs index b712ac1da04..244f95616bf 100644 --- a/db/src/Pos/DB/Update/MemState/Functions.hs +++ b/db/src/Pos/DB/Update/MemState/Functions.hs @@ -11,10 +11,10 @@ import qualified Data.HashMap.Strict as HM import Pos.Binary.Class (biSize) import Pos.Chain.Update (LocalVotes) -import Pos.Core.StateLock (Priority (..), StateLock, - withStateLockNoMetrics) import Pos.Core.Update (UpdatePayload (..), UpdateVote (..)) import Pos.Crypto (PublicKey, hash) +import Pos.DB.GState.Lock (Priority (..), StateLock, + withStateLockNoMetrics) import Pos.DB.Update.MemState.Types (MemPool (..)) import Pos.Util.Util (HasLens') diff --git a/db/src/Pos/DB/Update/MemState/Types.hs b/db/src/Pos/DB/Update/MemState/Types.hs index 9bcd4a6219e..951487217de 100644 --- a/db/src/Pos/DB/Update/MemState/Types.hs +++ b/db/src/Pos/DB/Update/MemState/Types.hs @@ -15,9 +15,9 @@ import Universum import Data.Default (Default (def)) import Serokell.Data.Memory.Units (Byte) +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Update (LocalVotes, PollModifier) import Pos.Core (SlotId (..)) -import Pos.Core.Block (HeaderHash) import Pos.Core.Slotting (MonadSlots (getCurrentSlot)) import Pos.Core.Update (UpdateProposals) import Pos.DB.Class (MonadDBRead) diff --git a/db/src/Pos/DB/Update/Poll/Logic/Apply.hs b/db/src/Pos/DB/Update/Poll/Logic/Apply.hs index a0bc23bfceb..4449c28ee3f 100644 --- a/db/src/Pos/DB/Update/Poll/Logic/Apply.hs +++ b/db/src/Pos/DB/Update/Poll/Logic/Apply.hs @@ -16,6 +16,8 @@ import Formatting (build, builder, int, sformat, (%)) import System.Wlog (logDebug, logInfo, logNotice) import Pos.Binary.Class (biSize) +import Pos.Chain.Block (HeaderHash, IsMainHeader (..), headerHashG, + headerSlotL) import Pos.Chain.Update (ConfirmedProposalState (..), DecidedProposalState (..), DpsExtra (..), MonadPoll (..), MonadPollRead (..), PollVerFailure (..), @@ -27,8 +29,6 @@ import Pos.Core (ChainDifficulty (..), Coin, EpochIndex, difficultyL, epochIndexL, flattenSlotId, sumCoins, unflattenSlotId, unsafeIntegerToCoin) import Pos.Core.Attributes (areAttributesKnown) -import Pos.Core.Block (HeaderHash, IsMainHeader (..), headerHashG, - headerSlotL) import Pos.Core.Configuration (blkSecurityParam) import Pos.Core.Update (BlockVersion, BlockVersionData (..), SoftwareVersion (..), UpId, UpdatePayload (..), diff --git a/db/src/Pos/DB/Update/Poll/Logic/Base.hs b/db/src/Pos/DB/Update/Poll/Logic/Base.hs index cf34199c77c..2cc1d148eb7 100644 --- a/db/src/Pos/DB/Update/Poll/Logic/Base.hs +++ b/db/src/Pos/DB/Update/Poll/Logic/Base.hs @@ -38,6 +38,7 @@ import Data.Time.Units (convertUnit) import Formatting (build, int, sformat, (%)) import System.Wlog (WithLogger, logDebug, logNotice) +import Pos.Chain.Block (HeaderHash, IsMainHeader (..), headerHashG) import Pos.Chain.Update (BlockVersionState (..), ConfirmedProposalState (..), DecidedProposalState (..), DpsExtra (..), MonadPoll (..), MonadPollRead (..), @@ -51,7 +52,6 @@ import Pos.Core (Coin, CoinPortion (..), EpochIndex, difficultyL, epochSlots, getCoinPortion, isBootstrapEra, sumCoins, unsafeAddCoin, unsafeIntegerToCoin, unsafeSubCoin) -import Pos.Core.Block (HeaderHash, IsMainHeader (..), headerHashG) import Pos.Core.Slotting (EpochSlottingData (..), SlottingData, addEpochSlottingData, getCurrentEpochIndex, getNextEpochSlottingData) diff --git a/db/src/Pos/DB/Update/Poll/Logic/Softfork.hs b/db/src/Pos/DB/Update/Poll/Logic/Softfork.hs index 69419af3b2d..3f9fa75bcc8 100644 --- a/db/src/Pos/DB/Update/Poll/Logic/Softfork.hs +++ b/db/src/Pos/DB/Update/Poll/Logic/Softfork.hs @@ -17,11 +17,11 @@ import Formatting (build, sformat, (%)) import Serokell.Util.Text (listJson) import System.Wlog (logInfo) +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Update (BlockVersionState (..), MonadPoll (..), MonadPollRead (..), PollVerFailure (..)) import Pos.Core (Coin, EpochIndex, HasProtocolConstants, SlotId (..), StakeholderId, crucialSlot, sumCoins, unsafeIntegerToCoin) -import Pos.Core.Block (HeaderHash) import Pos.Core.Update (BlockVersion, BlockVersionData (..), SoftforkRule (..)) import Pos.DB.Update.Poll.Logic.Base (ConfirmedEpoch, CurEpoch, diff --git a/explorer/src/Pos/Explorer/BListener.hs b/explorer/src/Pos/Explorer/BListener.hs index e1257c134c2..74592de3b1e 100644 --- a/explorer/src/Pos/Explorer/BListener.hs +++ b/explorer/src/Pos/Explorer/BListener.hs @@ -29,12 +29,11 @@ import qualified Ether import System.Wlog (WithLogger) import UnliftIO (MonadUnliftIO) -import Pos.Chain.Block (Blund) +import Pos.Chain.Block (Block, Blund, HeaderHash, MainBlock, + headerHash, mainBlockSlot, mainBlockTxPayload) import Pos.Chain.Txp (topsortTxs) import Pos.Core (HasConfiguration, LocalSlotIndex (..), SlotId (..), difficultyL, epochIndexL, getChainDifficulty) -import Pos.Core.Block (Block, HeaderHash, MainBlock, headerHash, - mainBlockSlot, mainBlockTxPayload) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..), toNewestFirst) import Pos.Core.Txp (Tx, txpTxs) diff --git a/explorer/src/Pos/Explorer/Core/Types.hs b/explorer/src/Pos/Explorer/Core/Types.hs index d0fc46db5ed..8c272092971 100644 --- a/explorer/src/Pos/Explorer/Core/Types.hs +++ b/explorer/src/Pos/Explorer/Core/Types.hs @@ -8,8 +8,8 @@ module Pos.Explorer.Core.Types import Universum import Pos.Binary.Class (Cons (..), Field (..), deriveSimpleBi) +import Pos.Chain.Block (HeaderHash) import Pos.Core (Timestamp) -import Pos.Core.Block (HeaderHash) import Pos.Core.Chrono (NewestFirst) import Pos.Core.Txp (TxId, TxUndo) diff --git a/explorer/src/Pos/Explorer/DB.hs b/explorer/src/Pos/Explorer/DB.hs index 9af3912d998..7d4c1a415b3 100644 --- a/explorer/src/Pos/Explorer/DB.hs +++ b/explorer/src/Pos/Explorer/DB.hs @@ -42,11 +42,11 @@ import System.Wlog (WithLogger, logError) import UnliftIO (MonadUnliftIO) import Pos.Binary.Class (serialize') +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (GenesisUtxo (..), genesisUtxo, utxoF, utxoToAddressCoinPairs) import Pos.Core (Address, Coin, EpochIndex (..), HasConfiguration, SlotCount, coinToInteger, unsafeAddCoin) -import Pos.Core.Block (HeaderHash) import Pos.Core.Chrono (NewestFirst (..)) import Pos.Core.Txp (Tx, TxId, TxOut (..), TxOutAux (..)) import Pos.Crypto (ProtocolMagic) diff --git a/explorer/src/Pos/Explorer/ExtraContext.hs b/explorer/src/Pos/Explorer/ExtraContext.hs index 9eba6bfcc17..e74e57c8a4e 100644 --- a/explorer/src/Pos/Explorer/ExtraContext.hs +++ b/explorer/src/Pos/Explorer/ExtraContext.hs @@ -25,8 +25,7 @@ import qualified Data.Vector as V import qualified Ether import Data.Default (Default (..), def) -import Pos.Chain.Block (Blund) -import Pos.Core.Block (Block, HeaderHash) +import Pos.Chain.Block (Block, Blund, HeaderHash) import qualified Pos.DB.Block as DB import Pos.DB.Class (MonadDBRead) import Pos.Explorer.DB (Epoch, Page, getEpochBlocks, getEpochPages, @@ -193,4 +192,3 @@ instance (Monad m, MonadDBRead m, MonadSlotsData ctx m) => extraCtx <- Ether.ask @ExtraContext let explorerMockMode = ecExplorerMockableMode extraCtx emmGetEpochPages explorerMockMode epoch - diff --git a/explorer/src/Pos/Explorer/Socket/Methods.hs b/explorer/src/Pos/Explorer/Socket/Methods.hs index 221abae2867..f35a5e32735 100644 --- a/explorer/src/Pos/Explorer/Socket/Methods.hs +++ b/explorer/src/Pos/Explorer/Socket/Methods.hs @@ -63,9 +63,8 @@ import qualified Data.Set as S import Formatting (sformat, shown, stext, (%)) import Network.EngineIO (SocketId) import Network.SocketIO (Socket, socketId) -import Pos.Chain.Block (Blund) +import Pos.Chain.Block (Block, Blund, HeaderHash, mainBlockTxPayload) import Pos.Core (Address) -import Pos.Core.Block (Block, HeaderHash, mainBlockTxPayload) import Pos.Core.Chrono (getOldestFirst) import Pos.Core.Txp (Tx (..), TxOut (..), TxOutAux (..), txOutAddress, txpTxs) diff --git a/explorer/src/Pos/Explorer/TestUtil.hs b/explorer/src/Pos/Explorer/TestUtil.hs index 837888ec80e..0db6d44a564 100644 --- a/explorer/src/Pos/Explorer/TestUtil.hs +++ b/explorer/src/Pos/Explorer/TestUtil.hs @@ -31,7 +31,9 @@ import Test.QuickCheck (Arbitrary (..), Gen, Property, Testable, choose, counterexample, forAll, generate, property, suchThat) -import Pos.Chain.Block (Blund, SlogUndo (..), Undo (..)) +import Pos.Chain.Block (Block, BlockHeader, Blund, GenesisBlock, + HeaderHash, MainBlock, SlogUndo (..), Undo (..), + getBlockHeader, headerHash, mkGenesisBlock) import Pos.Chain.Delegation (DlgPayload, DlgUndo (..), ProxySKBlockInfo) import Pos.Chain.Ssc (defaultSscPayload) @@ -42,9 +44,6 @@ import Pos.Core (Address, BlockCount (..), ChainDifficulty (..), LocalSlotIndex (..), SlotId (..), SlotLeaders, StakeholderId, difficultyL, genesisHash, makePubKeyAddressBoot) -import Pos.Core.Block (Block, BlockHeader, GenesisBlock, HeaderHash, - MainBlock, getBlockHeader, headerHash) -import Pos.Core.Block.Constructors (mkGenesisBlock) import Pos.Core.Ssc (SscPayload) import Pos.Core.Txp (TxAux) import Pos.Core.Update (UpdatePayload (..)) diff --git a/explorer/src/Pos/Explorer/Txp/Global.hs b/explorer/src/Pos/Explorer/Txp/Global.hs index 64a4f3587dd..2f9f91f556e 100644 --- a/explorer/src/Pos/Explorer/Txp/Global.hs +++ b/explorer/src/Pos/Explorer/Txp/Global.hs @@ -8,10 +8,10 @@ import Universum import qualified Data.HashMap.Strict as HM +import Pos.Chain.Block (ComponentBlock (..), HeaderHash, headerHash, + headerSlotL) import Pos.Chain.Txp (TxpConfiguration) import Pos.Core (HasConfiguration, SlotId (..), epochIndexL) -import Pos.Core.Block (ComponentBlock (..), HeaderHash, headerHash, - headerSlotL) import Pos.Core.Chrono (NewestFirst (..)) import Pos.Core.Txp (TxAux, TxUndo) import Pos.Crypto (ProtocolMagic) diff --git a/explorer/src/Pos/Explorer/Txp/Toil/Logic.hs b/explorer/src/Pos/Explorer/Txp/Toil/Logic.hs index 8a180d28b8b..827bdb5f300 100644 --- a/explorer/src/Pos/Explorer/Txp/Toil/Logic.hs +++ b/explorer/src/Pos/Explorer/Txp/Toil/Logic.hs @@ -19,12 +19,12 @@ import qualified Data.List.NonEmpty as NE import Formatting (build, sformat, (%)) import System.Wlog (logError) +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (ToilVerFailure (..), TxpConfiguration, extendGlobalToilM, extendLocalToilM, topsortTxs) import qualified Pos.Chain.Txp as Txp import Pos.Core (Address, Coin, EpochIndex, HasConfiguration, Timestamp, mkCoin, sumCoins, unsafeAddCoin, unsafeSubCoin) -import Pos.Core.Block (HeaderHash) import Pos.Core.Chrono (NewestFirst (..)) import Pos.Core.Txp (Tx (..), TxAux (..), TxId, TxOut (..), TxOutAux (..), TxUndo, _TxOut) diff --git a/explorer/src/Pos/Explorer/Web/ClientTypes.hs b/explorer/src/Pos/Explorer/Web/ClientTypes.hs index 790924bba54..679b676d1d9 100644 --- a/explorer/src/Pos/Explorer/Web/ClientTypes.hs +++ b/explorer/src/Pos/Explorer/Web/ClientTypes.hs @@ -69,15 +69,15 @@ import Servant.API (FromHttpApiData (..)) import Test.QuickCheck (Arbitrary (..)) import Pos.Binary (biSize) -import Pos.Chain.Block (Undo (..)) +import Pos.Chain.Block (MainBlock, Undo (..), gbHeader, gbhConsensus, + headerHash, mainBlockSlot, mainBlockTxPayload, mcdSlot, + prevBlockL) import Pos.Core (Address, Coin, EpochIndex, LocalSlotIndex, SlotId (..), StakeholderId, Timestamp, addressF, coinToInteger, decodeTextAddress, getEpochIndex, getSlotIndex, mkCoin, sumCoins, timestampToPosix, unsafeAddCoin, unsafeGetCoin, unsafeIntegerToCoin, unsafeSubCoin) -import Pos.Core.Block (MainBlock, gbHeader, gbhConsensus, headerHash, - mainBlockSlot, mainBlockTxPayload, mcdSlot, prevBlockL) import Pos.Core.Merkle (getMerkleRoot, mkMerkleTree, mtRoot) import Pos.Core.Txp (Tx (..), TxId, TxOut (..), TxOutAux (..), TxUndo, txpTxs, _txOutputs) diff --git a/explorer/src/Pos/Explorer/Web/Server.hs b/explorer/src/Pos/Explorer/Web/Server.hs index 5c245775a31..703a1ad2a65 100644 --- a/explorer/src/Pos/Explorer/Web/Server.hs +++ b/explorer/src/Pos/Explorer/Web/Server.hs @@ -56,15 +56,15 @@ import Pos.DB.Class (MonadDBRead) import Pos.Infra.Diffusion.Types (Diffusion) import Pos.Binary.Class (biSize) -import Pos.Chain.Block (Blund, Undo) +import Pos.Chain.Block (Block, Blund, HeaderHash, MainBlock, Undo, + gbHeader, gbhConsensus, mainBlockSlot, mainBlockTxPayload, + mcdSlot) import Pos.Chain.Txp (TxMap, mpLocalTxs, topsortTxs) import Pos.Core (AddrType (..), Address (..), Coin, EpochIndex, Timestamp, coinToInteger, difficultyL, getChainDifficulty, isUnknownAddressType, makeRedeemAddress, siEpoch, siSlot, sumCoins, timestampToPosix, unsafeAddCoin, unsafeIntegerToCoin, unsafeSubCoin) -import Pos.Core.Block (Block, HeaderHash, MainBlock, gbHeader, - gbhConsensus, mainBlockSlot, mainBlockTxPayload, mcdSlot) import Pos.Core.Chrono (NewestFirst (..)) import Pos.Core.Txp (Tx (..), TxAux, TxId, TxIn (..), TxOutAux (..), taTx, txOutAddress, txOutValue, txpTxs, _txOutputs) diff --git a/generator/app/VerificationBench.hs b/generator/app/VerificationBench.hs index f060960903b..6ca0566958e 100644 --- a/generator/app/VerificationBench.hs +++ b/generator/app/VerificationBench.hs @@ -19,9 +19,9 @@ import System.Wlog (LoggerConfig, LoggerName (..), consoleActionB, import Pos.AllSecrets (mkAllSecretsSimple) import Pos.Binary.Class (decodeFull, serialize) -import Pos.Chain.Block (ApplyBlocksException, VerifyBlocksException) +import Pos.Chain.Block (ApplyBlocksException, Block, + VerifyBlocksException) import Pos.Chain.Txp (TxpConfiguration (..)) -import Pos.Core.Block (Block) import Pos.Core.Chrono (NE, OldestFirst (..), nonEmptyNewestFirst) import Pos.Core.Common (BlockCount (..), unsafeCoinPortionFromDouble) import Pos.Core.Configuration (genesisBlockVersionData, genesisData, diff --git a/generator/bench/Bench/Pos/Criterion/Block/Logic.hs b/generator/bench/Bench/Pos/Criterion/Block/Logic.hs index a75965da51c..85116234c08 100644 --- a/generator/bench/Bench/Pos/Criterion/Block/Logic.hs +++ b/generator/bench/Bench/Pos/Criterion/Block/Logic.hs @@ -15,9 +15,9 @@ import System.Random (newStdGen) import System.Wlog (LoggerName (..)) import Pos.AllSecrets (mkAllSecretsSimple) -import Pos.Chain.Block (VerifyBlockParams (..), - VerifyHeaderParams (..), verifyBlock, verifyHeader) -import Pos.Core.Block (Block, getBlockHeader) +import Pos.Chain.Block (Block, VerifyBlockParams (..), + VerifyHeaderParams (..), getBlockHeader, verifyBlock, + verifyHeader) import Pos.Core.Chrono (NE, OldestFirst (..), nonEmptyNewestFirst) import Pos.Core.Common (BlockCount (..), unsafeCoinPortionFromDouble) import Pos.Core.Configuration (genesisBlockVersionData, genesisData, diff --git a/generator/src/Pos/Generator/Block/Logic.hs b/generator/src/Pos/Generator/Block/Logic.hs index f662c9f2191..6d05d47d860 100644 --- a/generator/src/Pos/Generator/Block/Logic.hs +++ b/generator/src/Pos/Generator/Block/Logic.hs @@ -21,13 +21,11 @@ import System.Random (RandomGen (..)) import System.Wlog (logWarning) import Pos.AllSecrets (HasAllSecrets (..), unInvSecretsMap) -import Pos.Chain.Block (Blund) +import Pos.Chain.Block (Block, BlockHeader, Blund, mkGenesisBlock) import Pos.Chain.Delegation (ProxySKBlockInfo) import Pos.Chain.Txp (TxpConfiguration) import Pos.Core (EpochOrSlot (..), SlotId (..), addressHash, epochIndexL, getEpochOrSlot, getSlotIndex) -import Pos.Core.Block (Block, BlockHeader) -import Pos.Core.Block.Constructors (mkGenesisBlock) import Pos.Crypto (ProtocolMagic, pskDelegatePk) import Pos.DB.Block (ShouldCallBListener (..), VerifyBlocksContext (..), applyBlocksUnsafe, diff --git a/generator/src/Pos/Generator/BlockEvent.hs b/generator/src/Pos/Generator/BlockEvent.hs index 224dc8be9d7..0f2c0e648ef 100644 --- a/generator/src/Pos/Generator/BlockEvent.hs +++ b/generator/src/Pos/Generator/BlockEvent.hs @@ -60,9 +60,8 @@ import qualified Prelude import Serokell.Util (listJson) import Pos.AllSecrets (AllSecrets) -import Pos.Chain.Block (Blund) +import Pos.Chain.Block (Blund, HeaderHash, headerHash, prevBlockL) import Pos.Chain.Txp (TxpConfiguration) -import Pos.Core.Block (HeaderHash, headerHash, prevBlockL) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..), toNewestFirst, toOldestFirst, _OldestFirst) import Pos.Core.Genesis (GenesisWStakeholders) diff --git a/generator/src/Test/Pos/Block/Logic/Event.hs b/generator/src/Test/Pos/Block/Logic/Event.hs index 9261fdbcc11..342a0767cff 100644 --- a/generator/src/Test/Pos/Block/Logic/Event.hs +++ b/generator/src/Test/Pos/Block/Logic/Event.hs @@ -20,9 +20,8 @@ import qualified Data.Map as Map import qualified Data.Text as T import qualified GHC.Exts as IL -import Pos.Chain.Block (Blund) +import Pos.Chain.Block (Block, Blund, HeaderHash) import Pos.Chain.Txp (TxpConfiguration) -import Pos.Core.Block (Block, HeaderHash) import Pos.Core.Chrono (NE, NewestFirst, OldestFirst) import Pos.Core.Configuration (HasConfiguration) import Pos.Core.Exception (CardanoFatalError (..)) diff --git a/generator/src/Test/Pos/Block/Logic/Util.hs b/generator/src/Test/Pos/Block/Logic/Util.hs index c1b38f88fb4..c589f36c3bf 100644 --- a/generator/src/Test/Pos/Block/Logic/Util.hs +++ b/generator/src/Test/Pos/Block/Logic/Util.hs @@ -24,11 +24,10 @@ import Test.QuickCheck.Gen (Gen (MkGen), sized) import Test.QuickCheck.Monadic (PropertyM, pick) import Pos.AllSecrets (AllSecrets, HasAllSecrets (..), allSecrets) -import Pos.Chain.Block (Blund) +import Pos.Chain.Block (Block, Blund) import Pos.Chain.Txp (TxpConfiguration (..)) import Pos.Core (BlockCount, HasGenesisData, HasProtocolConstants, SlotId (..), epochIndexL, genesisData) -import Pos.Core.Block (Block) import Pos.Core.Chrono (NE, OldestFirst (..)) import Pos.Core.Genesis (GenesisData (..)) import Pos.Crypto (ProtocolMagic) diff --git a/generator/test/Test/Pos/Block/Logic/CreationSpec.hs b/generator/test/Test/Pos/Block/Logic/CreationSpec.hs index 6141a8bde2f..6480f0c6aa7 100644 --- a/generator/test/Test/Pos/Block/Logic/CreationSpec.hs +++ b/generator/test/Test/Pos/Block/Logic/CreationSpec.hs @@ -17,6 +17,7 @@ import Test.QuickCheck (Gen, Property, Testable, arbitrary, choose, import Pos.Binary.Class (biSize) +import Pos.Chain.Block (BlockHeader, MainBlock) import Pos.Chain.Delegation (DlgPayload, ProxySKBlockInfo) import Pos.Chain.Ssc (defaultSscPayload) import Pos.Chain.Update (HasUpdateConfiguration) @@ -24,7 +25,6 @@ import qualified Pos.Communication () import Pos.Core (HasConfiguration, SlotId (..), blkSecurityParam, genesisBlockVersionData, pcEpochSlots, protocolConstants, unsafeMkLocalSlotIndexExplicit) -import Pos.Core.Block (BlockHeader, MainBlock) import Pos.Core.Ssc (SscPayload (..), mkVssCertificatesMapLossy) import Pos.Core.Txp (TxAux) import Pos.Core.Update (BlockVersionData (..), UpdatePayload (..)) diff --git a/generator/test/Test/Pos/Block/Logic/VarSpec.hs b/generator/test/Test/Pos/Block/Logic/VarSpec.hs index 08b2eac0526..08ae2e16685 100644 --- a/generator/test/Test/Pos/Block/Logic/VarSpec.hs +++ b/generator/test/Test/Pos/Block/Logic/VarSpec.hs @@ -23,11 +23,10 @@ import Test.QuickCheck.Gen (Gen (MkGen)) import Test.QuickCheck.Monadic (assert, pick, pre, run) import Test.QuickCheck.Random (QCGen) -import Pos.Chain.Block (Blund) +import Pos.Chain.Block (Blund, headerHash) import Pos.Chain.Txp (TxpConfiguration) import Pos.Core (HasConfiguration, blkSecurityParam, epochSlots, genesisData) -import Pos.Core.Block (headerHash) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..), nonEmptyNewestFirst, nonEmptyOldestFirst, splitAtNewestFirst, toNewestFirst, _NewestFirst) diff --git a/generator/test/Test/Pos/Generator/Block/LrcSpec.hs b/generator/test/Test/Pos/Generator/Block/LrcSpec.hs index 5dfa9905545..c8629eeb0a8 100644 --- a/generator/test/Test/Pos/Generator/Block/LrcSpec.hs +++ b/generator/test/Test/Pos/Generator/Block/LrcSpec.hs @@ -22,12 +22,12 @@ import Test.QuickCheck (Gen, arbitrary, choose) import Test.QuickCheck.Monadic (pick, run) import Pos.Binary.Class (serialize') +import Pos.Chain.Block (mainBlockTxPayload) import qualified Pos.Chain.Lrc as Lrc import Pos.Chain.Txp (TxpConfiguration (..)) import Pos.Core (Coin, EpochIndex, StakeholderId, addressHash, blkSecurityParam, coinF, epochSlots, genesisData, genesisSecretKeysPoor, genesisSecretKeysRich) -import Pos.Core.Block (mainBlockTxPayload) import Pos.Core.Genesis (GenesisData (..), GenesisInitializer (..), TestnetBalanceOptions (..)) import Pos.Core.Txp (TxAux, mkTxPayload) diff --git a/infra/src/Pos/Infra/Diffusion/Types.hs b/infra/src/Pos/Infra/Diffusion/Types.hs index 89ef50b59ff..f56082b16cb 100644 --- a/infra/src/Pos/Infra/Diffusion/Types.hs +++ b/infra/src/Pos/Infra/Diffusion/Types.hs @@ -15,7 +15,7 @@ import Data.Map.Strict (Map) import Formatting (Format, stext) import System.Metrics.Gauge (Gauge) -import Pos.Core.Block (Block, BlockHeader, HeaderHash, +import Pos.Chain.Block (Block, BlockHeader, HeaderHash, MainBlockHeader) import Pos.Core.Chrono (OldestFirst (..)) import Pos.Core.Delegation (ProxySKHeavy) diff --git a/infra/src/Pos/Infra/Recovery/Types.hs b/infra/src/Pos/Infra/Recovery/Types.hs index 643819016bb..3beb1dd6574 100644 --- a/infra/src/Pos/Infra/Recovery/Types.hs +++ b/infra/src/Pos/Infra/Recovery/Types.hs @@ -5,7 +5,7 @@ module Pos.Infra.Recovery.Types import Control.Concurrent.STM (TMVar) -import Pos.Core.Block (BlockHeader) +import Pos.Chain.Block (BlockHeader) import Pos.Infra.Communication.Types.Protocol (NodeId) data RecoveryHeaderTag diff --git a/infra/src/Pos/Infra/StateLock.hs b/infra/src/Pos/Infra/StateLock.hs index 873c0d78f1e..0e4ba3fbfbe 100644 --- a/infra/src/Pos/Infra/StateLock.hs +++ b/infra/src/Pos/Infra/StateLock.hs @@ -2,4 +2,4 @@ module Pos.Infra.StateLock ( module X ) where -import Pos.Core.StateLock as X +import Pos.DB.GState.Lock as X diff --git a/infra/src/Pos/Infra/Util/JsonLog/Events.hs b/infra/src/Pos/Infra/Util/JsonLog/Events.hs index f4234b8ef96..46eb3613479 100644 --- a/infra/src/Pos/Infra/Util/JsonLog/Events.hs +++ b/infra/src/Pos/Infra/Util/JsonLog/Events.hs @@ -18,4 +18,5 @@ module Pos.Infra.Util.JsonLog.Events ) where -- Only export the above from this module. +import Pos.Chain.Block (jlAdoptedBlock, jlCreatedBlock) import Pos.Core.JsonLog.LogEvents diff --git a/lib/bench/Bench/Pos/Diffusion/BlockDownload.hs b/lib/bench/Bench/Pos/Diffusion/BlockDownload.hs index 252cce9ad9d..4833f602d56 100644 --- a/lib/bench/Bench/Pos/Diffusion/BlockDownload.hs +++ b/lib/bench/Bench/Pos/Diffusion/BlockDownload.hs @@ -33,8 +33,8 @@ import Node (NodeId) import qualified Node import Pos.Binary (serialize, serialize') -import Pos.Core.Block (Block, BlockHeader, HeaderHash) -import qualified Pos.Core.Block as Block (getBlockHeader) +import Pos.Chain.Block (Block, BlockHeader, HeaderHash) +import qualified Pos.Chain.Block as Block (getBlockHeader) import Pos.Core.Chrono (NewestFirst (..), OldestFirst (..)) import Pos.Core.ProtocolConstants (ProtocolConstants (..)) import Pos.Core.Update (BlockVersion (..)) diff --git a/lib/src/Pos/Communication/Limits.hs b/lib/src/Pos/Communication/Limits.hs index 601120c80c2..6484d030c1a 100644 --- a/lib/src/Pos/Communication/Limits.hs +++ b/lib/src/Pos/Communication/Limits.hs @@ -60,12 +60,12 @@ import Serokell.Data.Memory.Units (Byte) import Pos.Binary.Class (AsBinary (..)) import Pos.Binary.Limit (Limit (..), mlBool, mlEither, mlMaybe, mlTriple, mlTuple, vectorOf, vectorOfNE, (<+>)) +import Pos.Chain.Block (Block, BlockHeader (..), GenesisBlock, + GenesisBlockHeader, MainBlock, MainBlockHeader) import Pos.Chain.Ssc (MCCommitment (..), MCOpening (..), MCShares (..), MCVssCertificate (..)) import Pos.Core (BlockCount, EpochIndex, StakeholderId, coinPortionToDouble) -import Pos.Core.Block (Block, BlockHeader (..), GenesisBlock, - GenesisBlockHeader, MainBlock, MainBlockHeader) import Pos.Core.Delegation (HeavyDlgIndex (..), LightDlgIndices (..)) import Pos.Core.Ssc (Commitment (..), InnerSharesMap, Opening (..), SignedCommitment, VssCertificate) diff --git a/lib/src/Pos/DB/DB.hs b/lib/src/Pos/DB/DB.hs index 722ae004a88..301864401ba 100644 --- a/lib/src/Pos/DB/DB.hs +++ b/lib/src/Pos/DB/DB.hs @@ -10,9 +10,9 @@ module Pos.DB.DB import Universum +import Pos.Chain.Block (genesisBlock0, headerHash) import Pos.Chain.Lrc (genesisLeaders) import Pos.Core (GenesisHash (..), SlotCount, genesisHash) -import Pos.Core.Block (genesisBlock0, headerHash) import Pos.Core.Update (BlockVersionData) import Pos.Crypto (ProtocolMagic) import Pos.DB.Block (prepareBlockDB) diff --git a/lib/src/Pos/Diffusion/Full.hs b/lib/src/Pos/Diffusion/Full.hs index 30097f27fe7..fe3b1f5aea5 100644 --- a/lib/src/Pos/Diffusion/Full.hs +++ b/lib/src/Pos/Diffusion/Full.hs @@ -32,6 +32,8 @@ import qualified System.Metrics as Monitoring import System.Random (newStdGen) +import Pos.Chain.Block (Block, BlockHeader, HeaderHash, + MainBlockHeader) import Pos.Chain.Ssc (MCCommitment (..), MCOpening (..), MCShares (..), MCVssCertificate (..)) import Pos.Communication (EnqueueMsg, HandlerSpecs, InSpecs (..), @@ -41,8 +43,6 @@ import Pos.Communication (EnqueueMsg, HandlerSpecs, InSpecs (..), bipPacking, convH, createOutSpecs, makeEnqueueMsg, makeSendActions, toOutSpecs) import Pos.Core (ProtocolConstants (..), StakeholderId) -import Pos.Core.Block (Block, BlockHeader, HeaderHash, - MainBlockHeader) import Pos.Core.Chrono (OldestFirst) import Pos.Core.Delegation (ProxySKHeavy) import Pos.Core.Metrics.Constants (withCardanoNamespace) diff --git a/lib/src/Pos/Diffusion/Full/Block.hs b/lib/src/Pos/Diffusion/Full/Block.hs index 8bfde0659a4..7daf71788d3 100644 --- a/lib/src/Pos/Diffusion/Full/Block.hs +++ b/lib/src/Pos/Diffusion/Full/Block.hs @@ -33,12 +33,12 @@ import qualified System.Metrics.Gauge as Gauge import Pos.Binary.Communication (serializeMsgSerializedBlock, serializeMsgStreamBlock) +import Pos.Chain.Block (Block, BlockHeader (..), HeaderHash, + MainBlockHeader, blockHeader, headerHash, prevBlockL) import Pos.Communication.Limits (mlMsgBlock, mlMsgGetBlocks, mlMsgGetHeaders, mlMsgHeaders, mlMsgStream, mlMsgStreamBlock) import Pos.Core (ProtocolConstants (..), difficultyL) -import Pos.Core.Block (Block, BlockHeader (..), HeaderHash, - MainBlockHeader, blockHeader, headerHash, prevBlockL) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..), toOldestFirst, _NewestFirst, _OldestFirst) import Pos.Core.Exception (cardanoExceptionFromException, diff --git a/lib/src/Pos/GState/GState.hs b/lib/src/Pos/GState/GState.hs index 0081dc9430a..18f26a1704a 100644 --- a/lib/src/Pos/GState/GState.hs +++ b/lib/src/Pos/GState/GState.hs @@ -6,9 +6,9 @@ module Pos.GState.GState import Universum +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (genesisUtxo) import Pos.Core (genesisData) -import Pos.Core.Block (HeaderHash) import Pos.Core.Genesis (gdHeavyDelegation) import Pos.DB.Block (initGStateBlockExtra) import Pos.DB.Class (MonadDB) diff --git a/lib/src/Pos/Logic/Full.hs b/lib/src/Pos/Logic/Full.hs index 041657cbe2d..33e074fb0d2 100644 --- a/lib/src/Pos/Logic/Full.hs +++ b/lib/src/Pos/Logic/Full.hs @@ -15,7 +15,8 @@ import Data.Tagged (Tagged (..), tagWith) import Formatting (build, sformat, (%)) import System.Wlog (WithLogger, logDebug) -import Pos.Chain.Block (HasBlockConfiguration) +import Pos.Chain.Block (Block, BlockHeader, HasBlockConfiguration, + HeaderHash) import Pos.Chain.Security (SecurityParams, shouldIgnorePkAddress) import Pos.Chain.Ssc (MCCommitment (..), MCOpening (..), MCShares (..), MCVssCertificate (..), SscTag (..), @@ -24,7 +25,6 @@ import Pos.Chain.Ssc (MCCommitment (..), MCOpening (..), import Pos.Chain.Txp (MemPool (..), TxpConfiguration) import Pos.Communication (NodeId) import Pos.Core (HasConfiguration, StakeholderId, addressHash) -import Pos.Core.Block (Block, BlockHeader, HeaderHash) import Pos.Core.Chrono (NE, NewestFirst, OldestFirst) import Pos.Core.Delegation (ProxySKHeavy) import Pos.Core.Ssc (getCertId, getCommitmentsMap, lookupVss) diff --git a/lib/src/Pos/Logic/Pure.hs b/lib/src/Pos/Logic/Pure.hs index 6181a54f8dd..ca0419701b4 100644 --- a/lib/src/Pos/Logic/Pure.hs +++ b/lib/src/Pos/Logic/Pure.hs @@ -12,16 +12,17 @@ import Data.Coerce (coerce) import Data.Default (def) import Pos.Binary.Class (serialize') +import Pos.Chain.Block (Block, BlockHeader (..), + BlockHeaderAttributes, BlockSignature (..), ExtraBodyData, + ExtraHeaderData, GenericBlock (..), + GenericBlockHeader (..), HeaderHash, MainBlock, + MainBlockHeader, MainBlockchain, MainBody (..), + MainConsensusData (..), MainExtraBodyData (..), + MainExtraHeaderData (..), MainProof (..)) import Pos.Chain.Txp (emptyTxPayload) import Pos.Core (StakeholderId, TxFeePolicy (..), unsafeCoinPortionFromDouble) import Pos.Core.Attributes (Attributes (..), UnparsedFields (..)) -import Pos.Core.Block (Block, BlockHeader (..), BlockHeaderAttributes, - BlockSignature (..), ExtraBodyData, ExtraHeaderData, - GenericBlock (..), GenericBlockHeader (..), HeaderHash, - MainBlock, MainBlockHeader, MainBlockchain, MainBody (..), - MainConsensusData (..), MainExtraBodyData (..), - MainExtraHeaderData (..), MainProof (..)) import Pos.Core.Chrono (NewestFirst (..), OldestFirst (..)) import Pos.Core.Common (BlockCount (..), ChainDifficulty (..)) import Pos.Core.Delegation (DlgPayload (..)) diff --git a/lib/src/Pos/Logic/Types.hs b/lib/src/Pos/Logic/Types.hs index d12c8a45c5c..3d05dbb2cf4 100644 --- a/lib/src/Pos/Logic/Types.hs +++ b/lib/src/Pos/Logic/Types.hs @@ -16,12 +16,12 @@ import Data.Conduit (ConduitT, transPipe) import Data.Default (def) import Data.Tagged (Tagged) +import Pos.Chain.Block (Block, BlockHeader, HeaderHash) import Pos.Chain.Security (SecurityParams (..)) import Pos.Chain.Ssc (MCCommitment, MCOpening, MCShares, MCVssCertificate) import Pos.Communication (NodeId) import Pos.Core (StakeholderId) -import Pos.Core.Block (Block, BlockHeader, HeaderHash) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..)) import Pos.Core.Delegation (ProxySKHeavy) import Pos.Core.Txp (TxId, TxMsgContents) diff --git a/lib/src/Pos/Network/Block/Logic.hs b/lib/src/Pos/Network/Block/Logic.hs index d56903bee07..3d08b7c757a 100644 --- a/lib/src/Pos/Network/Block/Logic.hs +++ b/lib/src/Pos/Network/Block/Logic.hs @@ -27,13 +27,11 @@ import Serokell.Util.Text (listJson) import qualified System.Metrics.Gauge as Metrics import System.Wlog (logDebug, logInfo, logWarning) -import Pos.Chain.Block (ApplyBlocksException, Blund, - LastKnownHeaderTag) +import Pos.Chain.Block (ApplyBlocksException, Block, BlockHeader, + Blund, HasHeaderHash (..), HeaderHash, LastKnownHeaderTag, + blockHeader, gbHeader, headerHashG, prevBlockL) import Pos.Chain.Txp (TxpConfiguration) import Pos.Core (isMoreDifficult) -import Pos.Core.Block (Block, BlockHeader, HasHeaderHash (..), - HeaderHash, blockHeader, gbHeader, headerHashG, - prevBlockL) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..), _NewestFirst, _OldestFirst) import Pos.Core.Conc (forConcurrently) @@ -42,12 +40,12 @@ import Pos.Core.Exception (cardanoExceptionFromException, import Pos.Core.JsonLog (CanJsonLog (..)) import Pos.Core.Reporting (HasMisbehaviorMetrics (..), MisbehaviorMetrics (..)) -import Pos.Core.StateLock (Priority (..), modifyStateLock) import Pos.Crypto (ProtocolMagic, shortHashF) import Pos.DB.Block (ClassifyHeaderRes (..), classifyNewHeader, lcaWithMainChain, verifyAndApplyBlocks) import qualified Pos.DB.Block as L import qualified Pos.DB.Block as DB +import Pos.DB.GState.Lock (Priority (..), modifyStateLock) import Pos.Infra.Communication.Protocol (NodeId) import Pos.Infra.Diffusion.Types (Diffusion) import qualified Pos.Infra.Diffusion.Types as Diffusion diff --git a/lib/src/Pos/Network/Block/Retrieval.hs b/lib/src/Pos/Network/Block/Retrieval.hs index 6c164e6a953..f75640ca38e 100644 --- a/lib/src/Pos/Network/Block/Retrieval.hs +++ b/lib/src/Pos/Network/Block/Retrieval.hs @@ -18,10 +18,10 @@ import Data.Time.Units (Second) import Formatting (build, int, sformat, (%)) import System.Wlog (logDebug, logError, logInfo, logWarning) +import Pos.Chain.Block (Block, BlockHeader, HasHeaderHash (..), + HeaderHash) import Pos.Chain.Txp (TxpConfiguration) import Pos.Core (difficultyL, isMoreDifficult) -import Pos.Core.Block (Block, BlockHeader, HasHeaderHash (..), - HeaderHash) import Pos.Core.Chrono (NE, OldestFirst (..), _OldestFirst) import Pos.Core.Conc (delay) import Pos.Core.Reporting (HasMisbehaviorMetrics) diff --git a/lib/src/Pos/Network/Block/RetrievalQueue.hs b/lib/src/Pos/Network/Block/RetrievalQueue.hs index dcb64319f3b..5efbc6db6fc 100644 --- a/lib/src/Pos/Network/Block/RetrievalQueue.hs +++ b/lib/src/Pos/Network/Block/RetrievalQueue.hs @@ -9,7 +9,7 @@ import Universum import Control.Concurrent.STM (TBQueue) -import Pos.Core.Block (BlockHeader) +import Pos.Chain.Block (BlockHeader) import Pos.Infra.Network.Types (NodeId) -- | Task that is put in the block retrieval queue for the retrieval diff --git a/lib/src/Pos/Network/Block/Types.hs b/lib/src/Pos/Network/Block/Types.hs index 42d90018a9a..2fec5e4adaf 100644 --- a/lib/src/Pos/Network/Block/Types.hs +++ b/lib/src/Pos/Network/Block/Types.hs @@ -20,7 +20,7 @@ import Universum import Node.Message.Class (Message (..)) import Pos.Binary.Class (Bi (..), Cons (..), Field (..), deriveSimpleBi, encodeListLen, enforceSize) -import Pos.Core.Block (Block, BlockHeader (..), HeaderHash) +import Pos.Chain.Block (Block, BlockHeader (..), HeaderHash) import Pos.Core.Chrono (NE, NewestFirst (..)) import Pos.DB.Class (SerializedBlock) import Pos.Util.Util (cborError) diff --git a/lib/src/Pos/Web/Api.hs b/lib/src/Pos/Web/Api.hs index 059a58c88ea..58c78842d0b 100644 --- a/lib/src/Pos/Web/Api.hs +++ b/lib/src/Pos/Web/Api.hs @@ -16,8 +16,8 @@ import Universum import Servant.API ((:<|>), (:>), Capture, Get, JSON, PlainText, Post, QueryParam) +import Pos.Chain.Block (HeaderHash) import Pos.Core (EpochIndex, SlotLeaders) -import Pos.Core.Block (HeaderHash) import Pos.Core.Txp (TxOut) import Pos.Crypto (PublicKey) import Pos.Web.Types (CConfirmedProposalState) diff --git a/lib/src/Pos/Worker/Block.hs b/lib/src/Pos/Worker/Block.hs index 86cecaab702..5389d1f07e6 100644 --- a/lib/src/Pos/Worker/Block.hs +++ b/lib/src/Pos/Worker/Block.hs @@ -21,8 +21,8 @@ import System.Random (randomRIO) import System.Wlog (logDebug, logError, logInfo, logWarning) import Pos.Chain.Block (HasBlockConfiguration, criticalCQ, - criticalCQBootstrap, fixedTimeCQSec, networkDiameter, - nonCriticalCQ, nonCriticalCQBootstrap, + criticalCQBootstrap, fixedTimeCQSec, gbHeader, + networkDiameter, nonCriticalCQ, nonCriticalCQBootstrap, scCQFixedMonitorState, scCQOverallMonitorState, scCQkMonitorState, scCrucialValuesLabel, scDifficultyMonitorState, scEpochMonitorState, @@ -34,7 +34,6 @@ import Pos.Core (ChainDifficulty, FlatSlotId, HasProtocolConstants, blkSecurityParam, difficultyL, epochOrSlotToSlot, epochSlots, flattenSlotId, getEpochOrSlot, getOurPublicKey, getSlotIndex, slotIdF, unflattenSlotId) -import Pos.Core.Block (gbHeader) import Pos.Core.Chrono (OldestFirst (..)) import Pos.Core.Conc (delay) import Pos.Core.JsonLog (CanJsonLog (..)) diff --git a/lib/test/Test/Pos/Diffusion/BlockSpec.hs b/lib/test/Test/Pos/Diffusion/BlockSpec.hs index 9ec22bc1561..13cc0b3bbf9 100644 --- a/lib/test/Test/Pos/Diffusion/BlockSpec.hs +++ b/lib/test/Test/Pos/Diffusion/BlockSpec.hs @@ -26,9 +26,9 @@ import Node (NodeId) import qualified Node import Pos.Binary.Class (serialize') -import Pos.Core.Block (Block, BlockHeader, HeaderHash, +import Pos.Chain.Block (Block, BlockHeader, HeaderHash, blockHeaderHash) -import qualified Pos.Core.Block as Block (getBlockHeader) +import qualified Pos.Chain.Block as Block (getBlockHeader) import Pos.Core.Chrono (NewestFirst (..), OldestFirst (..)) import Pos.Core.ProtocolConstants (ProtocolConstants (..)) import Pos.Core.Update (BlockVersion (..)) diff --git a/pkgs/default.nix b/pkgs/default.nix index b06091960bd..79728766da4 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -15347,6 +15347,8 @@ license = stdenv.lib.licenses.mit; , cardano-sl-crypto-test , cardano-sl-util , cardano-sl-util-test +, cborg +, cereal , conduit , containers , cpphs @@ -15378,6 +15380,7 @@ license = stdenv.lib.licenses.mit; , random , reflection , safe-exceptions +, safecopy , serokell-util , stdenv , template-haskell @@ -15410,6 +15413,8 @@ cardano-sl-binary cardano-sl-core cardano-sl-crypto cardano-sl-util +cborg +cereal conduit containers cryptonite @@ -15434,6 +15439,7 @@ parsec plutus-prototype reflection safe-exceptions +safecopy serokell-util template-haskell text @@ -15504,6 +15510,7 @@ license = stdenv.lib.licenses.mit; , bytestring , cardano-crypto , cardano-sl-binary +, cardano-sl-binary-test , cardano-sl-chain , cardano-sl-core , cardano-sl-core-test @@ -15535,6 +15542,7 @@ base bytestring cardano-crypto cardano-sl-binary +cardano-sl-binary-test cardano-sl-chain cardano-sl-core cardano-sl-core-test @@ -16097,6 +16105,7 @@ license = stdenv.lib.licenses.mit; , directory , ekg-core , ether +, exceptions , filepath , formatting , lens @@ -16147,6 +16156,7 @@ data-default directory ekg-core ether +exceptions filepath formatting lens diff --git a/tools/src/blockchain-analyser/Main.hs b/tools/src/blockchain-analyser/Main.hs index 34b2c1dab39..71a94de4905 100644 --- a/tools/src/blockchain-analyser/Main.hs +++ b/tools/src/blockchain-analyser/Main.hs @@ -7,10 +7,9 @@ import Universum import System.Directory (canonicalizePath, doesDirectoryExist, getFileSize, listDirectory, withCurrentDirectory) -import Pos.Chain.Block (Undo) +import Pos.Chain.Block (Block, HeaderHash, Undo, headerHash) import qualified Pos.Client.CLI as CLI import Pos.Core (HasConfiguration) -import Pos.Core.Block (Block, HeaderHash, headerHash) import Pos.Core.Chrono (NewestFirst (..)) import Pos.DB (closeNodeDBs, openNodeDBs) import Pos.DB.Block (getUndo) diff --git a/tools/src/blockchain-analyser/Rendering.hs b/tools/src/blockchain-analyser/Rendering.hs index 743944cc442..ad27408a2c2 100644 --- a/tools/src/blockchain-analyser/Rendering.hs +++ b/tools/src/blockchain-analyser/Rendering.hs @@ -11,12 +11,11 @@ import qualified Data.Text as T import Formatting hiding (bytes) import Options (CLIOptions (..), PrintMode (..), UOM (..)) import Pos.Binary.Class (biSize) -import Pos.Chain.Block (Undo) +import Pos.Chain.Block (Block, BlockHeader (..), Undo, + blockHeaderHash, getBlockHeader, mbTxs, _gbBody, + _gbhConsensus, _mcdLeaderKey) import Pos.Core (EpochIndex, EpochOrSlot (..), LocalSlotIndex (..), SlotId (..), getEpochIndex, getEpochOrSlot) -import Pos.Core.Block (Block, BlockHeader (..), blockHeaderHash, - getBlockHeader, mbTxs, _gbBody, _gbhConsensus, - _mcdLeaderKey) import Pos.Core.Txp (Tx) import Pos.Crypto (PublicKey) import Serokell.Data.Memory.Units (Byte, fromBytes, memory, toBytes) diff --git a/tools/src/blockchain-analyser/Types.hs b/tools/src/blockchain-analyser/Types.hs index 6cf380ddd4a..704a1e84d06 100644 --- a/tools/src/blockchain-analyser/Types.hs +++ b/tools/src/blockchain-analyser/Types.hs @@ -18,8 +18,8 @@ import Universum import Control.Lens (makeLensesWith) import qualified Control.Monad.Reader as Mtl +import Pos.Chain.Block (Block, HeaderHash, prevBlockL) import Pos.Core (HasConfiguration) -import Pos.Core.Block (Block, HeaderHash, prevBlockL) import Pos.DB (MonadDBRead (..)) import qualified Pos.DB as DB import qualified Pos.DB.Block as BDB diff --git a/wallet-new/src/Cardano/Wallet/Kernel/Types.hs b/wallet-new/src/Cardano/Wallet/Kernel/Types.hs index fae5b2ac5dd..0c15fad05dd 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/Types.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/Types.hs @@ -26,9 +26,9 @@ import qualified Data.Map.Strict as Map import Data.Word (Word32) import Formatting.Buildable (Buildable (..)) -import Pos.Chain.Txp (Utxo) -import Pos.Core.Block (MainBlock, gbBody, mainBlockSlot, mbTxs, +import Pos.Chain.Block (MainBlock, gbBody, mainBlockSlot, mbTxs, mbWitnesses) +import Pos.Chain.Txp (Utxo) import Pos.Core.Txp (Tx, TxAux (..), TxId, TxIn (..), TxOut, TxOutAux (..), txInputs, txOutputs) import Pos.Crypto.Hashing (hash) diff --git a/wallet-new/test/unit/UTxO/Context.hs b/wallet-new/test/unit/UTxO/Context.hs index 5744c62252d..2854702d7f4 100644 --- a/wallet-new/test/unit/UTxO/Context.hs +++ b/wallet-new/test/unit/UTxO/Context.hs @@ -45,11 +45,11 @@ import Serokell.Util (listJson, mapJson, pairF) import Serokell.Util.Base16 (base16F) import Universum +import Pos.Chain.Block (BlockHeader (..), GenesisBlock, HeaderHash, + blockHeaderHash, genesisBlock0, _gbHeader) import Pos.Chain.Lrc import Pos.Chain.Txp import Pos.Core -import Pos.Core.Block (BlockHeader (..), GenesisBlock, HeaderHash, - blockHeaderHash, genesisBlock0, _gbHeader) import Pos.Core.Delegation (ProxySKHeavy) import Pos.Core.Genesis (GeneratedSecrets (..), GenesisData (..), GenesisDelegation (..), PoorSecret (..), RichSecrets (..)) diff --git a/wallet-new/test/unit/UTxO/Interpreter.hs b/wallet-new/test/unit/UTxO/Interpreter.hs index c556a21c1cc..4ab201960c5 100644 --- a/wallet-new/test/unit/UTxO/Interpreter.hs +++ b/wallet-new/test/unit/UTxO/Interpreter.hs @@ -42,14 +42,14 @@ import Cardano.Wallet.Kernel.DB.Resolved import Cardano.Wallet.Kernel.Types import Cardano.Wallet.Kernel.Util (at) +import Pos.Chain.Block (Block, BlockHeader (..), GenesisBlock, + MainBlock, gbHeader, genBlockLeaders, mkGenesisBlock) import Pos.Chain.Lrc (followTheSatoshi) import Pos.Chain.Ssc (defaultSscPayload) import Pos.Chain.Txp (Utxo, txOutStake) import Pos.Chain.Update import Pos.Client.Txp import Pos.Core -import Pos.Core.Block (Block, BlockHeader (..), GenesisBlock, - MainBlock, gbHeader, genBlockLeaders, mkGenesisBlock) import Pos.Core.Chrono import Pos.Core.Delegation (DlgPayload (..)) import Pos.Core.Genesis (GenesisWStakeholders, gdBootStakeholders, diff --git a/wallet-new/test/unit/UTxO/Translate.hs b/wallet-new/test/unit/UTxO/Translate.hs index 623fbf5b669..283528661e8 100644 --- a/wallet-new/test/unit/UTxO/Translate.hs +++ b/wallet-new/test/unit/UTxO/Translate.hs @@ -32,9 +32,6 @@ import Pos.Chain.Block import Pos.Chain.Txp import Pos.Chain.Update import Pos.Core -import Pos.Core.Block (Block, GenesisBlock, GenesisBlockHeader, - HeaderHash, MainBlock, gbBody, gbHeader, gbLeaders, - headerHashG) import Pos.Core.Chrono import Pos.Crypto (ProtocolMagic) import Pos.DB.Class (MonadGState (..)) diff --git a/wallet-new/test/unit/UTxO/Verify.hs b/wallet-new/test/unit/UTxO/Verify.hs index 4562e485692..e3de8b70e14 100644 --- a/wallet-new/test/unit/UTxO/Verify.hs +++ b/wallet-new/test/unit/UTxO/Verify.hs @@ -26,8 +26,6 @@ import Pos.Chain.Delegation (DlgUndo (..)) import Pos.Chain.Txp import Pos.Chain.Update import Pos.Core -import Pos.Core.Block (Block, ComponentBlock (..), HeaderHash, - genBlockLeaders, mainBlockSlot, prevBlockL) import Pos.Core.Chrono import Pos.Core.Update (BlockVersionData) import Pos.DB.Block (toTxpBlock) diff --git a/wallet/src/Pos/Wallet/Redirect.hs b/wallet/src/Pos/Wallet/Redirect.hs index a5c3e435c64..5f4fc91aeb4 100644 --- a/wallet/src/Pos/Wallet/Redirect.hs +++ b/wallet/src/Pos/Wallet/Redirect.hs @@ -26,13 +26,13 @@ import qualified Data.HashMap.Strict as HM import Data.Time.Units (Millisecond) import System.Wlog (WithLogger, logWarning) -import Pos.Chain.Block (LastKnownHeaderTag, MonadLastKnownHeader) +import Pos.Chain.Block (BlockHeader, LastKnownHeaderTag, + MonadLastKnownHeader) import Pos.Chain.Txp (ToilVerFailure, TxpConfiguration) import Pos.Chain.Update (ConfirmedProposalState) import qualified Pos.Context as PC import Pos.Core (ChainDifficulty, HasConfiguration, Timestamp, difficultyL, getCurrentTimestamp) -import Pos.Core.Block (BlockHeader) import Pos.Core.Txp (Tx, TxAux (..), TxId, TxUndo) import Pos.Crypto (ProtocolMagic, WithHash (..)) import qualified Pos.DB.BlockIndex as DB diff --git a/wallet/src/Pos/Wallet/Web/State/State.hs b/wallet/src/Pos/Wallet/Web/State/State.hs index b955dd408e2..1c93049c54c 100644 --- a/wallet/src/Pos/Wallet/Web/State/State.hs +++ b/wallet/src/Pos/Wallet/Web/State/State.hs @@ -96,11 +96,11 @@ module Pos.Wallet.Web.State.State import Data.Acid (EventResult, EventState, QueryEvent, UpdateEvent) import qualified Data.Map as Map +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (TxId, Utxo, UtxoModifier) import Pos.Client.Txp.History (TxHistoryEntry) import Pos.Core (Address, ChainDifficulty, HasProtocolConstants, SlotId, protocolConstants) -import Pos.Core.Block (HeaderHash) import Pos.Util.Servant (encodeCType) import Pos.Util.Util (HasLens', lensOf) import Pos.Wallet.Web.ClientTypes (AccountId, CAccountMeta, CId, diff --git a/wallet/src/Pos/Wallet/Web/State/Storage.hs b/wallet/src/Pos/Wallet/Web/State/Storage.hs index 3460d4bc9e7..26e4a33cde3 100644 --- a/wallet/src/Pos/Wallet/Web/State/Storage.hs +++ b/wallet/src/Pos/Wallet/Web/State/Storage.hs @@ -122,13 +122,13 @@ import Data.Time.Clock.POSIX (POSIXTime) import Formatting ((%)) import qualified Formatting as F import qualified Formatting.Buildable +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (AddrCoinMap, Utxo, UtxoModifier, applyUtxoModToAddrCoinMap, utxoToAddressCoinMap) import Pos.Client.Txp.History (TxHistoryEntry, txHistoryListToMap) import Pos.Core (Address, BlockCount (..), ChainDifficulty (..), ProtocolConstants (..), SlotId, Timestamp, VssMaxTTL (..), VssMinTTL (..)) -import Pos.Core.Block (HeaderHash) import Pos.Core.Txp (TxAux, TxId) import qualified Pos.Util.Modifier as MM import qualified Pos.Wallet.Web.ClientTypes as WebTypes diff --git a/wallet/src/Pos/Wallet/Web/State/Transactions.hs b/wallet/src/Pos/Wallet/Web/State/Transactions.hs index afecc715d90..747d92b450b 100644 --- a/wallet/src/Pos/Wallet/Web/State/Transactions.hs +++ b/wallet/src/Pos/Wallet/Web/State/Transactions.hs @@ -18,10 +18,10 @@ import Universum hiding (for_) import Data.Foldable (for_) import qualified Data.HashMap.Strict as HM import qualified Data.Map as M +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (TxId, UtxoModifier) import Pos.Client.Txp.History (TxHistoryEntry) import Pos.Core (Address, ChainDifficulty, ProtocolConstants) -import Pos.Core.Block (HeaderHash) import Pos.Util.Servant (encodeCType) import Pos.Wallet.Web.ClientTypes (AccountId (..), CAccountMeta, CId, CTxId, CTxMeta, Wal) diff --git a/wallet/src/Pos/Wallet/Web/Tracking/BListener.hs b/wallet/src/Pos/Wallet/Web/Tracking/BListener.hs index 77499b1b177..f8acef4dd16 100644 --- a/wallet/src/Pos/Wallet/Web/Tracking/BListener.hs +++ b/wallet/src/Pos/Wallet/Web/Tracking/BListener.hs @@ -19,12 +19,11 @@ import Data.Time.Units (convertUnit) import Formatting (build, sformat, (%)) import System.Wlog (HasLoggerName (modifyLoggerName), WithLogger) -import Pos.Chain.Block (Blund, undoTx) +import Pos.Chain.Block (BlockHeader (..), Blund, HeaderHash, + blockHeader, getBlockHeader, headerSlotL, + mainBlockTxPayload, prevBlockL, undoTx) import Pos.Chain.Txp (flattenTxPayload) import Pos.Core (Timestamp, difficultyL) -import Pos.Core.Block (BlockHeader (..), HeaderHash, blockHeader, - getBlockHeader, headerSlotL, mainBlockTxPayload, - prevBlockL) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..)) import Pos.Core.Txp (TxAux (..), TxUndo) import Pos.DB.BatchOp (SomeBatchOp) diff --git a/wallet/src/Pos/Wallet/Web/Tracking/Modifier.hs b/wallet/src/Pos/Wallet/Web/Tracking/Modifier.hs index 2da06e1dd15..5f5b702d9e3 100644 --- a/wallet/src/Pos/Wallet/Web/Tracking/Modifier.hs +++ b/wallet/src/Pos/Wallet/Web/Tracking/Modifier.hs @@ -26,10 +26,10 @@ import Data.DList (DList) import Formatting (bprint, build, (%)) import Serokell.Util (listJson, listJsonIndent) +import Pos.Chain.Block (HeaderHash) import Pos.Chain.Txp (UtxoModifier) import Pos.Client.Txp.History (TxHistoryEntry (..)) import Pos.Core (Address) -import Pos.Core.Block (HeaderHash) import Pos.Core.Txp (TxId) import Pos.Infra.Util.LogSafe (BuildableSafeGen (..), deriveSafeBuildable, secretOnlyF, secureListF) diff --git a/wallet/src/Pos/Wallet/Web/Tracking/Restore.hs b/wallet/src/Pos/Wallet/Web/Tracking/Restore.hs index ff2ef29ab27..8f4ee15f3c8 100644 --- a/wallet/src/Pos/Wallet/Web/Tracking/Restore.hs +++ b/wallet/src/Pos/Wallet/Web/Tracking/Restore.hs @@ -7,9 +7,9 @@ import UnliftIO (MonadUnliftIO) import qualified Data.Map as M import System.Wlog (WithLogger, logInfo, modifyLoggerName) +import Pos.Chain.Block (headerHash) import Pos.Chain.Txp (genesisUtxo, unGenesisUtxo, utxoToModifier) import Pos.Core (Address, HasConfiguration, HasDifficulty (..)) -import Pos.Core.Block (headerHash) import Pos.Core.Txp (TxIn, TxOut (..), TxOutAux (..)) import qualified Pos.DB.BlockIndex as DB import Pos.DB.Class (MonadDBRead (..)) diff --git a/wallet/src/Pos/Wallet/Web/Tracking/Sync.hs b/wallet/src/Pos/Wallet/Web/Tracking/Sync.hs index 1688a0876e0..a07f8d0c8e5 100644 --- a/wallet/src/Pos/Wallet/Web/Tracking/Sync.hs +++ b/wallet/src/Pos/Wallet/Web/Tracking/Sync.hs @@ -53,7 +53,9 @@ import qualified Data.List as List (last) import qualified Data.List.NonEmpty as NE import Data.Time.Units (Microsecond, TimeUnit (..)) import Formatting (build, float, sformat, shown, (%)) -import Pos.Chain.Block (Blund, undoTx) +import Pos.Chain.Block (BlockHeader (..), Blund, HeaderHash, + MainBlock, getBlockHeader, headerHash, headerSlotL, + mainBlockTxPayload, undoTx) import Pos.Chain.Txp (UndoMap, flattenTxPayload, topsortTxs, _txOutputs) import Pos.Client.Txp.History (TxHistoryEntry (..), @@ -61,9 +63,6 @@ import Pos.Client.Txp.History (TxHistoryEntry (..), import Pos.Core (Address, BlockCount (..), ChainDifficulty (..), HasDifficulty (..), HasProtocolConstants, Timestamp (..), blkSecurityParam, genesisHash, timestampToPosix) -import Pos.Core.Block (BlockHeader (..), HeaderHash, MainBlock, - getBlockHeader, headerHash, headerSlotL, - mainBlockTxPayload) import Pos.Core.Chrono (getNewestFirst) import Pos.Core.Txp (TxAux (..), TxId, TxUndo) import Pos.Crypto (WithHash (..), shortHashF, withHash) diff --git a/wallet/test/Test/Pos/Wallet/Web/Util.hs b/wallet/test/Test/Pos/Wallet/Web/Util.hs index 762322007a1..ebd74f0b669 100644 --- a/wallet/test/Test/Pos/Wallet/Web/Util.hs +++ b/wallet/test/Test/Pos/Wallet/Web/Util.hs @@ -36,13 +36,13 @@ import Test.QuickCheck (Arbitrary (..), choose, frequency, sublistOf, import Test.QuickCheck.Gen (Gen (MkGen)) import Test.QuickCheck.Monadic (assert, pick) -import Pos.Chain.Block (Blund, LastKnownHeaderTag) +import Pos.Chain.Block (Blund, LastKnownHeaderTag, blockHeader, + headerHashG) import Pos.Chain.Txp (TxpConfiguration, Utxo) import Pos.Client.KeyStorage (getSecretKeysPlain) import Pos.Client.Txp.Balances (getBalance) import Pos.Core (Address, BlockCount, Coin, HasConfiguration, genesisSecretsPoor) -import Pos.Core.Block (blockHeader, headerHashG) import Pos.Core.Chrono (OldestFirst (..)) import Pos.Core.Common (IsBootstrapEraAddr (..), deriveLvl2KeyPair) import Pos.Core.Genesis (poorSecretToEncKey)