From 2e3402096326eb7c03684f98793894e9def33871 Mon Sep 17 00:00:00 2001 From: kderme Date: Mon, 15 Oct 2018 11:40:18 +0300 Subject: [PATCH 001/103] [CBR-466] fix address reported as unused during restoration --- wallet-new/src/Cardano/Wallet/Kernel/DB/HdWallet.hs | 11 +++++++++++ .../src/Cardano/Wallet/WalletLayer/Kernel/Conv.hs | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/DB/HdWallet.hs b/wallet-new/src/Cardano/Wallet/Kernel/DB/HdWallet.hs index 2cc7cd4be81..86c48176837 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/DB/HdWallet.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/DB/HdWallet.hs @@ -55,6 +55,7 @@ module Cardano.Wallet.Kernel.DB.HdWallet ( , hdAccountName , hdAccountState , hdAccountStateCurrent + , hdAccountStateCurrentCombined , hdAccountStateUpToDate , hdAccountRestorationState -- *** Account state: up to date @@ -475,6 +476,16 @@ hdAccountStateCurrent g = to $ \case HdAccountStateIncomplete st -> st ^. hdIncompleteCurrent . unCheckpoints . _Wrapped . SNE.head . g +hdAccountStateCurrentCombined :: (a -> a -> a) + -> (forall c. IsCheckpoint c => Getter c a) + -> Getter HdAccountState a +hdAccountStateCurrentCombined combine g = to $ \case + HdAccountStateUpToDate st -> + st ^. hdUpToDateCheckpoints . unCheckpoints . _Wrapped . SNE.head . g + HdAccountStateIncomplete st -> + combine (st ^. hdIncompleteCurrent . unCheckpoints . _Wrapped . SNE.head . g) + (st ^. hdIncompleteHistorical . unCheckpoints . _Wrapped . SNE.head . g) + {------------------------------------------------------------------------------- Predicates and tests -------------------------------------------------------------------------------} diff --git a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Conv.hs b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Conv.hs index 3eaeb04a54a..c630e4eb74e 100644 --- a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Conv.hs +++ b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Conv.hs @@ -200,7 +200,7 @@ toAddress acc hdAddress = (V1 addressOwnership) where cardanoAddress = hdAddress ^. HD.hdAddressAddress . fromDb - addressMeta = acc ^. HD.hdAccountState . HD.hdAccountStateCurrent (cpAddressMeta cardanoAddress) + addressMeta = acc ^. HD.hdAccountState . HD.hdAccountStateCurrentCombined (<>) (cpAddressMeta cardanoAddress) -- NOTE -- In this particular case, the address had to be known by us. As a matter -- of fact, to construct a 'WalletAddress', we have to be aware of pieces From 985cba88ce74827fca79791cd9216b5439da85c6 Mon Sep 17 00:00:00 2001 From: kderme Date: Tue, 16 Oct 2018 14:23:26 +0300 Subject: [PATCH 002/103] [CBR-193] during restoration, mark addresses found in current utxo as used --- wallet-new/src/Cardano/Wallet/Kernel/DB/Spec.hs | 15 ++++++++++++++- wallet-new/src/Cardano/Wallet/Kernel/Util/Core.hs | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/DB/Spec.hs b/wallet-new/src/Cardano/Wallet/Kernel/DB/Spec.hs index f0ed7a9efcb..128371368be 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/DB/Spec.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/DB/Spec.hs @@ -51,6 +51,7 @@ import Universum import Control.Lens (Getter, from, lazy, strict, to, _Wrapped) import Control.Lens.TH (makeLenses) import Data.Coerce (coerce) +import Data.Map as M import qualified Data.SafeCopy as SC import Formatting (bprint, build, (%)) import qualified Formatting.Buildable @@ -187,10 +188,22 @@ initPartialCheckpoint ctx utxo = PartialCheckpoint { Core.utxoBalance utxo , _pcheckpointPending = Pending.empty , _pcheckpointForeign = Pending.empty - , _pcheckpointBlockMeta = LocalBlockMeta emptyBlockMeta + , _pcheckpointBlockMeta = LocalBlockMeta $ BlockMeta { + _blockMetaSlotId = InDb mempty + , _blockMetaAddressMeta = utxoToAddressMeta utxo + } , _pcheckpointContext = ctx } +utxoToAddressMeta :: Core.Utxo -> Map (InDb Core.Address) AddressMeta +utxoToAddressMeta utxo = + M.fromList $ fmap (\u -> (InDb $ Core.toAddress u, usedMeta)) (M.elems utxo) + where + usedMeta = AddressMeta { + _addressMetaIsUsed = True + , _addressMetaIsChange = False + } + -- | A full check point with a non-Nothing context can be " downcast " to a -- partial checkpoint by forgetting that we have complete block metadata. -- The provided 'BlockContext' will only be used when the full checkpoint's diff --git a/wallet-new/src/Cardano/Wallet/Kernel/Util/Core.hs b/wallet-new/src/Cardano/Wallet/Kernel/Util/Core.hs index d3e8820f522..ad1262124a0 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/Util/Core.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/Util/Core.hs @@ -19,6 +19,7 @@ module Cardano.Wallet.Kernel.Util.Core ( , utxoRestrictToInputs , utxoRemoveInputs , utxoUnions + , toAddress -- * Transactions , paymentAmount , toCoin From f6b4159060fdf0d2e015ee921ee6733b08146298 Mon Sep 17 00:00:00 2001 From: Andreas Triantafyllos Date: Wed, 31 Oct 2018 12:31:11 +0200 Subject: [PATCH 003/103] [CBR-477] Close scribes before terminating. (cherry picked from commit 0f41c67139ba7718f427f106e8249f1d9cdb09b6) --- generator/app/VerificationBench.hs | 5 +++-- generator/bench/Bench/Pos/Criterion/Block/Logic.hs | 6 ++++-- lib/src/Pos/Launcher/Resource.hs | 9 +++++---- networking/bench/LogReader/Main.hs | 6 ++++-- networking/bench/Receiver/Main.hs | 4 +++- networking/bench/Sender/Main.hs | 4 +++- networking/src/Bench/Network/Commons.hs | 7 ++++--- .../test/Test/Network/Broadcast/OutboundQueueSpec.hs | 2 -- tools/src/keygen/Main.hs | 6 ++++-- tools/src/launcher/Main.hs | 7 ++++--- util/src/Pos/Util/Wlog.hs | 3 ++- util/src/Pos/Util/Wlog/Compatibility.hs | 4 ++-- 12 files changed, 38 insertions(+), 25 deletions(-) diff --git a/generator/app/VerificationBench.hs b/generator/app/VerificationBench.hs index 1e23d3818c6..1c319e26ed5 100644 --- a/generator/app/VerificationBench.hs +++ b/generator/app/VerificationBench.hs @@ -44,7 +44,7 @@ import Pos.Util.CompileInfo (withCompileInfo) import Pos.Util.Log.LoggerConfig (defaultInteractiveConfiguration) import Pos.Util.Util (realTime) import Pos.Util.Wlog (LoggerConfig, Severity (Debug), logError, - logInfo, setupLogging) + logInfo, removeAllHandlers, setupLogging') import Test.Pos.Block.Logic.Mode (BlockTestMode, TestParams (..), runBlockTestMode) @@ -185,7 +185,7 @@ readBlocks path = do main :: IO () main = do - setupLogging "verification-bench" loggerConfig + lh <- setupLogging' "verification-bench" loggerConfig args <- Opts.execParser $ Opts.info (benchArgsParser <**> Opts.helper) @@ -262,6 +262,7 @@ main = do when (errno > 0) $ do logError $ sformat ("Verification/Application errors ("%shown%"):") errno traverse_ (logError . show) errs + removeAllHandlers lh where loggerConfig :: LoggerConfig loggerConfig = defaultInteractiveConfiguration Debug diff --git a/generator/bench/Bench/Pos/Criterion/Block/Logic.hs b/generator/bench/Bench/Pos/Criterion/Block/Logic.hs index d6f8bb88af0..ceb20bfd6f4 100644 --- a/generator/bench/Bench/Pos/Criterion/Block/Logic.hs +++ b/generator/bench/Bench/Pos/Criterion/Block/Logic.hs @@ -43,7 +43,8 @@ import Pos.Launcher.Configuration (ConfigurationOptions (..), import Pos.Util.CompileInfo (withCompileInfo) import Pos.Util.Log.LoggerConfig (defaultInteractiveConfiguration) import Pos.Util.Util (realTime) -import Pos.Util.Wlog (Severity (Debug), setupLogging) +import Pos.Util.Wlog (Severity (Debug), removeAllHandlers, + setupLogging') import Test.Pos.Block.Logic.Emulation (runEmulation, sudoLiftIO) import Test.Pos.Block.Logic.Mode (BlockTestContext, BlockTestMode, @@ -226,7 +227,7 @@ verifyHeaderBenchmark !genesisConfig !secretKeys !tp = env (runBlockTestMode gen runBenchmark :: IO () runBenchmark = do let loggerConfig = defaultInteractiveConfiguration Debug - setupLogging "verifyBenchmark" loggerConfig + lh <- setupLogging' "verifyBenchmark" loggerConfig startTime <- realTime let cfo = defaultConfigurationOptions { cfoFilePath = "../lib/configuration.yaml" @@ -250,3 +251,4 @@ runBenchmark = do [ verifyBlocksBenchmark genesisConfig secretKeys tp ctx , verifyHeaderBenchmark genesisConfig secretKeys tp ] + removeAllHandlers lh diff --git a/lib/src/Pos/Launcher/Resource.hs b/lib/src/Pos/Launcher/Resource.hs index 3df2f52b9fa..e65bc38bacc 100644 --- a/lib/src/Pos/Launcher/Resource.hs +++ b/lib/src/Pos/Launcher/Resource.hs @@ -66,11 +66,12 @@ import Pos.Launcher.Mode (InitMode, InitModeContext (..), runInitMode) import Pos.Launcher.Param (BaseParams (..), LoggingParams (..), NodeParams (..)) import Pos.Util (bracketWithLogging, newInitFuture) +import Pos.Util.Log.Internal (LoggingHandler) import Pos.Util.Log.LoggerConfig (defaultInteractiveConfiguration, isWritingToConsole, lcLoggerTree, ltHandlers) import Pos.Util.Wlog (LoggerConfig (..), Severity (..), WithLogger, logDebug, logInfo, parseLoggerConfig, removeAllHandlers, - setupLogging) + setupLogging') #ifdef linux_HOST_OS import qualified Pos.Util.Wlog as Logger @@ -251,12 +252,12 @@ getRealLoggerConfig LoggingParams{..} = do -- add output to the console with severity filter >= Info Just False -> lcLoggerTree . ltHandlers %~ filter (not . isWritingToConsole) -setupLoggers :: MonadIO m => Text -> LoggingParams -> m () -setupLoggers cfoKey params = setupLogging cfoKey =<< getRealLoggerConfig params +setupLoggers :: MonadIO m => Text -> LoggingParams -> m LoggingHandler +setupLoggers cfoKey params = setupLogging' cfoKey =<< getRealLoggerConfig params -- | RAII for Logging. loggerBracket :: Text -> LoggingParams -> IO a -> IO a -loggerBracket cfoKey lp = bracket_ (setupLoggers cfoKey lp) removeAllHandlers +loggerBracket cfoKey lp action = bracket (setupLoggers cfoKey lp) removeAllHandlers (const action) ---------------------------------------------------------------------------- -- NodeContext diff --git a/networking/bench/LogReader/Main.hs b/networking/bench/LogReader/Main.hs index 5e8d440b90b..640ad6756e1 100644 --- a/networking/bench/LogReader/Main.hs +++ b/networking/bench/LogReader/Main.hs @@ -28,7 +28,8 @@ import Bench.Network.Commons (LogMessage (..), MeasureEvent (..), logMessageParser, measureInfoParser) import LogReaderOptions (Args (..), argsParser) import Pos.Util.Trace (Severity (..), Trace, traceWith, wlogTrace) -import Pos.Util.Wlog (centiUtcTimeF, productionB, setupLogging) +import Pos.Util.Wlog (centiUtcTimeF, productionB, removeAllHandlers, + setupLogging') type Measures = M.Map MsgId (Payload, [(MeasureEvent, Timestamp)]) @@ -116,8 +117,9 @@ getOptions = (\(a, ()) -> a) <$> simpleOptions main :: IO () main = do - setupLogging (Just centiUtcTimeF) productionB + lh <- setupLogging' (Just centiUtcTimeF) productionB let logTrace = wlogTrace mempty Args{..} <- liftIO getOptions measures <- foldrM (analyze logTrace) M.empty inputFiles printMeasures resultFile measures + removeAllHandlers lh diff --git a/networking/bench/Receiver/Main.hs b/networking/bench/Receiver/Main.hs index 3049c42dd11..36123f81ada 100644 --- a/networking/bench/Receiver/Main.hs +++ b/networking/bench/Receiver/Main.hs @@ -28,6 +28,7 @@ import Node (ConversationActions (..), Listener (..), NodeAction (..), simpleNodeEndPoint) import Node.Message.Binary (binaryPacking) import Pos.Util.Trace (Severity (..), Trace, wlogTrace) +import Pos.Util.Wlog (removeAllHandlers) import ReceiverOptions (Args (..), argsParser) main :: IO () @@ -40,7 +41,7 @@ main = do argsParser empty - loadLogConfig logsPrefix logConfig + lh <- loadLogConfig logsPrefix logConfig setLocaleEncoding utf8 transport <- do @@ -54,6 +55,7 @@ main = do node logTrace (simpleNodeEndPoint transport) (const noReceiveDelay) (const noReceiveDelay) prng binaryPacking () defaultNodeEnvironment $ \_ -> NodeAction (const [pingListener noPong]) $ \_ -> do threadDelay (duration * 1000000) + removeAllHandlers lh where logTrace :: Trace IO (Severity, Text) diff --git a/networking/bench/Sender/Main.hs b/networking/bench/Sender/Main.hs index d8ccecb9ecc..d063340cd62 100644 --- a/networking/bench/Sender/Main.hs +++ b/networking/bench/Sender/Main.hs @@ -34,6 +34,7 @@ import Node (Conversation (..), ConversationActions (..), Node (Node), import Node.Internal (NodeId (..)) import Node.Message.Binary (binaryPacking) import Pos.Util.Trace (Severity (..), wlogTrace) +import Pos.Util.Wlog (removeAllHandlers) import Bench.Network.Commons (MeasureEvent (..), Payload (..), Ping (..), Pong (..), loadLogConfig, logMeasure) @@ -57,7 +58,7 @@ main = do argsParser empty - loadLogConfig logsPrefix logConfig + lh <- loadLogConfig logsPrefix logConfig setLocaleEncoding utf8 transport <- do @@ -89,6 +90,7 @@ main = do forM_ drones stopDrone action + removeAllHandlers lh where diff --git a/networking/src/Bench/Network/Commons.hs b/networking/src/Bench/Network/Commons.hs index 55f8105a376..02fd957c03f 100644 --- a/networking/src/Bench/Network/Commons.hs +++ b/networking/src/Bench/Network/Commons.hs @@ -45,11 +45,12 @@ import Prelude hiding (takeWhile) import Node (Message (..)) import Pos.Util (realTime) +import Pos.Util.Log.Internal (LoggingHandler) import Pos.Util.Log.LoggerConfig (defaultInteractiveConfiguration, lcLoggerTree, ltMinSeverity, ltNamedSeverity) import Pos.Util.Trace (Trace, traceWith) import Pos.Util.Wlog (LoggerConfig (..), Severity (..), - parseLoggerConfig, setLogPrefix, setupLogging) + parseLoggerConfig, setLogPrefix, setupLogging') -- * Transfered data types @@ -100,13 +101,13 @@ defaultLogConfig = lc0 & lcLoggerTree .~ newlt -loadLogConfig :: MonadIO m => Maybe FilePath -> Maybe FilePath -> m () +loadLogConfig :: MonadIO m => Maybe FilePath -> Maybe FilePath -> m LoggingHandler loadLogConfig logsPrefix configFile = do lc1 <- case configFile of Nothing -> return defaultLogConfig Just lc0 -> parseLoggerConfig lc0 lc <- liftIO $ setLogPrefix logsPrefix lc1 - setupLogging "bench" lc + setupLogging' "bench" lc -- * Logging & parsing diff --git a/networking/test/Test/Network/Broadcast/OutboundQueueSpec.hs b/networking/test/Test/Network/Broadcast/OutboundQueueSpec.hs index dd1c11309ae..b52b5408de6 100644 --- a/networking/test/Test/Network/Broadcast/OutboundQueueSpec.hs +++ b/networking/test/Test/Network/Broadcast/OutboundQueueSpec.hs @@ -25,7 +25,6 @@ import Test.QuickCheck (Gen, Property, choose, forAll, ioProperty, property, suchThat, (===)) import qualified Test.QuickCheck as QC -import Pos.Util.Wlog arbitraryNodeType :: Gen NodeType arbitraryNodeType = QC.elements [minBound .. maxBound] @@ -81,7 +80,6 @@ arbitraryPeers genNid genNodeType = do -- "outbound queue". testInFlight :: IO Bool testInFlight = do - removeAllHandlers -- Set up some test nodes allNodes <- do diff --git a/tools/src/keygen/Main.hs b/tools/src/keygen/Main.hs index 68e94e33906..1ddd3021b60 100644 --- a/tools/src/keygen/Main.hs +++ b/tools/src/keygen/Main.hs @@ -26,12 +26,13 @@ import Pos.Crypto (EncryptedSecretKey (..), SecretKey (..), VssKeyPair, fullPublicKeyF, hashHexF, noPassEncrypt, redeemPkB64F, toPublic, toVssPublicKey) import Pos.Launcher (dumpGenesisData, withConfigurations) +import qualified Pos.Util.Log as Log import Pos.Util.Log.LoggerConfig (defaultInteractiveConfiguration) import Pos.Util.UserSecret (readUserSecret, takeUserSecret, usKeys, usPrimKey, usVss, usWallet, writeUserSecretRelease, wusRootKey) import Pos.Util.Wlog (Severity (Debug), WithLogger, logInfo, - setupLogging, usingLoggerName) + setupLogging', usingLoggerName) import Dump (dumpFakeAvvmSeed, dumpGeneratedGenesisData, dumpRichSecrets) @@ -156,7 +157,7 @@ genVssCert genesisConfig path = do main :: IO () main = do KeygenOptions {..} <- getKeygenOptions - setupLogging "keygen" $ defaultInteractiveConfiguration Debug + lh <- setupLogging' "keygen" $ defaultInteractiveConfiguration Debug usingLoggerName "keygen" $ withConfigurations Nothing Nothing False koConfigurationOptions $ \genesisConfig _ _ _ -> do @@ -174,3 +175,4 @@ main = do (configGenesisData genesisConfig) dgdCanonical dgdPath + Log.closeLogScribes lh diff --git a/tools/src/launcher/Main.hs b/tools/src/launcher/Main.hs index e7e2e86d60f..a1a5c6dcf0b 100644 --- a/tools/src/launcher/Main.hs +++ b/tools/src/launcher/Main.hs @@ -91,8 +91,8 @@ import Pos.Util.Log.LoggerConfig (BackendKind (..), LogHandler (..), lcBasePath, lcLoggerTree, ltHandlers, ltMinSeverity, retrieveLogFiles) import Pos.Util.Wlog (LoggerNameBox (..), Severity (Info), logError, - logInfo, logNotice, logWarning, setupLogging, - usingLoggerName) + logInfo, logNotice, logWarning, removeAllHandlers, + setupLogging', usingLoggerName) import Pos.Tools.Launcher.Environment (substituteEnvVarsValue) import Pos.Tools.Launcher.Logging (reportErrorDefault) @@ -308,7 +308,7 @@ main = case loNodeLogConfig of Nothing -> loNodeArgs Just lc -> loNodeArgs ++ ["--log-config", toText lc] - setupLogging (cfoKey loConfiguration) $ + lh <- setupLogging' (cfoKey loConfiguration) $ defaultInteractiveConfiguration Info & lcBasePath .~ launcherLogsPrefix & lcLoggerTree %~ case launcherLogsPrefix of @@ -355,6 +355,7 @@ main = (UpdaterData loUpdaterPath loUpdaterArgs loUpdateWindowsRunner loUpdateArchive) lo logNotice "Finished clientScenario" + removeAllHandlers lh where -- We propagate some options to the node executable, because -- we almost certainly want to use the same configuration and diff --git a/util/src/Pos/Util/Wlog.hs b/util/src/Pos/Util/Wlog.hs index 046e7bc1ac3..c6b514eeccd 100644 --- a/util/src/Pos/Util/Wlog.hs +++ b/util/src/Pos/Util/Wlog.hs @@ -15,6 +15,7 @@ module Pos.Util.Wlog , runNamedPureLog -- * Setup , setupLogging + , setupLogging' , setupTestLogging -- * Logging functions , logDebug @@ -59,5 +60,5 @@ import Pos.Util.Wlog.Compatibility (CanLog (..), HasLoggerName (..), logInfo, logMCond, logMessage, logNotice, logWarning, productionB, removeAllHandlers, retrieveLogContent, runNamedPureLog, setLoggerName, setupLogging, - setupTestLogging, usingLoggerName) + setupLogging', setupTestLogging, usingLoggerName) diff --git a/util/src/Pos/Util/Wlog/Compatibility.hs b/util/src/Pos/Util/Wlog/Compatibility.hs index 5e088d24f95..ab26846daad 100644 --- a/util/src/Pos/Util/Wlog/Compatibility.hs +++ b/util/src/Pos/Util/Wlog/Compatibility.hs @@ -291,8 +291,8 @@ centiUtcTimeF utc = tsformat = "%F %T%2Q %Z" -- do nothing, logs are closed by finalizers -removeAllHandlers :: IO () -removeAllHandlers = pure () +removeAllHandlers :: LoggingHandler -> IO () +removeAllHandlers = Log.closeLogScribes -- Safe and structured logging. From 4900a11bf3880f40d16866dc3a56ab208b8417b9 Mon Sep 17 00:00:00 2001 From: Luke Nadur Date: Thu, 1 Nov 2018 11:36:23 -0500 Subject: [PATCH 004/103] [RCD-38] Fix "GeneratedSecrets missing" error --- tools/src/keygen/Main.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/src/keygen/Main.hs b/tools/src/keygen/Main.hs index 68e94e33906..cf73d126d16 100644 --- a/tools/src/keygen/Main.hs +++ b/tools/src/keygen/Main.hs @@ -161,14 +161,14 @@ main = do $ withConfigurations Nothing Nothing False koConfigurationOptions $ \genesisConfig _ _ _ -> do logInfo "Processing command" - generatedSecrets <- configGeneratedSecretsThrow genesisConfig case koCommand of RearrangeMask msk -> rearrange msk GenerateKey path -> genPrimaryKey path GenerateVss path -> genVssCert genesisConfig path ReadKey path -> readKey path DumpAvvmSeeds opts -> dumpAvvmSeeds opts - GenerateKeysBySpec gkbg -> + GenerateKeysBySpec gkbg -> do + generatedSecrets <- configGeneratedSecretsThrow genesisConfig generateKeysByGenesis generatedSecrets gkbg DumpGenesisData dgdPath dgdCanonical -> dumpGenesisData (configGenesisData genesisConfig) From 5412f9f4bd70e2b625c0b19a4c64c2d6f9403e47 Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Thu, 1 Nov 2018 12:49:20 -0400 Subject: [PATCH 005/103] [RCD-42] log-configs/cluster.yaml: Include debug messages in json log --- log-configs/cluster.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/log-configs/cluster.yaml b/log-configs/cluster.yaml index 3e7a13bb65e..078cac8c9af 100644 --- a/log-configs/cluster.yaml +++ b/log-configs/cluster.yaml @@ -6,13 +6,11 @@ rotation: loggerTree: severity: Debug+ - files: - - node.log handlers: - { name: "JSON" , filepath: "node.json" , logsafety: SecretLogLevel - , severity: Info + , severity: Debug+ , backend: FileJsonBE } From cf68c04a1cc89156b3f367d707e4c80ecd11a234 Mon Sep 17 00:00:00 2001 From: Michael Bishop Date: Fri, 19 Oct 2018 00:51:39 -0300 Subject: [PATCH 006/103] [DEVOPS-1099] make the wallet documentation optional, and default it to off --- lib/src/Pos/Client/CLI/Options.hs | 4 ++-- wallet-new/src/Cardano/Wallet/Action.hs | 9 ++++----- wallet-new/src/Cardano/Wallet/Server/CLI.hs | 6 +++--- .../src/Cardano/Wallet/Server/LegacyPlugins.hs | 6 +++--- wallet-new/src/Cardano/Wallet/Server/Plugins.hs | 12 +++++++----- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/lib/src/Pos/Client/CLI/Options.hs b/lib/src/Pos/Client/CLI/Options.hs index 0fbe45b32e3..e39d2d8a3d5 100644 --- a/lib/src/Pos/Client/CLI/Options.hs +++ b/lib/src/Pos/Client/CLI/Options.hs @@ -172,9 +172,9 @@ walletAddressOption na = where helpMsg = "IP and port for backend wallet API." -docAddressOption :: Maybe NetworkAddress -> Opt.Parser NetworkAddress +docAddressOption :: Maybe NetworkAddress -> Opt.Parser (Maybe NetworkAddress) docAddressOption na = - Opt.option (fromParsec addrParser) $ + Opt.optional $ Opt.option (fromParsec addrParser) $ Opt.long "wallet-doc-address" <> Opt.metavar "IP:PORT" <> Opt.help helpMsg diff --git a/wallet-new/src/Cardano/Wallet/Action.hs b/wallet-new/src/Cardano/Wallet/Action.hs index 17236532daf..177dd902998 100644 --- a/wallet-new/src/Cardano/Wallet/Action.hs +++ b/wallet-new/src/Cardano/Wallet/Action.hs @@ -91,17 +91,16 @@ actionWithWallet params genesisConfig walletConfig txpConfig ntpConfig nodeParam , unsupportedMimeTypeMiddleware ]) - -- The corresponding wallet documention, served as a different - -- server which doesn't require client x509 certificates to - -- connect, but still serves the doc through TLS - , ("doc worker", Plugins.docServer params) - -- Periodically compact & snapshot the acid-state database. , ("acid state cleanup", Plugins.acidStateSnapshots (view Kernel.Internal.wallets (snd w)) params dbMode) -- A @Plugin@ to watch and store incoming update proposals , ("update watcher", Plugins.updateWatcher) ] + -- The corresponding wallet documention, served as a different + -- server which doesn't require client x509 certificates to + -- connect, but still serves the doc through TLS + , maybe [] (pure . ("doc server",)) (Plugins.docServer params) -- The monitoring API for the Core node. , Plugins.monitoringServer params ] diff --git a/wallet-new/src/Cardano/Wallet/Server/CLI.hs b/wallet-new/src/Cardano/Wallet/Server/CLI.hs index ef5f8bbad03..d4f2529e064 100644 --- a/wallet-new/src/Cardano/Wallet/Server/CLI.hs +++ b/wallet-new/src/Cardano/Wallet/Server/CLI.hs @@ -57,7 +57,7 @@ data WalletBackendParams = WalletBackendParams -- ^ The TLS parameters. , walletAddress :: !NetworkAddress -- ^ The wallet address. - , walletDocAddress :: !NetworkAddress + , walletDocAddress :: !(Maybe NetworkAddress) -- ^ The wallet documentation address. , walletRunMode :: !RunMode -- ^ The mode this node is running in. @@ -157,8 +157,8 @@ walletBackendParamsParser = WalletBackendParams <$> enableMonitoringApiParser addressParser :: Parser NetworkAddress addressParser = CLI.walletAddressOption $ Just (localhost, 8090) - docAddressParser :: Parser NetworkAddress - docAddressParser = CLI.docAddressOption $ Just (localhost, 8091) + docAddressParser :: Parser (Maybe NetworkAddress) + docAddressParser = CLI.docAddressOption Nothing runModeParser :: Parser RunMode runModeParser = (\debugMode -> if debugMode then DebugMode else ProductionMode) <$> diff --git a/wallet-new/src/Cardano/Wallet/Server/LegacyPlugins.hs b/wallet-new/src/Cardano/Wallet/Server/LegacyPlugins.hs index 3ee0367a038..4ab76e1ad66 100644 --- a/wallet-new/src/Cardano/Wallet/Server/LegacyPlugins.hs +++ b/wallet-new/src/Cardano/Wallet/Server/LegacyPlugins.hs @@ -91,11 +91,11 @@ walletDocumentation :: (HasConfigurations, HasCompileInfo) => WalletBackendParams -> Plugin WalletWebMode -walletDocumentation WalletBackendParams {..} = pure ("wallet doc worker", const worker) +walletDocumentation WalletBackendParams {..} = maybe [] (\addr -> [ ("wallet doc worker", const $ worker addr) ]) walletDocAddress where - worker = walletDocumentationImpl + worker addr = walletDocumentationImpl application - walletDocAddress + addr tls (Just defaultSettings) Nothing diff --git a/wallet-new/src/Cardano/Wallet/Server/Plugins.hs b/wallet-new/src/Cardano/Wallet/Server/Plugins.hs index e9d8a128e3f..fbbc2c77459 100644 --- a/wallet-new/src/Cardano/Wallet/Server/Plugins.hs +++ b/wallet-new/src/Cardano/Wallet/Server/Plugins.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE NamedFieldPuns #-} + {- | A collection of plugins used by this edge node. A @Plugin@ is essentially a set of actions which will be run in a particular monad, at some point in time. @@ -124,17 +126,17 @@ apiServer (NewWalletBackendParams WalletBackendParams{..}) (passiveLayer, passiv docServer :: (HasConfigurations, HasCompileInfo) => NewWalletBackendParams - -> Plugin Kernel.WalletMode -docServer (NewWalletBackendParams WalletBackendParams{..}) = const $ - serveDocImpl + -> Maybe (Plugin Kernel.WalletMode) +docServer (NewWalletBackendParams WalletBackendParams{walletDocAddress = Nothing}) = Nothing +docServer (NewWalletBackendParams WalletBackendParams{walletDocAddress = Just (ip, port), walletRunMode, walletTLSParams}) = Just (const $ makeWalletServer) + where + makeWalletServer = serveDocImpl application (BS8.unpack ip) port (if isDebugMode walletRunMode then Nothing else walletTLSParams) (Just defaultSettings) Nothing - where - (ip, port) = walletDocAddress application :: Kernel.WalletMode Application application = From a6373f6895b4da10524654a9c92a7d0e60f0a7dd Mon Sep 17 00:00:00 2001 From: Luke Nadur Date: Wed, 31 Oct 2018 15:31:23 -0500 Subject: [PATCH 007/103] [RCD-40] Throw error upon payment to `Address` with mismatched `NetworkMagic` in `wallet-new` API V1 --- core/test/Test/Pos/Core/Arbitrary.hs | 6 +++ .../Cardano/Wallet/API/V1/ReifyWalletError.hs | 3 ++ wallet-new/src/Cardano/Wallet/WalletLayer.hs | 8 ++++ .../Wallet/WalletLayer/Kernel/Active.hs | 38 ++++++++++++++++++- .../Test/Spec/CoinSelection/Generators.hs | 34 ++++++++++++++++- wallet-new/test/unit/Test/Spec/NewPayment.hs | 4 +- 6 files changed, 88 insertions(+), 5 deletions(-) diff --git a/core/test/Test/Pos/Core/Arbitrary.hs b/core/test/Test/Pos/Core/Arbitrary.hs index ce500033865..796ed21cd83 100644 --- a/core/test/Test/Pos/Core/Arbitrary.hs +++ b/core/test/Test/Pos/Core/Arbitrary.hs @@ -19,6 +19,7 @@ module Test.Pos.Core.Arbitrary , SafeCoinPairSub (..) , UnreasonableEoS (..) + , genAddress , genSlotId , genLocalSlotIndex ) where @@ -259,6 +260,11 @@ instance Arbitrary Address where arbitrary = makeAddress <$> arbitrary <*> arbitrary shrink = genericShrink +genAddress :: NetworkMagic -> Gen Address +genAddress nm = makeAddress <$> arbitrary <*> genAddrAttr + where + genAddrAttr = AddrAttributes <$> arbitrary <*> arbitrary <*> pure nm + ---------------------------------------------------------------------------- -- Attributes ---------------------------------------------------------------------------- diff --git a/wallet-new/src/Cardano/Wallet/API/V1/ReifyWalletError.hs b/wallet-new/src/Cardano/Wallet/API/V1/ReifyWalletError.hs index 4d2983005d1..ad22df3083a 100644 --- a/wallet-new/src/Cardano/Wallet/API/V1/ReifyWalletError.hs +++ b/wallet-new/src/Cardano/Wallet/API/V1/ReifyWalletError.hs @@ -361,3 +361,6 @@ newPaymentError e = case e of (NewPaymentUnknownAccountId e') -> unknownHdAccount e' + + ex@(NewPaymentAddressBadNetworkMagic _ _) -> + V1.UnknownError $ (sformat build ex) diff --git a/wallet-new/src/Cardano/Wallet/WalletLayer.hs b/wallet-new/src/Cardano/Wallet/WalletLayer.hs index 881abc0d2e3..9f20e6448ef 100644 --- a/wallet-new/src/Cardano/Wallet/WalletLayer.hs +++ b/wallet-new/src/Cardano/Wallet/WalletLayer.hs @@ -37,7 +37,9 @@ import Pos.Chain.Block (Blund) import Pos.Chain.Txp (Tx, TxId, Utxo) import Pos.Chain.Update (ConfirmedProposalState, SoftwareVersion) import Pos.Core (Coin, Timestamp) +import qualified Pos.Core as Core (Address) import Pos.Core.Chrono (NE, NewestFirst (..), OldestFirst (..)) +import Pos.Core.NetworkMagic (NetworkMagic) import Pos.Crypto (EncryptedSecretKey, PassPhrase) import Cardano.Wallet.API.Request (RequestParams (..)) @@ -527,6 +529,8 @@ data NewPaymentError = | NewPaymentTimeLimitReached TimeExecutionLimit | NewPaymentWalletIdDecodingFailed Text | NewPaymentUnknownAccountId Kernel.UnknownHdAccount + -- | NewPaymentAddressBadNetworkMagic expectedNetworkMagic invalidDestinationAddresses + | NewPaymentAddressBadNetworkMagic NetworkMagic (NonEmpty Core.Address) -- | Unsound show instance needed for the 'Exception' instance. instance Show NewPaymentError where @@ -543,6 +547,10 @@ instance Buildable NewPaymentError where bprint ("NewPaymentWalletIdDecodingFailed " % build) txt build (NewPaymentUnknownAccountId err) = bprint ("NewPaymentUnknownAccountId " % build) err + build (NewPaymentAddressBadNetworkMagic expectedNM dstAddrs) = + bprint ("NewPaymentAddressBadNetworkMagic " % build % " " % build) + expectedNM + (toList dstAddrs) data EstimateFeesError = diff --git a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Active.hs b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Active.hs index 93145d45ea0..c85c1a350c5 100644 --- a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Active.hs +++ b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Active.hs @@ -17,7 +17,9 @@ import Data.Time.Units (Second) import Pos.Binary.Class (decodeFull') import Pos.Chain.Txp (Tx (..), TxSigData (..)) -import Pos.Core (Address, Coin, TxFeePolicy) +import Pos.Core (AddrAttributes (..), Address (..), Coin, TxFeePolicy) +import Pos.Core.Attributes (Attributes (..)) +import Pos.Core.NetworkMagic (NetworkMagic, makeNetworkMagic) import Pos.Crypto (PassPhrase, PublicKey, Signature (..)) import Cardano.Crypto.Wallet (xsignature) @@ -29,6 +31,7 @@ import Cardano.Wallet.Kernel.CoinSelection.FromGeneric InputGrouping, newOptions) import qualified Cardano.Wallet.Kernel.DB.HdWallet as HD import Cardano.Wallet.Kernel.DB.TxMeta.Types +import Cardano.Wallet.Kernel.Internal (walletProtocolMagic) import qualified Cardano.Wallet.Kernel.NodeStateAdaptor as Node import qualified Cardano.Wallet.Kernel.Transactions as Kernel import Cardano.Wallet.WalletLayer (EstimateFeesError (..), @@ -52,8 +55,39 @@ pay activeWallet pw grouping regulation payment = liftIO $ do runExceptT $ do (opts, accId, payees) <- withExceptT NewPaymentWalletIdDecodingFailed $ setupPayment policy grouping regulation payment + + -- Verify that all payee addresses are of the same `NetworkMagic` + -- as our `ActiveWallet`. + let nm = makeNetworkMagic $ Kernel.walletPassive activeWallet ^. walletProtocolMagic + ExceptT $ pure $ verifyPayeesNM nm payees + + -- Pay the payees withExceptT NewPaymentError $ ExceptT $ - Kernel.pay activeWallet pw opts accId payees + Kernel.pay activeWallet pw opts accId payees + +-- | Verifies that the `NetworkMagic` of each payee address matches the +-- provided `NetworkMagic`. +verifyPayeesNM + :: NetworkMagic + -> NonEmpty (Address, Coin) + -> Either NewPaymentError () +verifyPayeesNM nm payees = + case nonEmpty invalidPayees of + Nothing -> Right () + Just is -> Left $ NewPaymentAddressBadNetworkMagic nm is + where + addressHasValidMagic :: AddrAttributes -> Bool + addressHasValidMagic addrAttrs = nm == (aaNetworkMagic addrAttrs) + -- + verifyPayeeNM + :: (Address, Coin) + -> Either Address () + verifyPayeeNM (addr, _) + | (addressHasValidMagic ((attrData . addrAttributes) addr)) = Right () + | otherwise = Left addr + -- + invalidPayees :: [Address] + invalidPayees = fst $ partitionEithers (toList (map verifyPayeeNM payees)) -- | Estimates the fees for a payment. estimateFees :: MonadIO m diff --git a/wallet-new/test/unit/Test/Spec/CoinSelection/Generators.hs b/wallet-new/test/unit/Test/Spec/CoinSelection/Generators.hs index 19b5e2b427f..9ead2ed9e60 100644 --- a/wallet-new/test/unit/Test/Spec/CoinSelection/Generators.hs +++ b/wallet-new/test/unit/Test/Spec/CoinSelection/Generators.hs @@ -2,6 +2,7 @@ module Test.Spec.CoinSelection.Generators ( genGroupedUtxo , genPayee + , genPayeeWithNM , genPayees , genFiddlyPayees , genUtxo @@ -26,11 +27,12 @@ import Test.QuickCheck (Gen, arbitrary, choose, suchThat) import qualified Pos.Chain.Txp as Core import qualified Pos.Core as Core +import Pos.Core.NetworkMagic (NetworkMagic) import Cardano.Wallet.Kernel.Util.Core (paymentAmount, utxoBalance) -- type class instances -import Test.Pos.Core.Arbitrary () +import Test.Pos.Core.Arbitrary (genAddress) {------------------------------------------------------------------------------- Useful types @@ -92,6 +94,16 @@ arbitraryAddress opts = do not (Core.isRedeemAddress a) arbitrary `suchThat` (\a -> fiddlyCondition a && redeemCondition a) +arbitraryAddressWithNM :: NetworkMagic + -> StakeGenOptions + -> Gen Core.Address +arbitraryAddressWithNM nm opts = do + let fiddlyCondition a = not (fiddlyAddresses opts) || + (length (sformat F.build a) < 104) + let redeemCondition a = allowRedeemAddresses opts || + not (Core.isRedeemAddress a) + (genAddress nm) `suchThat` (\a -> fiddlyCondition a && redeemCondition a) + -- | Finalise the generation of 'a' by transferring all the remaining \"slack\". finalise :: Semigroup a @@ -257,6 +269,14 @@ genTxOut opts = fromStakeOptions opts genOne paymentAmount addr <- arbitraryAddress opts return (Core.TxOut addr coins :| []) +genTxOutWithNM :: NetworkMagic -> StakeGenOptions -> Gen (NonEmpty Core.TxOut) +genTxOutWithNM nm opts = fromStakeOptions opts genOne paymentAmount + where + genOne :: Maybe (NonEmpty Core.TxOut) -> Core.Coin -> Gen (NonEmpty Core.TxOut) + genOne _ coins = do + addr <- arbitraryAddressWithNM nm opts + return (Core.TxOut addr coins :| []) + utxoSmallestEntry :: Core.Utxo -> Core.Coin utxoSmallestEntry utxo = case sort (Map.toList utxo) of @@ -320,6 +340,18 @@ genPayee _utxo payment = do , allowRedeemAddresses = False } +genPayeeWithNM :: NetworkMagic -> Core.Utxo -> Pay -> Gen (NonEmpty Core.TxOut) +genPayeeWithNM nm _utxo payment = do + let balance = toLovelaces payment + genTxOutWithNM nm StakeGenOptions { + stakeMaxValue = Nothing + , stakeGenerationTarget = AtLeast + , stakeNeeded = Core.mkCoin balance + , stakeMaxEntries = Just 1 + , fiddlyAddresses = False + , allowRedeemAddresses = False + } + -- | Generates a single payee which has a redeem address inside. genRedeemPayee :: Core.Utxo -> Pay -> Gen (NonEmpty Core.TxOut) genRedeemPayee _utxo payment = do diff --git a/wallet-new/test/unit/Test/Spec/NewPayment.hs b/wallet-new/test/unit/Test/Spec/NewPayment.hs index 68f62d6e3d7..497258d3646 100644 --- a/wallet-new/test/unit/Test/Spec/NewPayment.hs +++ b/wallet-new/test/unit/Test/Spec/NewPayment.hs @@ -32,7 +32,7 @@ import Pos.Crypto (EncryptedSecretKey, ProtocolMagic, safeDeterministicKeyGen) import Test.Spec.CoinSelection.Generators (InitialBalance (..), - Pay (..), genPayee, genUtxoWithAtLeast) + Pay (..), genPayeeWithNM, genUtxoWithAtLeast) import qualified Cardano.Wallet.API.V1.Types as V1 import qualified Cardano.Wallet.Kernel as Kernel @@ -110,7 +110,7 @@ prepareFixtures nm initialBalance toPay = do (getHdAddressIx newIndex) return $ M.insert txIn (TxOutAux (TxOut addr coin)) acc ) M.empty (M.toList utxo) - payees <- fmap (\(TxOut addr coin) -> (addr, coin)) <$> pick (genPayee utxo toPay) + payees <- fmap (\(TxOut addr coin) -> (addr, coin)) <$> pick (genPayeeWithNM nm utxo toPay) return $ \keystore aw -> do liftIO $ Keystore.insert (WalletIdHdRnd newRootId) esk keystore From 5d0a913fd24c700743578037f53322d17c3b2afd Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Mon, 5 Nov 2018 21:14:04 +1000 Subject: [PATCH 008/103] [DEVOPS-1121] explorer: add testnet URL to CORS origin whitelist --- explorer/src/Pos/Explorer/Socket/App.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/explorer/src/Pos/Explorer/Socket/App.hs b/explorer/src/Pos/Explorer/Socket/App.hs index 7d6d51a5644..300cb039ae4 100644 --- a/explorer/src/Pos/Explorer/Socket/App.hs +++ b/explorer/src/Pos/Explorer/Socket/App.hs @@ -146,6 +146,7 @@ notifierServer notifierSettings connVar = do [ "https://cardanoexplorer.com" , "https://explorer.iohkdev.io" , "http://cardano-explorer.cardano-mainnet.iohk.io" + , "https://cardano-explorer.cardano-testnet.iohkdev.io" , "http://localhost:3100" ] From 9eab3248e047acde96b5750f4db2f5b1fe0e1204 Mon Sep 17 00:00:00 2001 From: kderme Date: Tue, 6 Nov 2018 13:19:25 +0200 Subject: [PATCH 009/103] [CSL-2526] update changes after covering remaining fees and sanity check of fees --- .../Kernel/CoinSelection/FromGeneric.hs | 49 ++++++++-- .../Wallet/Kernel/CoinSelection/Generic.hs | 7 +- .../Kernel/CoinSelection/Generic/Fees.hs | 16 ++-- .../src/Cardano/Wallet/Kernel/Transactions.hs | 89 +++++++++++-------- .../Wallet/WalletLayer/Kernel/Active.hs | 2 +- .../test/unit/Test/Spec/CoinSelection.hs | 89 ++++++++++++------- .../test/unit/Test/Spec/GetTransactions.hs | 4 +- wallet-new/test/unit/Test/Spec/NewPayment.hs | 13 +-- 8 files changed, 175 insertions(+), 94 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs index 55c1931d435..dd0bc107ce7 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs @@ -18,6 +18,7 @@ module Cardano.Wallet.Kernel.CoinSelection.FromGeneric ( , largestFirst -- * Estimating fees , estimateCardanoFee + , checkCardanoFeeSanity , boundAddrAttrSize , boundTxAttrSize -- * Estimating transaction limits @@ -42,8 +43,8 @@ import Pos.Chain.Txp as Core (TxIn, TxOutAux, Utxo, toaOut, txOutAddress, txOutValue) import Pos.Core as Core (AddrAttributes, Address, Coin (..), TxSizeLinear, addCoin, calculateTxSizeLinear, checkCoin, - isRedeemAddress, maxCoinVal, mkCoin, subCoin, - unsafeSubCoin) + divCoin, isRedeemAddress, maxCoinVal, mkCoin, subCoin, + txSizeLinearMinValue, unsafeMulCoin, unsafeSubCoin) import Pos.Core.Attributes (Attributes) import Pos.Crypto (Signature) @@ -145,6 +146,8 @@ data InputGrouping = data CoinSelectionOptions = CoinSelectionOptions { csoEstimateFee :: Int -> NonEmpty Core.Coin -> Core.Coin -- ^ A function to estimate the fees. + , csoFeesSanityCheck :: Core.Coin -> Bool + -- ^ A function we can use to check if fees are not too big or too small. , csoInputGrouping :: InputGrouping -- ^ A preference regarding input grouping. , csoExpenseRegulation :: ExpenseRegulation @@ -158,9 +161,10 @@ data CoinSelectionOptions = CoinSelectionOptions { -- | Creates new 'CoinSelectionOptions' using 'NoGrouping' as default -- 'InputGrouping' and 'SenderPaysFee' as default 'ExpenseRegulation'. newOptions :: (Int -> NonEmpty Core.Coin -> Core.Coin) - -> CoinSelectionOptions -newOptions estimateFee = CoinSelectionOptions { + -> (Core.Coin -> Bool) -> CoinSelectionOptions +newOptions estimateFee check = CoinSelectionOptions { csoEstimateFee = estimateFee + , csoFeesSanityCheck = check , csoInputGrouping = IgnoreGrouping , csoExpenseRegulation = SenderPaysFee , csoDustThreshold = Core.mkCoin 0 @@ -232,23 +236,41 @@ runCoinSelT opts pickUtxo policy (NE.sortBy (flip (comparing outVal)) -> request mSelection <- unwrapCoinSelT policy' utxo case mSelection of Left err -> return (Left err) - Right ((cssWithDust, additionalUtxo), _utxo') -> do - let css = map (coinSelRemoveDust (csoDustThreshold opts)) cssWithDust - inps = concatMap selectedEntries + Right ((css, additionalUtxo, additionalChange), _utxo') -> do + let inps = concatMap selectedEntries (additionalUtxo : map coinSelInputs css) outs = map coinSelOutput css + changesWithDust = splitChange additionalChange $ concatMap coinSelChange css let allInps = case inps of [] -> error "runCoinSelT: empty list of inputs" i:is -> i :| is originalOuts = case outs of [] -> error "runCoinSelT: empty list of outputs" o:os -> o :| os + changes = changesRemoveDust (csoDustThreshold opts) changesWithDust return . Right $ CoinSelFinalResult allInps originalOuts - (concatMap coinSelChange css) + changes where + -- we should have (x + (sum ls) = sum result), but this check could overflow. + splitChange :: Value Cardano -> [Value Cardano] -> [Value Cardano] + splitChange = go + where + go remaining [] = [remaining] + -- we only create new change if for whatever reason there is none already + -- or if is some overflow happens when we try to add. + go remaining [a] = case valueAdd remaining a of + Just newChange -> [newChange] + Nothing -> [a, remaining] + go remaining ls@(a : as) = + let piece = divCoin remaining (length ls) + newRemaining = unsafeValueSub remaining piece -- unsafe because of div. + in case valueAdd piece a of + Just newChange -> newChange : go newRemaining as + Nothing -> a : go remaining as + policy' :: CoinSelT Core.Utxo CoinSelHardErr m - ([CoinSelResult Cardano], SelectedUtxo Cardano) + ([CoinSelResult Cardano], SelectedUtxo Cardano, Value Cardano) policy' = do mapM_ validateOutput request css <- intInputGrouping (csoInputGrouping opts) @@ -415,6 +437,15 @@ estimateCardanoFee linearFeePolicy ins outs = round $ calculateTxSizeLinear linearFeePolicy $ hi $ estimateSize boundAddrAttrSize boundTxAttrSize ins outs +checkCardanoFeeSanity :: TxSizeLinear -> Coin -> Bool +checkCardanoFeeSanity linearFeePolicy fees = + let + maxCoeff :: Int = 2 + minFees = Core.mkCoin $ floor $ txSizeLinearMinValue linearFeePolicy + in + (fees >= minFees) && (fees <= Core.unsafeMulCoin minFees maxCoeff) + + -- | Size to use for a value of type @Attributes AddrAttributes@ when estimating -- encoded transaction sizes. The minimum possible value is 2. -- diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic.hs index 77e1fe24fed..52a10fa1fb6 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic.hs @@ -44,6 +44,7 @@ module Cardano.Wallet.Kernel.CoinSelection.Generic ( , coinSelOutputs , coinSelRemoveDust , coinSelPerGoal + , changesRemoveDust -- * Generalization over UTxO representations , StandardUtxo , PickFromUtxo(..) @@ -384,9 +385,13 @@ coinSelOutputs cs = outVal (coinSelOutput cs) : coinSelChange cs coinSelRemoveDust :: CoinSelDom dom => Value dom -> CoinSelResult dom -> CoinSelResult dom coinSelRemoveDust dust cs = cs { - coinSelChange = filter (> dust) (coinSelChange cs) + coinSelChange = changesRemoveDust dust (coinSelChange cs) } +changesRemoveDust :: CoinSelDom dom + => Value dom -> [Value dom] -> [Value dom] +changesRemoveDust dust = filter (> dust) + -- | Do coin selection per goal -- -- Coin selection per goal simplifies the algorithm, but is not without loss diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs index 1532f340960..cd66daabf64 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs @@ -44,11 +44,11 @@ adjustForFees :: forall utxo m. (CoinSelDom (Dom utxo), Monad m) CoinSelT utxo CoinSelHardErr m (Maybe (UtxoEntry (Dom utxo)))) -> [CoinSelResult (Dom utxo)] -> CoinSelT utxo CoinSelHardErr m - ([CoinSelResult (Dom utxo)], SelectedUtxo (Dom utxo)) + ([CoinSelResult (Dom utxo)], SelectedUtxo (Dom utxo), Value (Dom utxo)) adjustForFees feeOptions pickUtxo css = do case foExpenseRegulation feeOptions of ReceiverPaysFee -> coinSelLiftExcept $ - (, emptySelection) <$> receiverPaysFee upperBound css + (, emptySelection, valueZero) <$> receiverPaysFee upperBound css SenderPaysFee -> senderPaysFee pickUtxo upperBound css where @@ -85,21 +85,23 @@ senderPaysFee :: (Monad m, CoinSelDom (Dom utxo)) -> Fee (Dom utxo) -> [CoinSelResult (Dom utxo)] -> CoinSelT utxo CoinSelHardErr m - ([CoinSelResult (Dom utxo)], SelectedUtxo (Dom utxo)) + ([CoinSelResult (Dom utxo)], SelectedUtxo (Dom utxo), Value (Dom utxo)) senderPaysFee pickUtxo totalFee css = do let (css', remainingFee) = feeFromChange totalFee css - (css', ) <$> coverRemainingFee pickUtxo remainingFee + (additionalUtxo, additionalChange) <- coverRemainingFee pickUtxo remainingFee + return (css', additionalUtxo, additionalChange) coverRemainingFee :: forall utxo m. (Monad m, CoinSelDom (Dom utxo)) => (Value (Dom utxo) -> CoinSelT utxo CoinSelHardErr m (Maybe (UtxoEntry (Dom utxo)))) -> Fee (Dom utxo) - -> CoinSelT utxo CoinSelHardErr m (SelectedUtxo (Dom utxo)) + -> CoinSelT utxo CoinSelHardErr m (SelectedUtxo (Dom utxo), Value (Dom utxo)) coverRemainingFee pickUtxo fee = go emptySelection where go :: SelectedUtxo (Dom utxo) - -> CoinSelT utxo CoinSelHardErr m (SelectedUtxo (Dom utxo)) + -> CoinSelT utxo CoinSelHardErr m (SelectedUtxo (Dom utxo), Value (Dom utxo)) go !acc - | selectedBalance acc >= getFee fee = return acc + | selectedBalance acc >= getFee fee = + return (acc, unsafeValueSub (selectedBalance acc) (getFee fee)) | otherwise = do mio <- (pickUtxo $ unsafeValueSub (getFee fee) (selectedBalance acc)) io <- maybe (throwError CoinSelHardErrCannotCoverFee) return mio diff --git a/wallet-new/src/Cardano/Wallet/Kernel/Transactions.hs b/wallet-new/src/Cardano/Wallet/Kernel/Transactions.hs index eb798059ea8..1c17373aafa 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/Transactions.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/Transactions.hs @@ -11,6 +11,7 @@ module Cardano.Wallet.Kernel.Transactions ( , EstimateFeesError(..) , RedeemAdaError(..) , cardanoFee + , cardanoFeeSanity , mkStdTx , prepareUnsignedTxWithSources , submitSignedTx @@ -43,7 +44,8 @@ import Cardano.Crypto.Wallet (DerivationIndex) import qualified Cardano.Wallet.Kernel.Addresses as Kernel import Cardano.Wallet.Kernel.CoinSelection.FromGeneric (CoinSelFinalResult (..), CoinSelectionOptions (..), - estimateCardanoFee, estimateMaxTxInputs) + checkCardanoFeeSanity, estimateCardanoFee, + estimateMaxTxInputs) import qualified Cardano.Wallet.Kernel.CoinSelection.FromGeneric as CoinSelection import Cardano.Wallet.Kernel.CoinSelection.Generic (CoinSelHardErr (..)) @@ -199,7 +201,7 @@ newUnsignedTransaction -- ^ The source HD account from where the payment should originate -> NonEmpty (Address, Coin) -- ^ The payees - -> IO (Either NewTransactionError (DB, UnsignedTx, Utxo)) + -> IO (Either NewTransactionError (DB, UnsignedTx, Coin, Utxo)) -- ^ Returns the state of the world (i.e. the DB snapshot) -- at the time of the coin selection, so that it can later -- on be used to sign the addresses. @@ -229,7 +231,13 @@ newUnsignedTransaction ActiveWallet{..} options accountId payees = runExceptT $ -- that it may change in the future. let attributes = def :: TxAttributes let tx = UnsignedTx inputs outputs attributes coins - return (snapshot, tx, availableUtxo) + + -- STEP 3: Sanity test. Here we check whether our fees are within a reasonable + -- range. + let fees = computeFeesOfUnsignedTx tx + if csoFeesSanityCheck options fees + then return (snapshot, tx, fees, availableUtxo) + else error $ "fees out of bound " <> show fees where -- Generate an initial seed for the random generator using the hash of -- the payees, which ensure that the coin selection (and the fee estimation) @@ -266,7 +274,7 @@ prepareUnsignedTxWithSources (Tx, NonEmpty (Address, [DerivationIndex])) ) prepareUnsignedTxWithSources activeWallet opts srcAccountId payees spendingPassword = runExceptT $ do - (db, unsignedTx, _availableUtxo) <- ExceptT $ + (db, unsignedTx, _fees, _availableUtxo) <- ExceptT $ newUnsignedTransaction activeWallet opts srcAccountId payees -- Now we have to generate the change addresses needed, @@ -405,8 +413,7 @@ newTransaction aw@ActiveWallet{..} spendingPassword options accountId payees = d tx <- newUnsignedTransaction aw options accountId payees case tx of Left e -> return (Left e) - Right (db, unsignedTx, availableUtxo) -> runExceptT $ do - + Right (db, unsignedTx, _fees, availableUtxo) -> runExceptT $ do -- STEP 1: Perform the signing and forge the final TxAux. mbEsk <- liftIO $ Keystore.lookup nm @@ -531,36 +538,40 @@ estimateFees activeWallet@ActiveWallet{..} options accountId payees = do res <- newUnsignedTransaction activeWallet options accountId payees case res of Left e -> return . Left . EstFeesTxCreationFailed $ e - Right (_db, tx, _originalUtxo) -> do - let change = unsignedTxChange tx - -- calculate the fee as the difference between inputs and outputs. The - -- final 'sumOfOutputs' must be augmented by the change, which we have - -- available in the 'UnsignedTx' as a '[Coin]'. - -- - -- NOTE(adn) In case of 'SenderPaysFee' is practice there might be a slightly - -- increase of the projected fee in the case we are forced to pick "yet another input" - -- to be able to pay the fee, which would, in turn, also increase the fee due to - -- the extra input being picked. - return $ Right - $ sumOfInputs tx - `unsafeSubCoin` - (repeatedly Core.unsafeAddCoin change (sumOfOutputs tx)) - where - -- Tribute to @edsko - repeatedly :: (a -> b -> b) -> ([a] -> b -> b) - repeatedly = flip . foldl' . flip - - -- Unlike a block, a /single transaction/ cannot have inputs that sum to - -- more than maxCoinVal - sumOfInputs :: UnsignedTx -> Coin - sumOfInputs tx = - let inputs = fmap (toaOut . snd) . unsignedTxInputs $ tx - in paymentAmount inputs - - sumOfOutputs :: UnsignedTx -> Coin - sumOfOutputs tx = - let outputs = map toaOut $ unsignedTxOutputs tx - in paymentAmount outputs + Right (_db, _tx, fees, _originalUtxo) -> do + -- sanity check of fees is done. + return $ Right fees + +-- | Calculate the fee as the difference between inputs and outputs. The +-- final 'sumOfOutputs' must be augmented by the change, which we have +-- available in the 'UnsignedTx' as a '[Coin]'. +-- +-- NOTE(adn) In case of 'SenderPaysFee' is practice there might be a slightly +-- increase of the projected fee in the case we are forced to pick "yet another input" +-- to be able to pay the fee, which would, in turn, also increase the fee due to +-- the extra input being picked. +computeFeesOfUnsignedTx :: UnsignedTx -> Coin +computeFeesOfUnsignedTx unsginedTx = + sumOfInputs unsginedTx + `unsafeSubCoin` + (repeatedly Core.unsafeAddCoin (unsignedTxChange unsginedTx) + (sumOfOutputs unsginedTx)) + where + -- Tribute to @edsko + repeatedly :: (a -> b -> b) -> ([a] -> b -> b) + repeatedly = flip . foldl' . flip + + -- Unlike a block, a /single transaction/ cannot have inputs that sum to + -- more than maxCoinVal + sumOfInputs :: UnsignedTx -> Coin + sumOfInputs tx = + let inputs = fmap (toaOut . snd) . unsignedTxInputs $ tx + in paymentAmount inputs + + sumOfOutputs :: UnsignedTx -> Coin + sumOfOutputs tx = + let outputs = map toaOut $ unsignedTxOutputs tx + in paymentAmount outputs -- | Errors during transaction signing -- @@ -626,6 +637,12 @@ cardanoFee (TxFeePolicyTxSizeLinear policy) inputs outputs = cardanoFee TxFeePolicyUnknown{} _ _ = error "cardanoFee: unknown policy" +cardanoFeeSanity :: TxFeePolicy -> Coin -> Bool +cardanoFeeSanity (TxFeePolicyTxSizeLinear policy) fees = + checkCardanoFeeSanity policy fees +cardanoFeeSanity TxFeePolicyUnknown{} _ = + error "cardanoFeeSanity: unknown policy" + {------------------------------------------------------------------------------- Ada redemption diff --git a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Active.hs b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Active.hs index c85c1a350c5..75054b4c773 100644 --- a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Active.hs +++ b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Active.hs @@ -229,7 +229,7 @@ setupPayment :: Monad m ) setupPayment policy grouping regulation payment = do rootId <- fromRootId wId - let opts = (newOptions (Kernel.cardanoFee policy)) { + let opts = (newOptions (Kernel.cardanoFee policy) (Kernel.cardanoFeeSanity policy)) { csoExpenseRegulation = regulation , csoInputGrouping = grouping } diff --git a/wallet-new/test/unit/Test/Spec/CoinSelection.hs b/wallet-new/test/unit/Test/Spec/CoinSelection.hs index f19067d0f3d..65b24b3fbbd 100644 --- a/wallet-new/test/unit/Test/Spec/CoinSelection.hs +++ b/wallet-new/test/unit/Test/Spec/CoinSelection.hs @@ -64,10 +64,16 @@ import Test.Spec.CoinSelection.Generators (InitialBalance (..), freeLunch :: Int -> NonEmpty Core.Coin -> Core.Coin freeLunch _ _ = Core.mkCoin 0 +freeLunchCheck :: Core.Coin -> Bool +freeLunchCheck c = c == Core.mkCoin 0 + -- | The smallest fee possible. minFee :: Int -> NonEmpty Core.Coin -> Core.Coin minFee _ _ = Core.mkCoin 1 +minFeeCheck :: Core.Coin -> Bool +minFeeCheck c = c == Core.mkCoin 1 + -- | An hopefully-accurate estimate of the Tx fees in Cardano. cardanoFee :: Int -> NonEmpty Core.Coin -> Core.Coin cardanoFee inputs outputs = Core.mkCoin $ @@ -75,10 +81,20 @@ cardanoFee inputs outputs = Core.mkCoin $ where linearFeePolicy = TxSizeLinear (Coeff 155381) (Coeff 43.946) +cardanoFeeCheck :: Core.Coin -> Bool +cardanoFeeCheck fees = + let + minFees = Core.mkCoin 155381 + maxCoeff :: Int = 2 + in + (fees >= minFees) && (fees <= Core.unsafeMulCoin minFees maxCoeff) + -- | A simple linear fee proportional in the #inputs & #outputs. linearFee :: Int -> NonEmpty Core.Coin -> Core.Coin linearFee inputsLen outputs = Core.mkCoin (fromIntegral $ inputsLen + length outputs) +linearFeeCheck :: Core.Coin -> Bool +linearFeeCheck _ = True -- | For some reason the version of 'QuickCheck' we are using doesn't seem -- to export 'withMaxSuccess'. @@ -488,17 +504,18 @@ payRestrictInputsTo :: ProtocolMagic -> (InitialBalance -> Gen Core.Utxo) -> (Core.Utxo -> Pay -> Gen (NonEmpty Core.TxOut)) -> (Int -> NonEmpty Core.Coin -> Core.Coin) + -> (Core.Coin -> Bool) -> (CoinSelectionOptions -> CoinSelectionOptions) -> InitialBalance -> Pay -> Policy -> Gen RunResult -payRestrictInputsTo pm maxInputs genU genP feeFunction adjustOptions bal amount policy = +payRestrictInputsTo pm maxInputs genU genP feeFunction feeSanity adjustOptions bal amount policy = withProvidedMagicConfig pm $ \genesisConfig _ _ -> do utxo <- genU bal payee <- genP utxo amount key <- arbitrary - let options = adjustOptions (newOptions feeFunction) + let options = adjustOptions (newOptions feeFunction feeSanity) res <- policy options maxInputs (fmap Core.TxOutAux payee) @@ -518,6 +535,7 @@ pay :: ProtocolMagic -> (InitialBalance -> Gen Core.Utxo) -> (Core.Utxo -> Pay -> Gen (NonEmpty Core.TxOut)) -> (Int -> NonEmpty Core.Coin -> Core.Coin) + -> (Core.Coin -> Bool) -> (CoinSelectionOptions -> CoinSelectionOptions) -> InitialBalance -> Pay @@ -526,7 +544,8 @@ pay :: ProtocolMagic pay pm = payRestrictInputsTo pm maxNumInputs payOne :: ProtocolMagic - -> (Int -> NonEmpty Core.Coin -> Core.Coin) + -> (Int -> NonEmpty Core.Coin -> Core.Coin) + -> (Core.Coin -> Bool) -> (CoinSelectionOptions -> CoinSelectionOptions) -> InitialBalance -> Pay @@ -538,6 +557,7 @@ payOne pm = pay pm genUtxoWithAtLeast genPayee payOne' :: ProtocolMagic -> (Core.Utxo -> Pay -> Gen (NonEmpty Core.TxOut)) -> (Int -> NonEmpty Core.Coin -> Core.Coin) + -> (Core.Coin -> Bool) -> (CoinSelectionOptions -> CoinSelectionOptions) -> InitialBalance -> Pay @@ -547,6 +567,7 @@ payOne' pm payeeGenerator = pay pm genUtxoWithAtLeast payeeGenerator payBatch :: ProtocolMagic -> (Int -> NonEmpty Core.Coin -> Core.Coin) + -> (Core.Coin -> Bool) -> (CoinSelectionOptions -> CoinSelectionOptions) -> InitialBalance -> Pay @@ -571,65 +592,65 @@ spec = describe "Coin selection policies unit tests" $ do withMaxSuccess 1000 $ describe "largestFirst" $ do prop "one payee, SenderPaysFee, fee = 0" $ \pm -> forAll ( - payOne pm freeLunch identity (InitialLovelace 1000) (PayLovelace 100) largestFirst + payOne pm freeLunch freeLunchCheck identity (InitialLovelace 1000) (PayLovelace 100) largestFirst ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "one payee, ReceiverPaysFee, fee = 0" $ \pm -> forAll ( - payOne pm freeLunch receiverPays (InitialLovelace 1000) (PayLovelace 100) largestFirst + payOne pm freeLunch freeLunchCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) largestFirst ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "multiple payees, SenderPaysFee, fee = 0" $ \pm -> forAll ( - payBatch pm freeLunch identity (InitialLovelace 1000) (PayLovelace 100) largestFirst + payBatch pm freeLunch freeLunchCheck identity (InitialLovelace 1000) (PayLovelace 100) largestFirst ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "multiple payees, ReceiverPaysFee, fee = 0" $ \pm -> forAll ( - payBatch pm freeLunch receiverPays (InitialLovelace 1000) (PayLovelace 100) largestFirst + payBatch pm freeLunch freeLunchCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) largestFirst ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res -- Minimal fee prop "one payee, SenderPaysFee, fee = 1 Lovelace" $ \pm -> forAll ( - payOne pm minFee identity (InitialLovelace 1000) (PayLovelace 100) largestFirst + payOne pm minFee minFeeCheck identity (InitialLovelace 1000) (PayLovelace 100) largestFirst ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "one payee, ReceiverPaysFee, fee = 1 Lovelace" $ \pm -> forAll ( - payOne pm minFee receiverPays (InitialLovelace 1000) (PayLovelace 100) largestFirst + payOne pm minFee minFeeCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) largestFirst ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "multiple payees, SenderPaysFee, fee = 1 Lovelace" $ \pm -> forAll ( - payBatch pm minFee identity (InitialLovelace 1000) (PayLovelace 100) largestFirst + payBatch pm minFee minFeeCheck identity (InitialLovelace 1000) (PayLovelace 100) largestFirst ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "multiple payees, ReceiverPaysFee, fee = 1 Lovelace" $ \pm -> forAll ( - payBatch pm minFee receiverPays (InitialLovelace 1000) (PayLovelace 100) largestFirst + payBatch pm minFee minFeeCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) largestFirst ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res withMaxSuccess 2000 $ describe "random" $ do prop "one payee, SenderPaysFee, fee = 0" $ \pm -> forAll ( - payOne pm freeLunch identity (InitialLovelace 1000) (PayLovelace 100) random + payOne pm freeLunch freeLunchCheck identity (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "one payee, ReceiverPaysFee, fee = 0" $ \pm -> forAll ( - payOne pm freeLunch receiverPays (InitialLovelace 1000) (PayLovelace 100) random + payOne pm freeLunch freeLunchCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "multiple payees, SenderPaysFee, fee = 0" $ \pm -> forAll ( - payBatch pm freeLunch identity (InitialLovelace 1000) (PayLovelace 100) random + payBatch pm freeLunch freeLunchCheck identity (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res prop "multiple payees, ReceiverPaysFee, fee = 0" $ \pm -> forAll ( - payBatch pm freeLunch receiverPays (InitialLovelace 1000) (PayLovelace 100) random + payBatch pm freeLunch freeLunchCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentSucceeded utxo payee res -- minimal fee. It doesn't make sense to use it for 'ReceiverPaysFee', because -- rounding will essentially cause the computed @epsilon@ will be 0 for each -- output. For those cases, we use the 'linear' fee policy. prop "one payee, SenderPaysFee, fee = 1 Lovelace" $ \pm -> forAll ( - payOne pm minFee identity (InitialLovelace 1000) (PayLovelace 100) random + payOne pm minFee minFeeCheck identity (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed SenderPaysFee] prop "multiple payees, SenderPaysFee, fee = 1 Lovelace" $ \pm -> forAll ( - payBatch pm minFee identity (InitialLovelace 1000) (PayLovelace 100) random + payBatch pm minFee minFeeCheck identity (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed SenderPaysFee] -- linear fee prop "one payee, ReceiverPaysFee, fee = linear" $ \pm -> forAll ( - payOne pm linearFee receiverPays (InitialLovelace 1000) (PayLovelace 100) random + payOne pm linearFee linearFeeCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed ReceiverPaysFee] prop "multiple payees, ReceiverPaysFee, fee = linear" $ \pm -> forAll ( - payBatch pm linearFee receiverPays (InitialLovelace 1000) (PayLovelace 100) random + payBatch pm linearFee linearFeeCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed ReceiverPaysFee] @@ -639,37 +660,37 @@ spec = -- like attributes, and trying to setup syntetic experiments with -- less than 1ADA (10^6 lovelaces) is probably counter-productive prop "one payee, SenderPaysFee, fee = cardano" $ \pm -> forAll ( - payOne pm cardanoFee identity (InitialADA 1000) (PayADA 100) random + payOne pm cardanoFee cardanoFeeCheck identity (InitialADA 1000) (PayADA 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed SenderPaysFee] prop "multiple payees, SenderPaysFee, fee = cardano" $ \pm -> forAll ( - payBatch pm cardanoFee identity (InitialADA 1000) (PayADA 100) random + payBatch pm cardanoFee cardanoFeeCheck identity (InitialADA 1000) (PayADA 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed SenderPaysFee] prop "one payee, ReceiverPaysFee, fee = cardano" $ \pm -> forAll ( - payOne pm cardanoFee receiverPays (InitialADA 1000) (PayADA 100) random + payOne pm cardanoFee cardanoFeeCheck receiverPays (InitialADA 1000) (PayADA 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed ReceiverPaysFee] prop "multiple payees, ReceiverPaysFee, fee = cardano" $ \pm -> forAll ( - payBatch pm cardanoFee receiverPays (InitialADA 1000) (PayADA 100) random + payBatch pm cardanoFee cardanoFeeCheck receiverPays (InitialADA 1000) (PayADA 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed ReceiverPaysFee] withMaxSuccess 2000 $ describe "Expected failures" $ do prop "Paying a redeem address should always be rejected" $ \pm -> forAll ( - payOne' pm genRedeemPayee linearFee receiverPays (InitialLovelace 1000) (PayLovelace 100) random + payOne' pm genRedeemPayee linearFee linearFeeCheck receiverPays (InitialLovelace 1000) (PayLovelace 100) random ) $ \(utxo, payee, res) -> paymentFailedWith utxo payee res [errorWas outputWasRedeem] prop "Paying somebody not having enough money should fail" $ \pm -> forAll ( - payBatch pm linearFee receiverPays (InitialLovelace 10) (PayLovelace 100) random + payBatch pm linearFee linearFeeCheck receiverPays (InitialLovelace 10) (PayLovelace 100) random ) $ \(utxo, payee, res) -> do paymentFailedWith utxo payee res [errorWas notEnoughMoney] prop "Restricting too much the number of inputs results in an hard error for a single payee" $ \pm -> forAll ( - payRestrictInputsTo pm 1 genUtxoWithAtLeast genPayee freeLunch identity (InitialLovelace 200) (PayLovelace 100) random + payRestrictInputsTo pm 1 genUtxoWithAtLeast genPayee freeLunch freeLunchCheck identity (InitialLovelace 200) (PayLovelace 100) random ) $ \(utxo, payee, res) -> do paymentFailedWith utxo payee res [errorWas maxInputsReached] prop "Restricting too much the number of inputs results in an hard error for multiple payees" $ \pm -> forAll ( - payRestrictInputsTo pm 1 genUtxoWithAtLeast genPayees freeLunch identity (InitialLovelace 200) (PayLovelace 100) random + payRestrictInputsTo pm 1 genUtxoWithAtLeast genPayees freeLunch freeLunchCheck identity (InitialLovelace 200) (PayLovelace 100) random ) $ \(utxo, payee, res) -> do paymentFailedWith utxo payee res [errorWas maxInputsReached] @@ -679,11 +700,11 @@ spec = -- the average in Cardano. withMaxSuccess 200 $ describe "Fiddly Addresses" $ do prop "multiple payees, SenderPaysFee, fee = cardano" $ \pm -> forAll ( - pay pm genFiddlyUtxo genFiddlyPayees cardanoFee identity (InitialADA 1000) (PayADA 100) random + pay pm genFiddlyUtxo genFiddlyPayees cardanoFee cardanoFeeCheck identity (InitialADA 1000) (PayADA 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed SenderPaysFee] prop "multiple payees, ReceiverPaysFee, fee = cardano" $ \pm -> forAll ( - pay pm genFiddlyUtxo genFiddlyPayees cardanoFee receiverPays (InitialADA 1000) (PayADA 100) random + pay pm genFiddlyUtxo genFiddlyPayees cardanoFee cardanoFeeCheck receiverPays (InitialADA 1000) (PayADA 100) random ) $ \(utxo, payee, res) -> paymentSucceededWith utxo payee res [feeWasPayed ReceiverPaysFee] @@ -699,23 +720,23 @@ spec = -- the associated inputs paying into the address we just picked. withMaxSuccess 2000 $ describe "Input Grouping" $ do prop "Require grouping, fee = 0, one big group depletes the Utxo completely" $ \pm -> forAll ( - pay pm (genGroupedUtxo 1) genPayee freeLunch requireGrouping (InitialLovelace 1000) (PayLovelace 10) random + pay pm (genGroupedUtxo 1) genPayee freeLunch freeLunchCheck requireGrouping (InitialLovelace 1000) (PayLovelace 10) random ) $ \(utxo, payee, res) -> do paymentSucceededWith utxo payee res [utxoWasDepleted] prop "Require grouping, fee = cardano, one big group depletes the Utxo completely" $ \pm -> forAll ( - pay pm (genGroupedUtxo 1) genPayee freeLunch requireGrouping (InitialADA 1000) (PayADA 10) random + pay pm (genGroupedUtxo 1) genPayee freeLunch freeLunchCheck requireGrouping (InitialADA 1000) (PayADA 10) random ) $ \(utxo, payee, res) -> do paymentSucceededWith utxo payee res [utxoWasDepleted] prop "Require grouping, fee = 0, several groups allows the payment to be fullfilled" $ \pm -> forAll ( - pay pm (genGroupedUtxo 10) genPayee freeLunch requireGrouping (InitialLovelace 1000) (PayLovelace 10) random + pay pm (genGroupedUtxo 10) genPayee freeLunch freeLunchCheck requireGrouping (InitialLovelace 1000) (PayLovelace 10) random ) $ \(utxo, payee, res) -> do paymentSucceeded utxo payee res prop "Prefer grouping, fee = 0" $ \pm -> forAll ( - payOne pm freeLunch preferGrouping (InitialLovelace 1000) (PayLovelace 10) random + payOne pm freeLunch freeLunchCheck preferGrouping (InitialLovelace 1000) (PayLovelace 10) random ) $ \(utxo, payee, res) -> do paymentSucceeded utxo payee res prop "IgnoreGrouping, fee = 0 must not deplete the utxo" $ \pm -> forAll ( - pay pm (genGroupedUtxo 1) genPayee freeLunch ignoreGrouping (InitialLovelace 1000) (PayLovelace 10) random + pay pm (genGroupedUtxo 1) genPayee freeLunch freeLunchCheck ignoreGrouping (InitialLovelace 1000) (PayLovelace 10) random ) $ \(utxo, payee, res) -> do paymentSucceededWith utxo payee res [utxoWasNotDepleted] diff --git a/wallet-new/test/unit/Test/Spec/GetTransactions.hs b/wallet-new/test/unit/Test/Spec/GetTransactions.hs index dcd04bf7777..92cbcf1e776 100644 --- a/wallet-new/test/unit/Test/Spec/GetTransactions.hs +++ b/wallet-new/test/unit/Test/Spec/GetTransactions.hs @@ -208,6 +208,8 @@ getAccountBalanceNow pw Fix{..} = do constantFee :: Word64 -> Int -> NonEmpty Coin -> Coin constantFee c _ _ = mkCoin c +constantFeeCheck :: Word64 -> Coin -> Bool +constantFeeCheck c c' = mkCoin c == c' spec :: Spec spec = do @@ -482,7 +484,7 @@ spec = do payAux :: Kernel.ActiveWallet -> HdAccountId -> NonEmpty (Address, Coin) -> Word64 -> IO (Core.Tx, TxMeta) payAux aw hdAccountId payees fees = do - let opts = (newOptions (constantFee fees)) { + let opts = (newOptions (constantFee fees) (constantFeeCheck fees)) { csoExpenseRegulation = SenderPaysFee , csoInputGrouping = IgnoreGrouping } diff --git a/wallet-new/test/unit/Test/Spec/NewPayment.hs b/wallet-new/test/unit/Test/Spec/NewPayment.hs index 497258d3646..2552fafbda6 100644 --- a/wallet-new/test/unit/Test/Spec/NewPayment.hs +++ b/wallet-new/test/unit/Test/Spec/NewPayment.hs @@ -149,6 +149,9 @@ withFixture pm initialBalance toPay cc = constantFee :: Int -> NonEmpty Coin -> Coin constantFee _ _ = mkCoin 10 +constantFeeCheck :: Coin -> Bool +constantFeeCheck c = c == mkCoin 10 + -- | Helper function to facilitate payments via the Layer or Servant. withPayment :: MonadIO n => ProtocolMagic @@ -199,7 +202,7 @@ spec = describe "NewPayment" $ do pm <- pick arbitrary withFixture @IO pm (InitialADA 10000) (PayLovelace 10) $ \_ _ aw Fixture{..} -> do policy <- Node.getFeePolicy (Kernel.walletPassive aw ^. Kernel.walletNode) - let opts = (newOptions (Kernel.cardanoFee policy)) { + let opts = (newOptions (Kernel.cardanoFee policy) (Kernel.cardanoFeeSanity policy)) { csoExpenseRegulation = SenderPaysFee , csoInputGrouping = IgnoreGrouping } @@ -217,7 +220,7 @@ spec = describe "NewPayment" $ do pm <- pick arbitrary withFixture @IO pm (InitialADA 10000) (PayADA 1) $ \_ _ aw Fixture{..} -> do policy <- Node.getFeePolicy (Kernel.walletPassive aw ^. Kernel.walletNode) - let opts = (newOptions (Kernel.cardanoFee policy)) { + let opts = (newOptions (Kernel.cardanoFee policy) (Kernel.cardanoFeeSanity policy)) { csoExpenseRegulation = ReceiverPaysFee , csoInputGrouping = IgnoreGrouping } @@ -261,7 +264,7 @@ spec = describe "NewPayment" $ do monadicIO $ do pm <- pick arbitrary withFixture @IO pm (InitialADA 10000) (PayADA 1) $ \_ _ aw Fixture{..} -> do - let opts = (newOptions constantFee) { + let opts = (newOptions constantFee constantFeeCheck) { csoExpenseRegulation = SenderPaysFee , csoInputGrouping = IgnoreGrouping } @@ -281,7 +284,7 @@ spec = describe "NewPayment" $ do monadicIO $ do pm <- pick arbitrary withFixture @IO pm (InitialADA 10000) (PayADA 1) $ \_ _ aw Fixture{..} -> do - let opts = (newOptions constantFee) { + let opts = (newOptions constantFee constantFeeCheck) { csoExpenseRegulation = SenderPaysFee , csoInputGrouping = IgnoreGrouping } @@ -302,7 +305,7 @@ spec = describe "NewPayment" $ do pm <- pick arbitrary withFixture @IO pm (InitialADA 10000) (PayADA 1) $ \_ _ aw Fixture{..} -> do policy <- Node.getFeePolicy (Kernel.walletPassive aw ^. Kernel.walletNode) - let opts = (newOptions (Kernel.cardanoFee policy)) { + let opts = (newOptions (Kernel.cardanoFee policy) (Kernel.cardanoFeeSanity policy)) { csoExpenseRegulation = SenderPaysFee , csoInputGrouping = IgnoreGrouping } From 577cffa5182cbac16c073a6496871258d97de92b Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Tue, 6 Nov 2018 14:13:22 -0500 Subject: [PATCH 010/103] [DDW-480] Fix error message show user for x509 regeneration failures --- tools/src/launcher/Main.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/src/launcher/Main.hs b/tools/src/launcher/Main.hs index a1a5c6dcf0b..d0117efb4ae 100644 --- a/tools/src/launcher/Main.hs +++ b/tools/src/launcher/Main.hs @@ -423,7 +423,7 @@ generateTlsCertificates ConfigurationOptions{..} executable tlsPath = do when (exitCode /= ExitSuccess) $ do logError "Couldn't generate TLS certificates for Wallet" - liftIO . fail $ "Wallet won't work without TLS certificates" + liftIO . fail $ "Couldn't generate TLS certificates; wallet won't work without TLS. Please check your configuration and make sure you aren't already running an instance of Cardano." -- | If we are on server, we want the following algorithm: From 9efdf087675ebd93cb9c47a33d24503d490db0a2 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Wed, 7 Nov 2018 07:56:19 +1000 Subject: [PATCH 011/103] [DEVOPS-1094] explorer frontend: hide footer in testnet mode (#3817) --- explorer/frontend/src/Explorer/View/Footer.purs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/explorer/frontend/src/Explorer/View/Footer.purs b/explorer/frontend/src/Explorer/View/Footer.purs index fa6972694de..f052b699a6c 100644 --- a/explorer/frontend/src/Explorer/View/Footer.purs +++ b/explorer/frontend/src/Explorer/View/Footer.purs @@ -13,7 +13,7 @@ import Explorer.I18n.Lenses (footer, fooCardanoOpenSource, fooCardanoHub , fooDaedalusPlatform, fooWhyCardano, fooCardanoRoadmap, fooCardanoReddit, fooCardanoCommunity , fooIOHK, fooIOHKBlog, fooIOHKYoutube, fooTwitter, fooProject, fooFoundation , fooLearnMore, fooProtocol) as I18nL -import Explorer.Lenses.State (lang) +import Explorer.Lenses.State (lang, testnet) import Explorer.Types.Actions (Action(..)) import Explorer.Types.State (State) import Explorer.Util.Config (commitHash, version) @@ -27,8 +27,10 @@ import Text.Smolder.Markup (text) as S footerView :: State -> P.HTML Action footerView state = - let lang' = state ^. lang in - S.div ! S.className "explorer-footer" $ do + let lang' = state ^. lang + footerHiddenClazz = if (state ^. testnet) then " hide" else "" + in + S.div ! S.className ("explorer-footer" <> footerHiddenClazz) $ do S.div ! S.className "explorer-footer__top" $ do S.div ! S.className "explorer-footer__container" $ do S.div ! S.className "explorer-footer__top--content" $ do From fdff8775adaa24486a58a32acb851aceee324658 Mon Sep 17 00:00:00 2001 From: kderme Date: Tue, 6 Nov 2018 12:50:19 +0200 Subject: [PATCH 012/103] [CSL-2526] unit tests for fees bug and sanity check --- .../test/unit/Test/Spec/GetTransactions.hs | 125 +++++++++++++++++- 1 file changed, 124 insertions(+), 1 deletion(-) diff --git a/wallet-new/test/unit/Test/Spec/GetTransactions.hs b/wallet-new/test/unit/Test/Spec/GetTransactions.hs index 92cbcf1e776..ac4bd897fb6 100644 --- a/wallet-new/test/unit/Test/Spec/GetTransactions.hs +++ b/wallet-new/test/unit/Test/Spec/GetTransactions.hs @@ -56,6 +56,7 @@ import Cardano.Wallet.Kernel.DB.TxMeta import qualified Cardano.Wallet.Kernel.DB.Util.IxSet as IxSet import Cardano.Wallet.Kernel.Internal import qualified Cardano.Wallet.Kernel.Keystore as Keystore +import qualified Cardano.Wallet.Kernel.NodeStateAdaptor as Node import qualified Cardano.Wallet.Kernel.PrefilterTx as Kernel import qualified Cardano.Wallet.Kernel.Read as Kernel import qualified Cardano.Wallet.Kernel.Transactions as Kernel @@ -65,12 +66,13 @@ import Cardano.Wallet.WalletLayer (ActiveWalletLayer (..), walletPassiveLayer) import qualified Cardano.Wallet.WalletLayer as WalletLayer import qualified Cardano.Wallet.WalletLayer.Kernel.Accounts as Accounts +import qualified Cardano.Wallet.WalletLayer.Kernel.Active as Active import qualified Cardano.Wallet.WalletLayer.Kernel.Conv as Kernel.Conv import Cardano.Wallet.WalletLayer.Kernel.Transactions (toTransaction) import qualified Test.Spec.Addresses as Addresses import Test.Spec.CoinSelection.Generators (InitialBalance (..), - Pay (..), genUtxoWithAtLeast) + Pay (..), genPayeeWithNM, genUtxoWithAtLeast) import qualified Test.Spec.Fixture as Fixture import qualified Test.Spec.NewPayment as NewPayment import TxMetaStorageSpecs (Isomorphic (..), genMeta) @@ -145,6 +147,62 @@ prepareFixtures nm initialBalance = do , fixturePw = pw } +prepareUTxoFixtures :: NetworkMagic + -> [Word64] + -> Fixture.GenActiveWalletFixture Fix +prepareUTxoFixtures nm coins = do + let (_, esk) = safeDeterministicKeyGen (B.pack $ replicate 32 0x42) mempty + let newRootId = eskToHdRootId nm esk + newRoot <- initHdRoot <$> pure newRootId + <*> pure (WalletName "A wallet") + <*> pure NoSpendingPassword + <*> pure AssuranceLevelNormal + <*> (InDb <$> pick arbitrary) + + newAccountId <- HdAccountId newRootId <$> deriveIndex (pick . choose) HdAccountIx HardDerivation + utxo <- foldlM (\acc coin -> do + newIndex <- deriveIndex (pick . choose) HdAddressIx HardDerivation + txIn <- pick $ Core.TxInUtxo <$> arbitrary <*> arbitrary + let Just (addr, _) = deriveLvl2KeyPair nm + (IsBootstrapEraAddr True) + (ShouldCheckPassphrase True) + mempty + esk + (newAccountId ^. hdAccountIdIx . to getHdAccountIx) + (getHdAddressIx newIndex) + return $ M.insert txIn (TxOutAux (TxOut addr coin)) acc + ) M.empty (mkCoin <$> coins) + return $ \keystore aw -> do + let pw = Kernel.walletPassive aw + Keystore.insert (WalletIdHdRnd newRootId) esk keystore + let accounts = Kernel.prefilterUtxo nm newRootId esk utxo + hdAccountId = Kernel.defaultHdAccountId newRootId + (Just hdAddress) = Kernel.defaultHdAddress nm esk emptyPassphrase newRootId + + void $ liftIO $ update (pw ^. wallets) (CreateHdWallet newRoot hdAccountId hdAddress accounts) + return $ Fix { + fixtureHdRootId = newRootId + , fixtureHdRoot = newRoot + , fixtureAccountId = AccountIdHdRnd newAccountId + , fixtureESK = esk + , fixtureUtxo = utxo + } + +withUtxosFixture :: MonadIO m + => ProtocolMagic + -> [Word64] + -> ( Keystore.Keystore + -> WalletLayer.ActiveWalletLayer m + -> Kernel.ActiveWallet + -> Fix + -> IO a + ) + -> PropertyM IO a +withUtxosFixture pm coins cc = + Fixture.withActiveWalletFixture pm (prepareUTxoFixtures nm coins) cc + where + nm = makeNetworkMagic pm + withFixture :: MonadIO m => ProtocolMagic -> InitialBalance @@ -214,6 +272,71 @@ constantFeeCheck c c' = mkCoin c == c' spec :: Spec spec = do describe "GetTransactions" $ do + prop "utxo fixture creates the correct balance" $ withMaxSuccess 10 $ + monadicIO $ do + pm <- pick arbitrary + withUtxosFixture @IO pm [1,2,3] $ \_keystore _activeLayer aw f@Fix{..} -> do + let pw = Kernel.walletPassive aw + balance <- getAccountBalanceNow pw f + balance `shouldBe` 6 + + prop "sanity tests checks" $ withMaxSuccess 10 $ + monadicIO $ do + pm <- pick arbitrary + Fixture.withPassiveWalletFixture @IO pm (return $ \_ -> return ()) $ \_ _ pw _ -> do + policy <- Node.getFeePolicy (pw ^. Kernel.walletNode) + let checker = Kernel.cardanoFeeSanity policy . mkCoin + checker 100 `shouldBe` False + checker 155380 `shouldBe` False + checker 155381 `shouldBe` True + checker 213345 `shouldBe` True + checker (2 * 155381) `shouldBe` True + checker (2 * 155381 + 1) `shouldBe` False + checker 755381 `shouldBe` False + + prop "pay works normally for coin selection with additional utxos and changes" $ withMaxSuccess 10 $ + monadicIO $ do + pm <- pick arbitrary + let nm = makeNetworkMagic pm + distr <- fmap (\(TxOut addr coin) -> V1.PaymentDistribution (V1.V1 addr) (V1.V1 coin)) + <$> pick (genPayeeWithNM nm mempty (PayLovelace 100)) + withUtxosFixture @IO pm [300, 400, 500, 600, 5000000] $ \_keystore _activeLayer aw f@Fix{..} -> do + let pw = Kernel.walletPassive aw + -- get the balance before the payment. + coinsBefore <- getAccountBalanceNow pw f + -- do the payment + let (AccountIdHdRnd myAccountId) = fixtureAccountId + src = V1.PaymentSource (Kernel.Conv.toRootId fixtureHdRootId) + (V1.unsafeMkAccountIndex $ getHdAccountIx $ myAccountId ^. hdAccountIdIx) + payment = V1.Payment src distr Nothing Nothing + Right _ <- Active.pay aw emptyPassphrase PreferGrouping SenderPaysFee payment + -- get the balance after the payment. + coinsAfter <- getAccountBalanceNow pw f + -- sanity check. + policy <- Node.getFeePolicy (pw ^. Kernel.walletNode) + let checker = Kernel.cardanoFeeSanity policy . mkCoin + -- payment is very small so difference is almost equa to fees. + coinsBefore - coinsAfter `shouldSatisfy` checker + + prop "estimateFees looks sane for coin selection with additional utxos and changes" $ withMaxSuccess 10 $ + monadicIO $ do + pm <- pick arbitrary + let nm = makeNetworkMagic pm + distr <- fmap (\(TxOut addr coin) -> V1.PaymentDistribution (V1.V1 addr) (V1.V1 coin)) + <$> pick (genPayeeWithNM nm mempty (PayLovelace 100)) + withUtxosFixture @IO pm [300, 400, 500, 600, 5000000] $ \_keystore _activeLayer aw Fix{..} -> do + let pw = Kernel.walletPassive aw + -- do the payment + let (AccountIdHdRnd myAccountId) = fixtureAccountId + src = V1.PaymentSource (Kernel.Conv.toRootId fixtureHdRootId) + (V1.unsafeMkAccountIndex $ getHdAccountIx $ myAccountId ^. hdAccountIdIx) + payment = V1.Payment src distr Nothing Nothing + Right c <- Active.estimateFees aw PreferGrouping SenderPaysFee payment + -- sanity check. + policy <- Node.getFeePolicy (pw ^. Kernel.walletNode) + let checker = Kernel.cardanoFeeSanity policy + c `shouldSatisfy` checker + prop "scenario: Layer.CreateAddress -> TxMeta.putTxMeta -> Layer.getTransactions works properly." $ withMaxSuccess 5 $ monadicIO $ do testMetaSTB <- pick genMeta From bcda7f0dada474f9f9eb7b370cf677f180d638b2 Mon Sep 17 00:00:00 2001 From: Michael Bishop Date: Tue, 6 Nov 2018 23:44:06 +0200 Subject: [PATCH 013/103] [CSL-2526] fetch stack2nix source using host arch --- nix/stack2nix.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/nix/stack2nix.nix b/nix/stack2nix.nix index 9d911b46720..ccf8e6ba548 100644 --- a/nix/stack2nix.nix +++ b/nix/stack2nix.nix @@ -1,6 +1,8 @@ {pkgs, fetchFromGitHub }: -import (fetchFromGitHub { +let + hostPkgs = import pkgs.path { config = {}; system = builtins.currentSystem; overlays = []; }; +in import (hostPkgs.fetchFromGitHub { owner = "avieth"; repo = "stack2nix"; rev = "c51db2d31892f7c4e7ff6acebe4504f788c56dca"; From d5ef7c27341ba2fbe2a99650114700f11efd635c Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Wed, 7 Nov 2018 09:06:42 -0500 Subject: [PATCH 014/103] [DDW-480] Fix error message show user for x509 regeneration failures (#3838) --- tools/src/launcher/Main.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/src/launcher/Main.hs b/tools/src/launcher/Main.hs index d0117efb4ae..f2158d3d63b 100644 --- a/tools/src/launcher/Main.hs +++ b/tools/src/launcher/Main.hs @@ -423,7 +423,7 @@ generateTlsCertificates ConfigurationOptions{..} executable tlsPath = do when (exitCode /= ExitSuccess) $ do logError "Couldn't generate TLS certificates for Wallet" - liftIO . fail $ "Couldn't generate TLS certificates; wallet won't work without TLS. Please check your configuration and make sure you aren't already running an instance of Cardano." + liftIO . fail $ "Couldn't generate TLS certificates; Daedalus wallet won't work without TLS. Please check your configuration and make sure you aren't already running an instance of Daedalus wallet." -- | If we are on server, we want the following algorithm: From 7f03f66c6d3e263fef34f6e3826c7efae9152004 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 1 Nov 2018 19:53:40 +1000 Subject: [PATCH 015/103] [RCD-37] ChangeLog: Add 1.3.1 release --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d941355441f..a79f159899a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,6 +81,36 @@ - wallet-new README has been improved (especially on sections about testing) and updated (CO-325) + +## Cardano SL 1.3.1 + +### Features + +- Add genesis data for the Cardano SL public Testnet. ([#3265](https://github.com/input-output-hk/cardano-sl/pull/3265), [#3349](https://github.com/input-output-hk/cardano-sl/pull/3349), [#3585](https://github.com/input-output-hk/cardano-sl/pull/3585), DEVOPS-398) + +- Add a "faucet" API to dispense Testnet Ada to users. ([#2939](https://github.com/input-output-hk/cardano-sl/pull/2939), DEVOPS-834) + +- Support additional fields for Daedalus bug reports in the report server. ([#3394](https://github.com/input-output-hk/cardano-sl/pull/3394), TSD-116) + +### Fixes + +- Fix a case where the error reporting system can cause the node to stop syncing. ([#3294](https://github.com/input-output-hk/cardano-sl/pull/3294), CDEC-469, CDEC-439) + +- Adjust the address format to distinguish testnet and mainnet addresses. ([#3540](https://github.com/input-output-hk/cardano-sl/pull/3540), [#3556](https://github.com/input-output-hk/cardano-sl/pull/3556), [#3558](https://github.com/input-output-hk/cardano-sl/pull/3558), [#3561](https://github.com/input-output-hk/cardano-sl/pull/3561), [#3578](https://github.com/input-output-hk/cardano-sl/pull/3578), [#3583](https://github.com/input-output-hk/cardano-sl/pull/3583), [#3618](https://github.com/input-output-hk/cardano-sl/pull/3618), [#3659](https://github.com/input-output-hk/cardano-sl/pull/3659), [#3685](https://github.com/input-output-hk/cardano-sl/pull/3685), CO-353, CO-354) + +- Add a workaround for the RocksDB issue which prevented Daedalus Windows users with non-ASCII usernames from starting the wallet. ([#3465](https://github.com/input-output-hk/cardano-sl/pull/3465), CBR-391) + +- Add support to cardano-sl-launcher for launching Daedalus in "safe mode". ([#3421](https://github.com/input-output-hk/cardano-sl/pull/3421), DDW-380) + +- Fix the x509 certificate generation tool to allow using IP addresses as subject alternate names. ([#3390](https://github.com/input-output-hk/cardano-sl/pull/3390), DEVOPS-992) + +- Fix display of the git version in Cardano Explorer. ([#3386](https://github.com/input-output-hk/cardano-sl/pull/3386), DEVOPS-999) + +- Update Windows build script to use a newer openssl version. ([#3397](https://github.com/input-output-hk/cardano-sl/pull/3397), DEVOPS-1003) + +- Fix a build system issue which caused slow builds. ([#3622](https://github.com/input-output-hk/cardano-sl/pull/3622), DEVOPS-916) + + ## Cardano SL 1.3.0 ### Features From 62e9a8d1c896cd862f40ed4e7033f2f72750ce24 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 1 Nov 2018 19:54:43 +1000 Subject: [PATCH 016/103] [RCD-37] ChangeLog: Update vNext --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a79f159899a..271f6d63a06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,6 @@ # CHANGELOG - -## Cardano SL vNext [1.4.0] +## Cardano SL 2.0.0 ### Features From 069e0341994fd808076d866dc5c4bf5c96cadd2f Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Fri, 9 Nov 2018 17:45:02 +1000 Subject: [PATCH 017/103] docs: Fix wallet attribute in build instructions Resolves #3693 --- default.nix | 1 + docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index 3d2920b6237..44647a86587 100644 --- a/default.nix +++ b/default.nix @@ -281,6 +281,7 @@ let cardano-sl-util cardano-sl-wallet cardano-sl-wallet-new + cardano-sl-wallet-new-static cardano-sl-x509; inherit (self.haskellPackages) cardano-report-server; } diff --git a/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md b/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md index 16d0273306c..82947ce5a66 100644 --- a/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md +++ b/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md @@ -65,8 +65,8 @@ NOTE: the various other Cardano components can be obtained through other attribu - `cardano-explorer`, `cardano-explorer-swagger`, `cardano-explorer-mock` - `cardano-sl-tools`: - `cardano-analyzer`, `cardano-dht-keygen`, `cardano-genupdate`, `cardano-keygen`, `cardano-launcher`, `cardano-addr-convert`, `cardano-cli-docs`, `cardano-block-gen`, `cardano-post-mortem` -- `cardano-sl-wallet-static`: - - `cardano-node`, `cardano-swagger` +- `cardano-sl-wallet-new-static`: + - `cardano-node`, `cardano-generate-swagger-file` In general, for any given cabal `PACKAGE` provided by Cardano, there is a corresponding Nix attribute for it -- `PACKAGE`, and sometimes, in case of From df11820ab671c689090b5633a61117706718c82d Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Fri, 9 Nov 2018 20:24:17 +1000 Subject: [PATCH 018/103] docs: Clarify the PACKAGE-static naming Resolves #3818 --- .../build-cardano-sl-and-daedalus-from-source-code.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md b/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md index 82947ce5a66..6d2bc6e3e57 100644 --- a/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md +++ b/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md @@ -69,9 +69,11 @@ NOTE: the various other Cardano components can be obtained through other attribu - `cardano-node`, `cardano-generate-swagger-file` In general, for any given cabal `PACKAGE` provided by Cardano, there is a -corresponding Nix attribute for it -- `PACKAGE`, and sometimes, in case of -packages providing executables, the `PACKAGE-static` also provides a -statically-linked variation. +corresponding Nix attribute for it -- `PACKAGE`. +In the case of packages with executables, the `PACKAGE-static` +attribute provides a variation with only the executables, with Haskell +dependencies statically linked (system dependencies dynamically +linked). ## Stack with Nix for system libraries (mixed mode) From cd88a85022bf6ced1785773f7288f0d3cad0e6f6 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 1 Nov 2018 23:50:07 +1000 Subject: [PATCH 019/103] [RCD-37] ChangeLog: Add placeholder links for all tickets merged in 2.0.0 - List of placeholders generated from merge commits in the git log. - Updated links in existing ChangeLog entries. - Filled in ChangeLog entries for DEVOPS tickets. --- CHANGELOG.md | 242 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 229 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 271f6d63a06..415d357ea5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,187 @@ ## Cardano SL 2.0.0 +Please add entries for your tickets: + +- [CBR-239](https://iohk.myjetbrains.com/youtrack/issue/CBR-239) [#3370](https://github.com/input-output-hk/cardano-sl/pull/3370) [#3330](https://github.com/input-output-hk/cardano-sl/pull/3330) [#3396](https://github.com/input-output-hk/cardano-sl/pull/3396) [#3668](https://github.com/input-output-hk/cardano-sl/pull/3668) +- [CBR-246](https://iohk.myjetbrains.com/youtrack/issue/CBR-246) [#3441](https://github.com/input-output-hk/cardano-sl/pull/3441) [#3495](https://github.com/input-output-hk/cardano-sl/pull/3495) +- [CBR-250](https://iohk.myjetbrains.com/youtrack/issue/CBR-250) [#3388](https://github.com/input-output-hk/cardano-sl/pull/3388) [#3454](https://github.com/input-output-hk/cardano-sl/pull/3454) +- [CBR-27](https://iohk.myjetbrains.com/youtrack/issue/CBR-27) [#3592](https://github.com/input-output-hk/cardano-sl/pull/3592) +- [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655) +- [CBR-285](https://iohk.myjetbrains.com/youtrack/issue/CBR-285) [#3117](https://github.com/input-output-hk/cardano-sl/pull/3117) +- [CBR-288](https://iohk.myjetbrains.com/youtrack/issue/CBR-288) [#3128](https://github.com/input-output-hk/cardano-sl/pull/3128) +- [CBR-289](https://iohk.myjetbrains.com/youtrack/issue/CBR-289) [#3043](https://github.com/input-output-hk/cardano-sl/pull/3043) +- [CBR-304](https://iohk.myjetbrains.com/youtrack/issue/CBR-304) [#3116](https://github.com/input-output-hk/cardano-sl/pull/3116) +- [CBR-313](https://iohk.myjetbrains.com/youtrack/issue/CBR-313) [#3256](https://github.com/input-output-hk/cardano-sl/pull/3256) +- [CBR-314](https://iohk.myjetbrains.com/youtrack/issue/CBR-314) [#3187](https://github.com/input-output-hk/cardano-sl/pull/3187) +- [CBR-315](https://iohk.myjetbrains.com/youtrack/issue/CBR-315) [#3170](https://github.com/input-output-hk/cardano-sl/pull/3170) +- [CBR-316](https://iohk.myjetbrains.com/youtrack/issue/CBR-316) [#3598](https://github.com/input-output-hk/cardano-sl/pull/3598) +- [CBR-319](https://iohk.myjetbrains.com/youtrack/issue/CBR-319) [#3224](https://github.com/input-output-hk/cardano-sl/pull/3224) +- [CBR-322](https://iohk.myjetbrains.com/youtrack/issue/CBR-322) [#3413](https://github.com/input-output-hk/cardano-sl/pull/3413) +- [CBR-325](https://iohk.myjetbrains.com/youtrack/issue/CBR-325) [#3436](https://github.com/input-output-hk/cardano-sl/pull/3436) +- [CBR-339](https://iohk.myjetbrains.com/youtrack/issue/CBR-339) [#3435](https://github.com/input-output-hk/cardano-sl/pull/3435) +- [CBR-340](https://iohk.myjetbrains.com/youtrack/issue/CBR-340) [#3274](https://github.com/input-output-hk/cardano-sl/pull/3274) +- [CBR-341](https://iohk.myjetbrains.com/youtrack/issue/CBR-341) [#3408](https://github.com/input-output-hk/cardano-sl/pull/3408) +- [CBR-342](https://iohk.myjetbrains.com/youtrack/issue/CBR-342) [#3316](https://github.com/input-output-hk/cardano-sl/pull/3316) +- [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709) +- [CBR-347](https://iohk.myjetbrains.com/youtrack/issue/CBR-347) [#3438](https://github.com/input-output-hk/cardano-sl/pull/3438) +- [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523) +- [CBR-349](https://iohk.myjetbrains.com/youtrack/issue/CBR-349) [#3373](https://github.com/input-output-hk/cardano-sl/pull/3373) [#3378](https://github.com/input-output-hk/cardano-sl/pull/3378) [#3466](https://github.com/input-output-hk/cardano-sl/pull/3466) +- [CBR-350](https://iohk.myjetbrains.com/youtrack/issue/CBR-350) [#3347](https://github.com/input-output-hk/cardano-sl/pull/3347) +- [CBR-352](https://iohk.myjetbrains.com/youtrack/issue/CBR-352) [#3489](https://github.com/input-output-hk/cardano-sl/pull/3489) +- [CBR-362](https://iohk.myjetbrains.com/youtrack/issue/CBR-362) [#3371](https://github.com/input-output-hk/cardano-sl/pull/3371) +- [CBR-363](https://iohk.myjetbrains.com/youtrack/issue/CBR-363) [#3496](https://github.com/input-output-hk/cardano-sl/pull/3496) +- [CBR-364](https://iohk.myjetbrains.com/youtrack/issue/CBR-364) [#3379](https://github.com/input-output-hk/cardano-sl/pull/3379) [#3382](https://github.com/input-output-hk/cardano-sl/pull/3382) +- [CBR-365](https://iohk.myjetbrains.com/youtrack/issue/CBR-365) [#3502](https://github.com/input-output-hk/cardano-sl/pull/3502) [#3531](https://github.com/input-output-hk/cardano-sl/pull/3531) +- [CBR-366](https://iohk.myjetbrains.com/youtrack/issue/CBR-366) [#3469](https://github.com/input-output-hk/cardano-sl/pull/3469) +- [CBR-369](https://iohk.myjetbrains.com/youtrack/issue/CBR-369) [#3418](https://github.com/input-output-hk/cardano-sl/pull/3418) +- [CBR-371](https://iohk.myjetbrains.com/youtrack/issue/CBR-371) [#3463](https://github.com/input-output-hk/cardano-sl/pull/3463) [#3563](https://github.com/input-output-hk/cardano-sl/pull/3563) +- [CBR-374](https://iohk.myjetbrains.com/youtrack/issue/CBR-374) [#3493](https://github.com/input-output-hk/cardano-sl/pull/3493) +- [CBR-375](https://iohk.myjetbrains.com/youtrack/issue/CBR-375) [#3428](https://github.com/input-output-hk/cardano-sl/pull/3428) +- [CBR-377](https://iohk.myjetbrains.com/youtrack/issue/CBR-377) [#3514](https://github.com/input-output-hk/cardano-sl/pull/3514) [#3562](https://github.com/input-output-hk/cardano-sl/pull/3562) +- [CBR-379](https://iohk.myjetbrains.com/youtrack/issue/CBR-379) [#3737](https://github.com/input-output-hk/cardano-sl/pull/3737) +- [CBR-380](https://iohk.myjetbrains.com/youtrack/issue/CBR-380) [#3449](https://github.com/input-output-hk/cardano-sl/pull/3449) +- [CBR-381](https://iohk.myjetbrains.com/youtrack/issue/CBR-381) [#3492](https://github.com/input-output-hk/cardano-sl/pull/3492) +- [CBR-382](https://iohk.myjetbrains.com/youtrack/issue/CBR-382) [#3420](https://github.com/input-output-hk/cardano-sl/pull/3420) [#3427](https://github.com/input-output-hk/cardano-sl/pull/3427) [#3430](https://github.com/input-output-hk/cardano-sl/pull/3430) +- [CBR-383](https://iohk.myjetbrains.com/youtrack/issue/CBR-383) [#3434](https://github.com/input-output-hk/cardano-sl/pull/3434) +- [CBR-385](https://iohk.myjetbrains.com/youtrack/issue/CBR-385) [#3450](https://github.com/input-output-hk/cardano-sl/pull/3450) +- [CBR-386](https://iohk.myjetbrains.com/youtrack/issue/CBR-386) [#3475](https://github.com/input-output-hk/cardano-sl/pull/3475) +- [CBR-387](https://iohk.myjetbrains.com/youtrack/issue/CBR-387) [#3433](https://github.com/input-output-hk/cardano-sl/pull/3433) [#3518](https://github.com/input-output-hk/cardano-sl/pull/3518) +- [CBR-389](https://iohk.myjetbrains.com/youtrack/issue/CBR-389) [#3439](https://github.com/input-output-hk/cardano-sl/pull/3439) +- [CBR-390](https://iohk.myjetbrains.com/youtrack/issue/CBR-390) [#3473](https://github.com/input-output-hk/cardano-sl/pull/3473) +- [CBR-391](https://iohk.myjetbrains.com/youtrack/issue/CBR-391) [#3553](https://github.com/input-output-hk/cardano-sl/pull/3553) [#3557](https://github.com/input-output-hk/cardano-sl/pull/3557) +- [CBR-393](https://iohk.myjetbrains.com/youtrack/issue/CBR-393) [#3552](https://github.com/input-output-hk/cardano-sl/pull/3552) +- [CBR-394](https://iohk.myjetbrains.com/youtrack/issue/CBR-394) [#3488](https://github.com/input-output-hk/cardano-sl/pull/3488) +- [CBR-396](https://iohk.myjetbrains.com/youtrack/issue/CBR-396) [#3453](https://github.com/input-output-hk/cardano-sl/pull/3453) +- [CBR-398](https://iohk.myjetbrains.com/youtrack/issue/CBR-398) [#3525](https://github.com/input-output-hk/cardano-sl/pull/3525) +- [CBR-400](https://iohk.myjetbrains.com/youtrack/issue/CBR-400) [#3486](https://github.com/input-output-hk/cardano-sl/pull/3486) +- [CBR-405](https://iohk.myjetbrains.com/youtrack/issue/CBR-405) [#3516](https://github.com/input-output-hk/cardano-sl/pull/3516) +- [CBR-407](https://iohk.myjetbrains.com/youtrack/issue/CBR-407) [#3520](https://github.com/input-output-hk/cardano-sl/pull/3520) +- [CBR-408](https://iohk.myjetbrains.com/youtrack/issue/CBR-408) [#3571](https://github.com/input-output-hk/cardano-sl/pull/3571) +- [CBR-409](https://iohk.myjetbrains.com/youtrack/issue/CBR-409) [#3575](https://github.com/input-output-hk/cardano-sl/pull/3575) +- [CBR-413](https://iohk.myjetbrains.com/youtrack/issue/CBR-413) [#3546](https://github.com/input-output-hk/cardano-sl/pull/3546) [#3566](https://github.com/input-output-hk/cardano-sl/pull/3566) +- [CBR-414](https://iohk.myjetbrains.com/youtrack/issue/CBR-414) [#3582](https://github.com/input-output-hk/cardano-sl/pull/3582) +- [CBR-416](https://iohk.myjetbrains.com/youtrack/issue/CBR-416) [#3580](https://github.com/input-output-hk/cardano-sl/pull/3580) +- [CBR-417](https://iohk.myjetbrains.com/youtrack/issue/CBR-417) [#3568](https://github.com/input-output-hk/cardano-sl/pull/3568) +- [CBR-419](https://iohk.myjetbrains.com/youtrack/issue/CBR-419) [#3590](https://github.com/input-output-hk/cardano-sl/pull/3590) +- [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609) +- [CBR-424](https://iohk.myjetbrains.com/youtrack/issue/CBR-424) [#3731](https://github.com/input-output-hk/cardano-sl/pull/3731) +- [CBR-426](https://iohk.myjetbrains.com/youtrack/issue/CBR-426) [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584) +- [CBR-427](https://iohk.myjetbrains.com/youtrack/issue/CBR-427) [#3586](https://github.com/input-output-hk/cardano-sl/pull/3586) +- [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603) +- [CBR-434](https://iohk.myjetbrains.com/youtrack/issue/CBR-434) [#3612](https://github.com/input-output-hk/cardano-sl/pull/3612) +- [CBR-435](https://iohk.myjetbrains.com/youtrack/issue/CBR-435) [#3628](https://github.com/input-output-hk/cardano-sl/pull/3628) +- [CBR-437](https://iohk.myjetbrains.com/youtrack/issue/CBR-437) [#3621](https://github.com/input-output-hk/cardano-sl/pull/3621) +- [CBR-438](https://iohk.myjetbrains.com/youtrack/issue/CBR-438) [#3634](https://github.com/input-output-hk/cardano-sl/pull/3634) +- [CBR-440](https://iohk.myjetbrains.com/youtrack/issue/CBR-440) [#3635](https://github.com/input-output-hk/cardano-sl/pull/3635) +- [CBR-441](https://iohk.myjetbrains.com/youtrack/issue/CBR-441) [#3638](https://github.com/input-output-hk/cardano-sl/pull/3638) [#3654](https://github.com/input-output-hk/cardano-sl/pull/3654) [#3669](https://github.com/input-output-hk/cardano-sl/pull/3669) +- [CBR-442](https://iohk.myjetbrains.com/youtrack/issue/CBR-442) [#3641](https://github.com/input-output-hk/cardano-sl/pull/3641) +- [CBR-444](https://iohk.myjetbrains.com/youtrack/issue/CBR-444) [#3701](https://github.com/input-output-hk/cardano-sl/pull/3701) +- [CBR-445](https://iohk.myjetbrains.com/youtrack/issue/CBR-445) [#3720](https://github.com/input-output-hk/cardano-sl/pull/3720) +- [CBR-446](https://iohk.myjetbrains.com/youtrack/issue/CBR-446) [#3650](https://github.com/input-output-hk/cardano-sl/pull/3650) +- [CBR-449](https://iohk.myjetbrains.com/youtrack/issue/CBR-449) [#3705](https://github.com/input-output-hk/cardano-sl/pull/3705) +- [CBR-452](https://iohk.myjetbrains.com/youtrack/issue/CBR-452) [#3695](https://github.com/input-output-hk/cardano-sl/pull/3695) +- [CBR-453](https://iohk.myjetbrains.com/youtrack/issue/CBR-453) [#3717](https://github.com/input-output-hk/cardano-sl/pull/3717) [#3726](https://github.com/input-output-hk/cardano-sl/pull/3726) +- [CBR-454](https://iohk.myjetbrains.com/youtrack/issue/CBR-454) [#3679](https://github.com/input-output-hk/cardano-sl/pull/3679) +- [CBR-459](https://iohk.myjetbrains.com/youtrack/issue/CBR-459) [#3696](https://github.com/input-output-hk/cardano-sl/pull/3696) +- [CBR-460](https://iohk.myjetbrains.com/youtrack/issue/CBR-460) [#3698](https://github.com/input-output-hk/cardano-sl/pull/3698) +- [CBR-462](https://iohk.myjetbrains.com/youtrack/issue/CBR-462) [#3704](https://github.com/input-output-hk/cardano-sl/pull/3704) +- [CBR-464](https://iohk.myjetbrains.com/youtrack/issue/CBR-464) [#3710](https://github.com/input-output-hk/cardano-sl/pull/3710) +- [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) +- [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) +- [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) +- [CBR-470](https://iohk.myjetbrains.com/youtrack/issue/CBR-470) [#3773](https://github.com/input-output-hk/cardano-sl/pull/3773) +- [CBR-471](https://iohk.myjetbrains.com/youtrack/issue/CBR-471) [#3786](https://github.com/input-output-hk/cardano-sl/pull/3786) +- [CBR-472](https://iohk.myjetbrains.com/youtrack/issue/CBR-472) [#3765](https://github.com/input-output-hk/cardano-sl/pull/3765) +- [CBR-96](https://iohk.myjetbrains.com/youtrack/issue/CBR-96) [#3127](https://github.com/input-output-hk/cardano-sl/pull/3127) [#3190](https://github.com/input-output-hk/cardano-sl/pull/3190) [#3192](https://github.com/input-output-hk/cardano-sl/pull/3192) [#3194](https://github.com/input-output-hk/cardano-sl/pull/3194) [#3195](https://github.com/input-output-hk/cardano-sl/pull/3195) [#3216](https://github.com/input-output-hk/cardano-sl/pull/3216) +- [CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645) +- [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) +- [CDEC-268](https://iohk.myjetbrains.com/youtrack/issue/CDEC-268) [#3136](https://github.com/input-output-hk/cardano-sl/pull/3136) +- [CDEC-285](https://iohk.myjetbrains.com/youtrack/issue/CDEC-285) [#3168](https://github.com/input-output-hk/cardano-sl/pull/3168) +- [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) +- [CDEC-333](https://iohk.myjetbrains.com/youtrack/issue/CDEC-333) [#3615](https://github.com/input-output-hk/cardano-sl/pull/3615) +- [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) +- [CDEC-369](https://iohk.myjetbrains.com/youtrack/issue/CDEC-369) [#3482](https://github.com/input-output-hk/cardano-sl/pull/3482) +- [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) +- [CDEC-383](https://iohk.myjetbrains.com/youtrack/issue/CDEC-383) [#3142](https://github.com/input-output-hk/cardano-sl/pull/3142) +- [CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385) [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153) +- [CDEC-398](https://iohk.myjetbrains.com/youtrack/issue/CDEC-398) [#3251](https://github.com/input-output-hk/cardano-sl/pull/3251) +- [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) +- [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) +- [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) +- [CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416) [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185) [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202) [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209) +- [CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418) [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179) +- [CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423) [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200) +- [CDEC-425](https://iohk.myjetbrains.com/youtrack/issue/CDEC-425) [#3240](https://github.com/input-output-hk/cardano-sl/pull/3240) +- [CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429) [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227) +- [CDEC-432](https://iohk.myjetbrains.com/youtrack/issue/CDEC-432) [#3238](https://github.com/input-output-hk/cardano-sl/pull/3238) [#3261](https://github.com/input-output-hk/cardano-sl/pull/3261) [#3266](https://github.com/input-output-hk/cardano-sl/pull/3266) +- [CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437) [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259) +- [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) +- [CDEC-451](https://iohk.myjetbrains.com/youtrack/issue/CDEC-451) [#3285](https://github.com/input-output-hk/cardano-sl/pull/3285) +- [CDEC-452](https://iohk.myjetbrains.com/youtrack/issue/CDEC-452) [#3281](https://github.com/input-output-hk/cardano-sl/pull/3281) +- [CDEC-453](https://iohk.myjetbrains.com/youtrack/issue/CDEC-453) [#3268](https://github.com/input-output-hk/cardano-sl/pull/3268) +- [CDEC-455](https://iohk.myjetbrains.com/youtrack/issue/CDEC-455) [#3296](https://github.com/input-output-hk/cardano-sl/pull/3296) +- [CDEC-462](https://iohk.myjetbrains.com/youtrack/issue/CDEC-462) [#3286](https://github.com/input-output-hk/cardano-sl/pull/3286) +- [CDEC-464](https://iohk.myjetbrains.com/youtrack/issue/CDEC-464) [#3305](https://github.com/input-output-hk/cardano-sl/pull/3305) +- [CDEC-466](https://iohk.myjetbrains.com/youtrack/issue/CDEC-466) [#3289](https://github.com/input-output-hk/cardano-sl/pull/3289) +- [CDEC-468](https://iohk.myjetbrains.com/youtrack/issue/CDEC-468) [#3304](https://github.com/input-output-hk/cardano-sl/pull/3304) +- [CDEC-474](https://iohk.myjetbrains.com/youtrack/issue/CDEC-474) [#3354](https://github.com/input-output-hk/cardano-sl/pull/3354) +- [CDEC-484](https://iohk.myjetbrains.com/youtrack/issue/CDEC-484) [#3357](https://github.com/input-output-hk/cardano-sl/pull/3357) +- [CDEC-485](https://iohk.myjetbrains.com/youtrack/issue/CDEC-485) [#3351](https://github.com/input-output-hk/cardano-sl/pull/3351) +- [CDEC-498](https://iohk.myjetbrains.com/youtrack/issue/CDEC-498) [#3424](https://github.com/input-output-hk/cardano-sl/pull/3424) +- [CDEC-499](https://iohk.myjetbrains.com/youtrack/issue/CDEC-499) [#3416](https://github.com/input-output-hk/cardano-sl/pull/3416) [#3419](https://github.com/input-output-hk/cardano-sl/pull/3419) +- [CDEC-500](https://iohk.myjetbrains.com/youtrack/issue/CDEC-500) [#3403](https://github.com/input-output-hk/cardano-sl/pull/3403) [#3405](https://github.com/input-output-hk/cardano-sl/pull/3405) +- [CDEC-505](https://iohk.myjetbrains.com/youtrack/issue/CDEC-505) [#3412](https://github.com/input-output-hk/cardano-sl/pull/3412) [#3593](https://github.com/input-output-hk/cardano-sl/pull/3593) [#3600](https://github.com/input-output-hk/cardano-sl/pull/3600) [#3601](https://github.com/input-output-hk/cardano-sl/pull/3601) [#3611](https://github.com/input-output-hk/cardano-sl/pull/3611) +- [CDEC-506](https://iohk.myjetbrains.com/youtrack/issue/CDEC-506) [#3415](https://github.com/input-output-hk/cardano-sl/pull/3415) +- [CDEC-507](https://iohk.myjetbrains.com/youtrack/issue/CDEC-507) [#3746](https://github.com/input-output-hk/cardano-sl/pull/3746) +- [CDEC-509](https://iohk.myjetbrains.com/youtrack/issue/CDEC-509) [#3437](https://github.com/input-output-hk/cardano-sl/pull/3437) [#3505](https://github.com/input-output-hk/cardano-sl/pull/3505) [#3522](https://github.com/input-output-hk/cardano-sl/pull/3522) [#3549](https://github.com/input-output-hk/cardano-sl/pull/3549) [#3550](https://github.com/input-output-hk/cardano-sl/pull/3550) [#3570](https://github.com/input-output-hk/cardano-sl/pull/3570) +- [CDEC-510](https://iohk.myjetbrains.com/youtrack/issue/CDEC-510) [#3442](https://github.com/input-output-hk/cardano-sl/pull/3442) +- [CDEC-513](https://iohk.myjetbrains.com/youtrack/issue/CDEC-513) [#3445](https://github.com/input-output-hk/cardano-sl/pull/3445) +- [CDEC-517](https://iohk.myjetbrains.com/youtrack/issue/CDEC-517) [#3497](https://github.com/input-output-hk/cardano-sl/pull/3497) +- [CDEC-524](https://iohk.myjetbrains.com/youtrack/issue/CDEC-524) [#3506](https://github.com/input-output-hk/cardano-sl/pull/3506) +- [CDEC-585](https://iohk.myjetbrains.com/youtrack/issue/CDEC-585) [#3614](https://github.com/input-output-hk/cardano-sl/pull/3614) +- [CDEC-623](https://iohk.myjetbrains.com/youtrack/issue/CDEC-623) [#3735](https://github.com/input-output-hk/cardano-sl/pull/3735) +- [CLS-2524](https://iohk.myjetbrains.com/youtrack/issue/CLS-2524) [#3793](https://github.com/input-output-hk/cardano-sl/pull/3793) +- [CO-298](https://iohk.myjetbrains.com/youtrack/issue/CO-298) [#3013](https://github.com/input-output-hk/cardano-sl/pull/3013) +- [CO-324](https://iohk.myjetbrains.com/youtrack/issue/CO-324) [#3210](https://github.com/input-output-hk/cardano-sl/pull/3210) +- [CO-327](https://iohk.myjetbrains.com/youtrack/issue/CO-327) [#3215](https://github.com/input-output-hk/cardano-sl/pull/3215) +- [CO-328](https://iohk.myjetbrains.com/youtrack/issue/CO-328) [#3212](https://github.com/input-output-hk/cardano-sl/pull/3212) +- [CO-329](https://iohk.myjetbrains.com/youtrack/issue/CO-329) [#3178](https://github.com/input-output-hk/cardano-sl/pull/3178) +- [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) +- [CO-351](https://iohk.myjetbrains.com/youtrack/issue/CO-351) [#3391](https://github.com/input-output-hk/cardano-sl/pull/3391) +- [CO-354](https://iohk.myjetbrains.com/youtrack/issue/CO-354) [#3714](https://github.com/input-output-hk/cardano-sl/pull/3714) +- [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3573](https://github.com/input-output-hk/cardano-sl/pull/3573) +- [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3639](https://github.com/input-output-hk/cardano-sl/pull/3639) +- [CO-367](https://iohk.myjetbrains.com/youtrack/issue/CO-367) [#3661](https://github.com/input-output-hk/cardano-sl/pull/3661) +- [CO-370](https://iohk.myjetbrains.com/youtrack/issue/CO-370) [#3596](https://github.com/input-output-hk/cardano-sl/pull/3596) +- [CO-371](https://iohk.myjetbrains.com/youtrack/issue/CO-371) [#3605](https://github.com/input-output-hk/cardano-sl/pull/3605) +- [CO-386](https://iohk.myjetbrains.com/youtrack/issue/CO-386) [#3608](https://github.com/input-output-hk/cardano-sl/pull/3608) +- [CO-388](https://iohk.myjetbrains.com/youtrack/issue/CO-388) [#3610](https://github.com/input-output-hk/cardano-sl/pull/3610) +- [CO-389](https://iohk.myjetbrains.com/youtrack/issue/CO-389) [#3620](https://github.com/input-output-hk/cardano-sl/pull/3620) [#3658](https://github.com/input-output-hk/cardano-sl/pull/3658) +- [CO-390](https://iohk.myjetbrains.com/youtrack/issue/CO-390) [#3629](https://github.com/input-output-hk/cardano-sl/pull/3629) +- [CO-391](https://iohk.myjetbrains.com/youtrack/issue/CO-391) [#3656](https://github.com/input-output-hk/cardano-sl/pull/3656) +- [CO-395](https://iohk.myjetbrains.com/youtrack/issue/CO-395) [#3672](https://github.com/input-output-hk/cardano-sl/pull/3672) +- [CO-398](https://iohk.myjetbrains.com/youtrack/issue/CO-398) [#3678](https://github.com/input-output-hk/cardano-sl/pull/3678) +- [CO-399](https://iohk.myjetbrains.com/youtrack/issue/CO-399) [#3684](https://github.com/input-output-hk/cardano-sl/pull/3684) +- [CO-400](https://iohk.myjetbrains.com/youtrack/issue/CO-400) [#3680](https://github.com/input-output-hk/cardano-sl/pull/3680) +- [CO-409](https://iohk.myjetbrains.com/youtrack/issue/CO-409) [#3697](https://github.com/input-output-hk/cardano-sl/pull/3697) +- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3733](https://github.com/input-output-hk/cardano-sl/pull/3733) +- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3756](https://github.com/input-output-hk/cardano-sl/pull/3756) +- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3775](https://github.com/input-output-hk/cardano-sl/pull/3775) +- [CO-417](https://iohk.myjetbrains.com/youtrack/issue/CO-417) [#3727](https://github.com/input-output-hk/cardano-sl/pull/3727) +- [CO-423](https://iohk.myjetbrains.com/youtrack/issue/CO-423) [#3732](https://github.com/input-output-hk/cardano-sl/pull/3732) +- [CO-436](https://iohk.myjetbrains.com/youtrack/issue/CO-436) [#3791](https://github.com/input-output-hk/cardano-sl/pull/3791) +- [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) +- [CSL-2517](https://iohk.myjetbrains.com/youtrack/issue/CSL-2517) [#3348](https://github.com/input-output-hk/cardano-sl/pull/3348) +- [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) +- [DDW-380](https://iohk.myjetbrains.com/youtrack/issue/DDW-380) [#3554](https://github.com/input-output-hk/cardano-sl/pull/3554) +- [PB-13](https://iohk.myjetbrains.com/youtrack/issue/PB-13) [#3126](https://github.com/input-output-hk/cardano-sl/pull/3126) +- [PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670) +- [PIP-22](https://iohk.myjetbrains.com/youtrack/issue/PIP-22) [#3273](https://github.com/input-output-hk/cardano-sl/pull/3273) +- [RCD-28](https://iohk.myjetbrains.com/youtrack/issue/RCD-28) [#3711](https://github.com/input-output-hk/cardano-sl/pull/3711) +- [TSD-116](https://iohk.myjetbrains.com/youtrack/issue/TSD-116) [#3716](https://github.com/input-output-hk/cardano-sl/pull/3716) + + ### Features - #### Reduce number of files on disk @@ -16,15 +197,21 @@ have added configurable throttling to the API service to prevent this problem. To configure this, setting, view the changes in the `configuration.yaml` file under the `wallet` section. The API will now return - a 429 error containing the microseconds to wait until retry. + a 429 error containing the microseconds to wait until retry. ([CBR-179](https://iohk.myjetbrains.com/youtrack/issue/CBR-179), [#3431](https://github.com/input-output-hk/cardano-sl/pull/3431)) -- We can force an NTP-check when getting node-info via the API (`?force_ntp_check` query flag) (CO-325) +- We can force an NTP-check when getting node-info via the API (`?force_ntp_check` query flag) ([CO-325](https://iohk.myjetbrains.com/youtrack/issue/CO-325), [#3372](https://github.com/input-output-hk/cardano-sl/pull/3372), [#3461](https://github.com/input-output-hk/cardano-sl/pull/3461), [#3607](https://github.com/input-output-hk/cardano-sl/pull/3607)) - The API provides an endpoint to retrieve basic statistics on the UTxO distribution of a wallet (`/api/v1/wallets/{walletId}/statistics`). (CO-325) - cardano-sl exposes a new package `x509` with tooling for defining a PKI infrastructure from - pure Haskell. This is basically an export of the internals of the tool `cardano-sl-x509-generate` (CO-387) + pure Haskell. This is basically an export of the internals of the tool `cardano-sl-x509-generate` (CO-387, [DEVOPS-992](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-992), [#3367](https://github.com/input-output-hk/cardano-sl/pull/3367)) + +- Structured logging ([CBR-207](https://iohk.myjetbrains.com/youtrack/issue/CBR-207), [#3476](https://github.com/input-output-hk/cardano-sl/pull/3476) [#3477](https://github.com/input-output-hk/cardano-sl/pull/3477), [CBR-211](https://iohk.myjetbrains.com/youtrack/issue/CBR-211) [#3507](https://github.com/input-output-hk/cardano-sl/pull/3507), [CBR-213](https://iohk.myjetbrains.com/youtrack/issue/CBR-213), [#3481](https://github.com/input-output-hk/cardano-sl/pull/3481), [DEVOPS-1097](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1097), [#3764](https://github.com/input-output-hk/cardano-sl/pull/3764), [#3395](https://github.com/input-output-hk/cardano-sl/pull/3395), [#3443](https://github.com/input-output-hk/cardano-sl/pull/3443), [DEVOPS-1109](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1109), [#3785](https://github.com/input-output-hk/cardano-sl/pull/3785)) + +- New data layer for wallet ([CBR-150](https://iohk.myjetbrains.com/youtrack/issue/CBR-150), [#3245](https://github.com/input-output-hk/cardano-sl/pull/3245), [CBR-227](https://iohk.myjetbrains.com/youtrack/issue/CBR-227), [#3393](https://github.com/input-output-hk/cardano-sl/pull/3393)) + +- Enable new data layer in Docker images for exchanges ([DEVOPS-1037](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1037), [#3545](https://github.com/input-output-hk/cardano-sl/pull/3545), [DEVOPS-1046](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1046), [#3594](https://github.com/input-output-hk/cardano-sl/pull/3594)). ### Fixes @@ -32,11 +219,9 @@ - #### Make productionReporter more robust Add exception handling code in reporting exception handler, to prevent IOExceptions from killing the main thread. This was noticed when the network connection was interrupted, and the reporter - died when it tried to report over the down network. (CDEC-470 / [PR 3365]) - -[PR 3365]: https://github.com/input-output-hk/cardano-sl/pull/3365 + died when it tried to report over the down network. ([CDEC-470](https://iohk.myjetbrains.com/youtrack/issue/CDEC-470), [#3365](https://github.com/input-output-hk/cardano-sl/pull/3365)) -- Improve type safety (and as a consequence, API documentation) of account indexes (CBR-306) +- Improve type safety (and as a consequence, API documentation) of account indexes ([CBR-306](https://iohk.myjetbrains.com/youtrack/issue/CBR-306), [#3086](https://github.com/input-output-hk/cardano-sl/pull/3086)) - The Swagger specification had names with illegal characters. These names where changed to be URL friendly. [PR #3595](https://github.com/input-output-hk/cardano-sl/pull/3595) @@ -44,34 +229,42 @@ - The creation of mnemonic doesn't throw anymore when provided words outside of the BIP39 English dictionnary. Instead, it returns an error value gracefully (CO-325) -- Response from `JSONValidationError` are now also encoded inline (instead of a pretty-encoding with newlines) (DDW-318) +- Response from `JSONValidationError` are now also encoded inline (instead of a pretty-encoding with newlines) ([DDW-318](https://iohk.myjetbrains.com/youtrack/issue/DDW-318), [#3619](https://github.com/input-output-hk/cardano-sl/pull/3619)) - **[API BREAKING CHANGE]** The behavior of `/api/v1/addresses/{address}` has been adjusted to reflect more accurately the meaning of ownership regarding addresses. The previous version of this endpoint failed with an HTTP error when the given address was unknown to the wallet. This was misleading since an address that is unknown to the wallet may still belong to the wallet. To reflect this, the V1 endpoint does not fail anymore as it used to when an address is not recognised and returns instead a new field - 'is-ours' which indicates either that an address is ours, or that it is 'not-recognised'. (CBR-401) + 'is-ours' which indicates either that an address is ours, or that it is 'not-recognised'. ([CBR-401](https://iohk.myjetbrains.com/youtrack/issue/CBR-401), [#3646](https://github.com/input-output-hk/cardano-sl/pull/3646)) - **[API BREAKING CHANGE]** A DELETE request to `/api/v1/wallets/{wallet}` now correctly fails with 404 if the wallet doesn't exist. Previously it incorrectly responded with 204. +- Fix `commitAndReleaseBuffer: invalid argument (invalid character)` error in Docker image ([DEVOPS-877](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-877), [#3173](https://github.com/input-output-hk/cardano-sl/pull/3173)) + ### Improvements -- Friendly error mistakes from deserializing invalid addresses instead of brutal 500 (CBR-283) +- Friendly error mistakes from deserializing invalid addresses instead of brutal 500 ([CBR-283](https://iohk.myjetbrains.com/youtrack/issue/CBR-283)) -- **[API BREAKING CHANGE]** Add `walletId` to `WalletAlreadyExists` WalletLayerError (CBR-254) +- **[API BREAKING CHANGE]** Add `walletId` to `WalletAlreadyExists` WalletLayerError ([CBR-254](https://iohk.myjetbrains.com/youtrack/issue/CBR-254)) -- Small refactor of wallet Errors implementation to be more maintainable (CBR-26) +- Small refactor of wallet Errors implementation to be more maintainable ([CBR-26](https://iohk.myjetbrains.com/youtrack/issue/CBR-26), [#3429](https://github.com/input-output-hk/cardano-sl/pull/3429)) - Content-Type parser is now more lenient and accepts `application/json`, `application/json;charset=utf-8` and no Content-Type at all (defaulting to `application/json`). - The codebase now relies on the package `cryptonite` (instead of `ed25519`) for Ed25519 implementation (CO-325) -- **[API BREAKING CHANGE]** Improve diagnostic for `NotEnoughMoney` error (CBR-461) +- **[API BREAKING CHANGE]** Improve diagnostic for `NotEnoughMoney` error ([CBR-461](https://iohk.myjetbrains.com/youtrack/issue/CBR-461), [#3702](https://github.com/input-output-hk/cardano-sl/pull/3702)) - When Content-Type's main MIME-type cannot fall back to 'application/json' then UnsupportedMimeTypeError is returned +- Add `cardano-node --no-tls` option to wallet ([DEVOPS-879](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-879), [#3074](https://github.com/input-output-hk/cardano-sl/pull/3074)) + +- Improve error reporting when a worker thread in cardano dies ([DEVOPS-1063](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1063), [#3664](https://github.com/input-output-hk/cardano-sl/pull/3664)) + +- Add failure injection options to wallet for Daedalus testing ([DEVOPS-1086](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1086), [#3787](https://github.com/input-output-hk/cardano-sl/pull/3787)) + ### Specifications ### Documentation @@ -80,6 +273,29 @@ - wallet-new README has been improved (especially on sections about testing) and updated (CO-325) +- Documentation updates for Nix 2.0 ([DEVOPS-976](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-976), [#3311](https://github.com/input-output-hk/cardano-sl/pull/3311), [#3343](https://github.com/input-output-hk/cardano-sl/pull/3343)) + +### Continuous Integration (CI) + +- Add a nightly test which syncs mainnet from scratch ([DEVOPS-1016](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1016), [#3487](https://github.com/input-output-hk/cardano-sl/pull/3487), [DEVOPS-1052](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1052), [#3626](https://github.com/input-output-hk/cardano-sl/pull/3626)) +- CI speed improvements ([DEVOPS-1032](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1032), [#3544](https://github.com/input-output-hk/cardano-sl/pull/3544)) +- Fixes for regeneration of `pkgs/default.nix` ([DEVOPS-1045](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1045), [#3677](https://github.com/input-output-hk/cardano-sl/pull/3677)) +- Ensure the nix-shell environment is built and cached by Hydra ([DEVOPS-1059](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1059), [#3653](https://github.com/input-output-hk/cardano-sl/pull/3653)) +- Add support for building cardano-sl with `cabal new-build` ([DEVOPS-1061](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1061), [#3662](https://github.com/input-output-hk/cardano-sl/pull/3662), [#3729](https://github.com/input-output-hk/cardano-sl/pull/3729), [#3734](https://github.com/input-output-hk/cardano-sl/pull/3734), [DEVOPS-1060](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1060), [#3675](https://github.com/input-output-hk/cardano-sl/pull/3675)) +- Refactor nix files, add comments and documentation ([DEVOPS-1083](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1083), [#3728](https://github.com/input-output-hk/cardano-sl/pull/3728), [#3760](https://github.com/input-output-hk/cardano-sl/pull/3760), [#3761](https://github.com/input-output-hk/cardano-sl/pull/3761), [#3763](https://github.com/input-output-hk/cardano-sl/pull/3763), [DEVOPS-1004](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1004), [#3400](https://github.com/input-output-hk/cardano-sl/pull/3400), [DEVOPS-1067](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1067), [#3690](https://github.com/input-output-hk/cardano-sl/pull/3690)) +- Add stylish-haskell tests to the Hydra build ([DEVOPS-936](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-936), [#3166](https://github.com/input-output-hk/cardano-sl/pull/3166), [#3189](https://github.com/input-output-hk/cardano-sl/pull/3189), [#3222](https://github.com/input-output-hk/cardano-sl/pull/3222)) +- Improve nixpkgs pinning ([DEVOPS-779](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-779), [#3180](https://github.com/input-output-hk/cardano-sl/pull/3180)) +- Fix caching of nix builds ([DEVOPS-810](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-810), [#3174](https://github.com/input-output-hk/cardano-sl/pull/3174)) +- Ensure CI builds all targets (including benchmarks), and runs all tests ([DEVOPS-908](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-908), [#3130](https://github.com/input-output-hk/cardano-sl/pull/3130), [#3150](https://github.com/input-output-hk/cardano-sl/pull/3150)) +- Build fixes for cardano-sl-explorer-frontend ([DEVOPS-916](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-916), [#3137](https://github.com/input-output-hk/cardano-sl/pull/3137), [#3146](https://github.com/input-output-hk/cardano-sl/pull/3146), [DEVOPS-999](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-999), [#3472](https://github.com/input-output-hk/cardano-sl/pull/3472)) +- Fix `nix-build` when run from a `git` worktree ([DEVOPS-949](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-949), [#3691](https://github.com/input-output-hk/cardano-sl/pull/3691)) +- Windows build fixes ([DEVOPS-957](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-957), [#3272](https://github.com/input-output-hk/cardano-sl/pull/3272), [DEVOPS-1003](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1003), [#3398](https://github.com/input-output-hk/cardano-sl/pull/3398)) +- macOS build fixes (`clang: Argument list too long`) ([DEVOPS-1005](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1005), [#3432](https://github.com/input-output-hk/cardano-sl/pull/3432), [DEVOPS-1050](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1050), [#3606](https://github.com/input-output-hk/cardano-sl/pull/3606)) +- Improve wallet integration tests ([DEVOPS-980](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-980), [#3325](https://github.com/input-output-hk/cardano-sl/pull/3325), [#3380](https://github.com/input-output-hk/cardano-sl/pull/3380), [DEVOPS-988](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-988), [#3346](https://github.com/input-output-hk/cardano-sl/pull/3346)) +- Demo cluster and launch script fixes ([DEVOPS-985](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-985), [#3342](https://github.com/input-output-hk/cardano-sl/pull/3342), [DEVOPS-1062](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1062), [#3665](https://github.com/input-output-hk/cardano-sl/pull/3665), [DEVOPS-1101](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1101), [#3769](https://github.com/input-output-hk/cardano-sl/pull/3769)) +- Add timing information to nix builds ([DEVOPS-1013](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1013), [#3457](https://github.com/input-output-hk/cardano-sl/pull/3457), [DEVOPS-1027](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1027), [#3509](https://github.com/input-output-hk/cardano-sl/pull/3509), [DEVOPS-1048](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1048), [#3706](https://github.com/input-output-hk/cardano-sl/pull/3706)) +- Better code linting in CI ([DEVOPS-1031](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1031), [#3527](https://github.com/input-output-hk/cardano-sl/pull/3527), [DEVOPS-1057](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1057), [#3649](https://github.com/input-output-hk/cardano-sl/pull/3649), [DEVOPS-1100](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1100), [#3762](https://github.com/input-output-hk/cardano-sl/pull/3762)) + ## Cardano SL 1.3.1 From 9150922507cdef8c32d27b51871e80b9bde46ee3 Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Sat, 10 Nov 2018 18:17:10 -0500 Subject: [PATCH 020/103] [DEVOPS-1130] bump versions (cherry picked from commit 6b6e22bb2089324b46ce0d05b7f031ceb026ab76) --- lib/configuration.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 3a3053f5da2..13cb19f3948 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -324,10 +324,10 @@ mainnet_base: &mainnet_base update: &mainnet_base_update applicationName: cardano-sl - applicationVersion: 0 + applicationVersion: 1 lastKnownBlockVersion: bvMajor: 0 - bvMinor: 1 + bvMinor: 2 bvAlt: 0 ssc: @@ -14922,7 +14922,7 @@ testnet_full: &testnet_full applicationVersion: 1 lastKnownBlockVersion: bvMajor: 0 - bvMinor: 0 + bvMinor: 1 bvAlt: 0 testnet_wallet: &testnet_wallet From f687c75d1f8f28b06851395595549fa9e7890cc9 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Mon, 12 Nov 2018 22:15:04 +1000 Subject: [PATCH 021/103] [RCD-37] ChangeLog: add PR authors to the list of unwritten entries --- CHANGELOG.md | 354 +++++++++++++++++++++++++-------------------------- 1 file changed, 177 insertions(+), 177 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 415d357ea5f..8326a2a9364 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,183 +4,183 @@ Please add entries for your tickets: -- [CBR-239](https://iohk.myjetbrains.com/youtrack/issue/CBR-239) [#3370](https://github.com/input-output-hk/cardano-sl/pull/3370) [#3330](https://github.com/input-output-hk/cardano-sl/pull/3330) [#3396](https://github.com/input-output-hk/cardano-sl/pull/3396) [#3668](https://github.com/input-output-hk/cardano-sl/pull/3668) -- [CBR-246](https://iohk.myjetbrains.com/youtrack/issue/CBR-246) [#3441](https://github.com/input-output-hk/cardano-sl/pull/3441) [#3495](https://github.com/input-output-hk/cardano-sl/pull/3495) -- [CBR-250](https://iohk.myjetbrains.com/youtrack/issue/CBR-250) [#3388](https://github.com/input-output-hk/cardano-sl/pull/3388) [#3454](https://github.com/input-output-hk/cardano-sl/pull/3454) -- [CBR-27](https://iohk.myjetbrains.com/youtrack/issue/CBR-27) [#3592](https://github.com/input-output-hk/cardano-sl/pull/3592) -- [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655) -- [CBR-285](https://iohk.myjetbrains.com/youtrack/issue/CBR-285) [#3117](https://github.com/input-output-hk/cardano-sl/pull/3117) -- [CBR-288](https://iohk.myjetbrains.com/youtrack/issue/CBR-288) [#3128](https://github.com/input-output-hk/cardano-sl/pull/3128) -- [CBR-289](https://iohk.myjetbrains.com/youtrack/issue/CBR-289) [#3043](https://github.com/input-output-hk/cardano-sl/pull/3043) -- [CBR-304](https://iohk.myjetbrains.com/youtrack/issue/CBR-304) [#3116](https://github.com/input-output-hk/cardano-sl/pull/3116) -- [CBR-313](https://iohk.myjetbrains.com/youtrack/issue/CBR-313) [#3256](https://github.com/input-output-hk/cardano-sl/pull/3256) -- [CBR-314](https://iohk.myjetbrains.com/youtrack/issue/CBR-314) [#3187](https://github.com/input-output-hk/cardano-sl/pull/3187) -- [CBR-315](https://iohk.myjetbrains.com/youtrack/issue/CBR-315) [#3170](https://github.com/input-output-hk/cardano-sl/pull/3170) -- [CBR-316](https://iohk.myjetbrains.com/youtrack/issue/CBR-316) [#3598](https://github.com/input-output-hk/cardano-sl/pull/3598) -- [CBR-319](https://iohk.myjetbrains.com/youtrack/issue/CBR-319) [#3224](https://github.com/input-output-hk/cardano-sl/pull/3224) -- [CBR-322](https://iohk.myjetbrains.com/youtrack/issue/CBR-322) [#3413](https://github.com/input-output-hk/cardano-sl/pull/3413) -- [CBR-325](https://iohk.myjetbrains.com/youtrack/issue/CBR-325) [#3436](https://github.com/input-output-hk/cardano-sl/pull/3436) -- [CBR-339](https://iohk.myjetbrains.com/youtrack/issue/CBR-339) [#3435](https://github.com/input-output-hk/cardano-sl/pull/3435) -- [CBR-340](https://iohk.myjetbrains.com/youtrack/issue/CBR-340) [#3274](https://github.com/input-output-hk/cardano-sl/pull/3274) -- [CBR-341](https://iohk.myjetbrains.com/youtrack/issue/CBR-341) [#3408](https://github.com/input-output-hk/cardano-sl/pull/3408) -- [CBR-342](https://iohk.myjetbrains.com/youtrack/issue/CBR-342) [#3316](https://github.com/input-output-hk/cardano-sl/pull/3316) -- [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709) -- [CBR-347](https://iohk.myjetbrains.com/youtrack/issue/CBR-347) [#3438](https://github.com/input-output-hk/cardano-sl/pull/3438) -- [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523) -- [CBR-349](https://iohk.myjetbrains.com/youtrack/issue/CBR-349) [#3373](https://github.com/input-output-hk/cardano-sl/pull/3373) [#3378](https://github.com/input-output-hk/cardano-sl/pull/3378) [#3466](https://github.com/input-output-hk/cardano-sl/pull/3466) -- [CBR-350](https://iohk.myjetbrains.com/youtrack/issue/CBR-350) [#3347](https://github.com/input-output-hk/cardano-sl/pull/3347) -- [CBR-352](https://iohk.myjetbrains.com/youtrack/issue/CBR-352) [#3489](https://github.com/input-output-hk/cardano-sl/pull/3489) -- [CBR-362](https://iohk.myjetbrains.com/youtrack/issue/CBR-362) [#3371](https://github.com/input-output-hk/cardano-sl/pull/3371) -- [CBR-363](https://iohk.myjetbrains.com/youtrack/issue/CBR-363) [#3496](https://github.com/input-output-hk/cardano-sl/pull/3496) -- [CBR-364](https://iohk.myjetbrains.com/youtrack/issue/CBR-364) [#3379](https://github.com/input-output-hk/cardano-sl/pull/3379) [#3382](https://github.com/input-output-hk/cardano-sl/pull/3382) -- [CBR-365](https://iohk.myjetbrains.com/youtrack/issue/CBR-365) [#3502](https://github.com/input-output-hk/cardano-sl/pull/3502) [#3531](https://github.com/input-output-hk/cardano-sl/pull/3531) -- [CBR-366](https://iohk.myjetbrains.com/youtrack/issue/CBR-366) [#3469](https://github.com/input-output-hk/cardano-sl/pull/3469) -- [CBR-369](https://iohk.myjetbrains.com/youtrack/issue/CBR-369) [#3418](https://github.com/input-output-hk/cardano-sl/pull/3418) -- [CBR-371](https://iohk.myjetbrains.com/youtrack/issue/CBR-371) [#3463](https://github.com/input-output-hk/cardano-sl/pull/3463) [#3563](https://github.com/input-output-hk/cardano-sl/pull/3563) -- [CBR-374](https://iohk.myjetbrains.com/youtrack/issue/CBR-374) [#3493](https://github.com/input-output-hk/cardano-sl/pull/3493) -- [CBR-375](https://iohk.myjetbrains.com/youtrack/issue/CBR-375) [#3428](https://github.com/input-output-hk/cardano-sl/pull/3428) -- [CBR-377](https://iohk.myjetbrains.com/youtrack/issue/CBR-377) [#3514](https://github.com/input-output-hk/cardano-sl/pull/3514) [#3562](https://github.com/input-output-hk/cardano-sl/pull/3562) -- [CBR-379](https://iohk.myjetbrains.com/youtrack/issue/CBR-379) [#3737](https://github.com/input-output-hk/cardano-sl/pull/3737) -- [CBR-380](https://iohk.myjetbrains.com/youtrack/issue/CBR-380) [#3449](https://github.com/input-output-hk/cardano-sl/pull/3449) -- [CBR-381](https://iohk.myjetbrains.com/youtrack/issue/CBR-381) [#3492](https://github.com/input-output-hk/cardano-sl/pull/3492) -- [CBR-382](https://iohk.myjetbrains.com/youtrack/issue/CBR-382) [#3420](https://github.com/input-output-hk/cardano-sl/pull/3420) [#3427](https://github.com/input-output-hk/cardano-sl/pull/3427) [#3430](https://github.com/input-output-hk/cardano-sl/pull/3430) -- [CBR-383](https://iohk.myjetbrains.com/youtrack/issue/CBR-383) [#3434](https://github.com/input-output-hk/cardano-sl/pull/3434) -- [CBR-385](https://iohk.myjetbrains.com/youtrack/issue/CBR-385) [#3450](https://github.com/input-output-hk/cardano-sl/pull/3450) -- [CBR-386](https://iohk.myjetbrains.com/youtrack/issue/CBR-386) [#3475](https://github.com/input-output-hk/cardano-sl/pull/3475) -- [CBR-387](https://iohk.myjetbrains.com/youtrack/issue/CBR-387) [#3433](https://github.com/input-output-hk/cardano-sl/pull/3433) [#3518](https://github.com/input-output-hk/cardano-sl/pull/3518) -- [CBR-389](https://iohk.myjetbrains.com/youtrack/issue/CBR-389) [#3439](https://github.com/input-output-hk/cardano-sl/pull/3439) -- [CBR-390](https://iohk.myjetbrains.com/youtrack/issue/CBR-390) [#3473](https://github.com/input-output-hk/cardano-sl/pull/3473) -- [CBR-391](https://iohk.myjetbrains.com/youtrack/issue/CBR-391) [#3553](https://github.com/input-output-hk/cardano-sl/pull/3553) [#3557](https://github.com/input-output-hk/cardano-sl/pull/3557) -- [CBR-393](https://iohk.myjetbrains.com/youtrack/issue/CBR-393) [#3552](https://github.com/input-output-hk/cardano-sl/pull/3552) -- [CBR-394](https://iohk.myjetbrains.com/youtrack/issue/CBR-394) [#3488](https://github.com/input-output-hk/cardano-sl/pull/3488) -- [CBR-396](https://iohk.myjetbrains.com/youtrack/issue/CBR-396) [#3453](https://github.com/input-output-hk/cardano-sl/pull/3453) -- [CBR-398](https://iohk.myjetbrains.com/youtrack/issue/CBR-398) [#3525](https://github.com/input-output-hk/cardano-sl/pull/3525) -- [CBR-400](https://iohk.myjetbrains.com/youtrack/issue/CBR-400) [#3486](https://github.com/input-output-hk/cardano-sl/pull/3486) -- [CBR-405](https://iohk.myjetbrains.com/youtrack/issue/CBR-405) [#3516](https://github.com/input-output-hk/cardano-sl/pull/3516) -- [CBR-407](https://iohk.myjetbrains.com/youtrack/issue/CBR-407) [#3520](https://github.com/input-output-hk/cardano-sl/pull/3520) -- [CBR-408](https://iohk.myjetbrains.com/youtrack/issue/CBR-408) [#3571](https://github.com/input-output-hk/cardano-sl/pull/3571) -- [CBR-409](https://iohk.myjetbrains.com/youtrack/issue/CBR-409) [#3575](https://github.com/input-output-hk/cardano-sl/pull/3575) -- [CBR-413](https://iohk.myjetbrains.com/youtrack/issue/CBR-413) [#3546](https://github.com/input-output-hk/cardano-sl/pull/3546) [#3566](https://github.com/input-output-hk/cardano-sl/pull/3566) -- [CBR-414](https://iohk.myjetbrains.com/youtrack/issue/CBR-414) [#3582](https://github.com/input-output-hk/cardano-sl/pull/3582) -- [CBR-416](https://iohk.myjetbrains.com/youtrack/issue/CBR-416) [#3580](https://github.com/input-output-hk/cardano-sl/pull/3580) -- [CBR-417](https://iohk.myjetbrains.com/youtrack/issue/CBR-417) [#3568](https://github.com/input-output-hk/cardano-sl/pull/3568) -- [CBR-419](https://iohk.myjetbrains.com/youtrack/issue/CBR-419) [#3590](https://github.com/input-output-hk/cardano-sl/pull/3590) -- [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609) -- [CBR-424](https://iohk.myjetbrains.com/youtrack/issue/CBR-424) [#3731](https://github.com/input-output-hk/cardano-sl/pull/3731) -- [CBR-426](https://iohk.myjetbrains.com/youtrack/issue/CBR-426) [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584) -- [CBR-427](https://iohk.myjetbrains.com/youtrack/issue/CBR-427) [#3586](https://github.com/input-output-hk/cardano-sl/pull/3586) -- [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603) -- [CBR-434](https://iohk.myjetbrains.com/youtrack/issue/CBR-434) [#3612](https://github.com/input-output-hk/cardano-sl/pull/3612) -- [CBR-435](https://iohk.myjetbrains.com/youtrack/issue/CBR-435) [#3628](https://github.com/input-output-hk/cardano-sl/pull/3628) -- [CBR-437](https://iohk.myjetbrains.com/youtrack/issue/CBR-437) [#3621](https://github.com/input-output-hk/cardano-sl/pull/3621) -- [CBR-438](https://iohk.myjetbrains.com/youtrack/issue/CBR-438) [#3634](https://github.com/input-output-hk/cardano-sl/pull/3634) -- [CBR-440](https://iohk.myjetbrains.com/youtrack/issue/CBR-440) [#3635](https://github.com/input-output-hk/cardano-sl/pull/3635) -- [CBR-441](https://iohk.myjetbrains.com/youtrack/issue/CBR-441) [#3638](https://github.com/input-output-hk/cardano-sl/pull/3638) [#3654](https://github.com/input-output-hk/cardano-sl/pull/3654) [#3669](https://github.com/input-output-hk/cardano-sl/pull/3669) -- [CBR-442](https://iohk.myjetbrains.com/youtrack/issue/CBR-442) [#3641](https://github.com/input-output-hk/cardano-sl/pull/3641) -- [CBR-444](https://iohk.myjetbrains.com/youtrack/issue/CBR-444) [#3701](https://github.com/input-output-hk/cardano-sl/pull/3701) -- [CBR-445](https://iohk.myjetbrains.com/youtrack/issue/CBR-445) [#3720](https://github.com/input-output-hk/cardano-sl/pull/3720) -- [CBR-446](https://iohk.myjetbrains.com/youtrack/issue/CBR-446) [#3650](https://github.com/input-output-hk/cardano-sl/pull/3650) -- [CBR-449](https://iohk.myjetbrains.com/youtrack/issue/CBR-449) [#3705](https://github.com/input-output-hk/cardano-sl/pull/3705) -- [CBR-452](https://iohk.myjetbrains.com/youtrack/issue/CBR-452) [#3695](https://github.com/input-output-hk/cardano-sl/pull/3695) -- [CBR-453](https://iohk.myjetbrains.com/youtrack/issue/CBR-453) [#3717](https://github.com/input-output-hk/cardano-sl/pull/3717) [#3726](https://github.com/input-output-hk/cardano-sl/pull/3726) -- [CBR-454](https://iohk.myjetbrains.com/youtrack/issue/CBR-454) [#3679](https://github.com/input-output-hk/cardano-sl/pull/3679) -- [CBR-459](https://iohk.myjetbrains.com/youtrack/issue/CBR-459) [#3696](https://github.com/input-output-hk/cardano-sl/pull/3696) -- [CBR-460](https://iohk.myjetbrains.com/youtrack/issue/CBR-460) [#3698](https://github.com/input-output-hk/cardano-sl/pull/3698) -- [CBR-462](https://iohk.myjetbrains.com/youtrack/issue/CBR-462) [#3704](https://github.com/input-output-hk/cardano-sl/pull/3704) -- [CBR-464](https://iohk.myjetbrains.com/youtrack/issue/CBR-464) [#3710](https://github.com/input-output-hk/cardano-sl/pull/3710) -- [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) -- [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) -- [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) -- [CBR-470](https://iohk.myjetbrains.com/youtrack/issue/CBR-470) [#3773](https://github.com/input-output-hk/cardano-sl/pull/3773) -- [CBR-471](https://iohk.myjetbrains.com/youtrack/issue/CBR-471) [#3786](https://github.com/input-output-hk/cardano-sl/pull/3786) -- [CBR-472](https://iohk.myjetbrains.com/youtrack/issue/CBR-472) [#3765](https://github.com/input-output-hk/cardano-sl/pull/3765) -- [CBR-96](https://iohk.myjetbrains.com/youtrack/issue/CBR-96) [#3127](https://github.com/input-output-hk/cardano-sl/pull/3127) [#3190](https://github.com/input-output-hk/cardano-sl/pull/3190) [#3192](https://github.com/input-output-hk/cardano-sl/pull/3192) [#3194](https://github.com/input-output-hk/cardano-sl/pull/3194) [#3195](https://github.com/input-output-hk/cardano-sl/pull/3195) [#3216](https://github.com/input-output-hk/cardano-sl/pull/3216) -- [CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645) -- [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) -- [CDEC-268](https://iohk.myjetbrains.com/youtrack/issue/CDEC-268) [#3136](https://github.com/input-output-hk/cardano-sl/pull/3136) -- [CDEC-285](https://iohk.myjetbrains.com/youtrack/issue/CDEC-285) [#3168](https://github.com/input-output-hk/cardano-sl/pull/3168) -- [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) -- [CDEC-333](https://iohk.myjetbrains.com/youtrack/issue/CDEC-333) [#3615](https://github.com/input-output-hk/cardano-sl/pull/3615) -- [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) -- [CDEC-369](https://iohk.myjetbrains.com/youtrack/issue/CDEC-369) [#3482](https://github.com/input-output-hk/cardano-sl/pull/3482) -- [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) -- [CDEC-383](https://iohk.myjetbrains.com/youtrack/issue/CDEC-383) [#3142](https://github.com/input-output-hk/cardano-sl/pull/3142) -- [CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385) [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153) -- [CDEC-398](https://iohk.myjetbrains.com/youtrack/issue/CDEC-398) [#3251](https://github.com/input-output-hk/cardano-sl/pull/3251) -- [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) -- [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) -- [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) -- [CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416) [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185) [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202) [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209) -- [CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418) [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179) -- [CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423) [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200) -- [CDEC-425](https://iohk.myjetbrains.com/youtrack/issue/CDEC-425) [#3240](https://github.com/input-output-hk/cardano-sl/pull/3240) -- [CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429) [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227) -- [CDEC-432](https://iohk.myjetbrains.com/youtrack/issue/CDEC-432) [#3238](https://github.com/input-output-hk/cardano-sl/pull/3238) [#3261](https://github.com/input-output-hk/cardano-sl/pull/3261) [#3266](https://github.com/input-output-hk/cardano-sl/pull/3266) -- [CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437) [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259) -- [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) -- [CDEC-451](https://iohk.myjetbrains.com/youtrack/issue/CDEC-451) [#3285](https://github.com/input-output-hk/cardano-sl/pull/3285) -- [CDEC-452](https://iohk.myjetbrains.com/youtrack/issue/CDEC-452) [#3281](https://github.com/input-output-hk/cardano-sl/pull/3281) -- [CDEC-453](https://iohk.myjetbrains.com/youtrack/issue/CDEC-453) [#3268](https://github.com/input-output-hk/cardano-sl/pull/3268) -- [CDEC-455](https://iohk.myjetbrains.com/youtrack/issue/CDEC-455) [#3296](https://github.com/input-output-hk/cardano-sl/pull/3296) -- [CDEC-462](https://iohk.myjetbrains.com/youtrack/issue/CDEC-462) [#3286](https://github.com/input-output-hk/cardano-sl/pull/3286) -- [CDEC-464](https://iohk.myjetbrains.com/youtrack/issue/CDEC-464) [#3305](https://github.com/input-output-hk/cardano-sl/pull/3305) -- [CDEC-466](https://iohk.myjetbrains.com/youtrack/issue/CDEC-466) [#3289](https://github.com/input-output-hk/cardano-sl/pull/3289) -- [CDEC-468](https://iohk.myjetbrains.com/youtrack/issue/CDEC-468) [#3304](https://github.com/input-output-hk/cardano-sl/pull/3304) -- [CDEC-474](https://iohk.myjetbrains.com/youtrack/issue/CDEC-474) [#3354](https://github.com/input-output-hk/cardano-sl/pull/3354) -- [CDEC-484](https://iohk.myjetbrains.com/youtrack/issue/CDEC-484) [#3357](https://github.com/input-output-hk/cardano-sl/pull/3357) -- [CDEC-485](https://iohk.myjetbrains.com/youtrack/issue/CDEC-485) [#3351](https://github.com/input-output-hk/cardano-sl/pull/3351) -- [CDEC-498](https://iohk.myjetbrains.com/youtrack/issue/CDEC-498) [#3424](https://github.com/input-output-hk/cardano-sl/pull/3424) -- [CDEC-499](https://iohk.myjetbrains.com/youtrack/issue/CDEC-499) [#3416](https://github.com/input-output-hk/cardano-sl/pull/3416) [#3419](https://github.com/input-output-hk/cardano-sl/pull/3419) -- [CDEC-500](https://iohk.myjetbrains.com/youtrack/issue/CDEC-500) [#3403](https://github.com/input-output-hk/cardano-sl/pull/3403) [#3405](https://github.com/input-output-hk/cardano-sl/pull/3405) -- [CDEC-505](https://iohk.myjetbrains.com/youtrack/issue/CDEC-505) [#3412](https://github.com/input-output-hk/cardano-sl/pull/3412) [#3593](https://github.com/input-output-hk/cardano-sl/pull/3593) [#3600](https://github.com/input-output-hk/cardano-sl/pull/3600) [#3601](https://github.com/input-output-hk/cardano-sl/pull/3601) [#3611](https://github.com/input-output-hk/cardano-sl/pull/3611) -- [CDEC-506](https://iohk.myjetbrains.com/youtrack/issue/CDEC-506) [#3415](https://github.com/input-output-hk/cardano-sl/pull/3415) -- [CDEC-507](https://iohk.myjetbrains.com/youtrack/issue/CDEC-507) [#3746](https://github.com/input-output-hk/cardano-sl/pull/3746) -- [CDEC-509](https://iohk.myjetbrains.com/youtrack/issue/CDEC-509) [#3437](https://github.com/input-output-hk/cardano-sl/pull/3437) [#3505](https://github.com/input-output-hk/cardano-sl/pull/3505) [#3522](https://github.com/input-output-hk/cardano-sl/pull/3522) [#3549](https://github.com/input-output-hk/cardano-sl/pull/3549) [#3550](https://github.com/input-output-hk/cardano-sl/pull/3550) [#3570](https://github.com/input-output-hk/cardano-sl/pull/3570) -- [CDEC-510](https://iohk.myjetbrains.com/youtrack/issue/CDEC-510) [#3442](https://github.com/input-output-hk/cardano-sl/pull/3442) -- [CDEC-513](https://iohk.myjetbrains.com/youtrack/issue/CDEC-513) [#3445](https://github.com/input-output-hk/cardano-sl/pull/3445) -- [CDEC-517](https://iohk.myjetbrains.com/youtrack/issue/CDEC-517) [#3497](https://github.com/input-output-hk/cardano-sl/pull/3497) -- [CDEC-524](https://iohk.myjetbrains.com/youtrack/issue/CDEC-524) [#3506](https://github.com/input-output-hk/cardano-sl/pull/3506) -- [CDEC-585](https://iohk.myjetbrains.com/youtrack/issue/CDEC-585) [#3614](https://github.com/input-output-hk/cardano-sl/pull/3614) -- [CDEC-623](https://iohk.myjetbrains.com/youtrack/issue/CDEC-623) [#3735](https://github.com/input-output-hk/cardano-sl/pull/3735) -- [CLS-2524](https://iohk.myjetbrains.com/youtrack/issue/CLS-2524) [#3793](https://github.com/input-output-hk/cardano-sl/pull/3793) -- [CO-298](https://iohk.myjetbrains.com/youtrack/issue/CO-298) [#3013](https://github.com/input-output-hk/cardano-sl/pull/3013) -- [CO-324](https://iohk.myjetbrains.com/youtrack/issue/CO-324) [#3210](https://github.com/input-output-hk/cardano-sl/pull/3210) -- [CO-327](https://iohk.myjetbrains.com/youtrack/issue/CO-327) [#3215](https://github.com/input-output-hk/cardano-sl/pull/3215) -- [CO-328](https://iohk.myjetbrains.com/youtrack/issue/CO-328) [#3212](https://github.com/input-output-hk/cardano-sl/pull/3212) -- [CO-329](https://iohk.myjetbrains.com/youtrack/issue/CO-329) [#3178](https://github.com/input-output-hk/cardano-sl/pull/3178) -- [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) -- [CO-351](https://iohk.myjetbrains.com/youtrack/issue/CO-351) [#3391](https://github.com/input-output-hk/cardano-sl/pull/3391) -- [CO-354](https://iohk.myjetbrains.com/youtrack/issue/CO-354) [#3714](https://github.com/input-output-hk/cardano-sl/pull/3714) -- [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3573](https://github.com/input-output-hk/cardano-sl/pull/3573) -- [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3639](https://github.com/input-output-hk/cardano-sl/pull/3639) -- [CO-367](https://iohk.myjetbrains.com/youtrack/issue/CO-367) [#3661](https://github.com/input-output-hk/cardano-sl/pull/3661) -- [CO-370](https://iohk.myjetbrains.com/youtrack/issue/CO-370) [#3596](https://github.com/input-output-hk/cardano-sl/pull/3596) -- [CO-371](https://iohk.myjetbrains.com/youtrack/issue/CO-371) [#3605](https://github.com/input-output-hk/cardano-sl/pull/3605) -- [CO-386](https://iohk.myjetbrains.com/youtrack/issue/CO-386) [#3608](https://github.com/input-output-hk/cardano-sl/pull/3608) -- [CO-388](https://iohk.myjetbrains.com/youtrack/issue/CO-388) [#3610](https://github.com/input-output-hk/cardano-sl/pull/3610) -- [CO-389](https://iohk.myjetbrains.com/youtrack/issue/CO-389) [#3620](https://github.com/input-output-hk/cardano-sl/pull/3620) [#3658](https://github.com/input-output-hk/cardano-sl/pull/3658) -- [CO-390](https://iohk.myjetbrains.com/youtrack/issue/CO-390) [#3629](https://github.com/input-output-hk/cardano-sl/pull/3629) -- [CO-391](https://iohk.myjetbrains.com/youtrack/issue/CO-391) [#3656](https://github.com/input-output-hk/cardano-sl/pull/3656) -- [CO-395](https://iohk.myjetbrains.com/youtrack/issue/CO-395) [#3672](https://github.com/input-output-hk/cardano-sl/pull/3672) -- [CO-398](https://iohk.myjetbrains.com/youtrack/issue/CO-398) [#3678](https://github.com/input-output-hk/cardano-sl/pull/3678) -- [CO-399](https://iohk.myjetbrains.com/youtrack/issue/CO-399) [#3684](https://github.com/input-output-hk/cardano-sl/pull/3684) -- [CO-400](https://iohk.myjetbrains.com/youtrack/issue/CO-400) [#3680](https://github.com/input-output-hk/cardano-sl/pull/3680) -- [CO-409](https://iohk.myjetbrains.com/youtrack/issue/CO-409) [#3697](https://github.com/input-output-hk/cardano-sl/pull/3697) -- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3733](https://github.com/input-output-hk/cardano-sl/pull/3733) -- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3756](https://github.com/input-output-hk/cardano-sl/pull/3756) -- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3775](https://github.com/input-output-hk/cardano-sl/pull/3775) -- [CO-417](https://iohk.myjetbrains.com/youtrack/issue/CO-417) [#3727](https://github.com/input-output-hk/cardano-sl/pull/3727) -- [CO-423](https://iohk.myjetbrains.com/youtrack/issue/CO-423) [#3732](https://github.com/input-output-hk/cardano-sl/pull/3732) -- [CO-436](https://iohk.myjetbrains.com/youtrack/issue/CO-436) [#3791](https://github.com/input-output-hk/cardano-sl/pull/3791) -- [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) -- [CSL-2517](https://iohk.myjetbrains.com/youtrack/issue/CSL-2517) [#3348](https://github.com/input-output-hk/cardano-sl/pull/3348) -- [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) -- [DDW-380](https://iohk.myjetbrains.com/youtrack/issue/DDW-380) [#3554](https://github.com/input-output-hk/cardano-sl/pull/3554) -- [PB-13](https://iohk.myjetbrains.com/youtrack/issue/PB-13) [#3126](https://github.com/input-output-hk/cardano-sl/pull/3126) -- [PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670) -- [PIP-22](https://iohk.myjetbrains.com/youtrack/issue/PIP-22) [#3273](https://github.com/input-output-hk/cardano-sl/pull/3273) -- [RCD-28](https://iohk.myjetbrains.com/youtrack/issue/RCD-28) [#3711](https://github.com/input-output-hk/cardano-sl/pull/3711) -- [TSD-116](https://iohk.myjetbrains.com/youtrack/issue/TSD-116) [#3716](https://github.com/input-output-hk/cardano-sl/pull/3716) +- [CBR-239](https://iohk.myjetbrains.com/youtrack/issue/CBR-239) [#3370](https://github.com/input-output-hk/cardano-sl/pull/3370) [#3330](https://github.com/input-output-hk/cardano-sl/pull/3330) [#3396](https://github.com/input-output-hk/cardano-sl/pull/3396) [#3668](https://github.com/input-output-hk/cardano-sl/pull/3668) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk), [@edsko](https://github.com/edsko), [@k0001](https://github.com/k0001), [@kderme](https://github.com/kderme) +- [CBR-246](https://iohk.myjetbrains.com/youtrack/issue/CBR-246) [#3441](https://github.com/input-output-hk/cardano-sl/pull/3441) [#3495](https://github.com/input-output-hk/cardano-sl/pull/3495) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk), [@edsko](https://github.com/edsko) +- [CBR-250](https://iohk.myjetbrains.com/youtrack/issue/CBR-250) [#3388](https://github.com/input-output-hk/cardano-sl/pull/3388) [#3454](https://github.com/input-output-hk/cardano-sl/pull/3454) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-27](https://iohk.myjetbrains.com/youtrack/issue/CBR-27) [#3592](https://github.com/input-output-hk/cardano-sl/pull/3592) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655) ATTENTION: [@365andreas](https://github.com/365andreas), [@CodiePP](https://github.com/CodiePP) +- [CBR-285](https://iohk.myjetbrains.com/youtrack/issue/CBR-285) [#3117](https://github.com/input-output-hk/cardano-sl/pull/3117) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-288](https://iohk.myjetbrains.com/youtrack/issue/CBR-288) [#3128](https://github.com/input-output-hk/cardano-sl/pull/3128) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-289](https://iohk.myjetbrains.com/youtrack/issue/CBR-289) [#3043](https://github.com/input-output-hk/cardano-sl/pull/3043) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-304](https://iohk.myjetbrains.com/youtrack/issue/CBR-304) [#3116](https://github.com/input-output-hk/cardano-sl/pull/3116) ATTENTION: [@uroboros](https://github.com/uroboros) +- [CBR-313](https://iohk.myjetbrains.com/youtrack/issue/CBR-313) [#3256](https://github.com/input-output-hk/cardano-sl/pull/3256) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-314](https://iohk.myjetbrains.com/youtrack/issue/CBR-314) [#3187](https://github.com/input-output-hk/cardano-sl/pull/3187) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-315](https://iohk.myjetbrains.com/youtrack/issue/CBR-315) [#3170](https://github.com/input-output-hk/cardano-sl/pull/3170) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-316](https://iohk.myjetbrains.com/youtrack/issue/CBR-316) [#3598](https://github.com/input-output-hk/cardano-sl/pull/3598) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-319](https://iohk.myjetbrains.com/youtrack/issue/CBR-319) [#3224](https://github.com/input-output-hk/cardano-sl/pull/3224) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-322](https://iohk.myjetbrains.com/youtrack/issue/CBR-322) [#3413](https://github.com/input-output-hk/cardano-sl/pull/3413) ATTENTION: [@uroboros](https://github.com/uroboros) +- [CBR-325](https://iohk.myjetbrains.com/youtrack/issue/CBR-325) [#3436](https://github.com/input-output-hk/cardano-sl/pull/3436) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-339](https://iohk.myjetbrains.com/youtrack/issue/CBR-339) [#3435](https://github.com/input-output-hk/cardano-sl/pull/3435) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-340](https://iohk.myjetbrains.com/youtrack/issue/CBR-340) [#3274](https://github.com/input-output-hk/cardano-sl/pull/3274) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-341](https://iohk.myjetbrains.com/youtrack/issue/CBR-341) [#3408](https://github.com/input-output-hk/cardano-sl/pull/3408) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-342](https://iohk.myjetbrains.com/youtrack/issue/CBR-342) [#3316](https://github.com/input-output-hk/cardano-sl/pull/3316) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709) ATTENTION: [@365andreas](https://github.com/365andreas), [@CodiePP](https://github.com/CodiePP) +- [CBR-347](https://iohk.myjetbrains.com/youtrack/issue/CBR-347) [#3438](https://github.com/input-output-hk/cardano-sl/pull/3438) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523) ATTENTION: [@CodiePP](https://github.com/CodiePP) +- [CBR-349](https://iohk.myjetbrains.com/youtrack/issue/CBR-349) [#3373](https://github.com/input-output-hk/cardano-sl/pull/3373) [#3378](https://github.com/input-output-hk/cardano-sl/pull/3378) [#3466](https://github.com/input-output-hk/cardano-sl/pull/3466) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-350](https://iohk.myjetbrains.com/youtrack/issue/CBR-350) [#3347](https://github.com/input-output-hk/cardano-sl/pull/3347) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-352](https://iohk.myjetbrains.com/youtrack/issue/CBR-352) [#3489](https://github.com/input-output-hk/cardano-sl/pull/3489) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-362](https://iohk.myjetbrains.com/youtrack/issue/CBR-362) [#3371](https://github.com/input-output-hk/cardano-sl/pull/3371) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-363](https://iohk.myjetbrains.com/youtrack/issue/CBR-363) [#3496](https://github.com/input-output-hk/cardano-sl/pull/3496) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-364](https://iohk.myjetbrains.com/youtrack/issue/CBR-364) [#3379](https://github.com/input-output-hk/cardano-sl/pull/3379) [#3382](https://github.com/input-output-hk/cardano-sl/pull/3382) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk), [@edsko](https://github.com/edsko) +- [CBR-365](https://iohk.myjetbrains.com/youtrack/issue/CBR-365) [#3502](https://github.com/input-output-hk/cardano-sl/pull/3502) [#3531](https://github.com/input-output-hk/cardano-sl/pull/3531) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-366](https://iohk.myjetbrains.com/youtrack/issue/CBR-366) [#3469](https://github.com/input-output-hk/cardano-sl/pull/3469) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CBR-369](https://iohk.myjetbrains.com/youtrack/issue/CBR-369) [#3418](https://github.com/input-output-hk/cardano-sl/pull/3418) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-371](https://iohk.myjetbrains.com/youtrack/issue/CBR-371) [#3463](https://github.com/input-output-hk/cardano-sl/pull/3463) [#3563](https://github.com/input-output-hk/cardano-sl/pull/3563) ATTENTION: [@k0001](https://github.com/k0001), [@kderme](https://github.com/kderme) +- [CBR-374](https://iohk.myjetbrains.com/youtrack/issue/CBR-374) [#3493](https://github.com/input-output-hk/cardano-sl/pull/3493) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-375](https://iohk.myjetbrains.com/youtrack/issue/CBR-375) [#3428](https://github.com/input-output-hk/cardano-sl/pull/3428) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-377](https://iohk.myjetbrains.com/youtrack/issue/CBR-377) [#3514](https://github.com/input-output-hk/cardano-sl/pull/3514) [#3562](https://github.com/input-output-hk/cardano-sl/pull/3562) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-379](https://iohk.myjetbrains.com/youtrack/issue/CBR-379) [#3737](https://github.com/input-output-hk/cardano-sl/pull/3737) ATTENTION: [@uroboros](https://github.com/uroboros) +- [CBR-380](https://iohk.myjetbrains.com/youtrack/issue/CBR-380) [#3449](https://github.com/input-output-hk/cardano-sl/pull/3449) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-381](https://iohk.myjetbrains.com/youtrack/issue/CBR-381) [#3492](https://github.com/input-output-hk/cardano-sl/pull/3492) ATTENTION: [@uroboros](https://github.com/uroboros) +- [CBR-382](https://iohk.myjetbrains.com/youtrack/issue/CBR-382) [#3420](https://github.com/input-output-hk/cardano-sl/pull/3420) [#3427](https://github.com/input-output-hk/cardano-sl/pull/3427) [#3430](https://github.com/input-output-hk/cardano-sl/pull/3430) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-383](https://iohk.myjetbrains.com/youtrack/issue/CBR-383) [#3434](https://github.com/input-output-hk/cardano-sl/pull/3434) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-385](https://iohk.myjetbrains.com/youtrack/issue/CBR-385) [#3450](https://github.com/input-output-hk/cardano-sl/pull/3450) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-386](https://iohk.myjetbrains.com/youtrack/issue/CBR-386) [#3475](https://github.com/input-output-hk/cardano-sl/pull/3475) ATTENTION: [@uroboros](https://github.com/uroboros) +- [CBR-387](https://iohk.myjetbrains.com/youtrack/issue/CBR-387) [#3433](https://github.com/input-output-hk/cardano-sl/pull/3433) [#3518](https://github.com/input-output-hk/cardano-sl/pull/3518) ATTENTION: [@edsko](https://github.com/edsko), [@uroboros](https://github.com/uroboros) +- [CBR-389](https://iohk.myjetbrains.com/youtrack/issue/CBR-389) [#3439](https://github.com/input-output-hk/cardano-sl/pull/3439) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-390](https://iohk.myjetbrains.com/youtrack/issue/CBR-390) [#3473](https://github.com/input-output-hk/cardano-sl/pull/3473) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-391](https://iohk.myjetbrains.com/youtrack/issue/CBR-391) [#3553](https://github.com/input-output-hk/cardano-sl/pull/3553) [#3557](https://github.com/input-output-hk/cardano-sl/pull/3557) ATTENTION: [@rvl](https://github.com/rvl) +- [CBR-393](https://iohk.myjetbrains.com/youtrack/issue/CBR-393) [#3552](https://github.com/input-output-hk/cardano-sl/pull/3552) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-394](https://iohk.myjetbrains.com/youtrack/issue/CBR-394) [#3488](https://github.com/input-output-hk/cardano-sl/pull/3488) ATTENTION: [@coot](https://github.com/coot) +- [CBR-396](https://iohk.myjetbrains.com/youtrack/issue/CBR-396) [#3453](https://github.com/input-output-hk/cardano-sl/pull/3453) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-398](https://iohk.myjetbrains.com/youtrack/issue/CBR-398) [#3525](https://github.com/input-output-hk/cardano-sl/pull/3525) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CBR-400](https://iohk.myjetbrains.com/youtrack/issue/CBR-400) [#3486](https://github.com/input-output-hk/cardano-sl/pull/3486) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CBR-405](https://iohk.myjetbrains.com/youtrack/issue/CBR-405) [#3516](https://github.com/input-output-hk/cardano-sl/pull/3516) ATTENTION: [@edsko](https://github.com/edsko) +- [CBR-407](https://iohk.myjetbrains.com/youtrack/issue/CBR-407) [#3520](https://github.com/input-output-hk/cardano-sl/pull/3520) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-408](https://iohk.myjetbrains.com/youtrack/issue/CBR-408) [#3571](https://github.com/input-output-hk/cardano-sl/pull/3571) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CBR-409](https://iohk.myjetbrains.com/youtrack/issue/CBR-409) [#3575](https://github.com/input-output-hk/cardano-sl/pull/3575) ATTENTION: [@uroboros](https://github.com/uroboros) +- [CBR-413](https://iohk.myjetbrains.com/youtrack/issue/CBR-413) [#3546](https://github.com/input-output-hk/cardano-sl/pull/3546) [#3566](https://github.com/input-output-hk/cardano-sl/pull/3566) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-414](https://iohk.myjetbrains.com/youtrack/issue/CBR-414) [#3582](https://github.com/input-output-hk/cardano-sl/pull/3582) ATTENTION: [@cleverca22](https://github.com/cleverca22) +- [CBR-416](https://iohk.myjetbrains.com/youtrack/issue/CBR-416) [#3580](https://github.com/input-output-hk/cardano-sl/pull/3580) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-417](https://iohk.myjetbrains.com/youtrack/issue/CBR-417) [#3568](https://github.com/input-output-hk/cardano-sl/pull/3568) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CBR-419](https://iohk.myjetbrains.com/youtrack/issue/CBR-419) [#3590](https://github.com/input-output-hk/cardano-sl/pull/3590) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609) ATTENTION: [@365andreas](https://github.com/365andreas) +- [CBR-424](https://iohk.myjetbrains.com/youtrack/issue/CBR-424) [#3731](https://github.com/input-output-hk/cardano-sl/pull/3731) ATTENTION: [@karknu](https://github.com/karknu) +- [CBR-426](https://iohk.myjetbrains.com/youtrack/issue/CBR-426) [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-427](https://iohk.myjetbrains.com/youtrack/issue/CBR-427) [#3586](https://github.com/input-output-hk/cardano-sl/pull/3586) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603) ATTENTION: [@CodiePP](https://github.com/CodiePP) +- [CBR-434](https://iohk.myjetbrains.com/youtrack/issue/CBR-434) [#3612](https://github.com/input-output-hk/cardano-sl/pull/3612) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-435](https://iohk.myjetbrains.com/youtrack/issue/CBR-435) [#3628](https://github.com/input-output-hk/cardano-sl/pull/3628) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-437](https://iohk.myjetbrains.com/youtrack/issue/CBR-437) [#3621](https://github.com/input-output-hk/cardano-sl/pull/3621) ATTENTION: [@Anviking](https://github.com/Anviking) +- [CBR-438](https://iohk.myjetbrains.com/youtrack/issue/CBR-438) [#3634](https://github.com/input-output-hk/cardano-sl/pull/3634) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-440](https://iohk.myjetbrains.com/youtrack/issue/CBR-440) [#3635](https://github.com/input-output-hk/cardano-sl/pull/3635) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-441](https://iohk.myjetbrains.com/youtrack/issue/CBR-441) [#3638](https://github.com/input-output-hk/cardano-sl/pull/3638) [#3654](https://github.com/input-output-hk/cardano-sl/pull/3654) [#3669](https://github.com/input-output-hk/cardano-sl/pull/3669) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-442](https://iohk.myjetbrains.com/youtrack/issue/CBR-442) [#3641](https://github.com/input-output-hk/cardano-sl/pull/3641) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-444](https://iohk.myjetbrains.com/youtrack/issue/CBR-444) [#3701](https://github.com/input-output-hk/cardano-sl/pull/3701) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-445](https://iohk.myjetbrains.com/youtrack/issue/CBR-445) [#3720](https://github.com/input-output-hk/cardano-sl/pull/3720) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-446](https://iohk.myjetbrains.com/youtrack/issue/CBR-446) [#3650](https://github.com/input-output-hk/cardano-sl/pull/3650) ATTENTION: [@parsonsmatt](https://github.com/parsonsmatt) +- [CBR-449](https://iohk.myjetbrains.com/youtrack/issue/CBR-449) [#3705](https://github.com/input-output-hk/cardano-sl/pull/3705) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-452](https://iohk.myjetbrains.com/youtrack/issue/CBR-452) [#3695](https://github.com/input-output-hk/cardano-sl/pull/3695) ATTENTION: [@uroboros](https://github.com/uroboros) +- [CBR-453](https://iohk.myjetbrains.com/youtrack/issue/CBR-453) [#3717](https://github.com/input-output-hk/cardano-sl/pull/3717) [#3726](https://github.com/input-output-hk/cardano-sl/pull/3726) ATTENTION: [@uroboros](https://github.com/uroboros) +- [CBR-454](https://iohk.myjetbrains.com/youtrack/issue/CBR-454) [#3679](https://github.com/input-output-hk/cardano-sl/pull/3679) ATTENTION: [@karknu](https://github.com/karknu) +- [CBR-459](https://iohk.myjetbrains.com/youtrack/issue/CBR-459) [#3696](https://github.com/input-output-hk/cardano-sl/pull/3696) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-460](https://iohk.myjetbrains.com/youtrack/issue/CBR-460) [#3698](https://github.com/input-output-hk/cardano-sl/pull/3698) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-462](https://iohk.myjetbrains.com/youtrack/issue/CBR-462) [#3704](https://github.com/input-output-hk/cardano-sl/pull/3704) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-464](https://iohk.myjetbrains.com/youtrack/issue/CBR-464) [#3710](https://github.com/input-output-hk/cardano-sl/pull/3710) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) ATTENTION: [@avieth](https://github.com/avieth), [@cleverca22](https://github.com/cleverca22) +- [CBR-470](https://iohk.myjetbrains.com/youtrack/issue/CBR-470) [#3773](https://github.com/input-output-hk/cardano-sl/pull/3773) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-471](https://iohk.myjetbrains.com/youtrack/issue/CBR-471) [#3786](https://github.com/input-output-hk/cardano-sl/pull/3786) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-472](https://iohk.myjetbrains.com/youtrack/issue/CBR-472) [#3765](https://github.com/input-output-hk/cardano-sl/pull/3765) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-96](https://iohk.myjetbrains.com/youtrack/issue/CBR-96) [#3127](https://github.com/input-output-hk/cardano-sl/pull/3127) [#3190](https://github.com/input-output-hk/cardano-sl/pull/3190) [#3192](https://github.com/input-output-hk/cardano-sl/pull/3192) [#3194](https://github.com/input-output-hk/cardano-sl/pull/3194) [#3195](https://github.com/input-output-hk/cardano-sl/pull/3195) [#3216](https://github.com/input-output-hk/cardano-sl/pull/3216) ATTENTION: [@coot](https://github.com/coot) +- [CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645) ATTENTION: [@CodiePP](https://github.com/CodiePP) +- [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) +- [CDEC-268](https://iohk.myjetbrains.com/youtrack/issue/CDEC-268) [#3136](https://github.com/input-output-hk/cardano-sl/pull/3136) ATTENTION: [@karknu](https://github.com/karknu) +- [CDEC-285](https://iohk.myjetbrains.com/youtrack/issue/CDEC-285) [#3168](https://github.com/input-output-hk/cardano-sl/pull/3168) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) ATTENTION: [@disassembler](https://github.com/disassembler) +- [CDEC-333](https://iohk.myjetbrains.com/youtrack/issue/CDEC-333) [#3615](https://github.com/input-output-hk/cardano-sl/pull/3615) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) ATTENTION: [@coot](https://github.com/coot) +- [CDEC-369](https://iohk.myjetbrains.com/youtrack/issue/CDEC-369) [#3482](https://github.com/input-output-hk/cardano-sl/pull/3482) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) ATTENTION: [@erikd](https://github.com/erikd) +- [CDEC-383](https://iohk.myjetbrains.com/youtrack/issue/CDEC-383) [#3142](https://github.com/input-output-hk/cardano-sl/pull/3142) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385) [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-398](https://iohk.myjetbrains.com/youtrack/issue/CDEC-398) [#3251](https://github.com/input-output-hk/cardano-sl/pull/3251) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) ATTENTION: [@coot](https://github.com/coot) +- [CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416) [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185) [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202) [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209) ATTENTION: [@erikd](https://github.com/erikd), [@mhuesch](https://github.com/mhuesch) +- [CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418) [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423) [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-425](https://iohk.myjetbrains.com/youtrack/issue/CDEC-425) [#3240](https://github.com/input-output-hk/cardano-sl/pull/3240) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429) [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-432](https://iohk.myjetbrains.com/youtrack/issue/CDEC-432) [#3238](https://github.com/input-output-hk/cardano-sl/pull/3238) [#3261](https://github.com/input-output-hk/cardano-sl/pull/3261) [#3266](https://github.com/input-output-hk/cardano-sl/pull/3266) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437) [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) ATTENTION: [@coot](https://github.com/coot) +- [CDEC-451](https://iohk.myjetbrains.com/youtrack/issue/CDEC-451) [#3285](https://github.com/input-output-hk/cardano-sl/pull/3285) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-452](https://iohk.myjetbrains.com/youtrack/issue/CDEC-452) [#3281](https://github.com/input-output-hk/cardano-sl/pull/3281) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-453](https://iohk.myjetbrains.com/youtrack/issue/CDEC-453) [#3268](https://github.com/input-output-hk/cardano-sl/pull/3268) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-455](https://iohk.myjetbrains.com/youtrack/issue/CDEC-455) [#3296](https://github.com/input-output-hk/cardano-sl/pull/3296) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-462](https://iohk.myjetbrains.com/youtrack/issue/CDEC-462) [#3286](https://github.com/input-output-hk/cardano-sl/pull/3286) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-464](https://iohk.myjetbrains.com/youtrack/issue/CDEC-464) [#3305](https://github.com/input-output-hk/cardano-sl/pull/3305) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-466](https://iohk.myjetbrains.com/youtrack/issue/CDEC-466) [#3289](https://github.com/input-output-hk/cardano-sl/pull/3289) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-468](https://iohk.myjetbrains.com/youtrack/issue/CDEC-468) [#3304](https://github.com/input-output-hk/cardano-sl/pull/3304) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-474](https://iohk.myjetbrains.com/youtrack/issue/CDEC-474) [#3354](https://github.com/input-output-hk/cardano-sl/pull/3354) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-484](https://iohk.myjetbrains.com/youtrack/issue/CDEC-484) [#3357](https://github.com/input-output-hk/cardano-sl/pull/3357) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-485](https://iohk.myjetbrains.com/youtrack/issue/CDEC-485) [#3351](https://github.com/input-output-hk/cardano-sl/pull/3351) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-498](https://iohk.myjetbrains.com/youtrack/issue/CDEC-498) [#3424](https://github.com/input-output-hk/cardano-sl/pull/3424) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-499](https://iohk.myjetbrains.com/youtrack/issue/CDEC-499) [#3416](https://github.com/input-output-hk/cardano-sl/pull/3416) [#3419](https://github.com/input-output-hk/cardano-sl/pull/3419) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-500](https://iohk.myjetbrains.com/youtrack/issue/CDEC-500) [#3403](https://github.com/input-output-hk/cardano-sl/pull/3403) [#3405](https://github.com/input-output-hk/cardano-sl/pull/3405) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-505](https://iohk.myjetbrains.com/youtrack/issue/CDEC-505) [#3412](https://github.com/input-output-hk/cardano-sl/pull/3412) [#3593](https://github.com/input-output-hk/cardano-sl/pull/3593) [#3600](https://github.com/input-output-hk/cardano-sl/pull/3600) [#3601](https://github.com/input-output-hk/cardano-sl/pull/3601) [#3611](https://github.com/input-output-hk/cardano-sl/pull/3611) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-506](https://iohk.myjetbrains.com/youtrack/issue/CDEC-506) [#3415](https://github.com/input-output-hk/cardano-sl/pull/3415) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-507](https://iohk.myjetbrains.com/youtrack/issue/CDEC-507) [#3746](https://github.com/input-output-hk/cardano-sl/pull/3746) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-509](https://iohk.myjetbrains.com/youtrack/issue/CDEC-509) [#3437](https://github.com/input-output-hk/cardano-sl/pull/3437) [#3505](https://github.com/input-output-hk/cardano-sl/pull/3505) [#3522](https://github.com/input-output-hk/cardano-sl/pull/3522) [#3549](https://github.com/input-output-hk/cardano-sl/pull/3549) [#3550](https://github.com/input-output-hk/cardano-sl/pull/3550) [#3570](https://github.com/input-output-hk/cardano-sl/pull/3570) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-510](https://iohk.myjetbrains.com/youtrack/issue/CDEC-510) [#3442](https://github.com/input-output-hk/cardano-sl/pull/3442) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-513](https://iohk.myjetbrains.com/youtrack/issue/CDEC-513) [#3445](https://github.com/input-output-hk/cardano-sl/pull/3445) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-517](https://iohk.myjetbrains.com/youtrack/issue/CDEC-517) [#3497](https://github.com/input-output-hk/cardano-sl/pull/3497) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-524](https://iohk.myjetbrains.com/youtrack/issue/CDEC-524) [#3506](https://github.com/input-output-hk/cardano-sl/pull/3506) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-585](https://iohk.myjetbrains.com/youtrack/issue/CDEC-585) [#3614](https://github.com/input-output-hk/cardano-sl/pull/3614) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-623](https://iohk.myjetbrains.com/youtrack/issue/CDEC-623) [#3735](https://github.com/input-output-hk/cardano-sl/pull/3735) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CLS-2524](https://iohk.myjetbrains.com/youtrack/issue/CLS-2524) [#3793](https://github.com/input-output-hk/cardano-sl/pull/3793) ATTENTION: [@Anviking](https://github.com/Anviking) +- [CO-298](https://iohk.myjetbrains.com/youtrack/issue/CO-298) [#3013](https://github.com/input-output-hk/cardano-sl/pull/3013) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-324](https://iohk.myjetbrains.com/youtrack/issue/CO-324) [#3210](https://github.com/input-output-hk/cardano-sl/pull/3210) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-327](https://iohk.myjetbrains.com/youtrack/issue/CO-327) [#3215](https://github.com/input-output-hk/cardano-sl/pull/3215) ATTENTION: [@Anviking](https://github.com/Anviking) +- [CO-328](https://iohk.myjetbrains.com/youtrack/issue/CO-328) [#3212](https://github.com/input-output-hk/cardano-sl/pull/3212) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-329](https://iohk.myjetbrains.com/youtrack/issue/CO-329) [#3178](https://github.com/input-output-hk/cardano-sl/pull/3178) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) ATTENTION: [@parsonsmatt](https://github.com/parsonsmatt) +- [CO-351](https://iohk.myjetbrains.com/youtrack/issue/CO-351) [#3391](https://github.com/input-output-hk/cardano-sl/pull/3391) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-354](https://iohk.myjetbrains.com/youtrack/issue/CO-354) [#3714](https://github.com/input-output-hk/cardano-sl/pull/3714) ATTENTION: [@rvl](https://github.com/rvl) +- [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3573](https://github.com/input-output-hk/cardano-sl/pull/3573) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3639](https://github.com/input-output-hk/cardano-sl/pull/3639) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-367](https://iohk.myjetbrains.com/youtrack/issue/CO-367) [#3661](https://github.com/input-output-hk/cardano-sl/pull/3661) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CO-370](https://iohk.myjetbrains.com/youtrack/issue/CO-370) [#3596](https://github.com/input-output-hk/cardano-sl/pull/3596) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-371](https://iohk.myjetbrains.com/youtrack/issue/CO-371) [#3605](https://github.com/input-output-hk/cardano-sl/pull/3605) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-386](https://iohk.myjetbrains.com/youtrack/issue/CO-386) [#3608](https://github.com/input-output-hk/cardano-sl/pull/3608) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-388](https://iohk.myjetbrains.com/youtrack/issue/CO-388) [#3610](https://github.com/input-output-hk/cardano-sl/pull/3610) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-389](https://iohk.myjetbrains.com/youtrack/issue/CO-389) [#3620](https://github.com/input-output-hk/cardano-sl/pull/3620) [#3658](https://github.com/input-output-hk/cardano-sl/pull/3658) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-390](https://iohk.myjetbrains.com/youtrack/issue/CO-390) [#3629](https://github.com/input-output-hk/cardano-sl/pull/3629) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-391](https://iohk.myjetbrains.com/youtrack/issue/CO-391) [#3656](https://github.com/input-output-hk/cardano-sl/pull/3656) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) +- [CO-395](https://iohk.myjetbrains.com/youtrack/issue/CO-395) [#3672](https://github.com/input-output-hk/cardano-sl/pull/3672) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-398](https://iohk.myjetbrains.com/youtrack/issue/CO-398) [#3678](https://github.com/input-output-hk/cardano-sl/pull/3678) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CO-399](https://iohk.myjetbrains.com/youtrack/issue/CO-399) [#3684](https://github.com/input-output-hk/cardano-sl/pull/3684) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CO-400](https://iohk.myjetbrains.com/youtrack/issue/CO-400) [#3680](https://github.com/input-output-hk/cardano-sl/pull/3680) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-409](https://iohk.myjetbrains.com/youtrack/issue/CO-409) [#3697](https://github.com/input-output-hk/cardano-sl/pull/3697) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3733](https://github.com/input-output-hk/cardano-sl/pull/3733) ATTENTION: [@intricate](https://github.com/intricate) +- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3756](https://github.com/input-output-hk/cardano-sl/pull/3756) ATTENTION: [@intricate](https://github.com/intricate) +- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3775](https://github.com/input-output-hk/cardano-sl/pull/3775) ATTENTION: [@intricate](https://github.com/intricate) +- [CO-417](https://iohk.myjetbrains.com/youtrack/issue/CO-417) [#3727](https://github.com/input-output-hk/cardano-sl/pull/3727) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CO-423](https://iohk.myjetbrains.com/youtrack/issue/CO-423) [#3732](https://github.com/input-output-hk/cardano-sl/pull/3732) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CO-436](https://iohk.myjetbrains.com/youtrack/issue/CO-436) [#3791](https://github.com/input-output-hk/cardano-sl/pull/3791) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) +- [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) ATTENTION: [@nc6](https://github.com/nc6) +- [CSL-2517](https://iohk.myjetbrains.com/youtrack/issue/CSL-2517) [#3348](https://github.com/input-output-hk/cardano-sl/pull/3348) ATTENTION: [@karknu](https://github.com/karknu) +- [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) +- [DDW-380](https://iohk.myjetbrains.com/youtrack/issue/DDW-380) [#3554](https://github.com/input-output-hk/cardano-sl/pull/3554) ATTENTION: [@rvl](https://github.com/rvl) +- [PB-13](https://iohk.myjetbrains.com/youtrack/issue/PB-13) [#3126](https://github.com/input-output-hk/cardano-sl/pull/3126) ATTENTION: [@365andreas](https://github.com/365andreas) +- [PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670) ATTENTION: [@CodiePP](https://github.com/CodiePP) +- [PIP-22](https://iohk.myjetbrains.com/youtrack/issue/PIP-22) [#3273](https://github.com/input-output-hk/cardano-sl/pull/3273) ATTENTION: [@jcmincke](https://github.com/jcmincke) +- [RCD-28](https://iohk.myjetbrains.com/youtrack/issue/RCD-28) [#3711](https://github.com/input-output-hk/cardano-sl/pull/3711) ATTENTION: [@coot](https://github.com/coot) +- [TSD-116](https://iohk.myjetbrains.com/youtrack/issue/TSD-116) [#3716](https://github.com/input-output-hk/cardano-sl/pull/3716) ATTENTION: [@ksaric](https://github.com/ksaric) ### Features From dc05c6c8a709382adc8073b2f017c2f556ff2e5c Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Mon, 12 Nov 2018 22:17:38 +1000 Subject: [PATCH 022/103] [RCD-37] ChangeLog: address PR entries assigned to me These were all backport PRs, so ChangeLog entries were already written for the previous version. --- CHANGELOG.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8326a2a9364..db442508c9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -50,7 +50,6 @@ Please add entries for your tickets: - [CBR-387](https://iohk.myjetbrains.com/youtrack/issue/CBR-387) [#3433](https://github.com/input-output-hk/cardano-sl/pull/3433) [#3518](https://github.com/input-output-hk/cardano-sl/pull/3518) ATTENTION: [@edsko](https://github.com/edsko), [@uroboros](https://github.com/uroboros) - [CBR-389](https://iohk.myjetbrains.com/youtrack/issue/CBR-389) [#3439](https://github.com/input-output-hk/cardano-sl/pull/3439) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-390](https://iohk.myjetbrains.com/youtrack/issue/CBR-390) [#3473](https://github.com/input-output-hk/cardano-sl/pull/3473) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-391](https://iohk.myjetbrains.com/youtrack/issue/CBR-391) [#3553](https://github.com/input-output-hk/cardano-sl/pull/3553) [#3557](https://github.com/input-output-hk/cardano-sl/pull/3557) ATTENTION: [@rvl](https://github.com/rvl) - [CBR-393](https://iohk.myjetbrains.com/youtrack/issue/CBR-393) [#3552](https://github.com/input-output-hk/cardano-sl/pull/3552) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-394](https://iohk.myjetbrains.com/youtrack/issue/CBR-394) [#3488](https://github.com/input-output-hk/cardano-sl/pull/3488) ATTENTION: [@coot](https://github.com/coot) - [CBR-396](https://iohk.myjetbrains.com/youtrack/issue/CBR-396) [#3453](https://github.com/input-output-hk/cardano-sl/pull/3453) ATTENTION: [@edsko](https://github.com/edsko) @@ -150,7 +149,6 @@ Please add entries for your tickets: - [CO-329](https://iohk.myjetbrains.com/youtrack/issue/CO-329) [#3178](https://github.com/input-output-hk/cardano-sl/pull/3178) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) ATTENTION: [@parsonsmatt](https://github.com/parsonsmatt) - [CO-351](https://iohk.myjetbrains.com/youtrack/issue/CO-351) [#3391](https://github.com/input-output-hk/cardano-sl/pull/3391) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-354](https://iohk.myjetbrains.com/youtrack/issue/CO-354) [#3714](https://github.com/input-output-hk/cardano-sl/pull/3714) ATTENTION: [@rvl](https://github.com/rvl) - [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3573](https://github.com/input-output-hk/cardano-sl/pull/3573) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3639](https://github.com/input-output-hk/cardano-sl/pull/3639) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CO-367](https://iohk.myjetbrains.com/youtrack/issue/CO-367) [#3661](https://github.com/input-output-hk/cardano-sl/pull/3661) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) @@ -175,7 +173,6 @@ Please add entries for your tickets: - [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) ATTENTION: [@nc6](https://github.com/nc6) - [CSL-2517](https://iohk.myjetbrains.com/youtrack/issue/CSL-2517) [#3348](https://github.com/input-output-hk/cardano-sl/pull/3348) ATTENTION: [@karknu](https://github.com/karknu) - [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) -- [DDW-380](https://iohk.myjetbrains.com/youtrack/issue/DDW-380) [#3554](https://github.com/input-output-hk/cardano-sl/pull/3554) ATTENTION: [@rvl](https://github.com/rvl) - [PB-13](https://iohk.myjetbrains.com/youtrack/issue/PB-13) [#3126](https://github.com/input-output-hk/cardano-sl/pull/3126) ATTENTION: [@365andreas](https://github.com/365andreas) - [PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670) ATTENTION: [@CodiePP](https://github.com/CodiePP) - [PIP-22](https://iohk.myjetbrains.com/youtrack/issue/PIP-22) [#3273](https://github.com/input-output-hk/cardano-sl/pull/3273) ATTENTION: [@jcmincke](https://github.com/jcmincke) From 50fd8e7e218a455b507badbe2cff0e8a036fa872 Mon Sep 17 00:00:00 2001 From: Karl Knutsson Date: Mon, 12 Nov 2018 18:22:31 +0100 Subject: [PATCH 023/103] [RCD-37] ChangeLog: address PR entries assigned to me CDEC-268 was a subtask of CDEC-49 which was included in 1.3 and already in the changelog. --- CHANGELOG.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db442508c9c..7346a2addcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,7 +65,6 @@ Please add entries for your tickets: - [CBR-417](https://iohk.myjetbrains.com/youtrack/issue/CBR-417) [#3568](https://github.com/input-output-hk/cardano-sl/pull/3568) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CBR-419](https://iohk.myjetbrains.com/youtrack/issue/CBR-419) [#3590](https://github.com/input-output-hk/cardano-sl/pull/3590) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609) ATTENTION: [@365andreas](https://github.com/365andreas) -- [CBR-424](https://iohk.myjetbrains.com/youtrack/issue/CBR-424) [#3731](https://github.com/input-output-hk/cardano-sl/pull/3731) ATTENTION: [@karknu](https://github.com/karknu) - [CBR-426](https://iohk.myjetbrains.com/youtrack/issue/CBR-426) [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-427](https://iohk.myjetbrains.com/youtrack/issue/CBR-427) [#3586](https://github.com/input-output-hk/cardano-sl/pull/3586) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603) ATTENTION: [@CodiePP](https://github.com/CodiePP) @@ -82,7 +81,6 @@ Please add entries for your tickets: - [CBR-449](https://iohk.myjetbrains.com/youtrack/issue/CBR-449) [#3705](https://github.com/input-output-hk/cardano-sl/pull/3705) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-452](https://iohk.myjetbrains.com/youtrack/issue/CBR-452) [#3695](https://github.com/input-output-hk/cardano-sl/pull/3695) ATTENTION: [@uroboros](https://github.com/uroboros) - [CBR-453](https://iohk.myjetbrains.com/youtrack/issue/CBR-453) [#3717](https://github.com/input-output-hk/cardano-sl/pull/3717) [#3726](https://github.com/input-output-hk/cardano-sl/pull/3726) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-454](https://iohk.myjetbrains.com/youtrack/issue/CBR-454) [#3679](https://github.com/input-output-hk/cardano-sl/pull/3679) ATTENTION: [@karknu](https://github.com/karknu) - [CBR-459](https://iohk.myjetbrains.com/youtrack/issue/CBR-459) [#3696](https://github.com/input-output-hk/cardano-sl/pull/3696) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-460](https://iohk.myjetbrains.com/youtrack/issue/CBR-460) [#3698](https://github.com/input-output-hk/cardano-sl/pull/3698) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-462](https://iohk.myjetbrains.com/youtrack/issue/CBR-462) [#3704](https://github.com/input-output-hk/cardano-sl/pull/3704) ATTENTION: [@KtorZ](https://github.com/KtorZ) @@ -96,7 +94,6 @@ Please add entries for your tickets: - [CBR-96](https://iohk.myjetbrains.com/youtrack/issue/CBR-96) [#3127](https://github.com/input-output-hk/cardano-sl/pull/3127) [#3190](https://github.com/input-output-hk/cardano-sl/pull/3190) [#3192](https://github.com/input-output-hk/cardano-sl/pull/3192) [#3194](https://github.com/input-output-hk/cardano-sl/pull/3194) [#3195](https://github.com/input-output-hk/cardano-sl/pull/3195) [#3216](https://github.com/input-output-hk/cardano-sl/pull/3216) ATTENTION: [@coot](https://github.com/coot) - [CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645) ATTENTION: [@CodiePP](https://github.com/CodiePP) - [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) -- [CDEC-268](https://iohk.myjetbrains.com/youtrack/issue/CDEC-268) [#3136](https://github.com/input-output-hk/cardano-sl/pull/3136) ATTENTION: [@karknu](https://github.com/karknu) - [CDEC-285](https://iohk.myjetbrains.com/youtrack/issue/CDEC-285) [#3168](https://github.com/input-output-hk/cardano-sl/pull/3168) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) ATTENTION: [@disassembler](https://github.com/disassembler) - [CDEC-333](https://iohk.myjetbrains.com/youtrack/issue/CDEC-333) [#3615](https://github.com/input-output-hk/cardano-sl/pull/3615) ATTENTION: [@ruhatch](https://github.com/ruhatch) @@ -171,7 +168,6 @@ Please add entries for your tickets: - [CO-423](https://iohk.myjetbrains.com/youtrack/issue/CO-423) [#3732](https://github.com/input-output-hk/cardano-sl/pull/3732) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CO-436](https://iohk.myjetbrains.com/youtrack/issue/CO-436) [#3791](https://github.com/input-output-hk/cardano-sl/pull/3791) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) ATTENTION: [@nc6](https://github.com/nc6) -- [CSL-2517](https://iohk.myjetbrains.com/youtrack/issue/CSL-2517) [#3348](https://github.com/input-output-hk/cardano-sl/pull/3348) ATTENTION: [@karknu](https://github.com/karknu) - [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) - [PB-13](https://iohk.myjetbrains.com/youtrack/issue/PB-13) [#3126](https://github.com/input-output-hk/cardano-sl/pull/3126) ATTENTION: [@365andreas](https://github.com/365andreas) - [PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670) ATTENTION: [@CodiePP](https://github.com/CodiePP) @@ -239,6 +235,12 @@ Please add entries for your tickets: - Fix `commitAndReleaseBuffer: invalid argument (invalid character)` error in Docker image ([DEVOPS-877](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-877), [#3173](https://github.com/input-output-hk/cardano-sl/pull/3173)) +- Fix deadlock triggered by update/shutdown ([CBR-424](https://iohk.myjetbrains.com/youtrack/issue/CBR-424) [#3731](https://github.com/input-output-hk/cardano-sl/pull/3731)) + +- Fix space leak during network syncing ([CBR-454](https://iohk.myjetbrains.com/youtrack/issue/CBR-454) [#3679](https://github.com/input-output-hk/cardano-sl/pull/3679)) + +- Fix benchmark on OSX ([CSL-2517](https://iohk.myjetbrains.com/youtrack/issue/CSL-2517) [#3348](https://github.com/input-output-hk/cardano-sl/pull/3348)) + ### Improvements - Friendly error mistakes from deserializing invalid addresses instead of brutal 500 ([CBR-283](https://iohk.myjetbrains.com/youtrack/issue/CBR-283)) From 986e5282c5193aa1388ee7d8060065798f22ab6a Mon Sep 17 00:00:00 2001 From: Michael Hueschen Date: Mon, 12 Nov 2018 15:16:55 -0500 Subject: [PATCH 024/103] [RCD-37] ChangeLog: address PR entries assigned to me --- CHANGELOG.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7346a2addcc..5b5778ae7cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -101,35 +101,26 @@ Please add entries for your tickets: - [CDEC-369](https://iohk.myjetbrains.com/youtrack/issue/CDEC-369) [#3482](https://github.com/input-output-hk/cardano-sl/pull/3482) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) ATTENTION: [@erikd](https://github.com/erikd) - [CDEC-383](https://iohk.myjetbrains.com/youtrack/issue/CDEC-383) [#3142](https://github.com/input-output-hk/cardano-sl/pull/3142) ATTENTION: [@ruhatch](https://github.com/ruhatch) -- [CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385) [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153) ATTENTION: [@mhuesch](https://github.com/mhuesch) - [CDEC-398](https://iohk.myjetbrains.com/youtrack/issue/CDEC-398) [#3251](https://github.com/input-output-hk/cardano-sl/pull/3251) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) ATTENTION: [@coot](https://github.com/coot) -- [CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416) [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185) [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202) [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209) ATTENTION: [@erikd](https://github.com/erikd), [@mhuesch](https://github.com/mhuesch) - [CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418) [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423) [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-425](https://iohk.myjetbrains.com/youtrack/issue/CDEC-425) [#3240](https://github.com/input-output-hk/cardano-sl/pull/3240) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429) [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227) ATTENTION: [@mhuesch](https://github.com/mhuesch) -- [CDEC-432](https://iohk.myjetbrains.com/youtrack/issue/CDEC-432) [#3238](https://github.com/input-output-hk/cardano-sl/pull/3238) [#3261](https://github.com/input-output-hk/cardano-sl/pull/3261) [#3266](https://github.com/input-output-hk/cardano-sl/pull/3266) ATTENTION: [@mhuesch](https://github.com/mhuesch) - [CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437) [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) ATTENTION: [@coot](https://github.com/coot) -- [CDEC-451](https://iohk.myjetbrains.com/youtrack/issue/CDEC-451) [#3285](https://github.com/input-output-hk/cardano-sl/pull/3285) ATTENTION: [@mhuesch](https://github.com/mhuesch) - [CDEC-452](https://iohk.myjetbrains.com/youtrack/issue/CDEC-452) [#3281](https://github.com/input-output-hk/cardano-sl/pull/3281) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-453](https://iohk.myjetbrains.com/youtrack/issue/CDEC-453) [#3268](https://github.com/input-output-hk/cardano-sl/pull/3268) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-455](https://iohk.myjetbrains.com/youtrack/issue/CDEC-455) [#3296](https://github.com/input-output-hk/cardano-sl/pull/3296) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-462](https://iohk.myjetbrains.com/youtrack/issue/CDEC-462) [#3286](https://github.com/input-output-hk/cardano-sl/pull/3286) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-464](https://iohk.myjetbrains.com/youtrack/issue/CDEC-464) [#3305](https://github.com/input-output-hk/cardano-sl/pull/3305) ATTENTION: [@mhuesch](https://github.com/mhuesch) - [CDEC-466](https://iohk.myjetbrains.com/youtrack/issue/CDEC-466) [#3289](https://github.com/input-output-hk/cardano-sl/pull/3289) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-468](https://iohk.myjetbrains.com/youtrack/issue/CDEC-468) [#3304](https://github.com/input-output-hk/cardano-sl/pull/3304) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-474](https://iohk.myjetbrains.com/youtrack/issue/CDEC-474) [#3354](https://github.com/input-output-hk/cardano-sl/pull/3354) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-484](https://iohk.myjetbrains.com/youtrack/issue/CDEC-484) [#3357](https://github.com/input-output-hk/cardano-sl/pull/3357) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-485](https://iohk.myjetbrains.com/youtrack/issue/CDEC-485) [#3351](https://github.com/input-output-hk/cardano-sl/pull/3351) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-498](https://iohk.myjetbrains.com/youtrack/issue/CDEC-498) [#3424](https://github.com/input-output-hk/cardano-sl/pull/3424) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-499](https://iohk.myjetbrains.com/youtrack/issue/CDEC-499) [#3416](https://github.com/input-output-hk/cardano-sl/pull/3416) [#3419](https://github.com/input-output-hk/cardano-sl/pull/3419) ATTENTION: [@mhuesch](https://github.com/mhuesch) -- [CDEC-500](https://iohk.myjetbrains.com/youtrack/issue/CDEC-500) [#3403](https://github.com/input-output-hk/cardano-sl/pull/3403) [#3405](https://github.com/input-output-hk/cardano-sl/pull/3405) ATTENTION: [@mhuesch](https://github.com/mhuesch) - [CDEC-505](https://iohk.myjetbrains.com/youtrack/issue/CDEC-505) [#3412](https://github.com/input-output-hk/cardano-sl/pull/3412) [#3593](https://github.com/input-output-hk/cardano-sl/pull/3593) [#3600](https://github.com/input-output-hk/cardano-sl/pull/3600) [#3601](https://github.com/input-output-hk/cardano-sl/pull/3601) [#3611](https://github.com/input-output-hk/cardano-sl/pull/3611) ATTENTION: [@ruhatch](https://github.com/ruhatch) -- [CDEC-506](https://iohk.myjetbrains.com/youtrack/issue/CDEC-506) [#3415](https://github.com/input-output-hk/cardano-sl/pull/3415) ATTENTION: [@mhuesch](https://github.com/mhuesch) - [CDEC-507](https://iohk.myjetbrains.com/youtrack/issue/CDEC-507) [#3746](https://github.com/input-output-hk/cardano-sl/pull/3746) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-509](https://iohk.myjetbrains.com/youtrack/issue/CDEC-509) [#3437](https://github.com/input-output-hk/cardano-sl/pull/3437) [#3505](https://github.com/input-output-hk/cardano-sl/pull/3505) [#3522](https://github.com/input-output-hk/cardano-sl/pull/3522) [#3549](https://github.com/input-output-hk/cardano-sl/pull/3549) [#3550](https://github.com/input-output-hk/cardano-sl/pull/3550) [#3570](https://github.com/input-output-hk/cardano-sl/pull/3570) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-510](https://iohk.myjetbrains.com/youtrack/issue/CDEC-510) [#3442](https://github.com/input-output-hk/cardano-sl/pull/3442) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) @@ -206,6 +197,11 @@ Please add entries for your tickets: - Enable new data layer in Docker images for exchanges ([DEVOPS-1037](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1037), [#3545](https://github.com/input-output-hk/cardano-sl/pull/3545), [DEVOPS-1046](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1046), [#3594](https://github.com/input-output-hk/cardano-sl/pull/3594)). +- #### Address Discrimination + - Add `NetworkMagic` paramter to `Address`es, so they can be differentiated on different networks. + - Set up supporting tests ([CDEC-500](https://iohk.myjetbrains.com/youtrack/issue/CDEC-500): [#3403](https://github.com/input-output-hk/cardano-sl/pull/3403), [#3405](https://github.com/input-output-hk/cardano-sl/pull/3405)) + - Fix JSON golden test helpers ([CDEC-506](https://iohk.myjetbrains.com/youtrack/issue/CDEC-506): [#3415](https://github.com/input-output-hk/cardano-sl/pull/3415)) + ### Fixes @@ -264,6 +260,14 @@ Please add entries for your tickets: - Add failure injection options to wallet for Daedalus testing ([DEVOPS-1086](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1086), [#3787](https://github.com/input-output-hk/cardano-sl/pull/3787)) +- #### Reorganize and clean up `core` packages + - Move code from `infra` to `sinbin` so that `infra` can be moved "up" in the dependency graph ([CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416): [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185), [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202), [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209)) + - Move code from `networking` to `core`, so that `networking` can be moved "up" ([CDEC-432](https://iohk.myjetbrains.com/youtrack/issue/CDEC-432): [#3238](https://github.com/input-output-hk/cardano-sl/pull/3238), [#3261](https://github.com/input-output-hk/cardano-sl/pull/3261), [#3266](https://github.com/input-output-hk/cardano-sl/pull/3266)) + - Remove unnecessary `Mockable` typeclass ([CDEC-451](https://iohk.myjetbrains.com/youtrack/issue/CDEC-451): [#3285](https://github.com/input-output-hk/cardano-sl/pull/3285)) + - Switch uses of `pipes` to `conduit`, for consistency ([CDEC-464](https://iohk.myjetbrains.com/youtrack/issue/CDEC-464): [#3305](https://github.com/input-output-hk/cardano-sl/pull/3305)) + - Remove partial-function record accessors using `deriveIndexedBi` TH function ([CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385): [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153)) + - Create a script to visualize the package dependency graph within `cardano-sl` ([CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429): [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227)) + ### Specifications ### Documentation From 9ad61ed479e818374f520658aabea83f44204389 Mon Sep 17 00:00:00 2001 From: Alexander Diemand Date: Mon, 12 Nov 2018 21:28:01 +0100 Subject: [PATCH 025/103] [RCD-37] cleanup Squad 3 tasks; PB-13 is about 'iohk-ops' Signed-off-by: Alexander Diemand --- CHANGELOG.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b5778ae7cb..834a51fe4eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,6 @@ Please add entries for your tickets: - [CBR-246](https://iohk.myjetbrains.com/youtrack/issue/CBR-246) [#3441](https://github.com/input-output-hk/cardano-sl/pull/3441) [#3495](https://github.com/input-output-hk/cardano-sl/pull/3495) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk), [@edsko](https://github.com/edsko) - [CBR-250](https://iohk.myjetbrains.com/youtrack/issue/CBR-250) [#3388](https://github.com/input-output-hk/cardano-sl/pull/3388) [#3454](https://github.com/input-output-hk/cardano-sl/pull/3454) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-27](https://iohk.myjetbrains.com/youtrack/issue/CBR-27) [#3592](https://github.com/input-output-hk/cardano-sl/pull/3592) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655) ATTENTION: [@365andreas](https://github.com/365andreas), [@CodiePP](https://github.com/CodiePP) - [CBR-285](https://iohk.myjetbrains.com/youtrack/issue/CBR-285) [#3117](https://github.com/input-output-hk/cardano-sl/pull/3117) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-288](https://iohk.myjetbrains.com/youtrack/issue/CBR-288) [#3128](https://github.com/input-output-hk/cardano-sl/pull/3128) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-289](https://iohk.myjetbrains.com/youtrack/issue/CBR-289) [#3043](https://github.com/input-output-hk/cardano-sl/pull/3043) ATTENTION: [@KtorZ](https://github.com/KtorZ) @@ -24,9 +23,7 @@ Please add entries for your tickets: - [CBR-340](https://iohk.myjetbrains.com/youtrack/issue/CBR-340) [#3274](https://github.com/input-output-hk/cardano-sl/pull/3274) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-341](https://iohk.myjetbrains.com/youtrack/issue/CBR-341) [#3408](https://github.com/input-output-hk/cardano-sl/pull/3408) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-342](https://iohk.myjetbrains.com/youtrack/issue/CBR-342) [#3316](https://github.com/input-output-hk/cardano-sl/pull/3316) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709) ATTENTION: [@365andreas](https://github.com/365andreas), [@CodiePP](https://github.com/CodiePP) - [CBR-347](https://iohk.myjetbrains.com/youtrack/issue/CBR-347) [#3438](https://github.com/input-output-hk/cardano-sl/pull/3438) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523) ATTENTION: [@CodiePP](https://github.com/CodiePP) - [CBR-349](https://iohk.myjetbrains.com/youtrack/issue/CBR-349) [#3373](https://github.com/input-output-hk/cardano-sl/pull/3373) [#3378](https://github.com/input-output-hk/cardano-sl/pull/3378) [#3466](https://github.com/input-output-hk/cardano-sl/pull/3466) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-350](https://iohk.myjetbrains.com/youtrack/issue/CBR-350) [#3347](https://github.com/input-output-hk/cardano-sl/pull/3347) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-352](https://iohk.myjetbrains.com/youtrack/issue/CBR-352) [#3489](https://github.com/input-output-hk/cardano-sl/pull/3489) ATTENTION: [@kderme](https://github.com/kderme) @@ -64,10 +61,8 @@ Please add entries for your tickets: - [CBR-416](https://iohk.myjetbrains.com/youtrack/issue/CBR-416) [#3580](https://github.com/input-output-hk/cardano-sl/pull/3580) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-417](https://iohk.myjetbrains.com/youtrack/issue/CBR-417) [#3568](https://github.com/input-output-hk/cardano-sl/pull/3568) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CBR-419](https://iohk.myjetbrains.com/youtrack/issue/CBR-419) [#3590](https://github.com/input-output-hk/cardano-sl/pull/3590) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609) ATTENTION: [@365andreas](https://github.com/365andreas) - [CBR-426](https://iohk.myjetbrains.com/youtrack/issue/CBR-426) [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-427](https://iohk.myjetbrains.com/youtrack/issue/CBR-427) [#3586](https://github.com/input-output-hk/cardano-sl/pull/3586) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603) ATTENTION: [@CodiePP](https://github.com/CodiePP) - [CBR-434](https://iohk.myjetbrains.com/youtrack/issue/CBR-434) [#3612](https://github.com/input-output-hk/cardano-sl/pull/3612) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-435](https://iohk.myjetbrains.com/youtrack/issue/CBR-435) [#3628](https://github.com/input-output-hk/cardano-sl/pull/3628) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-437](https://iohk.myjetbrains.com/youtrack/issue/CBR-437) [#3621](https://github.com/input-output-hk/cardano-sl/pull/3621) ATTENTION: [@Anviking](https://github.com/Anviking) @@ -92,7 +87,6 @@ Please add entries for your tickets: - [CBR-471](https://iohk.myjetbrains.com/youtrack/issue/CBR-471) [#3786](https://github.com/input-output-hk/cardano-sl/pull/3786) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-472](https://iohk.myjetbrains.com/youtrack/issue/CBR-472) [#3765](https://github.com/input-output-hk/cardano-sl/pull/3765) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-96](https://iohk.myjetbrains.com/youtrack/issue/CBR-96) [#3127](https://github.com/input-output-hk/cardano-sl/pull/3127) [#3190](https://github.com/input-output-hk/cardano-sl/pull/3190) [#3192](https://github.com/input-output-hk/cardano-sl/pull/3192) [#3194](https://github.com/input-output-hk/cardano-sl/pull/3194) [#3195](https://github.com/input-output-hk/cardano-sl/pull/3195) [#3216](https://github.com/input-output-hk/cardano-sl/pull/3216) ATTENTION: [@coot](https://github.com/coot) -- [CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645) ATTENTION: [@CodiePP](https://github.com/CodiePP) - [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) - [CDEC-285](https://iohk.myjetbrains.com/youtrack/issue/CDEC-285) [#3168](https://github.com/input-output-hk/cardano-sl/pull/3168) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) ATTENTION: [@disassembler](https://github.com/disassembler) @@ -160,8 +154,6 @@ Please add entries for your tickets: - [CO-436](https://iohk.myjetbrains.com/youtrack/issue/CO-436) [#3791](https://github.com/input-output-hk/cardano-sl/pull/3791) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) ATTENTION: [@nc6](https://github.com/nc6) - [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) -- [PB-13](https://iohk.myjetbrains.com/youtrack/issue/PB-13) [#3126](https://github.com/input-output-hk/cardano-sl/pull/3126) ATTENTION: [@365andreas](https://github.com/365andreas) -- [PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670) ATTENTION: [@CodiePP](https://github.com/CodiePP) - [PIP-22](https://iohk.myjetbrains.com/youtrack/issue/PIP-22) [#3273](https://github.com/input-output-hk/cardano-sl/pull/3273) ATTENTION: [@jcmincke](https://github.com/jcmincke) - [RCD-28](https://iohk.myjetbrains.com/youtrack/issue/RCD-28) [#3711](https://github.com/input-output-hk/cardano-sl/pull/3711) ATTENTION: [@coot](https://github.com/coot) - [TSD-116](https://iohk.myjetbrains.com/youtrack/issue/TSD-116) [#3716](https://github.com/input-output-hk/cardano-sl/pull/3716) ATTENTION: [@ksaric](https://github.com/ksaric) @@ -191,7 +183,7 @@ Please add entries for your tickets: - cardano-sl exposes a new package `x509` with tooling for defining a PKI infrastructure from pure Haskell. This is basically an export of the internals of the tool `cardano-sl-x509-generate` (CO-387, [DEVOPS-992](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-992), [#3367](https://github.com/input-output-hk/cardano-sl/pull/3367)) -- Structured logging ([CBR-207](https://iohk.myjetbrains.com/youtrack/issue/CBR-207), [#3476](https://github.com/input-output-hk/cardano-sl/pull/3476) [#3477](https://github.com/input-output-hk/cardano-sl/pull/3477), [CBR-211](https://iohk.myjetbrains.com/youtrack/issue/CBR-211) [#3507](https://github.com/input-output-hk/cardano-sl/pull/3507), [CBR-213](https://iohk.myjetbrains.com/youtrack/issue/CBR-213), [#3481](https://github.com/input-output-hk/cardano-sl/pull/3481), [DEVOPS-1097](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1097), [#3764](https://github.com/input-output-hk/cardano-sl/pull/3764), [#3395](https://github.com/input-output-hk/cardano-sl/pull/3395), [#3443](https://github.com/input-output-hk/cardano-sl/pull/3443), [DEVOPS-1109](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1109), [#3785](https://github.com/input-output-hk/cardano-sl/pull/3785)) +- Structured logging ([CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645), [CBR-207](https://iohk.myjetbrains.com/youtrack/issue/CBR-207), [#3476](https://github.com/input-output-hk/cardano-sl/pull/3476) [#3477](https://github.com/input-output-hk/cardano-sl/pull/3477), [CBR-211](https://iohk.myjetbrains.com/youtrack/issue/CBR-211) [#3507](https://github.com/input-output-hk/cardano-sl/pull/3507), [CBR-213](https://iohk.myjetbrains.com/youtrack/issue/CBR-213), [#3481](https://github.com/input-output-hk/cardano-sl/pull/3481), [DEVOPS-1097](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1097), [#3764](https://github.com/input-output-hk/cardano-sl/pull/3764), [#3395](https://github.com/input-output-hk/cardano-sl/pull/3395), [#3443](https://github.com/input-output-hk/cardano-sl/pull/3443), [DEVOPS-1109](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1109), [#3785](https://github.com/input-output-hk/cardano-sl/pull/3785), [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655), [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709), [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523), [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603), [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609)) - New data layer for wallet ([CBR-150](https://iohk.myjetbrains.com/youtrack/issue/CBR-150), [#3245](https://github.com/input-output-hk/cardano-sl/pull/3245), [CBR-227](https://iohk.myjetbrains.com/youtrack/issue/CBR-227), [#3393](https://github.com/input-output-hk/cardano-sl/pull/3393)) @@ -260,6 +252,8 @@ Please add entries for your tickets: - Add failure injection options to wallet for Daedalus testing ([DEVOPS-1086](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1086), [#3787](https://github.com/input-output-hk/cardano-sl/pull/3787)) +- Benchmarking support ([PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670)) + - #### Reorganize and clean up `core` packages - Move code from `infra` to `sinbin` so that `infra` can be moved "up" in the dependency graph ([CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416): [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185), [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202), [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209)) - Move code from `networking` to `core`, so that `networking` can be moved "up" ([CDEC-432](https://iohk.myjetbrains.com/youtrack/issue/CDEC-432): [#3238](https://github.com/input-output-hk/cardano-sl/pull/3238), [#3261](https://github.com/input-output-hk/cardano-sl/pull/3261), [#3266](https://github.com/input-output-hk/cardano-sl/pull/3266)) From 54d803e2061d18ee96fb053c5dd169d4e708b6e7 Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Mon, 12 Nov 2018 22:17:58 -0500 Subject: [PATCH 026/103] [DEVOPS-1126] add required jobset to release.nix (#3852) --- release.nix | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/release.nix b/release.nix index ea28d538e6a..cd678f83d62 100644 --- a/release.nix +++ b/release.nix @@ -92,7 +92,7 @@ let dockerImage = wrapDockerImage cluster; }; }; -in mapped // { +in pkgs.lib.fix (jobsets: mapped // { inherit tests; inherit (pkgs) cabal2nix; nixpkgs = let @@ -100,4 +100,20 @@ in mapped // { ln -sv ${fixedNixpkgs} $out ''; in if 0 <= builtins.compareVersions builtins.nixVersion "1.12" then wrapped else fixedNixpkgs; -} // (builtins.listToAttrs (map makeRelease [ "mainnet" "staging" ])) + required = pkgs.lib.hydraJob (pkgs.releaseTools.aggregate { + name = "cardano-required-checks"; + constituents = + let + all = x: map (system: x.${system}) supportedSystems; + in + [ + (all jobsets.all-cardano-sl) + (all jobsets.daedalus-bridge) + jobsets.mainnet.connectScripts.wallet.x86_64-linux + jobsets.tests.hlint + jobsets.tests.shellcheck + jobsets.tests.stylishHaskell + jobsets.tests.swaggerSchemaValidation + ]; + }); +} // (builtins.listToAttrs (map makeRelease [ "mainnet" "staging" ]))) From 0b84f467068f6c3cd07671ac107d44b6b1e67a6f Mon Sep 17 00:00:00 2001 From: KtorZ Date: Tue, 13 Nov 2018 11:35:16 +0100 Subject: [PATCH 027/103] [RCD-37] ChangeLog: complete CHANGELOG entries for Squad 1 --- CHANGELOG.md | 114 ++++++++++++++++++++++++++++----------------------- 1 file changed, 62 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 834a51fe4eb..1664ed12ae4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,6 @@ Please add entries for your tickets: - [CBR-250](https://iohk.myjetbrains.com/youtrack/issue/CBR-250) [#3388](https://github.com/input-output-hk/cardano-sl/pull/3388) [#3454](https://github.com/input-output-hk/cardano-sl/pull/3454) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-27](https://iohk.myjetbrains.com/youtrack/issue/CBR-27) [#3592](https://github.com/input-output-hk/cardano-sl/pull/3592) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-285](https://iohk.myjetbrains.com/youtrack/issue/CBR-285) [#3117](https://github.com/input-output-hk/cardano-sl/pull/3117) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-288](https://iohk.myjetbrains.com/youtrack/issue/CBR-288) [#3128](https://github.com/input-output-hk/cardano-sl/pull/3128) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CBR-289](https://iohk.myjetbrains.com/youtrack/issue/CBR-289) [#3043](https://github.com/input-output-hk/cardano-sl/pull/3043) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-304](https://iohk.myjetbrains.com/youtrack/issue/CBR-304) [#3116](https://github.com/input-output-hk/cardano-sl/pull/3116) ATTENTION: [@uroboros](https://github.com/uroboros) - [CBR-313](https://iohk.myjetbrains.com/youtrack/issue/CBR-313) [#3256](https://github.com/input-output-hk/cardano-sl/pull/3256) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-314](https://iohk.myjetbrains.com/youtrack/issue/CBR-314) [#3187](https://github.com/input-output-hk/cardano-sl/pull/3187) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) @@ -31,7 +29,6 @@ Please add entries for your tickets: - [CBR-363](https://iohk.myjetbrains.com/youtrack/issue/CBR-363) [#3496](https://github.com/input-output-hk/cardano-sl/pull/3496) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-364](https://iohk.myjetbrains.com/youtrack/issue/CBR-364) [#3379](https://github.com/input-output-hk/cardano-sl/pull/3379) [#3382](https://github.com/input-output-hk/cardano-sl/pull/3382) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk), [@edsko](https://github.com/edsko) - [CBR-365](https://iohk.myjetbrains.com/youtrack/issue/CBR-365) [#3502](https://github.com/input-output-hk/cardano-sl/pull/3502) [#3531](https://github.com/input-output-hk/cardano-sl/pull/3531) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-366](https://iohk.myjetbrains.com/youtrack/issue/CBR-366) [#3469](https://github.com/input-output-hk/cardano-sl/pull/3469) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CBR-369](https://iohk.myjetbrains.com/youtrack/issue/CBR-369) [#3418](https://github.com/input-output-hk/cardano-sl/pull/3418) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-371](https://iohk.myjetbrains.com/youtrack/issue/CBR-371) [#3463](https://github.com/input-output-hk/cardano-sl/pull/3463) [#3563](https://github.com/input-output-hk/cardano-sl/pull/3563) ATTENTION: [@k0001](https://github.com/k0001), [@kderme](https://github.com/kderme) - [CBR-374](https://iohk.myjetbrains.com/youtrack/issue/CBR-374) [#3493](https://github.com/input-output-hk/cardano-sl/pull/3493) ATTENTION: [@edsko](https://github.com/edsko) @@ -50,41 +47,26 @@ Please add entries for your tickets: - [CBR-393](https://iohk.myjetbrains.com/youtrack/issue/CBR-393) [#3552](https://github.com/input-output-hk/cardano-sl/pull/3552) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-394](https://iohk.myjetbrains.com/youtrack/issue/CBR-394) [#3488](https://github.com/input-output-hk/cardano-sl/pull/3488) ATTENTION: [@coot](https://github.com/coot) - [CBR-396](https://iohk.myjetbrains.com/youtrack/issue/CBR-396) [#3453](https://github.com/input-output-hk/cardano-sl/pull/3453) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-398](https://iohk.myjetbrains.com/youtrack/issue/CBR-398) [#3525](https://github.com/input-output-hk/cardano-sl/pull/3525) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CBR-400](https://iohk.myjetbrains.com/youtrack/issue/CBR-400) [#3486](https://github.com/input-output-hk/cardano-sl/pull/3486) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CBR-405](https://iohk.myjetbrains.com/youtrack/issue/CBR-405) [#3516](https://github.com/input-output-hk/cardano-sl/pull/3516) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-407](https://iohk.myjetbrains.com/youtrack/issue/CBR-407) [#3520](https://github.com/input-output-hk/cardano-sl/pull/3520) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-408](https://iohk.myjetbrains.com/youtrack/issue/CBR-408) [#3571](https://github.com/input-output-hk/cardano-sl/pull/3571) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CBR-409](https://iohk.myjetbrains.com/youtrack/issue/CBR-409) [#3575](https://github.com/input-output-hk/cardano-sl/pull/3575) ATTENTION: [@uroboros](https://github.com/uroboros) - [CBR-413](https://iohk.myjetbrains.com/youtrack/issue/CBR-413) [#3546](https://github.com/input-output-hk/cardano-sl/pull/3546) [#3566](https://github.com/input-output-hk/cardano-sl/pull/3566) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-414](https://iohk.myjetbrains.com/youtrack/issue/CBR-414) [#3582](https://github.com/input-output-hk/cardano-sl/pull/3582) ATTENTION: [@cleverca22](https://github.com/cleverca22) - [CBR-416](https://iohk.myjetbrains.com/youtrack/issue/CBR-416) [#3580](https://github.com/input-output-hk/cardano-sl/pull/3580) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-417](https://iohk.myjetbrains.com/youtrack/issue/CBR-417) [#3568](https://github.com/input-output-hk/cardano-sl/pull/3568) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CBR-419](https://iohk.myjetbrains.com/youtrack/issue/CBR-419) [#3590](https://github.com/input-output-hk/cardano-sl/pull/3590) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-426](https://iohk.myjetbrains.com/youtrack/issue/CBR-426) [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CBR-427](https://iohk.myjetbrains.com/youtrack/issue/CBR-427) [#3586](https://github.com/input-output-hk/cardano-sl/pull/3586) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-434](https://iohk.myjetbrains.com/youtrack/issue/CBR-434) [#3612](https://github.com/input-output-hk/cardano-sl/pull/3612) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-435](https://iohk.myjetbrains.com/youtrack/issue/CBR-435) [#3628](https://github.com/input-output-hk/cardano-sl/pull/3628) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-437](https://iohk.myjetbrains.com/youtrack/issue/CBR-437) [#3621](https://github.com/input-output-hk/cardano-sl/pull/3621) ATTENTION: [@Anviking](https://github.com/Anviking) - [CBR-438](https://iohk.myjetbrains.com/youtrack/issue/CBR-438) [#3634](https://github.com/input-output-hk/cardano-sl/pull/3634) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-440](https://iohk.myjetbrains.com/youtrack/issue/CBR-440) [#3635](https://github.com/input-output-hk/cardano-sl/pull/3635) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-441](https://iohk.myjetbrains.com/youtrack/issue/CBR-441) [#3638](https://github.com/input-output-hk/cardano-sl/pull/3638) [#3654](https://github.com/input-output-hk/cardano-sl/pull/3654) [#3669](https://github.com/input-output-hk/cardano-sl/pull/3669) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-442](https://iohk.myjetbrains.com/youtrack/issue/CBR-442) [#3641](https://github.com/input-output-hk/cardano-sl/pull/3641) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-444](https://iohk.myjetbrains.com/youtrack/issue/CBR-444) [#3701](https://github.com/input-output-hk/cardano-sl/pull/3701) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-445](https://iohk.myjetbrains.com/youtrack/issue/CBR-445) [#3720](https://github.com/input-output-hk/cardano-sl/pull/3720) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-446](https://iohk.myjetbrains.com/youtrack/issue/CBR-446) [#3650](https://github.com/input-output-hk/cardano-sl/pull/3650) ATTENTION: [@parsonsmatt](https://github.com/parsonsmatt) -- [CBR-449](https://iohk.myjetbrains.com/youtrack/issue/CBR-449) [#3705](https://github.com/input-output-hk/cardano-sl/pull/3705) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-452](https://iohk.myjetbrains.com/youtrack/issue/CBR-452) [#3695](https://github.com/input-output-hk/cardano-sl/pull/3695) ATTENTION: [@uroboros](https://github.com/uroboros) - [CBR-453](https://iohk.myjetbrains.com/youtrack/issue/CBR-453) [#3717](https://github.com/input-output-hk/cardano-sl/pull/3717) [#3726](https://github.com/input-output-hk/cardano-sl/pull/3726) ATTENTION: [@uroboros](https://github.com/uroboros) - [CBR-459](https://iohk.myjetbrains.com/youtrack/issue/CBR-459) [#3696](https://github.com/input-output-hk/cardano-sl/pull/3696) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-460](https://iohk.myjetbrains.com/youtrack/issue/CBR-460) [#3698](https://github.com/input-output-hk/cardano-sl/pull/3698) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-462](https://iohk.myjetbrains.com/youtrack/issue/CBR-462) [#3704](https://github.com/input-output-hk/cardano-sl/pull/3704) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CBR-464](https://iohk.myjetbrains.com/youtrack/issue/CBR-464) [#3710](https://github.com/input-output-hk/cardano-sl/pull/3710) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) ATTENTION: [@avieth](https://github.com/avieth), [@cleverca22](https://github.com/cleverca22) -- [CBR-470](https://iohk.myjetbrains.com/youtrack/issue/CBR-470) [#3773](https://github.com/input-output-hk/cardano-sl/pull/3773) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CBR-471](https://iohk.myjetbrains.com/youtrack/issue/CBR-471) [#3786](https://github.com/input-output-hk/cardano-sl/pull/3786) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CBR-472](https://iohk.myjetbrains.com/youtrack/issue/CBR-472) [#3765](https://github.com/input-output-hk/cardano-sl/pull/3765) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-96](https://iohk.myjetbrains.com/youtrack/issue/CBR-96) [#3127](https://github.com/input-output-hk/cardano-sl/pull/3127) [#3190](https://github.com/input-output-hk/cardano-sl/pull/3190) [#3192](https://github.com/input-output-hk/cardano-sl/pull/3192) [#3194](https://github.com/input-output-hk/cardano-sl/pull/3194) [#3195](https://github.com/input-output-hk/cardano-sl/pull/3195) [#3216](https://github.com/input-output-hk/cardano-sl/pull/3216) ATTENTION: [@coot](https://github.com/coot) - [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) @@ -123,35 +105,14 @@ Please add entries for your tickets: - [CDEC-524](https://iohk.myjetbrains.com/youtrack/issue/CDEC-524) [#3506](https://github.com/input-output-hk/cardano-sl/pull/3506) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-585](https://iohk.myjetbrains.com/youtrack/issue/CDEC-585) [#3614](https://github.com/input-output-hk/cardano-sl/pull/3614) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-623](https://iohk.myjetbrains.com/youtrack/issue/CDEC-623) [#3735](https://github.com/input-output-hk/cardano-sl/pull/3735) ATTENTION: [@ruhatch](https://github.com/ruhatch) -- [CLS-2524](https://iohk.myjetbrains.com/youtrack/issue/CLS-2524) [#3793](https://github.com/input-output-hk/cardano-sl/pull/3793) ATTENTION: [@Anviking](https://github.com/Anviking) -- [CO-298](https://iohk.myjetbrains.com/youtrack/issue/CO-298) [#3013](https://github.com/input-output-hk/cardano-sl/pull/3013) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-324](https://iohk.myjetbrains.com/youtrack/issue/CO-324) [#3210](https://github.com/input-output-hk/cardano-sl/pull/3210) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-327](https://iohk.myjetbrains.com/youtrack/issue/CO-327) [#3215](https://github.com/input-output-hk/cardano-sl/pull/3215) ATTENTION: [@Anviking](https://github.com/Anviking) -- [CO-328](https://iohk.myjetbrains.com/youtrack/issue/CO-328) [#3212](https://github.com/input-output-hk/cardano-sl/pull/3212) ATTENTION: [@KtorZ](https://github.com/KtorZ) +- [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) +- [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) ATTENTION: [@kderme](https://github.com/kderme) +- [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) ATTENTION: [@avieth](https://github.com/avieth), [@cleverca22](https://github.com/cleverca22) - [CO-329](https://iohk.myjetbrains.com/youtrack/issue/CO-329) [#3178](https://github.com/input-output-hk/cardano-sl/pull/3178) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) ATTENTION: [@parsonsmatt](https://github.com/parsonsmatt) -- [CO-351](https://iohk.myjetbrains.com/youtrack/issue/CO-351) [#3391](https://github.com/input-output-hk/cardano-sl/pull/3391) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3573](https://github.com/input-output-hk/cardano-sl/pull/3573) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357) [#3639](https://github.com/input-output-hk/cardano-sl/pull/3639) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-367](https://iohk.myjetbrains.com/youtrack/issue/CO-367) [#3661](https://github.com/input-output-hk/cardano-sl/pull/3661) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) -- [CO-370](https://iohk.myjetbrains.com/youtrack/issue/CO-370) [#3596](https://github.com/input-output-hk/cardano-sl/pull/3596) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-371](https://iohk.myjetbrains.com/youtrack/issue/CO-371) [#3605](https://github.com/input-output-hk/cardano-sl/pull/3605) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-386](https://iohk.myjetbrains.com/youtrack/issue/CO-386) [#3608](https://github.com/input-output-hk/cardano-sl/pull/3608) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-388](https://iohk.myjetbrains.com/youtrack/issue/CO-388) [#3610](https://github.com/input-output-hk/cardano-sl/pull/3610) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-389](https://iohk.myjetbrains.com/youtrack/issue/CO-389) [#3620](https://github.com/input-output-hk/cardano-sl/pull/3620) [#3658](https://github.com/input-output-hk/cardano-sl/pull/3658) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-390](https://iohk.myjetbrains.com/youtrack/issue/CO-390) [#3629](https://github.com/input-output-hk/cardano-sl/pull/3629) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CO-391](https://iohk.myjetbrains.com/youtrack/issue/CO-391) [#3656](https://github.com/input-output-hk/cardano-sl/pull/3656) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) -- [CO-395](https://iohk.myjetbrains.com/youtrack/issue/CO-395) [#3672](https://github.com/input-output-hk/cardano-sl/pull/3672) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-398](https://iohk.myjetbrains.com/youtrack/issue/CO-398) [#3678](https://github.com/input-output-hk/cardano-sl/pull/3678) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) -- [CO-399](https://iohk.myjetbrains.com/youtrack/issue/CO-399) [#3684](https://github.com/input-output-hk/cardano-sl/pull/3684) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) -- [CO-400](https://iohk.myjetbrains.com/youtrack/issue/CO-400) [#3680](https://github.com/input-output-hk/cardano-sl/pull/3680) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-409](https://iohk.myjetbrains.com/youtrack/issue/CO-409) [#3697](https://github.com/input-output-hk/cardano-sl/pull/3697) ATTENTION: [@KtorZ](https://github.com/KtorZ) - [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3733](https://github.com/input-output-hk/cardano-sl/pull/3733) ATTENTION: [@intricate](https://github.com/intricate) - [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3756](https://github.com/input-output-hk/cardano-sl/pull/3756) ATTENTION: [@intricate](https://github.com/intricate) - [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3775](https://github.com/input-output-hk/cardano-sl/pull/3775) ATTENTION: [@intricate](https://github.com/intricate) -- [CO-417](https://iohk.myjetbrains.com/youtrack/issue/CO-417) [#3727](https://github.com/input-output-hk/cardano-sl/pull/3727) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) -- [CO-423](https://iohk.myjetbrains.com/youtrack/issue/CO-423) [#3732](https://github.com/input-output-hk/cardano-sl/pull/3732) ATTENTION: [@KtorZ](https://github.com/KtorZ) -- [CO-436](https://iohk.myjetbrains.com/youtrack/issue/CO-436) [#3791](https://github.com/input-output-hk/cardano-sl/pull/3791) ATTENTION: [@paweljakubas](https://github.com/paweljakubas) - [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) ATTENTION: [@nc6](https://github.com/nc6) - [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) - [PIP-22](https://iohk.myjetbrains.com/youtrack/issue/PIP-22) [#3273](https://github.com/input-output-hk/cardano-sl/pull/3273) ATTENTION: [@jcmincke](https://github.com/jcmincke) @@ -175,13 +136,19 @@ Please add entries for your tickets: `configuration.yaml` file under the `wallet` section. The API will now return a 429 error containing the microseconds to wait until retry. ([CBR-179](https://iohk.myjetbrains.com/youtrack/issue/CBR-179), [#3431](https://github.com/input-output-hk/cardano-sl/pull/3431)) -- We can force an NTP-check when getting node-info via the API (`?force_ntp_check` query flag) ([CO-325](https://iohk.myjetbrains.com/youtrack/issue/CO-325), [#3372](https://github.com/input-output-hk/cardano-sl/pull/3372), [#3461](https://github.com/input-output-hk/cardano-sl/pull/3461), [#3607](https://github.com/input-output-hk/cardano-sl/pull/3607)) +- We can force an NTP-check when getting node-info via the API (`?force_ntp_check` query flag) + - [CO-325](https://iohk.myjetbrains.com/youtrack/issue/CO-325), [#3372](https://github.com/input-output-hk/cardano-sl/pull/3372), [#3461](https://github.com/input-output-hk/cardano-sl/pull/3461), [#3607](https://github.com/input-output-hk/cardano-sl/pull/3607) + - [CBR-427](https://iohk.myjetbrains.com/youtrack/issue/CBR-427) [#3586](https://github.com/input-output-hk/cardano-sl/pull/3586) + +- The API provides an endpoint to retrieve basic statistics on the UTxO distribution of a wallet (`/api/v1/wallets/{walletId}/statistics`) ([CO-347](https://iohk.myjetbrains.com/youtrack/issue/CO-347), [#3402](https://github.com/input-output-hk/cardano-sl/pull/3402)) -- The API provides an endpoint to retrieve basic statistics on the UTxO distribution of a wallet - (`/api/v1/wallets/{walletId}/statistics`). (CO-325) + - [CO-388](https://iohk.myjetbrains.com/youtrack/issue/CO-388), [#3610](https://github.com/input-output-hk/cardano-sl/pull/3610) + - [CO-389](https://iohk.myjetbrains.com/youtrack/issue/CO-389), [#3620](https://github.com/input-output-hk/cardano-sl/pull/3620), [#3658](https://github.com/input-output-hk/cardano-sl/pull/3658) -- cardano-sl exposes a new package `x509` with tooling for defining a PKI infrastructure from - pure Haskell. This is basically an export of the internals of the tool `cardano-sl-x509-generate` (CO-387, [DEVOPS-992](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-992), [#3367](https://github.com/input-output-hk/cardano-sl/pull/3367)) +- cardano-sl exposes a new package `x509` with tooling for defining a PKI infrastructure from pure Haskell. This is basically an export of the internals of the tool `cardano-sl-x509-generate` + - [DEVOPS-992](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-992), [#3367](https://github.com/input-output-hk/cardano-sl/pull/3367) + - [CO-388](https://iohk.myjetbrains.com/youtrack/issue/CO-388), [#3610](https://github.com/input-output-hk/cardano-sl/pull/3610) + - [CO-389](https://iohk.myjetbrains.com/youtrack/issue/CO-389), [#3620](https://github.com/input-output-hk/cardano-sl/pull/3620), [#3658](https://github.com/input-output-hk/cardano-sl/pull/3658) - Structured logging ([CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645), [CBR-207](https://iohk.myjetbrains.com/youtrack/issue/CBR-207), [#3476](https://github.com/input-output-hk/cardano-sl/pull/3476) [#3477](https://github.com/input-output-hk/cardano-sl/pull/3477), [CBR-211](https://iohk.myjetbrains.com/youtrack/issue/CBR-211) [#3507](https://github.com/input-output-hk/cardano-sl/pull/3507), [CBR-213](https://iohk.myjetbrains.com/youtrack/issue/CBR-213), [#3481](https://github.com/input-output-hk/cardano-sl/pull/3481), [DEVOPS-1097](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1097), [#3764](https://github.com/input-output-hk/cardano-sl/pull/3764), [#3395](https://github.com/input-output-hk/cardano-sl/pull/3395), [#3443](https://github.com/input-output-hk/cardano-sl/pull/3443), [DEVOPS-1109](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1109), [#3785](https://github.com/input-output-hk/cardano-sl/pull/3785), [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655), [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709), [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523), [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603), [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609)) @@ -194,6 +161,25 @@ Please add entries for your tickets: - Set up supporting tests ([CDEC-500](https://iohk.myjetbrains.com/youtrack/issue/CDEC-500): [#3403](https://github.com/input-output-hk/cardano-sl/pull/3403), [#3405](https://github.com/input-output-hk/cardano-sl/pull/3405)) - Fix JSON golden test helpers ([CDEC-506](https://iohk.myjetbrains.com/youtrack/issue/CDEC-506): [#3415](https://github.com/input-output-hk/cardano-sl/pull/3415)) +- New `cluster` package with utility and CLI to start a full-fledged cluster of nodes + - [CO-423](https://iohk.myjetbrains.com/youtrack/issue/CO-423), [#3732](https://github.com/input-output-hk/cardano-sl/pull/3732) + - [CO-371](https://iohk.myjetbrains.com/youtrack/issue/CO-371), [#3605](https://github.com/input-output-hk/cardano-sl/pull/3605) + - [CO-386](https://iohk.myjetbrains.com/youtrack/issue/CO-386), [#3608](https://github.com/input-output-hk/cardano-sl/pull/3608) + - [CO-390](https://iohk.myjetbrains.com/youtrack/issue/CO-390), [#3629](https://github.com/input-output-hk/cardano-sl/pull/3629) + +- Support query against some fields of the Account resource (balance, addresses) enabling client to fetch only the data they need ([CO-324](https://iohk.myjetbrains.com/youtrack/issue/CO-324), [#3210](https://github.com/input-output-hk/cardano-sl/pull/3210)) + +- Integration with the new data-layer + - [CBR-437](https://iohk.myjetbrains.com/youtrack/issue/CBR-437), [#3621](https://github.com/input-output-hk/cardano-sl/pull/3621) + - [CBR-446](https://iohk.myjetbrains.com/youtrack/issue/CBR-446), [#3650](https://github.com/input-output-hk/cardano-sl/pull/3650) + - [CBR-462](https://iohk.myjetbrains.com/youtrack/issue/CBR-462) [#3704](https://github.com/input-output-hk/cardano-sl/pull/3704) + - [CBR-464](https://iohk.myjetbrains.com/youtrack/issue/CBR-464) [#3710](https://github.com/input-output-hk/cardano-sl/pull/3710) + - [CBR-471](https://iohk.myjetbrains.com/youtrack/issue/CBR-471) [#3786](https://github.com/input-output-hk/cardano-sl/pull/3786) + - [CO-367](https://iohk.myjetbrains.com/youtrack/issue/CO-367) [#3661](https://github.com/input-output-hk/cardano-sl/pull/3661) + - [CBR-366](https://iohk.myjetbrains.com/youtrack/issue/CBR-366) [#3469](https://github.com/input-output-hk/cardano-sl/pull/3469) + +- Finalize port of API V0 to V1 + - [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) ### Fixes @@ -229,6 +215,14 @@ Please add entries for your tickets: - Fix benchmark on OSX ([CSL-2517](https://iohk.myjetbrains.com/youtrack/issue/CSL-2517) [#3348](https://github.com/input-output-hk/cardano-sl/pull/3348)) +- Fix logger implementation, enabling pure logger to be used without side-effects ([CO-409](https://iohk.myjetbrains.com/youtrack/issue/CO-409), [#3697](https://github.com/input-output-hk/cardano-sl/pull/3697)) + +- Crash host node when the underlying wallet dies ([CBR-426](https://iohk.myjetbrains.com/youtrack/issue/CBR-426), [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584)) + +- Ensure correct file permissions are set when generate x509 certificates ([CBR-470](https://iohk.myjetbrains.com/youtrack/issue/CBR-470), [#3773](https://github.com/input-output-hk/cardano-sl/pull/3773)) + +- Fix checksum verification in BIP-39 implementation ([CO-298](https://iohk.myjetbrains.com/youtrack/issue/CO-298), [#3013](https://github.com/input-output-hk/cardano-sl/pull/3013)) + ### Improvements - Friendly error mistakes from deserializing invalid addresses instead of brutal 500 ([CBR-283](https://iohk.myjetbrains.com/youtrack/issue/CBR-283)) @@ -237,14 +231,13 @@ Please add entries for your tickets: - Small refactor of wallet Errors implementation to be more maintainable ([CBR-26](https://iohk.myjetbrains.com/youtrack/issue/CBR-26), [#3429](https://github.com/input-output-hk/cardano-sl/pull/3429)) -- Content-Type parser is now more lenient and accepts `application/json`, `application/json;charset=utf-8` and - no Content-Type at all (defaulting to `application/json`). +- Content-Type parser is now more lenient and accepts `application/json`, `application/json;charset=utf-8` and no Content-Type at all (defaulting to `application/json`) ([CO-370](https://iohk.myjetbrains.com/youtrack/issue/CO-370), [#3596](https://github.com/input-output-hk/cardano-sl/pull/3596)) - The codebase now relies on the package `cryptonite` (instead of `ed25519`) for Ed25519 implementation (CO-325) - **[API BREAKING CHANGE]** Improve diagnostic for `NotEnoughMoney` error ([CBR-461](https://iohk.myjetbrains.com/youtrack/issue/CBR-461), [#3702](https://github.com/input-output-hk/cardano-sl/pull/3702)) -- When Content-Type's main MIME-type cannot fall back to 'application/json' then UnsupportedMimeTypeError is returned +- When Content-Type's main MIME-type cannot fall back to 'application/json' then UnsupportedMimeTypeError is returned ([CO-417](https://iohk.myjetbrains.com/youtrack/issue/CO-417), [#3727](https://github.com/input-output-hk/cardano-sl/pull/3727)) - Add `cardano-node --no-tls` option to wallet ([DEVOPS-879](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-879), [#3074](https://github.com/input-output-hk/cardano-sl/pull/3074)) @@ -262,13 +255,30 @@ Please add entries for your tickets: - Remove partial-function record accessors using `deriveIndexedBi` TH function ([CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385): [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153)) - Create a script to visualize the package dependency graph within `cardano-sl` ([CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429): [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227)) +- Improve readability and execution of various integration tests + - [CO-398](https://iohk.myjetbrains.com/youtrack/issue/CO-398), [#3678](https://github.com/input-output-hk/cardano-sl/pull/3678) + - [CO-400](https://iohk.myjetbrains.com/youtrack/issue/CO-400), [#3680](https://github.com/input-output-hk/cardano-sl/pull/3680) + - [CO-436](https://iohk.myjetbrains.com/youtrack/issue/CO-436), [#3791](https://github.com/input-output-hk/cardano-sl/pull/3791) + - [CBR-408](https://iohk.myjetbrains.com/youtrack/issue/CBR-408), [#3571](https://github.com/input-output-hk/cardano-sl/pull/3571) + - [CBR-417](https://iohk.myjetbrains.com/youtrack/issue/CBR-417), [#3568](https://github.com/input-output-hk/cardano-sl/pull/3568) + - [CO-357](https://iohk.myjetbrains.com/youtrack/issue/CO-357), [#3573](https://github.com/input-output-hk/cardano-sl/pull/3573), [#3639](https://github.com/input-output-hk/cardano-sl/pull/3639) + +- Add integration tests to test redemption of certificates ([CBR-398](https://iohk.myjetbrains.com/youtrack/issue/CBR-398), [#3525](https://github.com/input-output-hk/cardano-sl/pull/3525)) + +- Review implementation of the BIP39 (Mnemonic Words) implementation + - [CBR-288](https://iohk.myjetbrains.com/youtrack/issue/CBR-288) [#3128](https://github.com/input-output-hk/cardano-sl/pull/3128) + - [CBR-289](https://iohk.myjetbrains.com/youtrack/issue/CBR-289) [#3043](https://github.com/input-output-hk/cardano-sl/pull/3043) + ### Specifications ### Documentation -- Make an inventory of existing wallet errors and exceptions (CBR-307) +- Make an inventory of existing wallet errors and exceptions ([CBR-307](https://iohk.myjetbrains.com/youtrack/issue/CO-307)) -- wallet-new README has been improved (especially on sections about testing) and updated (CO-325) +- Various API documentation / guides fixes + - [CO-327](https://iohk.myjetbrains.com/youtrack/issue/CO-327), [#3215](https://github.com/input-output-hk/cardano-sl/pull/3215) + - [CO-328](https://iohk.myjetbrains.com/youtrack/issue/CO-328), [#3212](https://github.com/input-output-hk/cardano-sl/pull/3212) + - [CO-351](https://iohk.myjetbrains.com/youtrack/issue/CO-351) [#3391](https://github.com/input-output-hk/cardano-sl/pull/3391) - Documentation updates for Nix 2.0 ([DEVOPS-976](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-976), [#3311](https://github.com/input-output-hk/cardano-sl/pull/3311), [#3343](https://github.com/input-output-hk/cardano-sl/pull/3343)) From c986e5b29133bf44caa17c4c7c958945a6ae4bac Mon Sep 17 00:00:00 2001 From: Rupert Horlick Date: Tue, 13 Nov 2018 09:51:21 -0400 Subject: [PATCH 028/103] Update CHANGELOG.md for ruhatch --- CHANGELOG.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1664ed12ae4..189606fd063 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,7 +47,6 @@ Please add entries for your tickets: - [CBR-393](https://iohk.myjetbrains.com/youtrack/issue/CBR-393) [#3552](https://github.com/input-output-hk/cardano-sl/pull/3552) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-394](https://iohk.myjetbrains.com/youtrack/issue/CBR-394) [#3488](https://github.com/input-output-hk/cardano-sl/pull/3488) ATTENTION: [@coot](https://github.com/coot) - [CBR-396](https://iohk.myjetbrains.com/youtrack/issue/CBR-396) [#3453](https://github.com/input-output-hk/cardano-sl/pull/3453) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-400](https://iohk.myjetbrains.com/youtrack/issue/CBR-400) [#3486](https://github.com/input-output-hk/cardano-sl/pull/3486) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CBR-405](https://iohk.myjetbrains.com/youtrack/issue/CBR-405) [#3516](https://github.com/input-output-hk/cardano-sl/pull/3516) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-407](https://iohk.myjetbrains.com/youtrack/issue/CBR-407) [#3520](https://github.com/input-output-hk/cardano-sl/pull/3520) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-409](https://iohk.myjetbrains.com/youtrack/issue/CBR-409) [#3575](https://github.com/input-output-hk/cardano-sl/pull/3575) ATTENTION: [@uroboros](https://github.com/uroboros) @@ -72,11 +71,8 @@ Please add entries for your tickets: - [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) - [CDEC-285](https://iohk.myjetbrains.com/youtrack/issue/CDEC-285) [#3168](https://github.com/input-output-hk/cardano-sl/pull/3168) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) ATTENTION: [@disassembler](https://github.com/disassembler) -- [CDEC-333](https://iohk.myjetbrains.com/youtrack/issue/CDEC-333) [#3615](https://github.com/input-output-hk/cardano-sl/pull/3615) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) ATTENTION: [@coot](https://github.com/coot) -- [CDEC-369](https://iohk.myjetbrains.com/youtrack/issue/CDEC-369) [#3482](https://github.com/input-output-hk/cardano-sl/pull/3482) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) ATTENTION: [@erikd](https://github.com/erikd) -- [CDEC-383](https://iohk.myjetbrains.com/youtrack/issue/CDEC-383) [#3142](https://github.com/input-output-hk/cardano-sl/pull/3142) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-398](https://iohk.myjetbrains.com/youtrack/issue/CDEC-398) [#3251](https://github.com/input-output-hk/cardano-sl/pull/3251) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) @@ -94,17 +90,12 @@ Please add entries for your tickets: - [CDEC-468](https://iohk.myjetbrains.com/youtrack/issue/CDEC-468) [#3304](https://github.com/input-output-hk/cardano-sl/pull/3304) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-474](https://iohk.myjetbrains.com/youtrack/issue/CDEC-474) [#3354](https://github.com/input-output-hk/cardano-sl/pull/3354) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-484](https://iohk.myjetbrains.com/youtrack/issue/CDEC-484) [#3357](https://github.com/input-output-hk/cardano-sl/pull/3357) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-485](https://iohk.myjetbrains.com/youtrack/issue/CDEC-485) [#3351](https://github.com/input-output-hk/cardano-sl/pull/3351) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-498](https://iohk.myjetbrains.com/youtrack/issue/CDEC-498) [#3424](https://github.com/input-output-hk/cardano-sl/pull/3424) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-505](https://iohk.myjetbrains.com/youtrack/issue/CDEC-505) [#3412](https://github.com/input-output-hk/cardano-sl/pull/3412) [#3593](https://github.com/input-output-hk/cardano-sl/pull/3593) [#3600](https://github.com/input-output-hk/cardano-sl/pull/3600) [#3601](https://github.com/input-output-hk/cardano-sl/pull/3601) [#3611](https://github.com/input-output-hk/cardano-sl/pull/3611) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-507](https://iohk.myjetbrains.com/youtrack/issue/CDEC-507) [#3746](https://github.com/input-output-hk/cardano-sl/pull/3746) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-509](https://iohk.myjetbrains.com/youtrack/issue/CDEC-509) [#3437](https://github.com/input-output-hk/cardano-sl/pull/3437) [#3505](https://github.com/input-output-hk/cardano-sl/pull/3505) [#3522](https://github.com/input-output-hk/cardano-sl/pull/3522) [#3549](https://github.com/input-output-hk/cardano-sl/pull/3549) [#3550](https://github.com/input-output-hk/cardano-sl/pull/3550) [#3570](https://github.com/input-output-hk/cardano-sl/pull/3570) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CDEC-510](https://iohk.myjetbrains.com/youtrack/issue/CDEC-510) [#3442](https://github.com/input-output-hk/cardano-sl/pull/3442) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-513](https://iohk.myjetbrains.com/youtrack/issue/CDEC-513) [#3445](https://github.com/input-output-hk/cardano-sl/pull/3445) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-517](https://iohk.myjetbrains.com/youtrack/issue/CDEC-517) [#3497](https://github.com/input-output-hk/cardano-sl/pull/3497) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-524](https://iohk.myjetbrains.com/youtrack/issue/CDEC-524) [#3506](https://github.com/input-output-hk/cardano-sl/pull/3506) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-585](https://iohk.myjetbrains.com/youtrack/issue/CDEC-585) [#3614](https://github.com/input-output-hk/cardano-sl/pull/3614) ATTENTION: [@ruhatch](https://github.com/ruhatch) -- [CDEC-623](https://iohk.myjetbrains.com/youtrack/issue/CDEC-623) [#3735](https://github.com/input-output-hk/cardano-sl/pull/3735) ATTENTION: [@ruhatch](https://github.com/ruhatch) - [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) ATTENTION: [@avieth](https://github.com/avieth), [@cleverca22](https://github.com/cleverca22) @@ -171,7 +162,7 @@ Please add entries for your tickets: - Integration with the new data-layer - [CBR-437](https://iohk.myjetbrains.com/youtrack/issue/CBR-437), [#3621](https://github.com/input-output-hk/cardano-sl/pull/3621) - - [CBR-446](https://iohk.myjetbrains.com/youtrack/issue/CBR-446), [#3650](https://github.com/input-output-hk/cardano-sl/pull/3650) + - [CBR-446](https://iohk.myjetbrains.com/youtrack/issue/CBR-446), [#3650](https://github.com/input-output-hk/cardano-sl/pull/3650) - [CBR-462](https://iohk.myjetbrains.com/youtrack/issue/CBR-462) [#3704](https://github.com/input-output-hk/cardano-sl/pull/3704) - [CBR-464](https://iohk.myjetbrains.com/youtrack/issue/CBR-464) [#3710](https://github.com/input-output-hk/cardano-sl/pull/3710) - [CBR-471](https://iohk.myjetbrains.com/youtrack/issue/CBR-471) [#3786](https://github.com/input-output-hk/cardano-sl/pull/3786) @@ -204,7 +195,7 @@ Please add entries for your tickets: This was misleading since an address that is unknown to the wallet may still belong to the wallet. To reflect this, the V1 endpoint does not fail anymore as it used to when an address is not recognised and returns instead a new field 'is-ours' which indicates either that an address is ours, or that it is 'not-recognised'. ([CBR-401](https://iohk.myjetbrains.com/youtrack/issue/CBR-401), [#3646](https://github.com/input-output-hk/cardano-sl/pull/3646)) - + - **[API BREAKING CHANGE]** A DELETE request to `/api/v1/wallets/{wallet}` now correctly fails with 404 if the wallet doesn't exist. Previously it incorrectly responded with 204. - Fix `commitAndReleaseBuffer: invalid argument (invalid character)` error in Docker image ([DEVOPS-877](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-877), [#3173](https://github.com/input-output-hk/cardano-sl/pull/3173)) @@ -223,6 +214,10 @@ Please add entries for your tickets: - Fix checksum verification in BIP-39 implementation ([CO-298](https://iohk.myjetbrains.com/youtrack/issue/CO-298), [#3013](https://github.com/input-output-hk/cardano-sl/pull/3013)) +- Fix wallet starting bug introduced by [CDEC-509](https://iohk.myjetbrains.com/youtrack/issue/CDEC-509) ([CBR-400](https://iohk.myjetbrains.com/youtrack/issue/CBR-400): [#3486](https://github.com/input-output-hk/cardano-sl/pull/3486)) + +- Fix Haddock errors ([CDEC-585](https://iohk.myjetbrains.com/youtrack/issue/CDEC-585): [#3614](https://github.com/input-output-hk/cardano-sl/pull/3614)) + ### Improvements - Friendly error mistakes from deserializing invalid addresses instead of brutal 500 ([CBR-283](https://iohk.myjetbrains.com/youtrack/issue/CBR-283)) @@ -254,6 +249,13 @@ Please add entries for your tickets: - Switch uses of `pipes` to `conduit`, for consistency ([CDEC-464](https://iohk.myjetbrains.com/youtrack/issue/CDEC-464): [#3305](https://github.com/input-output-hk/cardano-sl/pull/3305)) - Remove partial-function record accessors using `deriveIndexedBi` TH function ([CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385): [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153)) - Create a script to visualize the package dependency graph within `cardano-sl` ([CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429): [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227)) + - Remove `Blockchain` class and clean up `Block` modules ([CDEC-333](https://iohk.myjetbrains.com/youtrack/issue/CDEC-333): [#3615](https://github.com/input-output-hk/cardano-sl/pull/3615)) + - Remove `HasProtocolConstants` reflection constraint in favour of explicit parameters ([CDEC-369](https://iohk.myjetbrains.com/youtrack/issue/CDEC-369): [#3482](https://github.com/input-output-hk/cardano-sl/pull/3482)) + - Remove remaining reflection constraints from `core` configuration ([CDEC-509](https://iohk.myjetbrains.com/youtrack/issue/CDEC-509): [#3437](https://github.com/input-output-hk/cardano-sl/pull/3437), [#3505](https://github.com/input-output-hk/cardano-sl/pull/3505), [#3522](https://github.com/input-output-hk/cardano-sl/pull/3522), [#3549](https://github.com/input-output-hk/cardano-sl/pull/3549), [#3550](https://github.com/input-output-hk/cardano-sl/pull/3550), [#3570](https://github.com/input-output-hk/cardano-sl/pull/3570)) + - Add `stylish-haskell` enforcement in CI to keep code conformant ([CDEC-383](https://iohk.myjetbrains.com/youtrack/issue/CDEC-383): [#3142](https://github.com/input-output-hk/cardano-sl/pull/3142)) + - Move `Block` datatypes from `core` to `chain` ([CDEC-485](https://iohk.myjetbrains.com/youtrack/issue/CDEC-485): [#3351](https://github.com/input-output-hk/cardano-sl/pull/3351)) + - Move chain-related `core` types to `chain` package ([CDEC-505](https://iohk.myjetbrains.com/youtrack/issue/CDEC-505): [#3412](https://github.com/input-output-hk/cardano-sl/pull/3412), [#3593](https://github.com/input-output-hk/cardano-sl/pull/3593), [#3600](https://github.com/input-output-hk/cardano-sl/pull/3600), [#3601](https://github.com/input-output-hk/cardano-sl/pull/3601), [#3611](https://github.com/input-output-hk/cardano-sl/pull/3611)) + - Add golden tests for `Undo` type ([CDEC-623](https://iohk.myjetbrains.com/youtrack/issue/CDEC-623): [#3735](https://github.com/input-output-hk/cardano-sl/pull/3735)) - Improve readability and execution of various integration tests - [CO-398](https://iohk.myjetbrains.com/youtrack/issue/CO-398), [#3678](https://github.com/input-output-hk/cardano-sl/pull/3678) From b14526f0c24d2d793b3d7058fa3a6b100a199870 Mon Sep 17 00:00:00 2001 From: Luke Nadur Date: Tue, 13 Nov 2018 10:03:22 -0600 Subject: [PATCH 029/103] [RCD-37] ChangeLog: address PR entries assigned to me --- CHANGELOG.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 189606fd063..9149484b8b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -77,23 +77,16 @@ Please add entries for your tickets: - [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) ATTENTION: [@coot](https://github.com/coot) -- [CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418) [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423) [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-425](https://iohk.myjetbrains.com/youtrack/issue/CDEC-425) [#3240](https://github.com/input-output-hk/cardano-sl/pull/3240) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437) [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) ATTENTION: [@coot](https://github.com/coot) - [CDEC-452](https://iohk.myjetbrains.com/youtrack/issue/CDEC-452) [#3281](https://github.com/input-output-hk/cardano-sl/pull/3281) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-453](https://iohk.myjetbrains.com/youtrack/issue/CDEC-453) [#3268](https://github.com/input-output-hk/cardano-sl/pull/3268) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-455](https://iohk.myjetbrains.com/youtrack/issue/CDEC-455) [#3296](https://github.com/input-output-hk/cardano-sl/pull/3296) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-462](https://iohk.myjetbrains.com/youtrack/issue/CDEC-462) [#3286](https://github.com/input-output-hk/cardano-sl/pull/3286) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-466](https://iohk.myjetbrains.com/youtrack/issue/CDEC-466) [#3289](https://github.com/input-output-hk/cardano-sl/pull/3289) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-468](https://iohk.myjetbrains.com/youtrack/issue/CDEC-468) [#3304](https://github.com/input-output-hk/cardano-sl/pull/3304) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-474](https://iohk.myjetbrains.com/youtrack/issue/CDEC-474) [#3354](https://github.com/input-output-hk/cardano-sl/pull/3354) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-484](https://iohk.myjetbrains.com/youtrack/issue/CDEC-484) [#3357](https://github.com/input-output-hk/cardano-sl/pull/3357) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-498](https://iohk.myjetbrains.com/youtrack/issue/CDEC-498) [#3424](https://github.com/input-output-hk/cardano-sl/pull/3424) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-507](https://iohk.myjetbrains.com/youtrack/issue/CDEC-507) [#3746](https://github.com/input-output-hk/cardano-sl/pull/3746) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-510](https://iohk.myjetbrains.com/youtrack/issue/CDEC-510) [#3442](https://github.com/input-output-hk/cardano-sl/pull/3442) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-513](https://iohk.myjetbrains.com/youtrack/issue/CDEC-513) [#3445](https://github.com/input-output-hk/cardano-sl/pull/3445) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-517](https://iohk.myjetbrains.com/youtrack/issue/CDEC-517) [#3497](https://github.com/input-output-hk/cardano-sl/pull/3497) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-524](https://iohk.myjetbrains.com/youtrack/issue/CDEC-524) [#3506](https://github.com/input-output-hk/cardano-sl/pull/3506) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) @@ -101,9 +94,6 @@ Please add entries for your tickets: - [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) ATTENTION: [@avieth](https://github.com/avieth), [@cleverca22](https://github.com/cleverca22) - [CO-329](https://iohk.myjetbrains.com/youtrack/issue/CO-329) [#3178](https://github.com/input-output-hk/cardano-sl/pull/3178) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CO-391](https://iohk.myjetbrains.com/youtrack/issue/CO-391) [#3656](https://github.com/input-output-hk/cardano-sl/pull/3656) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) -- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3733](https://github.com/input-output-hk/cardano-sl/pull/3733) ATTENTION: [@intricate](https://github.com/intricate) -- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3756](https://github.com/input-output-hk/cardano-sl/pull/3756) ATTENTION: [@intricate](https://github.com/intricate) -- [CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410) [#3775](https://github.com/input-output-hk/cardano-sl/pull/3775) ATTENTION: [@intricate](https://github.com/intricate) - [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) ATTENTION: [@nc6](https://github.com/nc6) - [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) - [PIP-22](https://iohk.myjetbrains.com/youtrack/issue/PIP-22) [#3273](https://github.com/input-output-hk/cardano-sl/pull/3273) ATTENTION: [@jcmincke](https://github.com/jcmincke) @@ -148,9 +138,9 @@ Please add entries for your tickets: - Enable new data layer in Docker images for exchanges ([DEVOPS-1037](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1037), [#3545](https://github.com/input-output-hk/cardano-sl/pull/3545), [DEVOPS-1046](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1046), [#3594](https://github.com/input-output-hk/cardano-sl/pull/3594)). - #### Address Discrimination - - Add `NetworkMagic` paramter to `Address`es, so they can be differentiated on different networks. - Set up supporting tests ([CDEC-500](https://iohk.myjetbrains.com/youtrack/issue/CDEC-500): [#3403](https://github.com/input-output-hk/cardano-sl/pull/3403), [#3405](https://github.com/input-output-hk/cardano-sl/pull/3405)) - Fix JSON golden test helpers ([CDEC-506](https://iohk.myjetbrains.com/youtrack/issue/CDEC-506): [#3415](https://github.com/input-output-hk/cardano-sl/pull/3415)) + - Adjust the address format to distinguish testnet and mainnet addresses ([CO-410](https://iohk.myjetbrains.com/youtrack/issue/CO-410): [#3715](https://github.com/input-output-hk/cardano-sl/pull/3715), [#3733](https://github.com/input-output-hk/cardano-sl/pull/3733), [#3756](https://github.com/input-output-hk/cardano-sl/pull/3756), [#3775](https://github.com/input-output-hk/cardano-sl/pull/3775)) - New `cluster` package with utility and CLI to start a full-fledged cluster of nodes - [CO-423](https://iohk.myjetbrains.com/youtrack/issue/CO-423), [#3732](https://github.com/input-output-hk/cardano-sl/pull/3732) @@ -256,6 +246,14 @@ Please add entries for your tickets: - Move `Block` datatypes from `core` to `chain` ([CDEC-485](https://iohk.myjetbrains.com/youtrack/issue/CDEC-485): [#3351](https://github.com/input-output-hk/cardano-sl/pull/3351)) - Move chain-related `core` types to `chain` package ([CDEC-505](https://iohk.myjetbrains.com/youtrack/issue/CDEC-505): [#3412](https://github.com/input-output-hk/cardano-sl/pull/3412), [#3593](https://github.com/input-output-hk/cardano-sl/pull/3593), [#3600](https://github.com/input-output-hk/cardano-sl/pull/3600), [#3601](https://github.com/input-output-hk/cardano-sl/pull/3601), [#3611](https://github.com/input-output-hk/cardano-sl/pull/3611)) - Add golden tests for `Undo` type ([CDEC-623](https://iohk.myjetbrains.com/youtrack/issue/CDEC-623): [#3735](https://github.com/input-output-hk/cardano-sl/pull/3735)) + - Reunite orphan instances + - in `txp` ([CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418): [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179)) + - in `delegation` ([CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423): [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200)) + - in `chain` ([CDEC-484](https://iohk.myjetbrains.com/youtrack/issue/CDEC-484): [#3357](https://github.com/input-output-hk/cardano-sl/pull/3357)) + - Remove `-fno-warn-orphans` from `ghc-options` in `update-test` ([CDEC-455](https://iohk.myjetbrains.com/youtrack/issue/CDEC-455): [#3296](https://github.com/input-output-hk/cardano-sl/pull/3296)) + - Move `Arbitrary` instances from `wallet` to `wallet-test` ([CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437): [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259)) + - Move `Pos.Core.Genesis.Canonical` to `Pos.Util.Json.Canonical` ([CDEC-513](https://iohk.myjetbrains.com/youtrack/issue/CDEC-513): [#3445](https://github.com/input-output-hk/cardano-sl/pull/3445)) + - Weed out unused package dependencies ([CDEC-425](https://iohk.myjetbrains.com/youtrack/issue/CDEC-425): [#3240](https://github.com/input-output-hk/cardano-sl/pull/3240)) - Improve readability and execution of various integration tests - [CO-398](https://iohk.myjetbrains.com/youtrack/issue/CO-398), [#3678](https://github.com/input-output-hk/cardano-sl/pull/3678) From 67fff826fd565d70d4a0389f61aa4b96573487e0 Mon Sep 17 00:00:00 2001 From: kderme Date: Wed, 14 Nov 2018 17:30:46 +0200 Subject: [PATCH 030/103] [RCD-46] fix Prefiltering not ignoring txIds from Inputs --- .../src/Cardano/Wallet/Kernel/PrefilterTx.hs | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/PrefilterTx.hs b/wallet-new/src/Cardano/Wallet/Kernel/PrefilterTx.hs index 04bc810d101..1567b29cc51 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/PrefilterTx.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/PrefilterTx.hs @@ -45,7 +45,7 @@ import Cardano.Wallet.Kernel.DB.HdWallet import Cardano.Wallet.Kernel.DB.InDb (InDb (..), fromDb) import Cardano.Wallet.Kernel.DB.Resolved (ResolvedBlock, ResolvedInput, ResolvedTx, rbContext, rbTxs, - resolvedToTxMeta, rtxInputs, rtxOutputs) + resolvedToTxMeta, rtxInputs, rtxMeta, rtxOutputs) import Cardano.Wallet.Kernel.DB.TxMeta.Types import Cardano.Wallet.Kernel.Types (WalletId (..)) import Cardano.Wallet.Kernel.Util.Core @@ -134,7 +134,7 @@ type UtxoSummaryRaw = Map TxIn (TxOutAux,AddressSummary) -- Accounts. prefilterTx :: WalletKey -> ResolvedTx - -> ((Map HdAccountId (Set TxIn) + -> ((Map HdAccountId (Set (TxIn, TxId)) , Map HdAccountId UtxoSummaryRaw) , [TxMeta]) -- ^ prefiltered inputs, prefiltered output utxo, extended with address summary @@ -148,8 +148,9 @@ prefilterTx wKey tx = ((prefInps',prefOuts'),metas) prefOuts' = Map.map (extendWithSummary (onlyOurInps,onlyOurOuts)) prefOuts + txId = fst $ tx ^. rtxMeta . fromDb -- this Set.map does not change the number of elements because TxIn's are unique. - prefInps' = map (Set.map fst) prefInps + prefInps' = map (Set.map (\(txin, _) -> (txin, txId))) prefInps (prefInCoins :: (Map HdAccountId Coin)) = map (sumCoinsUnsafe . map snd . Set.toList) prefInps (prefOutCoins :: (Map HdAccountId Coin)) = map (\mp -> sumCoinsUnsafe $ map (toCoin . fst) mp) prefOuts' @@ -167,7 +168,7 @@ prefilterTx wKey tx = ((prefInps',prefOuts'),metas) -- 'Map HdAccountId a' since the accounts will be unique accross wallet keys. prefilterTxForWallets :: [WalletKey] -> ResolvedTx - -> ((Map HdAccountId (Set TxIn) + -> ((Map HdAccountId (Set (TxIn, TxId)) , Map HdAccountId UtxoSummaryRaw) , [TxMeta]) prefilterTxForWallets wKeys tx = @@ -295,13 +296,13 @@ prefilterBlock nm block rawKeys = wKeys :: [WalletKey] wKeys = map toWalletKey rawKeys - inps :: [Map HdAccountId (Set TxIn)] + inps :: [Map HdAccountId (Set (TxIn, TxId))] outs :: [Map HdAccountId UtxoSummaryRaw] (ios, conMetas) = unzip $ map (prefilterTxForWallets wKeys) (block ^. rbTxs) (inps, outs) = unzip ios metas = concat conMetas - inpAll :: Map HdAccountId (Set TxIn) + inpAll :: Map HdAccountId (Set (TxIn, TxId)) outAll :: Map HdAccountId UtxoSummaryRaw inpAll = Map.unionsWith Set.union inps outAll = Map.unionsWith Map.union outs @@ -312,14 +313,14 @@ prefilterBlock nm block rawKeys = toWalletKey (wid, esk) = (wid, keyToWalletDecrCredentials nm $ KeyForRegular esk) mkPrefBlock :: BlockContext - -> Map HdAccountId (Set TxIn) + -> Map HdAccountId (Set (TxIn, TxId)) -> Map HdAccountId (Map TxIn (TxOutAux, AddressSummary)) -> HdAccountId -> (HdAccountId, PrefilteredBlock) mkPrefBlock context inps outs accId = (accId, PrefilteredBlock { pfbInputs = inps' , pfbOutputs = outs' - , pfbAddrs = addrs'' + , pfbAddrs = addrs' , pfbMeta = blockMeta' , pfbContext = context }) @@ -329,16 +330,20 @@ mkPrefBlock context inps outs accId = (accId, PrefilteredBlock { byAccountId accId'' def dict = fromMaybe def $ Map.lookup accId'' dict - inps' = byAccountId accId Set.empty inps - (outs', addrs') = fromUtxoSummary (byAccountId accId Map.empty outs) + inpsWithtxId = byAccountId accId Set.empty inps + inps' = Set.map fst inpsWithtxId + -- this Set.map may reduce the number of elements. But this is okey, since we + -- don't care about repetitions on txIds. + txIdsFromInputs = Set.map snd inpsWithtxId + (outs' , addrsFromOutputs) = fromUtxoSummary (byAccountId accId Map.empty outs) - addrs'' = nub $ map fromAddrSummary addrs' - blockMeta' = mkBlockMeta (context ^. bcSlotId . fromDb) addrs' + addrs' = nub $ map fromAddrSummary addrsFromOutputs + blockMeta' = mkBlockMeta (context ^. bcSlotId . fromDb) addrsFromOutputs txIdsFromInputs -mkBlockMeta :: SlotId -> [AddressSummary] -> LocalBlockMeta -mkBlockMeta slotId addrs_ = LocalBlockMeta BlockMeta{..} +mkBlockMeta :: SlotId -> [AddressSummary] -> Set TxId -> LocalBlockMeta +mkBlockMeta slotId addrs_ txIds = LocalBlockMeta BlockMeta{..} where - txIds' = nub $ map addrSummaryTxId addrs_ + txIds' = (Set.toList txIds) <> (nub $ map addrSummaryTxId addrs_) indexedAddrs = indexByAddr addrs_ From 87ebce8d602d77fd607dc3b38d34c51aa83b1c0a Mon Sep 17 00:00:00 2001 From: Jordan Millar Date: Wed, 14 Nov 2018 19:03:28 -0400 Subject: [PATCH 031/103] [RCD-37] ChangeLog: address PR entries assigned to Jimbo4350 --- CHANGELOG.md | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9149484b8b0..f7188fddf56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,26 +69,11 @@ Please add entries for your tickets: - [CBR-472](https://iohk.myjetbrains.com/youtrack/issue/CBR-472) [#3765](https://github.com/input-output-hk/cardano-sl/pull/3765) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-96](https://iohk.myjetbrains.com/youtrack/issue/CBR-96) [#3127](https://github.com/input-output-hk/cardano-sl/pull/3127) [#3190](https://github.com/input-output-hk/cardano-sl/pull/3190) [#3192](https://github.com/input-output-hk/cardano-sl/pull/3192) [#3194](https://github.com/input-output-hk/cardano-sl/pull/3194) [#3195](https://github.com/input-output-hk/cardano-sl/pull/3195) [#3216](https://github.com/input-output-hk/cardano-sl/pull/3216) ATTENTION: [@coot](https://github.com/coot) - [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) -- [CDEC-285](https://iohk.myjetbrains.com/youtrack/issue/CDEC-285) [#3168](https://github.com/input-output-hk/cardano-sl/pull/3168) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) ATTENTION: [@disassembler](https://github.com/disassembler) - [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) ATTENTION: [@coot](https://github.com/coot) - [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) ATTENTION: [@erikd](https://github.com/erikd) -- [CDEC-398](https://iohk.myjetbrains.com/youtrack/issue/CDEC-398) [#3251](https://github.com/input-output-hk/cardano-sl/pull/3251) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) ATTENTION: [@coot](https://github.com/coot) - [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) ATTENTION: [@coot](https://github.com/coot) -- [CDEC-452](https://iohk.myjetbrains.com/youtrack/issue/CDEC-452) [#3281](https://github.com/input-output-hk/cardano-sl/pull/3281) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-453](https://iohk.myjetbrains.com/youtrack/issue/CDEC-453) [#3268](https://github.com/input-output-hk/cardano-sl/pull/3268) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-462](https://iohk.myjetbrains.com/youtrack/issue/CDEC-462) [#3286](https://github.com/input-output-hk/cardano-sl/pull/3286) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-466](https://iohk.myjetbrains.com/youtrack/issue/CDEC-466) [#3289](https://github.com/input-output-hk/cardano-sl/pull/3289) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-468](https://iohk.myjetbrains.com/youtrack/issue/CDEC-468) [#3304](https://github.com/input-output-hk/cardano-sl/pull/3304) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-474](https://iohk.myjetbrains.com/youtrack/issue/CDEC-474) [#3354](https://github.com/input-output-hk/cardano-sl/pull/3354) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-498](https://iohk.myjetbrains.com/youtrack/issue/CDEC-498) [#3424](https://github.com/input-output-hk/cardano-sl/pull/3424) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-507](https://iohk.myjetbrains.com/youtrack/issue/CDEC-507) [#3746](https://github.com/input-output-hk/cardano-sl/pull/3746) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-510](https://iohk.myjetbrains.com/youtrack/issue/CDEC-510) [#3442](https://github.com/input-output-hk/cardano-sl/pull/3442) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-517](https://iohk.myjetbrains.com/youtrack/issue/CDEC-517) [#3497](https://github.com/input-output-hk/cardano-sl/pull/3497) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-524](https://iohk.myjetbrains.com/youtrack/issue/CDEC-524) [#3506](https://github.com/input-output-hk/cardano-sl/pull/3506) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) - [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) ATTENTION: [@avieth](https://github.com/avieth), [@cleverca22](https://github.com/cleverca22) From 3c10602e6d2fda690dd2d55320577f7002a53a4f Mon Sep 17 00:00:00 2001 From: Michael Hueschen Date: Thu, 15 Nov 2018 10:37:35 -0500 Subject: [PATCH 032/103] [RCD-37] Remove PR entry for ticket which was dropped --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7188fddf56..5fa96b38166 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,7 +45,6 @@ Please add entries for your tickets: - [CBR-389](https://iohk.myjetbrains.com/youtrack/issue/CBR-389) [#3439](https://github.com/input-output-hk/cardano-sl/pull/3439) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-390](https://iohk.myjetbrains.com/youtrack/issue/CBR-390) [#3473](https://github.com/input-output-hk/cardano-sl/pull/3473) ATTENTION: [@kderme](https://github.com/kderme) - [CBR-393](https://iohk.myjetbrains.com/youtrack/issue/CBR-393) [#3552](https://github.com/input-output-hk/cardano-sl/pull/3552) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-394](https://iohk.myjetbrains.com/youtrack/issue/CBR-394) [#3488](https://github.com/input-output-hk/cardano-sl/pull/3488) ATTENTION: [@coot](https://github.com/coot) - [CBR-396](https://iohk.myjetbrains.com/youtrack/issue/CBR-396) [#3453](https://github.com/input-output-hk/cardano-sl/pull/3453) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-405](https://iohk.myjetbrains.com/youtrack/issue/CBR-405) [#3516](https://github.com/input-output-hk/cardano-sl/pull/3516) ATTENTION: [@edsko](https://github.com/edsko) - [CBR-407](https://iohk.myjetbrains.com/youtrack/issue/CBR-407) [#3520](https://github.com/input-output-hk/cardano-sl/pull/3520) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) From 31915df540399025fef796b56080d09a211cbe86 Mon Sep 17 00:00:00 2001 From: Michael Hueschen Date: Thu, 15 Nov 2018 10:38:28 -0500 Subject: [PATCH 033/103] [RCD-37] Update PR entry for @erikd --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fa96b38166..e3dbf14e0c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,7 +70,6 @@ Please add entries for your tickets: - [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) - [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) ATTENTION: [@disassembler](https://github.com/disassembler) - [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) ATTENTION: [@coot](https://github.com/coot) -- [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) ATTENTION: [@erikd](https://github.com/erikd) - [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) ATTENTION: [@coot](https://github.com/coot) - [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) ATTENTION: [@coot](https://github.com/coot) - [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) @@ -234,6 +233,7 @@ Please add entries for your tickets: - in `txp` ([CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418): [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179)) - in `delegation` ([CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423): [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200)) - in `chain` ([CDEC-484](https://iohk.myjetbrains.com/youtrack/issue/CDEC-484): [#3357](https://github.com/input-output-hk/cardano-sl/pull/3357)) + - in `lib` - `SafeCopy` instances ([CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377): [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135)) - Remove `-fno-warn-orphans` from `ghc-options` in `update-test` ([CDEC-455](https://iohk.myjetbrains.com/youtrack/issue/CDEC-455): [#3296](https://github.com/input-output-hk/cardano-sl/pull/3296)) - Move `Arbitrary` instances from `wallet` to `wallet-test` ([CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437): [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259)) - Move `Pos.Core.Genesis.Canonical` to `Pos.Util.Json.Canonical` ([CDEC-513](https://iohk.myjetbrains.com/youtrack/issue/CDEC-513): [#3445](https://github.com/input-output-hk/cardano-sl/pull/3445)) From b49b9de9cd5af64e372c07c7502ddeb83948fa6f Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Thu, 15 Nov 2018 14:00:19 -0500 Subject: [PATCH 034/103] [DEVOPS-1134] use text backend for conenctScripts logging config (#3856) --- log-configs/connect-to-cluster.yaml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/log-configs/connect-to-cluster.yaml b/log-configs/connect-to-cluster.yaml index f7ab8ee09bc..89079c0712f 100644 --- a/log-configs/connect-to-cluster.yaml +++ b/log-configs/connect-to-cluster.yaml @@ -4,8 +4,19 @@ rotation: logLimit: 104857600 # 100MB keepFiles: 100 + loggerTree: - severity: Debug+ - files: - - node.pub - - node + severity: Info+ + + handlers: + - { name: "Public" + , filepath: "pub/node.log" + , logsafety: PublicLogLevel + , severity: Debug+ + , backend: FileTextBE } + - { name: "Secret" + , filepath: "node" + , logsafety: SecretLogLevel + , severity: Info+ + , backend: FileTextBE } + From 01c16c7a9f1c1f86db4560cfaf9fd25d8ca1d404 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Fri, 16 Nov 2018 19:08:39 +0100 Subject: [PATCH 035/103] [RCD-45] & [RCD-44] Review fee calculation So, basically, by conflating a bit the selected entries and changes, a lot of things become easier. At the price of one thing: fairness. The previous code was splitting fee across change proportionally to inputs. So here, I just split the fee across all changes, regardless of the input. So everyone's got to pay the same part of for the transaction. One could see it as another type of fairness :upside_down_face: ... But that's also a lot simpler to handle, because we can just manipulate all inputs and all changes directly and compute fee for those directly. --- .../Kernel/CoinSelection/FromGeneric.hs | 56 +---- .../Wallet/Kernel/CoinSelection/Generic.hs | 6 + .../Kernel/CoinSelection/Generic/Fees.hs | 233 +++++++++++------- .../test/unit/InputSelection/FromGeneric.hs | 5 + .../test/unit/Test/Spec/CoinSelection.hs | 7 +- 5 files changed, 171 insertions(+), 136 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs index dd0bc107ce7..7c06960d11e 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs @@ -70,6 +70,7 @@ instance IsValue Core.Coin where else a `Core.unsafeSubCoin` b valueRatio = \ a b -> coinToDouble a / coinToDouble b valueAdjust = \r d a -> coinFromDouble r (d * coinToDouble a) + valueDiv = divCoin instance CoinSelDom Cardano where type Input Cardano = Core.TxIn @@ -191,14 +192,6 @@ feeOptions CoinSelectionOptions{..} = FeeOptions{ type PickUtxo m = forall e. Core.Coin -- ^ Fee to still cover -> CoinSelT Core.Utxo e m (Maybe (Core.TxIn, Core.TxOutAux)) -data CoinSelFinalResult = CoinSelFinalResult { - csrInputs :: NonEmpty (Core.TxIn, Core.TxOutAux) - -- ^ Picked inputs - , csrOutputs :: NonEmpty Core.TxOutAux - -- ^ Picked outputs - , csrChange :: [Core.Coin] - } - -- | Run coin selection -- -- NOTE: Final UTxO is /not/ returned: coin selection runs /outside/ any wallet @@ -215,8 +208,8 @@ runCoinSelT :: forall m. Monad m -> (forall utxo. PickFromUtxo utxo => NonEmpty (Output (Dom utxo)) -> CoinSelT utxo CoinSelHardErr m [CoinSelResult (Dom utxo)]) - -> CoinSelPolicy Core.Utxo m CoinSelFinalResult -runCoinSelT opts pickUtxo policy (NE.sortBy (flip (comparing outVal)) -> request) utxo = do + -> CoinSelPolicy Core.Utxo m (CoinSelFinalResult Cardano) +runCoinSelT opts pickUtxo policy (NE.sortBy (flip (comparing outVal)) -> request) = -- NOTE: we sort the payees by output value, to maximise our chances of succees. -- In particular, let's consider a scenario where: -- @@ -233,44 +226,9 @@ runCoinSelT opts pickUtxo policy (NE.sortBy (flip (comparing outVal)) -> request -- -- Therefore, just always considering them in order from large to small -- is probably a good idea. - mSelection <- unwrapCoinSelT policy' utxo - case mSelection of - Left err -> return (Left err) - Right ((css, additionalUtxo, additionalChange), _utxo') -> do - let inps = concatMap selectedEntries - (additionalUtxo : map coinSelInputs css) - outs = map coinSelOutput css - changesWithDust = splitChange additionalChange $ concatMap coinSelChange css - let allInps = case inps of - [] -> error "runCoinSelT: empty list of inputs" - i:is -> i :| is - originalOuts = case outs of - [] -> error "runCoinSelT: empty list of outputs" - o:os -> o :| os - changes = changesRemoveDust (csoDustThreshold opts) changesWithDust - return . Right $ CoinSelFinalResult allInps - originalOuts - changes + evalCoinSelT policy' where - -- we should have (x + (sum ls) = sum result), but this check could overflow. - splitChange :: Value Cardano -> [Value Cardano] -> [Value Cardano] - splitChange = go - where - go remaining [] = [remaining] - -- we only create new change if for whatever reason there is none already - -- or if is some overflow happens when we try to add. - go remaining [a] = case valueAdd remaining a of - Just newChange -> [newChange] - Nothing -> [a, remaining] - go remaining ls@(a : as) = - let piece = divCoin remaining (length ls) - newRemaining = unsafeValueSub remaining piece -- unsafe because of div. - in case valueAdd piece a of - Just newChange -> newChange : go newRemaining as - Nothing -> a : go remaining as - - policy' :: CoinSelT Core.Utxo CoinSelHardErr m - ([CoinSelResult Cardano], SelectedUtxo Cardano, Value Cardano) + policy' :: CoinSelT Core.Utxo CoinSelHardErr m (CoinSelFinalResult Cardano) policy' = do mapM_ validateOutput request css <- intInputGrouping (csoInputGrouping opts) @@ -346,7 +304,7 @@ validateOutput out = random :: forall m. MonadRandom m => CoinSelectionOptions -> Word64 -- ^ Maximum number of inputs - -> CoinSelPolicy Core.Utxo m CoinSelFinalResult + -> CoinSelPolicy Core.Utxo m (CoinSelFinalResult Cardano) random opts maxInps = runCoinSelT opts pickUtxo $ Random.random Random.PrivacyModeOn maxInps . NE.toList @@ -361,7 +319,7 @@ random opts maxInps = largestFirst :: forall m. Monad m => CoinSelectionOptions -> Word64 - -> CoinSelPolicy Core.Utxo m CoinSelFinalResult + -> CoinSelPolicy Core.Utxo m (CoinSelFinalResult Cardano) largestFirst opts maxInps = runCoinSelT opts pickUtxo $ LargestFirst.largestFirst maxInps . NE.toList diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic.hs index 52a10fa1fb6..4579e6bee9e 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic.hs @@ -28,6 +28,7 @@ module Cardano.Wallet.Kernel.CoinSelection.Generic ( , mapCoinSelErr , mapCoinSelUtxo , unwrapCoinSelT + , evalCoinSelT , wrapCoinSelT -- * Errors , CoinSelHardErr(..) @@ -91,6 +92,7 @@ class Ord v => IsValue v where valueDist :: v -> v -> v -- ^ @|a - b|@ valueRatio :: v -> v -> Double -- ^ @a / b@ valueAdjust :: Rounding -> Double -> v -> Maybe v -- ^ @a * b@ + valueDiv :: v -> Int -> v -- ^ @a / k@ class ( Ord (Input dom) , IsValue (Value dom) @@ -246,6 +248,10 @@ mapCoinSelUtxo inj proj act = wrapCoinSelT $ \st -> unwrapCoinSelT :: CoinSelT utxo e m a -> utxo -> m (Either e (a, utxo)) unwrapCoinSelT act = runExceptT . runStrictStateT (unCoinSelT act) +-- | Unwrap the 'CoinSelT' stack, only getting the resulting selection +evalCoinSelT :: Monad m => CoinSelT utxo e m a -> utxo -> m (Either e a) +evalCoinSelT act = runExceptT . evalStrictStateT (unCoinSelT act) + -- | Inverse of 'unwrapCoinSelT' wrapCoinSelT :: Monad m => (utxo -> m (Either e (a, utxo))) -> CoinSelT utxo e m a diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs index cd66daabf64..b5b0c1b551f 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs @@ -1,10 +1,11 @@ {-# LANGUAGE BangPatterns #-} -module Cardano.Wallet.Kernel.CoinSelection.Generic.Fees ( - ExpenseRegulation(..) - , FeeOptions(..) - , adjustForFees - ) where +module Cardano.Wallet.Kernel.CoinSelection.Generic.Fees + ( ExpenseRegulation(..) + , FeeOptions(..) + , CoinSelFinalResult(..) + , adjustForFees + ) where import Universum @@ -35,107 +36,167 @@ data FeeOptions dom = FeeOptions { , foExpenseRegulation :: ExpenseRegulation } +data CoinSelFinalResult dom = CoinSelFinalResult + { csrInputs :: NonEmpty (UtxoEntry dom) + -- ^ Picked inputs + , csrOutputs :: NonEmpty (Output dom) + -- ^ Picked outputs + , csrChange :: [Value dom] + -- ^ Resulting changes + } + +type PickUtxo m utxo + = Value (Dom utxo) + -> CoinSelT utxo CoinSelHardErr m (Maybe (UtxoEntry (Dom utxo))) + -- | Given the coin selection result from a policy run, adjust the outputs -- for fees, potentially returning additional inputs that we need to cover -- all fees. -adjustForFees :: forall utxo m. (CoinSelDom (Dom utxo), Monad m) - => FeeOptions (Dom utxo) - -> (Value (Dom utxo) -> - CoinSelT utxo CoinSelHardErr m (Maybe (UtxoEntry (Dom utxo)))) - -> [CoinSelResult (Dom utxo)] - -> CoinSelT utxo CoinSelHardErr m - ([CoinSelResult (Dom utxo)], SelectedUtxo (Dom utxo), Value (Dom utxo)) +adjustForFees + :: forall utxo m. (CoinSelDom (Dom utxo), Monad m) + => FeeOptions (Dom utxo) + -> PickUtxo m utxo + -> [CoinSelResult (Dom utxo)] + -> CoinSelT utxo CoinSelHardErr m (CoinSelFinalResult (Dom utxo)) adjustForFees feeOptions pickUtxo css = do - case foExpenseRegulation feeOptions of - ReceiverPaysFee -> coinSelLiftExcept $ - (, emptySelection, valueZero) <$> receiverPaysFee upperBound css - SenderPaysFee -> - senderPaysFee pickUtxo upperBound css - where - upperBound = feeUpperBound feeOptions css + let inps = concatMap (selectedEntries . coinSelInputs) css + let outs = map coinSelOutput css + let chgs = concatMap coinSelChange css + + (inps', outs', chgs') <- + case foExpenseRegulation feeOptions of + ReceiverPaysFee -> + coinSelLiftExcept $ receiverPaysFee feeOptions inps outs chgs + + SenderPaysFee -> + senderPaysFee pickUtxo feeOptions inps outs chgs + + let neInps = case inps' of + [] -> error "adjustForFees: empty list of inputs" + i:is -> i :| is + + let neOuts = case outs' of + [] -> error "adjustForFees: empty list of outputs" + o:os -> o :| os + + return $ CoinSelFinalResult neInps neOuts chgs' + {------------------------------------------------------------------------------- Receiver pays fee -------------------------------------------------------------------------------} -receiverPaysFee :: forall dom. CoinSelDom dom - => Fee dom - -> [CoinSelResult dom] - -> Except CoinSelHardErr [CoinSelResult dom] -receiverPaysFee totalFee = - mapM go . divvyFee (outVal . coinSelRequest) totalFee +receiverPaysFee + :: forall dom. CoinSelDom dom + => FeeOptions dom + -> [UtxoEntry dom] + -> [Output dom] + -> [Value dom] + -> Except CoinSelHardErr ([UtxoEntry dom], [Output dom], [Value dom]) +receiverPaysFee feeOptions inps outs chgs = do + let totalFee = feeUpperBound feeOptions inps outs chgs + outs' <- mapM go . divvyFee outVal totalFee $ outs + return (inps, outs', chgs) where - go :: (Fee dom, CoinSelResult dom) - -> Except CoinSelHardErr (CoinSelResult dom) - go (fee, cs) = - case outSubFee fee (coinSelRequest cs) of + go + :: (Fee dom, Output dom) + -> Except CoinSelHardErr (Output dom) + go (fee, out) = + case outSubFee fee out of Just newOut -> - return $ cs { coinSelOutput = newOut } + return newOut Nothing -> throwError $ - CoinSelHardErrOutputCannotCoverFee (pretty (coinSelRequest cs)) (pretty fee) + CoinSelHardErrOutputCannotCoverFee (pretty out) (pretty fee) {------------------------------------------------------------------------------- Sender pays fee -------------------------------------------------------------------------------} -senderPaysFee :: (Monad m, CoinSelDom (Dom utxo)) - => (Value (Dom utxo) -> - CoinSelT utxo CoinSelHardErr m (Maybe (UtxoEntry (Dom utxo)))) - -> Fee (Dom utxo) - -> [CoinSelResult (Dom utxo)] - -> CoinSelT utxo CoinSelHardErr m - ([CoinSelResult (Dom utxo)], SelectedUtxo (Dom utxo), Value (Dom utxo)) -senderPaysFee pickUtxo totalFee css = do - let (css', remainingFee) = feeFromChange totalFee css - (additionalUtxo, additionalChange) <- coverRemainingFee pickUtxo remainingFee - return (css', additionalUtxo, additionalChange) - -coverRemainingFee :: forall utxo m. (Monad m, CoinSelDom (Dom utxo)) - => (Value (Dom utxo) -> CoinSelT utxo CoinSelHardErr m (Maybe (UtxoEntry (Dom utxo)))) - -> Fee (Dom utxo) - -> CoinSelT utxo CoinSelHardErr m (SelectedUtxo (Dom utxo), Value (Dom utxo)) +senderPaysFee + :: (Monad m, CoinSelDom (Dom utxo)) + => PickUtxo m utxo + -> FeeOptions (Dom utxo) + -> [UtxoEntry (Dom utxo)] + -> [Output (Dom utxo)] + -> [Value (Dom utxo)] + -> CoinSelT utxo CoinSelHardErr m ([UtxoEntry (Dom utxo)], [Output (Dom utxo)], [Value (Dom utxo)]) +senderPaysFee pickUtxo feeOptions = go + where + go inps outs chgs = do + -- 1/ + -- We compute fees using all inputs, outputs and changes since + -- all of them have an influence on the fee calculation. + let fee = feeUpperBound feeOptions inps outs chgs + + -- 2/ + -- We try to cover fee with the available change by substracting equally + -- across all inputs. There's no fairness in that in the case of a + -- multi-account transaction. Everyone pays the same part. + let (chgs', remainingFee) = reduceChangeOutputs fee chgs + if getFee remainingFee == valueZero then + -- 3.1/ + -- Should the change cover the fee, we're done. + return (inps, outs, chgs') + + -- 3.2/ + -- Otherwise, we need an extra entries from the available utxo to + -- cover what's left. Note that this entry may increase our change + -- because we may not consume it entirely. So we will just split + -- the extra change across all changes possibly increasing the + -- number of change outputs (if there was none, or if increasing + -- a change value causes an overflow). + -- + -- Because selecting a new input increases the fee, we need to + -- re-run the algorithm with this new elements and using the initial + -- change plus the extra change brought up by this entry and see if + -- we can now correctly cover fee. + else do + extraUtxo <- coverRemainingFee pickUtxo remainingFee + let inps' = selectedEntries extraUtxo + let extraChange = selectedBalance extraUtxo + go (inps <> inps') outs (splitChange extraChange chgs) + + +coverRemainingFee + :: forall utxo m. (Monad m, CoinSelDom (Dom utxo)) + => PickUtxo m utxo + -> Fee (Dom utxo) + -> CoinSelT utxo CoinSelHardErr m (SelectedUtxo (Dom utxo)) coverRemainingFee pickUtxo fee = go emptySelection where go :: SelectedUtxo (Dom utxo) - -> CoinSelT utxo CoinSelHardErr m (SelectedUtxo (Dom utxo), Value (Dom utxo)) + -> CoinSelT utxo CoinSelHardErr m (SelectedUtxo (Dom utxo)) go !acc | selectedBalance acc >= getFee fee = - return (acc, unsafeValueSub (selectedBalance acc) (getFee fee)) + return acc | otherwise = do mio <- (pickUtxo $ unsafeValueSub (getFee fee) (selectedBalance acc)) io <- maybe (throwError CoinSelHardErrCannotCoverFee) return mio go (select io acc) --- | Attempt to pay the fee from change outputs, returning any fee remaining --- --- NOTE: For sender pays fees, distributing the fee proportionally over the --- outputs is not strictly necessary (fairness is not a concern): we could just --- use the change of the first output to cover the entire fee (if sufficiently --- large). Doing it proportionally however has the benefit that the fee --- adjustment doesn't change the payment:change ratio too much, which may be --- important for the correct operation of the coin selection policy. --- --- NOTE: This does mean that /if/ the policy generates small outputs with --- very large corresponding change outputs, we may not make optional use of --- those change outputs and perhaps unnecessarily add additional UTxO entries. --- However, in most cases the policy cares about the output:change ratio, --- so we stick with this approach nonetheless. -feeFromChange :: forall dom. CoinSelDom dom - => Fee dom - -> [CoinSelResult dom] - -> ([CoinSelResult dom], Fee dom) -feeFromChange totalFee = - bimap identity unsafeFeeSum - . unzip - . map go - . divvyFee (outVal . coinSelRequest) totalFee - where - -- | Adjust the change output, returning any fee remaining - go :: (Fee dom, CoinSelResult dom) -> (CoinSelResult dom, Fee dom) - go (fee, cs) = - let (change', fee') = reduceChangeOutputs fee (coinSelChange cs) - in (cs { coinSelChange = change' }, fee') + +-- we should have (x + (sum ls) = sum result), but this check could overflow. +splitChange + :: forall dom. (CoinSelDom dom) + => Value dom + -> [Value dom] + -> [Value dom] +splitChange = go + where + go remaining [] = [remaining] + -- we only create new change if for whatever reason there is none already + -- or if is some overflow happens when we try to add. + go remaining [a] = case valueAdd remaining a of + Just newChange -> [newChange] + Nothing -> [a, remaining] + go remaining ls@(a : as) = + let piece = valueDiv remaining (length ls) + newRemaining = unsafeValueSub remaining piece -- unsafe because of div. + in case valueAdd piece a of + Just newChange -> newChange : go newRemaining as + Nothing -> a : go remaining as + -- | Reduce the given change outputs by the total fee, returning the remainig -- change outputs if any are left, or the remaining fee otherwise @@ -167,13 +228,19 @@ reduceChangeOutputs totalFee cs = Auxiliary -------------------------------------------------------------------------------} -feeUpperBound :: CoinSelDom dom - => FeeOptions dom -> [CoinSelResult dom] -> Fee dom -feeUpperBound FeeOptions{..} css = +feeUpperBound + :: forall dom. (CoinSelDom dom) + => FeeOptions dom + -> [UtxoEntry dom] + -> [Output dom] + -> [Value dom] + -> Fee dom +feeUpperBound FeeOptions{..} inps outs chgs = foEstimate numInputs outputs where - numInputs = fromIntegral $ sum (map (sizeToWord . coinSelInputSize) css) - outputs = concatMap coinSelOutputs css + numInputs = fromIntegral $ sizeToWord $ selectedSize $ foldr' select emptySelection inps + outputs = map outVal outs <> chgs + -- | divvy fee across outputs, discarding zero-output if any. Returns `Nothing` -- when there's no more outputs after filtering, in which case, we just can't diff --git a/wallet-new/test/unit/InputSelection/FromGeneric.hs b/wallet-new/test/unit/InputSelection/FromGeneric.hs index 163b574b64a..f30faa442bf 100644 --- a/wallet-new/test/unit/InputSelection/FromGeneric.hs +++ b/wallet-new/test/unit/InputSelection/FromGeneric.hs @@ -46,6 +46,7 @@ instance IsValue (SafeValue h a) where valueDist = safeDist valueRatio = safeRatio valueAdjust = safeAdjust + valueDiv = safeDiv instance (DSL.Hash h a, Buildable a) => CoinSelDom (DSL h a) where type Input (DSL h a) = DSL.Input h a @@ -109,6 +110,10 @@ safeRatio :: SafeValue h a -> SafeValue h a -> Double safeRatio (Value x) (Value y) = fromIntegral x / fromIntegral y +safeDiv :: SafeValue h a -> Int -> SafeValue h a +safeDiv (Value x) k = + Value (x `div` fromIntegral k) + -- TODO: check for underflow/overflow safeAdjust :: Rounding -> Double -> SafeValue h a -> Maybe (SafeValue h a) safeAdjust RoundUp d (Value x) = Just $ Value $ ceiling (d * fromIntegral x) diff --git a/wallet-new/test/unit/Test/Spec/CoinSelection.hs b/wallet-new/test/unit/Test/Spec/CoinSelection.hs index 65b24b3fbbd..97a5e9ef518 100644 --- a/wallet-new/test/unit/Test/Spec/CoinSelection.hs +++ b/wallet-new/test/unit/Test/Spec/CoinSelection.hs @@ -41,9 +41,8 @@ import Cardano.Wallet.Kernel.CoinSelection (CoinSelFinalResult (..), CoinSelectionOptions (..), ExpenseRegulation (..), InputGrouping (..), estimateMaxTxInputsExplicitBounds, largestFirst, newOptions, random) -import Cardano.Wallet.Kernel.CoinSelection.FromGeneric - (estimateCardanoFee, - estimateHardMaxTxInputsExplicitBounds) +import Cardano.Wallet.Kernel.CoinSelection.FromGeneric (Cardano, + estimateCardanoFee, estimateHardMaxTxInputsExplicitBounds) import Cardano.Wallet.Kernel.Transactions (mkStdTx) import Cardano.Wallet.Kernel.Util.Core (paymentAmount, utxoBalance, utxoRestrictToInputs) @@ -464,7 +463,7 @@ encodedSize = fromBytes . fromIntegral . LBS.length . toLazyByteString . encode type Policy = CoinSelectionOptions -> Word64 - -> CoinSelPolicy Core.Utxo Gen CoinSelFinalResult + -> CoinSelPolicy Core.Utxo Gen (CoinSelFinalResult Cardano) type RunResult = ( Core.Utxo , NonEmpty Core.TxOut From 6ca27fcb9668848f1f9c91789b3bd2b5d3b883b2 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Mon, 19 Nov 2018 10:30:47 +1000 Subject: [PATCH 036/103] [RCD-37] ChangeLog: Insert 1.3.2 release notes --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3dbf14e0c0..bb115fe5de2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -288,6 +288,16 @@ Please add entries for your tickets: - Better code linting in CI ([DEVOPS-1031](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1031), [#3527](https://github.com/input-output-hk/cardano-sl/pull/3527), [DEVOPS-1057](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1057), [#3649](https://github.com/input-output-hk/cardano-sl/pull/3649), [DEVOPS-1100](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1100), [#3762](https://github.com/input-output-hk/cardano-sl/pull/3762)) +## Cardano SL 1.3.2 + +### Fixes + +- Upgrade block version to 0.2.0 to limit max block size to 32 KB. + +- Override max block size for epoch boundary blocks (also called + genesis blocks) to have a limit of 1.953 MB. + + ## Cardano SL 1.3.1 ### Features From c4c0f21117f0212590ab66d2eb2957e46af89818 Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Sat, 17 Nov 2018 18:33:46 -0500 Subject: [PATCH 037/103] [DEVOPS-1141] Genesis Block Size increase --- chain/src/Pos/Chain/Block/Logic/Integrity.hs | 5 ++++- lib/src/Pos/Communication/Limits.hs | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/chain/src/Pos/Chain/Block/Logic/Integrity.hs b/chain/src/Pos/Chain/Block/Logic/Integrity.hs index 71ccdb3e530..ce3b1b1d098 100644 --- a/chain/src/Pos/Chain/Block/Logic/Integrity.hs +++ b/chain/src/Pos/Chain/Block/Logic/Integrity.hs @@ -341,6 +341,9 @@ verifyBlocks genesisConfig curSlotId verifyNoUnknown bvd initLeaders = view _3 . let newLeaders = case blk of Left genesisBlock -> genesisBlock ^. genBlockLeaders Right _ -> leaders + blockMaxSize = case blk of + Left _ -> 2000000 + Right _ -> bvdMaxBlockSize bvd vhp = VerifyHeaderParams { vhpPrevHeader = prevHeader @@ -352,7 +355,7 @@ verifyBlocks genesisConfig curSlotId verifyNoUnknown bvd initLeaders = view _3 . vbp = VerifyBlockParams { vbpVerifyHeader = vhp - , vbpMaxSize = bvdMaxBlockSize bvd + , vbpMaxSize = blockMaxSize , vbpVerifyNoUnknown = verifyNoUnknown } in (newLeaders, Just $ getBlockHeader blk, res <> verifyBlock genesisConfig vbp blk) diff --git a/lib/src/Pos/Communication/Limits.hs b/lib/src/Pos/Communication/Limits.hs index 14a1a385d04..cab5d5f6da5 100644 --- a/lib/src/Pos/Communication/Limits.hs +++ b/lib/src/Pos/Communication/Limits.hs @@ -279,7 +279,7 @@ mlBlockHeader bvd = 1 + max (BlockHeaderGenesis <$> mlGenesisBlockHeader bvd) (BlockHeaderMain <$> mlMainBlockHeader bvd) mlGenesisBlock :: BlockVersionData -> Limit GenesisBlock -mlGenesisBlock = Limit . fromIntegral . bvdMaxBlockSize +mlGenesisBlock _ = Limit 2000000 mlMainBlock :: BlockVersionData -> Limit MainBlock mlMainBlock = Limit . fromIntegral . bvdMaxBlockSize From b6c72083c64a08376eb615f911a413d438dc7c9b Mon Sep 17 00:00:00 2001 From: KtorZ Date: Mon, 19 Nov 2018 09:54:19 +0100 Subject: [PATCH 038/103] fixup: Review comments & adjust estimateCardanoFee The 'estimateCardanoFee' was using 'round' but as pointed out by @duncan, core nodes use 'ceiling' which may cause some divergence in the fee computation. --- .../Kernel/CoinSelection/FromGeneric.hs | 4 +- .../Kernel/CoinSelection/Generic/Fees.hs | 39 ++++++++++++++++--- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs index 7c06960d11e..fbc46f711fe 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs @@ -392,8 +392,8 @@ estimateSize saa sta ins outs = -- here with some (hopefully) realistic values. estimateCardanoFee :: TxSizeLinear -> Int -> [Word64] -> Word64 estimateCardanoFee linearFeePolicy ins outs - = round $ calculateTxSizeLinear linearFeePolicy - $ hi $ estimateSize boundAddrAttrSize boundTxAttrSize ins outs + = ceiling $ calculateTxSizeLinear linearFeePolicy + $ hi $ estimateSize boundAddrAttrSize boundTxAttrSize ins outs checkCardanoFeeSanity :: TxSizeLinear -> Coin -> Bool checkCardanoFeeSanity linearFeePolicy fees = diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs index b5b0c1b551f..909c7bbdf59 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs @@ -52,6 +52,29 @@ type PickUtxo m utxo -- | Given the coin selection result from a policy run, adjust the outputs -- for fees, potentially returning additional inputs that we need to cover -- all fees. +-- We lose the relationship between the transaction outputs and their +-- corresponding inputs/change outputs here. This is a decision we +-- may wish to revisit later. For now however note that since +-- +-- (a) coin selection tries to establish a particular ratio +-- between payment outputs and change outputs (currently it +-- aims for an average of 1:1) +-- +-- (b) coin selection currently only generates a single change +-- output per payment output, distributing the fee +-- proportionally across all change outputs is roughly +-- equivalent to distributing it proportionally over the +-- payment outputs (roughly, not exactly, because the 1:1 +-- proportion is best effort only, and may in some cases be +-- wildly different). +-- +-- Note that for (a) we don't need the ratio to be 1:1, the above +-- reasoning will remain true for any proportion 1:n. For (b) however, +-- if coin selection starts creating multiple outputs, and this number +-- may vary, then losing the connection between outputs and change +-- outputs will mean that that some outputs may pay a larger +-- percentage of the fee (depending on how many change outputs the +-- algorithm happened to choose). adjustForFees :: forall utxo m. (CoinSelDom (Dom utxo), Monad m) => FeeOptions (Dom utxo) @@ -129,10 +152,7 @@ senderPaysFee pickUtxo feeOptions = go -- all of them have an influence on the fee calculation. let fee = feeUpperBound feeOptions inps outs chgs - -- 2/ - -- We try to cover fee with the available change by substracting equally - -- across all inputs. There's no fairness in that in the case of a - -- multi-account transaction. Everyone pays the same part. + -- 2/ Substract fee from all change outputs, proportionally to their value. let (chgs', remainingFee) = reduceChangeOutputs fee chgs if getFee remainingFee == valueZero then -- 3.1/ @@ -176,7 +196,16 @@ coverRemainingFee pickUtxo fee = go emptySelection go (select io acc) --- we should have (x + (sum ls) = sum result), but this check could overflow. +-- Equally split the extra change obtained when picking new inputs across all +-- other change. Note that, it may create an extra change output if: +-- +-- (a) There's no change at all initially +-- (b) Adding change to an exiting one would cause an overflow +-- +-- It makes no attempt to divvy the new output proportionally over the change +-- outputs. This means that if we happen to pick a very large UTxO entry, adding +-- this evenly rather than proportionally might skew the payment:change ratio a +-- lot. Could consider defining this in terms of divvy instead. splitChange :: forall dom. (CoinSelDom dom) => Value dom From dfbe4052c2ff1363c23e9b8078a7b060cbc9c6ad Mon Sep 17 00:00:00 2001 From: kderme Date: Mon, 19 Nov 2018 11:28:07 +0200 Subject: [PATCH 039/103] [CBR-475] adds MVar for any sqlite-operation --- .../src/Cardano/Wallet/Kernel/DB/TxMeta.hs | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta.hs b/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta.hs index c4b16570cc2..79ff78ad938 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta.hs @@ -7,22 +7,27 @@ module Cardano.Wallet.Kernel.DB.TxMeta ( , openMetaDB ) where +import Universum + +import Control.Concurrent.MVar (withMVar) + import qualified Cardano.Wallet.Kernel.DB.Sqlite as ConcreteStorage import Cardano.Wallet.Kernel.DB.TxMeta.Types as Types -import Universum -- Concrete instantiation of 'MetaDBHandle' openMetaDB :: FilePath -> IO MetaDBHandle openMetaDB fp = do conn <- ConcreteStorage.newConnection fp + lock <- newMVar conn return MetaDBHandle { - closeMetaDB = ConcreteStorage.closeMetaDB conn - , migrateMetaDB = ConcreteStorage.unsafeMigrateMetaDB conn - , clearMetaDB = ConcreteStorage.clearMetaDB conn - , getTxMeta = ConcreteStorage.getTxMeta conn - , putTxMeta = ConcreteStorage.putTxMeta conn - , putTxMetaT = ConcreteStorage.putTxMetaT conn - , getAllTxMetas = ConcreteStorage.getAllTxMetas conn - , getTxMetas = ConcreteStorage.getTxMetas conn + closeMetaDB = withMVar lock ConcreteStorage.closeMetaDB + , migrateMetaDB = withMVar lock ConcreteStorage.unsafeMigrateMetaDB + , clearMetaDB = withMVar lock ConcreteStorage.clearMetaDB + , getTxMeta = \t w a -> withMVar lock $ \c -> ConcreteStorage.getTxMeta c t w a + , putTxMeta = \ t -> withMVar lock $ \c -> ConcreteStorage.putTxMeta c t + , putTxMetaT = \ t -> withMVar lock $ \c -> ConcreteStorage.putTxMetaT c t + , getAllTxMetas = withMVar lock ConcreteStorage.getAllTxMetas + , getTxMetas = \o l af w t time s + -> withMVar lock $ \c -> ConcreteStorage.getTxMetas c o l af w t time s } From 132e63dcd7bb1450b022dc008ff672232ab9e48d Mon Sep 17 00:00:00 2001 From: KtorZ Date: Mon, 19 Nov 2018 12:35:18 +0100 Subject: [PATCH 040/103] Filter out dust change when reducing them --- .../Kernel/CoinSelection/FromGeneric.hs | 5 +- .../Kernel/CoinSelection/Generic/Fees.hs | 69 +++++++++++-------- 2 files changed, 43 insertions(+), 31 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs index fbc46f711fe..43ac4633052 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/FromGeneric.hs @@ -172,8 +172,9 @@ newOptions estimateFee check = CoinSelectionOptions { } feeOptions :: CoinSelectionOptions -> FeeOptions Cardano -feeOptions CoinSelectionOptions{..} = FeeOptions{ - foExpenseRegulation = csoExpenseRegulation +feeOptions CoinSelectionOptions{..} = FeeOptions + { foExpenseRegulation = csoExpenseRegulation + , foDustThreshold = csoDustThreshold , foEstimate = \numInputs outputs -> case outputs of [] -> error "feeOptions: empty list" diff --git a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs index 909c7bbdf59..6fe5eda8a74 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/CoinSelection/Generic/Fees.hs @@ -28,12 +28,15 @@ data ExpenseRegulation = -- and they wish to trasfer an @exact@ amount (or, for example, the max -- amount). -data FeeOptions dom = FeeOptions { - -- | Estimate fees based on number of inputs and values of the outputs - foEstimate :: Int -> [Value dom] -> Fee dom - - -- | Expense regulation (who pays the fees?) +data FeeOptions dom = FeeOptions + { foEstimate :: Int -> [Value dom] -> Fee dom + -- ^ Estimate fees based on number of inputs and values of the outputs , foExpenseRegulation :: ExpenseRegulation + -- ^ Expense regulation (who pays the fees?) + , foDustThreshold :: Value dom + -- ^ Change addresses below the given threshold will be evicted + -- from the created transaction. If you only want to remove change + -- outputs equal to 0, set 'csoDustThreshold' to 0. } data CoinSelFinalResult dom = CoinSelFinalResult @@ -137,7 +140,7 @@ receiverPaysFee feeOptions inps outs chgs = do -------------------------------------------------------------------------------} senderPaysFee - :: (Monad m, CoinSelDom (Dom utxo)) + :: forall utxo m. (Monad m, CoinSelDom (Dom utxo)) => PickUtxo m utxo -> FeeOptions (Dom utxo) -> [UtxoEntry (Dom utxo)] @@ -146,6 +149,9 @@ senderPaysFee -> CoinSelT utxo CoinSelHardErr m ([UtxoEntry (Dom utxo)], [Output (Dom utxo)], [Value (Dom utxo)]) senderPaysFee pickUtxo feeOptions = go where + removeDust :: [Value (Dom utxo)] -> [Value (Dom utxo)] + removeDust = changesRemoveDust (foDustThreshold feeOptions) + go inps outs chgs = do -- 1/ -- We compute fees using all inputs, outputs and changes since @@ -153,29 +159,30 @@ senderPaysFee pickUtxo feeOptions = go let fee = feeUpperBound feeOptions inps outs chgs -- 2/ Substract fee from all change outputs, proportionally to their value. - let (chgs', remainingFee) = reduceChangeOutputs fee chgs + let (chgs', remainingFee) = reduceChangeOutputs removeDust fee chgs + + -- 3.1/ + -- Should the change cover the fee, we're done. if getFee remainingFee == valueZero then - -- 3.1/ - -- Should the change cover the fee, we're done. return (inps, outs, chgs') - -- 3.2/ - -- Otherwise, we need an extra entries from the available utxo to - -- cover what's left. Note that this entry may increase our change - -- because we may not consume it entirely. So we will just split - -- the extra change across all changes possibly increasing the - -- number of change outputs (if there was none, or if increasing - -- a change value causes an overflow). - -- - -- Because selecting a new input increases the fee, we need to - -- re-run the algorithm with this new elements and using the initial - -- change plus the extra change brought up by this entry and see if - -- we can now correctly cover fee. + -- 3.2/ + -- Otherwise, we need an extra entries from the available utxo to + -- cover what's left. Note that this entry may increase our change + -- because we may not consume it entirely. So we will just split + -- the extra change across all changes possibly increasing the + -- number of change outputs (if there was none, or if increasing + -- a change value causes an overflow). + -- + -- Because selecting a new input increases the fee, we need to + -- re-run the algorithm with this new elements and using the initial + -- change plus the extra change brought up by this entry and see if + -- we can now correctly cover fee. else do extraUtxo <- coverRemainingFee pickUtxo remainingFee - let inps' = selectedEntries extraUtxo - let extraChange = selectedBalance extraUtxo - go (inps <> inps') outs (splitChange extraChange chgs) + let inps' = selectedEntries extraUtxo + let extraChange = splitChange (selectedBalance extraUtxo) chgs + go (inps <> inps') outs extraChange coverRemainingFee @@ -233,14 +240,18 @@ splitChange = go -- As for the overall fee in 'feeFromChange', we divvy up the fee over all -- change outputs proportionally, to try and keep any output:change ratio -- as unchanged as possible -reduceChangeOutputs :: forall dom. CoinSelDom dom - => Fee dom -> [Value dom] -> ([Value dom], Fee dom) -reduceChangeOutputs totalFee cs = +reduceChangeOutputs + :: forall dom. CoinSelDom dom + => ([Value dom] -> [Value dom]) + -> Fee dom + -> [Value dom] + -> ([Value dom], Fee dom) +reduceChangeOutputs removeDust totalFee cs = case divvyFeeSafe identity totalFee cs of Nothing -> - (cs, totalFee) + (removeDust cs, totalFee) Just xs -> - bimap identity unsafeFeeSum + bimap removeDust unsafeFeeSum . unzip . map go $ xs From 482057e962bf12113d88172c3609f8570b24243a Mon Sep 17 00:00:00 2001 From: kderme Date: Mon, 19 Nov 2018 19:59:05 +0200 Subject: [PATCH 041/103] [CBR-475] add synchronization unit tests for TxMeta api --- pkgs/default.nix | 1 + wallet-new/cardano-sl-wallet-new.cabal | 1 + wallet-new/test/unit/TxMetaStorageSpecs.hs | 94 +++++++++++++++++++++- 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index 938f07fed01..affffbf8fb0 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -18422,6 +18422,7 @@ x509-store testHaskellDepends = [ acid-state aeson +async base bytestring cardano-crypto diff --git a/wallet-new/cardano-sl-wallet-new.cabal b/wallet-new/cardano-sl-wallet-new.cabal index 4d1d4a572a6..e2f66242448 100755 --- a/wallet-new/cardano-sl-wallet-new.cabal +++ b/wallet-new/cardano-sl-wallet-new.cabal @@ -506,6 +506,7 @@ test-suite wallet-unit-tests hs-source-dirs: server test/unit build-depends: acid-state + , async , base , bytestring , cardano-crypto diff --git a/wallet-new/test/unit/TxMetaStorageSpecs.hs b/wallet-new/test/unit/TxMetaStorageSpecs.hs index c810e61576d..dab84551e5b 100644 --- a/wallet-new/test/unit/TxMetaStorageSpecs.hs +++ b/wallet-new/test/unit/TxMetaStorageSpecs.hs @@ -12,6 +12,7 @@ import Universum import qualified Cardano.Wallet.Kernel.DB.Sqlite as SQlite import Cardano.Wallet.Kernel.DB.TxMeta import Control.Exception.Safe (bracket) +import Control.Concurrent.Async import qualified Data.List as List import qualified Data.List.NonEmpty as NonEmpty import qualified Data.Set as Set @@ -25,7 +26,7 @@ import Serokell.Util.Text (listJsonIndent, pairF) import Test.Hspec (expectationFailure, shouldContain, shouldThrow) import Test.Hspec.QuickCheck (prop) import Test.QuickCheck (Arbitrary, Gen, arbitrary, forAll, suchThat, - vectorOf) + vectorOf, withMaxSuccess) import Test.QuickCheck.Monadic (assert, monadicIO, pick, run) import Util.Buildable (ShowThroughBuild (..)) import Util.Buildable.Hspec @@ -167,9 +168,100 @@ sortByCreationAt direction = sortBy sortFn hasDupes :: Ord a => [a] -> Bool hasDupes xs = length (Set.fromList xs) /= List.length xs + +threadRead :: Int -> MetaDBHandle -> IO () +threadRead times hdl = do + let getNoFilters = getTxMetas hdl (Offset 0) (Limit 100) Everything Nothing NoFilterOp NoFilterOp Nothing + replicateM_ times getNoFilters + +threadWrite :: [TxMeta] -> MetaDBHandle -> IO () +threadWrite metas hdl = do + let f meta = do + putTxMetaT hdl meta `shouldReturn` Tx + mapM_ f metas + +-- here we try to add the same tx 2 times. The second must fail, but without crashing +-- anything, as this is a no-op. +threadWriteWithNoOp :: [TxMeta] -> MetaDBHandle -> IO () +threadWriteWithNoOp metas hdl = do + let f meta = do + putTxMetaT hdl meta `shouldReturn` Tx + putTxMetaT hdl meta `shouldReturn` No + mapM_ f metas + -- | Specs which tests the persistent storage and API provided by 'TxMeta'. txMetaStorageSpecs :: Spec txMetaStorageSpecs = do + describe "synchronization" $ do + it "synchronized with 2 write workers and no-ops" $ withMaxSuccess 5 $ monadicIO $ do + -- beware of the big data. + testMetas <- pick (genMetas 2000) + let metas = unSTB <$> testMetas + (meta0, meta1) = splitAt (div 2000 2) metas + run $ withTemporaryDb $ \hdl -> do + t0 <- async $ threadWriteWithNoOp meta0 hdl + t1 <- async $ threadWriteWithNoOp meta1 hdl + _ <- waitAny [t0, t1] + return () + + it "synchronized with 2 write workers and no-ops: correct count" $ withMaxSuccess 5 $ monadicIO $ do + -- beware of the big data. + testMetas <- pick (genMetas 200) + let metas = unSTB <$> testMetas + (meta0, meta1) = splitAt (div 200 2) metas + run $ withTemporaryDb $ \hdl -> do + t0 <- async $ threadWriteWithNoOp meta0 hdl + t1 <- async $ threadWriteWithNoOp meta1 hdl + _ <- waitAny [t0, t1] + (ls, _count) <- getTxMetas hdl (Offset 0) (Limit 300) Everything Nothing NoFilterOp NoFilterOp Nothing + length ls `shouldBe` 200 + return () + + it "synchronized with 2 write workers" $ withMaxSuccess 5 $ monadicIO $ do + -- beware of the big data. + testMetas <- pick (genMetas 2000) + let metas = unSTB <$> testMetas + (meta0, meta1) = splitAt (div 2000 2) metas + run $ withTemporaryDb $ \hdl -> do + t0 <- async $ threadWrite meta0 hdl + t1 <- async $ threadWrite meta1 hdl + _ <- waitAny [t0, t1] + return () + + it "synchronized with 2 write workers: correct count" $ withMaxSuccess 5 $ monadicIO $ do + -- beware of the big data. + testMetas <- pick (genMetas 200) + let metas = unSTB <$> testMetas + (meta0, meta1) = splitAt (div 200 2) metas + run $ withTemporaryDb $ \hdl -> do + t0 <- async $ threadWrite meta0 hdl + t1 <- async $ threadWrite meta1 hdl + _ <- waitAny [t0, t1] + (ls, _count) <- getTxMetas hdl (Offset 0) (Limit 300) Everything Nothing NoFilterOp NoFilterOp Nothing + length ls `shouldBe` 200 + return () + + it "synchronized 1 write and 1 read workers" $ withMaxSuccess 5 $ monadicIO $ do + -- beware of the big data. + testMetas <- pick (genMetas 2000) + let metas = unSTB <$> testMetas + run $ withTemporaryDb $ \hdl -> do + t0 <- async $ threadWriteWithNoOp metas hdl + t1 <- async $ threadRead 2000 hdl + _ <- waitAny [t0, t1] + return () + + it "synchronized 1 write and 1 read workers: correct count" $ withMaxSuccess 5 $ monadicIO $ do + -- beware of the big data. + testMetas <- pick (genMetas 200) + let metas = unSTB <$> testMetas + run $ withTemporaryDb $ \hdl -> do + t0 <- async $ threadWriteWithNoOp metas hdl + t1 <- async $ threadRead 200 hdl + _ <- waitAny [t0, t1] + (ls, _count) <- getTxMetas hdl (Offset 0) (Limit 300) Everything Nothing NoFilterOp NoFilterOp Nothing + length ls `shouldBe` 200 + return () describe "SQlite transactions" $ do it "throws an exception when tx with double spending" $ monadicIO $ do From 7f66ae838d934adb1a78a9d202ce98a19dfd98a8 Mon Sep 17 00:00:00 2001 From: kderme Date: Mon, 19 Nov 2018 19:59:55 +0200 Subject: [PATCH 042/103] [CBR-475] remove async calls from TxMeta internals --- wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs b/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs index 4f36e4dfed3..c728a707e0e 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs @@ -66,7 +66,7 @@ import qualified Data.Foldable as Foldable import Data.List.NonEmpty (NonEmpty (..), nonEmpty) import qualified Data.List.NonEmpty as NonEmpty import qualified Data.Map as M -import Data.Time.Units (Second, fromMicroseconds, toMicroseconds) +import Data.Time.Units (fromMicroseconds, toMicroseconds) import Database.Beam.Migrate (CheckedDatabaseSettings, DataType (..), Migration, MigrationSteps, boolean, collectChecks, createTable, evaluateDatabase, executeMigration, field, @@ -79,7 +79,6 @@ import Cardano.Wallet.Kernel.DB.TxMeta.Types (AccountFops (..), FilterOperation (..), Limit (..), Offset (..), SortCriteria (..), SortDirection (..), Sorting (..)) import qualified Cardano.Wallet.Kernel.DB.TxMeta.Types as Kernel -import Cardano.Wallet.WalletLayer.ExecutionTimeLimit import qualified Pos.Chain.Txp as Txp import qualified Pos.Core as Core @@ -600,7 +599,7 @@ getTxMetas conn (Offset offset) (Limit limit) accountFops mbAddress fopTxId fopT Left e -> throwIO $ Kernel.StorageFailure (toException e) Right Nothing -> return ([], Just 0) Right (Just (meta, inputs, outputs)) -> do - eiCount <- limitExecutionTimeTo (25 :: Second) (\ _ -> ()) $ ignoreLeft $ Sqlite.runDBAction $ runBeamSqlite conn $ + eiCount <- Sqlite.runDBAction $ runBeamSqlite conn $ case mbAddress of Nothing -> SQL.runSelectReturningOne $ SQL.select metaQueryC Just addr -> SQL.runSelectReturningOne $ SQL.select $ metaQueryWithAddrC addr @@ -613,13 +612,6 @@ getTxMetas conn (Offset offset) (Limit limit) accountFops mbAddress fopTxId fopT return (txMeta, count) where - ignoreLeft :: IO (Either a b) -> IO (Either () b) - ignoreLeft m = do - x <- m - case x of - Left _ -> return $ Left () - Right r -> return $ Right r - filters meta = do SQL.guard_ $ filterAccs meta accountFops SQL.guard_ $ applyFilter (_txMetaTableId meta) fopTxId From bcdbfaa9fd413d6efb7f706a32c3b923483f4d87 Mon Sep 17 00:00:00 2001 From: parsonsmatt Date: Mon, 19 Nov 2018 15:35:24 -0700 Subject: [PATCH 043/103] [CBR-475] Fix tests for synchronization The `waitAny` function calls were killing threads, causing some work to not be completed. --- wallet-new/test/unit/TxMetaStorageSpecs.hs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/wallet-new/test/unit/TxMetaStorageSpecs.hs b/wallet-new/test/unit/TxMetaStorageSpecs.hs index dab84551e5b..d21e73a7c34 100644 --- a/wallet-new/test/unit/TxMetaStorageSpecs.hs +++ b/wallet-new/test/unit/TxMetaStorageSpecs.hs @@ -201,8 +201,7 @@ txMetaStorageSpecs = do run $ withTemporaryDb $ \hdl -> do t0 <- async $ threadWriteWithNoOp meta0 hdl t1 <- async $ threadWriteWithNoOp meta1 hdl - _ <- waitAny [t0, t1] - return () + traverse_ wait [t0, t1] it "synchronized with 2 write workers and no-ops: correct count" $ withMaxSuccess 5 $ monadicIO $ do -- beware of the big data. @@ -212,10 +211,9 @@ txMetaStorageSpecs = do run $ withTemporaryDb $ \hdl -> do t0 <- async $ threadWriteWithNoOp meta0 hdl t1 <- async $ threadWriteWithNoOp meta1 hdl - _ <- waitAny [t0, t1] + traverse_ wait [t0, t1] (ls, _count) <- getTxMetas hdl (Offset 0) (Limit 300) Everything Nothing NoFilterOp NoFilterOp Nothing length ls `shouldBe` 200 - return () it "synchronized with 2 write workers" $ withMaxSuccess 5 $ monadicIO $ do -- beware of the big data. @@ -225,8 +223,7 @@ txMetaStorageSpecs = do run $ withTemporaryDb $ \hdl -> do t0 <- async $ threadWrite meta0 hdl t1 <- async $ threadWrite meta1 hdl - _ <- waitAny [t0, t1] - return () + traverse_ wait [t0, t1] it "synchronized with 2 write workers: correct count" $ withMaxSuccess 5 $ monadicIO $ do -- beware of the big data. @@ -236,10 +233,9 @@ txMetaStorageSpecs = do run $ withTemporaryDb $ \hdl -> do t0 <- async $ threadWrite meta0 hdl t1 <- async $ threadWrite meta1 hdl - _ <- waitAny [t0, t1] + traverse_ wait [t0, t1] (ls, _count) <- getTxMetas hdl (Offset 0) (Limit 300) Everything Nothing NoFilterOp NoFilterOp Nothing length ls `shouldBe` 200 - return () it "synchronized 1 write and 1 read workers" $ withMaxSuccess 5 $ monadicIO $ do -- beware of the big data. @@ -248,8 +244,7 @@ txMetaStorageSpecs = do run $ withTemporaryDb $ \hdl -> do t0 <- async $ threadWriteWithNoOp metas hdl t1 <- async $ threadRead 2000 hdl - _ <- waitAny [t0, t1] - return () + traverse_ wait [t0, t1] it "synchronized 1 write and 1 read workers: correct count" $ withMaxSuccess 5 $ monadicIO $ do -- beware of the big data. @@ -258,10 +253,9 @@ txMetaStorageSpecs = do run $ withTemporaryDb $ \hdl -> do t0 <- async $ threadWriteWithNoOp metas hdl t1 <- async $ threadRead 200 hdl - _ <- waitAny [t0, t1] + traverse_ wait [t0, t1] (ls, _count) <- getTxMetas hdl (Offset 0) (Limit 300) Everything Nothing NoFilterOp NoFilterOp Nothing length ls `shouldBe` 200 - return () describe "SQlite transactions" $ do it "throws an exception when tx with double spending" $ monadicIO $ do From 34658c5bc30ab65ad61eed4c9dc6a6dc9b899620 Mon Sep 17 00:00:00 2001 From: kderme Date: Tue, 20 Nov 2018 12:14:42 +0200 Subject: [PATCH 044/103] [CBR-475] fix stylish --- wallet-new/test/unit/TxMetaStorageSpecs.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wallet-new/test/unit/TxMetaStorageSpecs.hs b/wallet-new/test/unit/TxMetaStorageSpecs.hs index d21e73a7c34..e5e3a91ab2a 100644 --- a/wallet-new/test/unit/TxMetaStorageSpecs.hs +++ b/wallet-new/test/unit/TxMetaStorageSpecs.hs @@ -11,8 +11,8 @@ import Universum import qualified Cardano.Wallet.Kernel.DB.Sqlite as SQlite import Cardano.Wallet.Kernel.DB.TxMeta -import Control.Exception.Safe (bracket) import Control.Concurrent.Async +import Control.Exception.Safe (bracket) import qualified Data.List as List import qualified Data.List.NonEmpty as NonEmpty import qualified Data.Set as Set From eba1bf9c8715f0359b3106612efea39dd13207ec Mon Sep 17 00:00:00 2001 From: KtorZ Date: Tue, 20 Nov 2018 15:07:17 +0100 Subject: [PATCH 045/103] [RCD-47] Fix 'hasSpendingPassword' metadata recovery during migration When migrating from an old data-layer, we don't have much information about whether there was a password defined on a wallet. So, we use to apply some heuristic based on the password last upate timestamp. This is rather unreliable and can return misleading metadata for wallets which don't have passwords. Because there's no such thing as "no password" (secret keys are actually encrypted with an empty passphrase), it is possible to assess whether a key was encrypted with a password by trying to decrypt with an empty one. If it succeeds, then we can tell for sure that there's no password defined for the given key. --- .../src/Cardano/Wallet/Kernel/Migration.hs | 52 ++++--------------- 1 file changed, 9 insertions(+), 43 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/Migration.hs b/wallet-new/src/Cardano/Wallet/Kernel/Migration.hs index 3e2865d41d8..54e66c3e7c9 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/Migration.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/Migration.hs @@ -14,6 +14,7 @@ import qualified Formatting as F import qualified Pos.Core as Core import Pos.Core.NetworkMagic (makeNetworkMagic) +import Pos.Crypto.Signing (checkPassMatches) import Pos.Util.Wlog (Severity (..)) import qualified Pos.Wallet.Web.ClientTypes as WebTypes import qualified Pos.Wallet.Web.State.Storage as WS @@ -34,36 +35,14 @@ import Cardano.Wallet.Kernel.Types derivable from the blockchain. -------------------------------------------------------------------------------} --- | An heuristic confidence score of whether or not a spending password was --- set for this wallet. --- Note how is not possible to reconstruct this information --- reliably, because the legacy wallet never stored if this wallet was --- spending-password-protected, it only stored the creation time and the --- last time the password was changed. However, when creating a wallet, they --- did set the lastUpdate == dateCreated, so it's not possible to distinguish --- between the case where the user set the password at creation time and --- never changed it or the case where the user never set the password at all. -data Confidence = - HasSpendingPasswordUnknown - -- ^ This happens because there is no real way to judge if the user set - -- a spending password or not, especially because if the user @did@ set a - -- spending password right at the start, there will be no way of reconstructing - -- this from the legacy storage. Unfortunately, this is the case most users - -- fall into. - | ProbablyHasSpendingPassword - -- ^ Ihis is when the users later changed their password. - -- In principle they could set it to be empty (so we still cannot be sure), - -- but this is unlikely (and disallowed by the frontend). - data MigrationMetadata = MigrationMetadata { - _mmHdRootId :: HD.HdRootId - , _mmAssuranceLevel :: HD.AssuranceLevel - , _mmWalletName :: HD.WalletName - , _mmDefaultAddress :: Core.Address + _mmHdRootId :: HD.HdRootId + , _mmAssuranceLevel :: HD.AssuranceLevel + , _mmWalletName :: HD.WalletName + , _mmDefaultAddress :: Core.Address -- ^ A default Address which will be used during restoration. It's a trick -- to avoid having the user insert the @spending password@ during migration, -- which would complicate things sensibly. - , _mmHasSpendingPassword :: Bool } makeLenses ''MigrationMetadata @@ -85,7 +64,6 @@ metadataFromWalletStorage ws = <*> extractAssuranceLevel wInfo <*> extractWalletName wInfo <*> extractAddress (wId, wInfo) - <*> extractHasSpendingPassword wInfo extractHdRootId :: WebTypes.CId (WebTypes.Wal) -> Either MetadataUnavailable HD.HdRootId @@ -108,21 +86,6 @@ metadataFromWalletStorage ws = let wMeta = WS._wiMeta wi :: WebTypes.CWalletMeta pure $ HD.WalletName (WebTypes.cwName wMeta) - extractHasSpendingPassword :: WS.WalletInfo - -> Either MetadataUnavailable Bool - extractHasSpendingPassword wi = do - let confidence = case WS._wiPassphraseLU wi == WS._wiCreationTime wi of - True -> HasSpendingPasswordUnknown - False -> ProbablyHasSpendingPassword - -- Our best guess whether or not this wallet has the spending password. - -- currently we always yield True, but we can tweak these values if - -- our assumptions reveal not to be correct (or if we can fine tune - -- our heuristic). - bestGuess = case confidence of - HasSpendingPasswordUnknown -> True - ProbablyHasSpendingPassword -> True - pure bestGuess - extractAddress :: (WebTypes.CId (WebTypes.Wal), WS.WalletInfo) -> Either MetadataUnavailable Core.Address extractAddress (cwalId, _) = @@ -231,11 +194,14 @@ restore pw forced metadata = do logMsg = pw ^. Kernel.walletLogMessage keystore = pw ^. Kernel.walletKeystore wId = WalletIdHdRnd (metadata ^. mmHdRootId) + mEsk <- Keystore.lookup nm wId keystore case mEsk of Just esk -> do + let hasSpendingPassword = isNothing $ checkPassMatches mempty esk + res <- restoreWallet pw - (metadata ^. mmHasSpendingPassword) + hasSpendingPassword (metadata ^. mmDefaultAddress) (metadata ^. mmWalletName) (metadata ^. mmAssuranceLevel) From b765c9929052d38e5888015a9c7cbb02de0dfc1b Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Tue, 20 Nov 2018 17:11:30 +0100 Subject: [PATCH 046/103] [RCD-37] ChangeLog: address PR entries assigned to me --- CHANGELOG.md | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb115fe5de2..677215dd036 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,11 +66,24 @@ Please add entries for your tickets: - [CBR-459](https://iohk.myjetbrains.com/youtrack/issue/CBR-459) [#3696](https://github.com/input-output-hk/cardano-sl/pull/3696) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-460](https://iohk.myjetbrains.com/youtrack/issue/CBR-460) [#3698](https://github.com/input-output-hk/cardano-sl/pull/3698) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-472](https://iohk.myjetbrains.com/youtrack/issue/CBR-472) [#3765](https://github.com/input-output-hk/cardano-sl/pull/3765) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-96](https://iohk.myjetbrains.com/youtrack/issue/CBR-96) [#3127](https://github.com/input-output-hk/cardano-sl/pull/3127) [#3190](https://github.com/input-output-hk/cardano-sl/pull/3190) [#3192](https://github.com/input-output-hk/cardano-sl/pull/3192) [#3194](https://github.com/input-output-hk/cardano-sl/pull/3194) [#3195](https://github.com/input-output-hk/cardano-sl/pull/3195) [#3216](https://github.com/input-output-hk/cardano-sl/pull/3216) ATTENTION: [@coot](https://github.com/coot) +- [CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645) ATTENTION: [@CodiePP](https://github.com/CodiePP) - [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) - [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) ATTENTION: [@disassembler](https://github.com/disassembler) -- [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) ATTENTION: [@coot](https://github.com/coot) -- [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) ATTENTION: [@coot](https://github.com/coot) +- [CDEC-333](https://iohk.myjetbrains.com/youtrack/issue/CDEC-333) [#3615](https://github.com/input-output-hk/cardano-sl/pull/3615) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-369](https://iohk.myjetbrains.com/youtrack/issue/CDEC-369) [#3482](https://github.com/input-output-hk/cardano-sl/pull/3482) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) ATTENTION: [@erikd](https://github.com/erikd) +- [CDEC-383](https://iohk.myjetbrains.com/youtrack/issue/CDEC-383) [#3142](https://github.com/input-output-hk/cardano-sl/pull/3142) ATTENTION: [@ruhatch](https://github.com/ruhatch) +- [CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385) [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-398](https://iohk.myjetbrains.com/youtrack/issue/CDEC-398) [#3251](https://github.com/input-output-hk/cardano-sl/pull/3251) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) +- [CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416) [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185) [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202) [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209) ATTENTION: [@erikd](https://github.com/erikd), [@mhuesch](https://github.com/mhuesch) +- [CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418) [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423) [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-425](https://iohk.myjetbrains.com/youtrack/issue/CDEC-425) [#3240](https://github.com/input-output-hk/cardano-sl/pull/3240) ATTENTION: [@intricate](https://github.com/intricate) +- [CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429) [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-432](https://iohk.myjetbrains.com/youtrack/issue/CDEC-432) [#3238](https://github.com/input-output-hk/cardano-sl/pull/3238) [#3261](https://github.com/input-output-hk/cardano-sl/pull/3261) [#3266](https://github.com/input-output-hk/cardano-sl/pull/3266) ATTENTION: [@mhuesch](https://github.com/mhuesch) +- [CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437) [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259) ATTENTION: [@intricate](https://github.com/intricate) - [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) ATTENTION: [@coot](https://github.com/coot) - [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) - [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) ATTENTION: [@kderme](https://github.com/kderme) @@ -144,6 +157,9 @@ Please add entries for your tickets: - Finalize port of API V0 to V1 - [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) +- Expose ntp client api for makeing forceful ntp checks and a review of the ntp client code base [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) + - [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) + - [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) ### Fixes @@ -253,6 +269,9 @@ Please add entries for your tickets: - [CBR-288](https://iohk.myjetbrains.com/youtrack/issue/CBR-288) [#3128](https://github.com/input-output-hk/cardano-sl/pull/3128) - [CBR-289](https://iohk.myjetbrains.com/youtrack/issue/CBR-289) [#3043](https://github.com/input-output-hk/cardano-sl/pull/3043) +- Add a test which checks if the configuration can be correctly parsed + - [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) + ### Specifications ### Documentation From 2f3bac0a044b13aa466058c51a29cf650a2ec6c3 Mon Sep 17 00:00:00 2001 From: Alexander Diemand Date: Tue, 20 Nov 2018 17:37:24 +0100 Subject: [PATCH 047/103] added PB-20 Signed-off-by: Alexander Diemand --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 677215dd036..f6d72b81ebb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -229,7 +229,7 @@ Please add entries for your tickets: - Add failure injection options to wallet for Daedalus testing ([DEVOPS-1086](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1086), [#3787](https://github.com/input-output-hk/cardano-sl/pull/3787)) -- Benchmarking support ([PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670)) +- Benchmarking support ([PB-20](https://iohk.myjetbrains.com/youtrack/issue/PB-20) [PB-95](https://iohk.myjetbrains.com/youtrack/issue/PB-95) [#3670](https://github.com/input-output-hk/cardano-sl/pull/3670)) - #### Reorganize and clean up `core` packages - Move code from `infra` to `sinbin` so that `infra` can be moved "up" in the dependency graph ([CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416): [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185), [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202), [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209)) From 14195d0b8cc09626d8507e84699d42185098ecc0 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Mincke Date: Tue, 20 Nov 2018 17:38:01 +0100 Subject: [PATCH 048/103] Remove PR's --- CHANGELOG.md | 94 ---------------------------------------------------- 1 file changed, 94 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 677215dd036..337d47fb24d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,100 +2,6 @@ ## Cardano SL 2.0.0 -Please add entries for your tickets: - -- [CBR-239](https://iohk.myjetbrains.com/youtrack/issue/CBR-239) [#3370](https://github.com/input-output-hk/cardano-sl/pull/3370) [#3330](https://github.com/input-output-hk/cardano-sl/pull/3330) [#3396](https://github.com/input-output-hk/cardano-sl/pull/3396) [#3668](https://github.com/input-output-hk/cardano-sl/pull/3668) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk), [@edsko](https://github.com/edsko), [@k0001](https://github.com/k0001), [@kderme](https://github.com/kderme) -- [CBR-246](https://iohk.myjetbrains.com/youtrack/issue/CBR-246) [#3441](https://github.com/input-output-hk/cardano-sl/pull/3441) [#3495](https://github.com/input-output-hk/cardano-sl/pull/3495) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk), [@edsko](https://github.com/edsko) -- [CBR-250](https://iohk.myjetbrains.com/youtrack/issue/CBR-250) [#3388](https://github.com/input-output-hk/cardano-sl/pull/3388) [#3454](https://github.com/input-output-hk/cardano-sl/pull/3454) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-27](https://iohk.myjetbrains.com/youtrack/issue/CBR-27) [#3592](https://github.com/input-output-hk/cardano-sl/pull/3592) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-285](https://iohk.myjetbrains.com/youtrack/issue/CBR-285) [#3117](https://github.com/input-output-hk/cardano-sl/pull/3117) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-304](https://iohk.myjetbrains.com/youtrack/issue/CBR-304) [#3116](https://github.com/input-output-hk/cardano-sl/pull/3116) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-313](https://iohk.myjetbrains.com/youtrack/issue/CBR-313) [#3256](https://github.com/input-output-hk/cardano-sl/pull/3256) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-314](https://iohk.myjetbrains.com/youtrack/issue/CBR-314) [#3187](https://github.com/input-output-hk/cardano-sl/pull/3187) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-315](https://iohk.myjetbrains.com/youtrack/issue/CBR-315) [#3170](https://github.com/input-output-hk/cardano-sl/pull/3170) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-316](https://iohk.myjetbrains.com/youtrack/issue/CBR-316) [#3598](https://github.com/input-output-hk/cardano-sl/pull/3598) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-319](https://iohk.myjetbrains.com/youtrack/issue/CBR-319) [#3224](https://github.com/input-output-hk/cardano-sl/pull/3224) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-322](https://iohk.myjetbrains.com/youtrack/issue/CBR-322) [#3413](https://github.com/input-output-hk/cardano-sl/pull/3413) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-325](https://iohk.myjetbrains.com/youtrack/issue/CBR-325) [#3436](https://github.com/input-output-hk/cardano-sl/pull/3436) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-339](https://iohk.myjetbrains.com/youtrack/issue/CBR-339) [#3435](https://github.com/input-output-hk/cardano-sl/pull/3435) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-340](https://iohk.myjetbrains.com/youtrack/issue/CBR-340) [#3274](https://github.com/input-output-hk/cardano-sl/pull/3274) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-341](https://iohk.myjetbrains.com/youtrack/issue/CBR-341) [#3408](https://github.com/input-output-hk/cardano-sl/pull/3408) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-342](https://iohk.myjetbrains.com/youtrack/issue/CBR-342) [#3316](https://github.com/input-output-hk/cardano-sl/pull/3316) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-347](https://iohk.myjetbrains.com/youtrack/issue/CBR-347) [#3438](https://github.com/input-output-hk/cardano-sl/pull/3438) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-349](https://iohk.myjetbrains.com/youtrack/issue/CBR-349) [#3373](https://github.com/input-output-hk/cardano-sl/pull/3373) [#3378](https://github.com/input-output-hk/cardano-sl/pull/3378) [#3466](https://github.com/input-output-hk/cardano-sl/pull/3466) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-350](https://iohk.myjetbrains.com/youtrack/issue/CBR-350) [#3347](https://github.com/input-output-hk/cardano-sl/pull/3347) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-352](https://iohk.myjetbrains.com/youtrack/issue/CBR-352) [#3489](https://github.com/input-output-hk/cardano-sl/pull/3489) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-362](https://iohk.myjetbrains.com/youtrack/issue/CBR-362) [#3371](https://github.com/input-output-hk/cardano-sl/pull/3371) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-363](https://iohk.myjetbrains.com/youtrack/issue/CBR-363) [#3496](https://github.com/input-output-hk/cardano-sl/pull/3496) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-364](https://iohk.myjetbrains.com/youtrack/issue/CBR-364) [#3379](https://github.com/input-output-hk/cardano-sl/pull/3379) [#3382](https://github.com/input-output-hk/cardano-sl/pull/3382) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk), [@edsko](https://github.com/edsko) -- [CBR-365](https://iohk.myjetbrains.com/youtrack/issue/CBR-365) [#3502](https://github.com/input-output-hk/cardano-sl/pull/3502) [#3531](https://github.com/input-output-hk/cardano-sl/pull/3531) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-369](https://iohk.myjetbrains.com/youtrack/issue/CBR-369) [#3418](https://github.com/input-output-hk/cardano-sl/pull/3418) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-371](https://iohk.myjetbrains.com/youtrack/issue/CBR-371) [#3463](https://github.com/input-output-hk/cardano-sl/pull/3463) [#3563](https://github.com/input-output-hk/cardano-sl/pull/3563) ATTENTION: [@k0001](https://github.com/k0001), [@kderme](https://github.com/kderme) -- [CBR-374](https://iohk.myjetbrains.com/youtrack/issue/CBR-374) [#3493](https://github.com/input-output-hk/cardano-sl/pull/3493) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-375](https://iohk.myjetbrains.com/youtrack/issue/CBR-375) [#3428](https://github.com/input-output-hk/cardano-sl/pull/3428) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-377](https://iohk.myjetbrains.com/youtrack/issue/CBR-377) [#3514](https://github.com/input-output-hk/cardano-sl/pull/3514) [#3562](https://github.com/input-output-hk/cardano-sl/pull/3562) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-379](https://iohk.myjetbrains.com/youtrack/issue/CBR-379) [#3737](https://github.com/input-output-hk/cardano-sl/pull/3737) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-380](https://iohk.myjetbrains.com/youtrack/issue/CBR-380) [#3449](https://github.com/input-output-hk/cardano-sl/pull/3449) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-381](https://iohk.myjetbrains.com/youtrack/issue/CBR-381) [#3492](https://github.com/input-output-hk/cardano-sl/pull/3492) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-382](https://iohk.myjetbrains.com/youtrack/issue/CBR-382) [#3420](https://github.com/input-output-hk/cardano-sl/pull/3420) [#3427](https://github.com/input-output-hk/cardano-sl/pull/3427) [#3430](https://github.com/input-output-hk/cardano-sl/pull/3430) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-383](https://iohk.myjetbrains.com/youtrack/issue/CBR-383) [#3434](https://github.com/input-output-hk/cardano-sl/pull/3434) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-385](https://iohk.myjetbrains.com/youtrack/issue/CBR-385) [#3450](https://github.com/input-output-hk/cardano-sl/pull/3450) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-386](https://iohk.myjetbrains.com/youtrack/issue/CBR-386) [#3475](https://github.com/input-output-hk/cardano-sl/pull/3475) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-387](https://iohk.myjetbrains.com/youtrack/issue/CBR-387) [#3433](https://github.com/input-output-hk/cardano-sl/pull/3433) [#3518](https://github.com/input-output-hk/cardano-sl/pull/3518) ATTENTION: [@edsko](https://github.com/edsko), [@uroboros](https://github.com/uroboros) -- [CBR-389](https://iohk.myjetbrains.com/youtrack/issue/CBR-389) [#3439](https://github.com/input-output-hk/cardano-sl/pull/3439) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-390](https://iohk.myjetbrains.com/youtrack/issue/CBR-390) [#3473](https://github.com/input-output-hk/cardano-sl/pull/3473) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-393](https://iohk.myjetbrains.com/youtrack/issue/CBR-393) [#3552](https://github.com/input-output-hk/cardano-sl/pull/3552) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-396](https://iohk.myjetbrains.com/youtrack/issue/CBR-396) [#3453](https://github.com/input-output-hk/cardano-sl/pull/3453) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-405](https://iohk.myjetbrains.com/youtrack/issue/CBR-405) [#3516](https://github.com/input-output-hk/cardano-sl/pull/3516) ATTENTION: [@edsko](https://github.com/edsko) -- [CBR-407](https://iohk.myjetbrains.com/youtrack/issue/CBR-407) [#3520](https://github.com/input-output-hk/cardano-sl/pull/3520) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-409](https://iohk.myjetbrains.com/youtrack/issue/CBR-409) [#3575](https://github.com/input-output-hk/cardano-sl/pull/3575) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-413](https://iohk.myjetbrains.com/youtrack/issue/CBR-413) [#3546](https://github.com/input-output-hk/cardano-sl/pull/3546) [#3566](https://github.com/input-output-hk/cardano-sl/pull/3566) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-414](https://iohk.myjetbrains.com/youtrack/issue/CBR-414) [#3582](https://github.com/input-output-hk/cardano-sl/pull/3582) ATTENTION: [@cleverca22](https://github.com/cleverca22) -- [CBR-416](https://iohk.myjetbrains.com/youtrack/issue/CBR-416) [#3580](https://github.com/input-output-hk/cardano-sl/pull/3580) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-419](https://iohk.myjetbrains.com/youtrack/issue/CBR-419) [#3590](https://github.com/input-output-hk/cardano-sl/pull/3590) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-434](https://iohk.myjetbrains.com/youtrack/issue/CBR-434) [#3612](https://github.com/input-output-hk/cardano-sl/pull/3612) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-435](https://iohk.myjetbrains.com/youtrack/issue/CBR-435) [#3628](https://github.com/input-output-hk/cardano-sl/pull/3628) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-438](https://iohk.myjetbrains.com/youtrack/issue/CBR-438) [#3634](https://github.com/input-output-hk/cardano-sl/pull/3634) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-440](https://iohk.myjetbrains.com/youtrack/issue/CBR-440) [#3635](https://github.com/input-output-hk/cardano-sl/pull/3635) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-441](https://iohk.myjetbrains.com/youtrack/issue/CBR-441) [#3638](https://github.com/input-output-hk/cardano-sl/pull/3638) [#3654](https://github.com/input-output-hk/cardano-sl/pull/3654) [#3669](https://github.com/input-output-hk/cardano-sl/pull/3669) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-442](https://iohk.myjetbrains.com/youtrack/issue/CBR-442) [#3641](https://github.com/input-output-hk/cardano-sl/pull/3641) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-444](https://iohk.myjetbrains.com/youtrack/issue/CBR-444) [#3701](https://github.com/input-output-hk/cardano-sl/pull/3701) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-445](https://iohk.myjetbrains.com/youtrack/issue/CBR-445) [#3720](https://github.com/input-output-hk/cardano-sl/pull/3720) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-452](https://iohk.myjetbrains.com/youtrack/issue/CBR-452) [#3695](https://github.com/input-output-hk/cardano-sl/pull/3695) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-453](https://iohk.myjetbrains.com/youtrack/issue/CBR-453) [#3717](https://github.com/input-output-hk/cardano-sl/pull/3717) [#3726](https://github.com/input-output-hk/cardano-sl/pull/3726) ATTENTION: [@uroboros](https://github.com/uroboros) -- [CBR-459](https://iohk.myjetbrains.com/youtrack/issue/CBR-459) [#3696](https://github.com/input-output-hk/cardano-sl/pull/3696) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-460](https://iohk.myjetbrains.com/youtrack/issue/CBR-460) [#3698](https://github.com/input-output-hk/cardano-sl/pull/3698) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-472](https://iohk.myjetbrains.com/youtrack/issue/CBR-472) [#3765](https://github.com/input-output-hk/cardano-sl/pull/3765) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645) ATTENTION: [@CodiePP](https://github.com/CodiePP) -- [CDEC-223](https://iohk.myjetbrains.com/youtrack/issue/CDEC-223) [#3027](https://github.com/input-output-hk/cardano-sl/pull/3027) ATTENTION: [@aspiwack](https://github.com/aspiwack) -- [CDEC-299](https://iohk.myjetbrains.com/youtrack/issue/CDEC-299) [#3172](https://github.com/input-output-hk/cardano-sl/pull/3172) ATTENTION: [@disassembler](https://github.com/disassembler) -- [CDEC-333](https://iohk.myjetbrains.com/youtrack/issue/CDEC-333) [#3615](https://github.com/input-output-hk/cardano-sl/pull/3615) ATTENTION: [@ruhatch](https://github.com/ruhatch) -- [CDEC-369](https://iohk.myjetbrains.com/youtrack/issue/CDEC-369) [#3482](https://github.com/input-output-hk/cardano-sl/pull/3482) ATTENTION: [@ruhatch](https://github.com/ruhatch) -- [CDEC-377](https://iohk.myjetbrains.com/youtrack/issue/CDEC-377) [#3135](https://github.com/input-output-hk/cardano-sl/pull/3135) ATTENTION: [@erikd](https://github.com/erikd) -- [CDEC-383](https://iohk.myjetbrains.com/youtrack/issue/CDEC-383) [#3142](https://github.com/input-output-hk/cardano-sl/pull/3142) ATTENTION: [@ruhatch](https://github.com/ruhatch) -- [CDEC-385](https://iohk.myjetbrains.com/youtrack/issue/CDEC-385) [#3153](https://github.com/input-output-hk/cardano-sl/pull/3153) ATTENTION: [@mhuesch](https://github.com/mhuesch) -- [CDEC-398](https://iohk.myjetbrains.com/youtrack/issue/CDEC-398) [#3251](https://github.com/input-output-hk/cardano-sl/pull/3251) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-403](https://iohk.myjetbrains.com/youtrack/issue/CDEC-403) [#3263](https://github.com/input-output-hk/cardano-sl/pull/3263) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-404](https://iohk.myjetbrains.com/youtrack/issue/CDEC-404) [#3236](https://github.com/input-output-hk/cardano-sl/pull/3236) ATTENTION: [@Jimbo4350](https://github.com/Jimbo4350) -- [CDEC-416](https://iohk.myjetbrains.com/youtrack/issue/CDEC-416) [#3185](https://github.com/input-output-hk/cardano-sl/pull/3185) [#3202](https://github.com/input-output-hk/cardano-sl/pull/3202) [#3209](https://github.com/input-output-hk/cardano-sl/pull/3209) ATTENTION: [@erikd](https://github.com/erikd), [@mhuesch](https://github.com/mhuesch) -- [CDEC-418](https://iohk.myjetbrains.com/youtrack/issue/CDEC-418) [#3179](https://github.com/input-output-hk/cardano-sl/pull/3179) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-423](https://iohk.myjetbrains.com/youtrack/issue/CDEC-423) [#3200](https://github.com/input-output-hk/cardano-sl/pull/3200) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-425](https://iohk.myjetbrains.com/youtrack/issue/CDEC-425) [#3240](https://github.com/input-output-hk/cardano-sl/pull/3240) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-429](https://iohk.myjetbrains.com/youtrack/issue/CDEC-429) [#3227](https://github.com/input-output-hk/cardano-sl/pull/3227) ATTENTION: [@mhuesch](https://github.com/mhuesch) -- [CDEC-432](https://iohk.myjetbrains.com/youtrack/issue/CDEC-432) [#3238](https://github.com/input-output-hk/cardano-sl/pull/3238) [#3261](https://github.com/input-output-hk/cardano-sl/pull/3261) [#3266](https://github.com/input-output-hk/cardano-sl/pull/3266) ATTENTION: [@mhuesch](https://github.com/mhuesch) -- [CDEC-437](https://iohk.myjetbrains.com/youtrack/issue/CDEC-437) [#3259](https://github.com/input-output-hk/cardano-sl/pull/3259) ATTENTION: [@intricate](https://github.com/intricate) -- [CDEC-439](https://iohk.myjetbrains.com/youtrack/issue/CDEC-439) [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) ATTENTION: [@coot](https://github.com/coot) -- [CBR-465](https://iohk.myjetbrains.com/youtrack/issue/CBR-465) [#3723](https://github.com/input-output-hk/cardano-sl/pull/3723) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CBR-466](https://iohk.myjetbrains.com/youtrack/issue/CBR-466) [#3742](https://github.com/input-output-hk/cardano-sl/pull/3742) ATTENTION: [@kderme](https://github.com/kderme) -- [CBR-467](https://iohk.myjetbrains.com/youtrack/issue/CBR-467) [#3741](https://github.com/input-output-hk/cardano-sl/pull/3741) [#3745](https://github.com/input-output-hk/cardano-sl/pull/3745) ATTENTION: [@avieth](https://github.com/avieth), [@cleverca22](https://github.com/cleverca22) -- [CO-329](https://iohk.myjetbrains.com/youtrack/issue/CO-329) [#3178](https://github.com/input-output-hk/cardano-sl/pull/3178) ATTENTION: [@adinapoli-iohk](https://github.com/adinapoli-iohk) -- [CO-391](https://iohk.myjetbrains.com/youtrack/issue/CO-391) [#3656](https://github.com/input-output-hk/cardano-sl/pull/3656) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) -- [CSL-2495](https://iohk.myjetbrains.com/youtrack/issue/CSL-2495) [#2995](https://github.com/input-output-hk/cardano-sl/pull/2995) ATTENTION: [@nc6](https://github.com/nc6) -- [CSLD-163](https://iohk.myjetbrains.com/youtrack/issue/CSLD-163) [#3218](https://github.com/input-output-hk/cardano-sl/pull/3218) ATTENTION: [@denisshevchenko](https://github.com/denisshevchenko) -- [PIP-22](https://iohk.myjetbrains.com/youtrack/issue/PIP-22) [#3273](https://github.com/input-output-hk/cardano-sl/pull/3273) ATTENTION: [@jcmincke](https://github.com/jcmincke) -- [RCD-28](https://iohk.myjetbrains.com/youtrack/issue/RCD-28) [#3711](https://github.com/input-output-hk/cardano-sl/pull/3711) ATTENTION: [@coot](https://github.com/coot) -- [TSD-116](https://iohk.myjetbrains.com/youtrack/issue/TSD-116) [#3716](https://github.com/input-output-hk/cardano-sl/pull/3716) ATTENTION: [@ksaric](https://github.com/ksaric) - ### Features From 17bf7427280019532b10fdc2dbbf863b7dafd35e Mon Sep 17 00:00:00 2001 From: Marcin Szamotulski Date: Tue, 20 Nov 2018 17:42:33 +0100 Subject: [PATCH 049/103] [RCD-37] ChangeLog: refer to CDEC-355 user story --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c99d9eebaa0..245a4b27ea7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,7 +63,8 @@ - Finalize port of API V0 to V1 - [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) -- Expose ntp client api for makeing forceful ntp checks and a review of the ntp client code base [CDEC-356](https://iohk.myjetbrains.com/youtrack/issue/CDEC-356) + +- Expose ntp client api for makeing forceful ntp checks and a review of the ntp client code base [CDEC-355](https://iohk.myjetbrains.com/youtrack/issue/CDEC-355) - [#3323](https://github.com/input-output-hk/cardano-sl/pull/3323) - [#3264](https://github.com/input-output-hk/cardano-sl/pull/3264) From d647e09d276212bc3aece2d8932fa3cb8a7dc0ab Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Wed, 21 Nov 2018 10:32:45 +1000 Subject: [PATCH 050/103] [DEVOPS-1112] configuration.yaml: bump staging and testnet applicationVersions staging: 16 -> 17 testnet: 1 -> 2 --- lib/configuration.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 13cb19f3948..05b9beeb547 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14929,7 +14929,7 @@ testnet_wallet: &testnet_wallet <<: *testnet_full update: &testnet_wallet_update applicationName: csl-daedalus - applicationVersion: 1 + applicationVersion: 2 lastKnownBlockVersion: bvMajor: 0 bvMinor: 0 @@ -14973,7 +14973,7 @@ mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 16 + applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 @@ -14983,7 +14983,7 @@ mainnet_dryrun_wallet_macos64: &mainnet_dryrun_wallet_macos64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 16 + applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 @@ -14993,7 +14993,7 @@ mainnet_dryrun_wallet_linux64: &mainnet_dryrun_wallet_linux64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 16 + applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 From a312801c91397f4b0c7ced9797539a3d3b7e927f Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Wed, 21 Nov 2018 11:54:51 +1000 Subject: [PATCH 051/103] [DEVOPS-1113] Buildkite: Add Windows build This is a squash of the changes on the buildkite/windows branch, without deleting appveyor.yml, without the setup script, and with ghc 8.2.2 instead of 8.4.4. Original authors: Jacob Mitchell Samuel Leathers Rodney Lorrimar --- .buildkite/pipeline.yml | 5 ++ .buildkite/windows.ps1 | 106 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 .buildkite/windows.ps1 diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index b6c8e1360e9..4a24042facb 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,4 +1,9 @@ steps: + - label: 'Windows' + command: 'PowerShell.exe -executionpolicy remotesigned -File .\.buildkite\windows.ps1' + agents: + system: x86_64-win2016 + - label: 'stack2nix' command: 'nix-shell -Q -j 4 --run scripts/check-stack2nix.sh' agents: diff --git a/.buildkite/windows.ps1 b/.buildkite/windows.ps1 new file mode 100644 index 00000000000..0dab8841db7 --- /dev/null +++ b/.buildkite/windows.ps1 @@ -0,0 +1,106 @@ +############################################################################ +# Windows build script for Buildkite +# +# Requires the Windows 10 VM to be set up with the compiler, +# and other tools. +# +############################################################################ + +Set-PSDebug -Trace 1 + +Write-Output "--- Prepare work directory" + +# Avoid long paths on Windows +$env:STACK_ROOT="D:\s" +$env:STACK_WORK=".w" +$env:WORK_DIR="D:\w" +# Override the temp directory to avoid sed escaping issues +# See https://github.com/haskell/cabal/issues/5386 +$env:TMP="D:\\tmp" + +# Store the original checkout directory +$env:CHECKOUT_PATH=(Get-Item -Path ".\").FullName + +# Temp directory needs to exist +New-Item -ItemType Directory -Force -Path $env:TMP + +$env:PATH="$env:PATH;D:\ghc\ghc-8.2.2\bin;D:\stack;$Env:Programfiles\7-Zip;D:\w" + +# Clear out work directory, copy source tree there, then cd into it. +rd -r -fo $env:WORK_DIR +mkdir $env:WORK_DIR +copy-item $env:CHECKOUT_PATH\* $env:WORK_DIR -force -recurse +cd $env:WORK_DIR + +# Install pre-built patched version of rocksdb. The git repo provides +# headers and the zip provides rocksdb.dll. This is needed to build +# rocksdb-haskell. +git.exe clone https://github.com/facebook/rocksdb.git --branch v4.13.5 +curl.exe -L 'https://s3.eu-central-1.amazonaws.com/ci-static/serokell-rocksdb-haskell-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip' -o D:\Downloads\rocksdb.zip +7z x D:\Downloads\rocksdb.zip + +# CSL-1509: After moving the 'cardano-sl' project itself into a separate folder ('lib/'), the 'cardano-text.exe' executable fails on AppVeyor CI. +# After some investigation, it was discovered that this was because 'rocksdb.dll' has to be located in this folder as well, or else the test executable doesn't work. +copy rocksdb.dll node +copy rocksdb.dll lib +copy rocksdb.dll wallet-new + +############################################################################ +# Prepare stack and build tools +# + +Write-Output "--- Stack setup and install tools" + +# Make stack use a pached system-ghc. This will allow us to work around the command +# line argument limit on windows by having GHC copy all libraries into a common folder +# prior to linking; and thus reduces the number library search patch flags passed on the +# command line. +# +# WARNING: if you bump the LTS, make sure you have the right (patched) GHC version in path! +stack.exe config --system-ghc set system-ghc --global true + +stack.exe path +stack.exe exec -- ghc-pkg recache +stack.exe --verbosity warn setup --no-reinstall + +# Install happy separately: https://github.com/commercialhaskell/stack/issues/3151#issuecomment-310642487. Also install cpphs because it's a build-tool and Stack can't figure out by itself that it should be installed +stack.exe --verbosity warn install happy cpphs -j 2 --no-terminal --local-bin-path $env:SYSTEMROOT\system32 --extra-include-dirs="D:\OpenSSL-Win64-v102\include" --extra-lib-dirs="D:\OpenSSL-Win64-v102" --extra-include-dirs="D:\xz_extracted\include" --extra-lib-dirs="D:\xz_extracted\bin_x86-64" --extra-include-dirs="$env:WORK_DIR\rocksdb\include" --extra-lib-dirs="$env:WORK_DIR" + +############################################################################ +# Build and test. +# +# We intentionally don't build auxx here, because this build is for installer. +# + +Write-Output "+++ Stack build and test" + +stack.exe --dump-logs install cardano-sl cardano-sl-tools cardano-sl-wallet-new -j 3 --no-terminal --local-bin-path $env:WORK_DIR --no-haddock-deps --flag cardano-sl-core:-asserts --flag cardano-sl-tools:for-installer --extra-include-dirs="D:\OpenSSL-Win64-v102\include" --extra-lib-dirs="D:\OpenSSL-Win64-v102" --extra-include-dirs="D:\xz_extracted\include" --extra-lib-dirs="D:\xz_extracted\bin_x86-64" --extra-include-dirs="$env:WORK_DIR\rocksdb\include" --extra-lib-dirs="$env:WORK_DIR" + + +############################################################################ +# Assemble artifact zip file for use by the Daedalus installers build +# + +Write-Output "--- Create zip file" + +# from here onwards, errors terminate the script +$ErrorActionPreference = "Stop" + +# Cardano pieces, modulo the frontend +mkdir daedalus +## log config is called `log-config-prod.yaml` just in case, it's the old name +copy log-configs\daedalus.yaml daedalus\log-config-prod.yaml +copy lib\configuration.yaml daedalus\ +copy lib\*genesis*.json daedalus\ +copy cardano-launcher.exe daedalus\ +copy cardano-node.exe daedalus\ +copy cardano-x509-certificates.exe daedalus\ +cd daedalus +$env:BUILDKITE_BUILD_NUMBER | Out-File -Encoding ASCII build-id +$env:BUILDKITE_COMMIT | Out-File -Encoding ASCII commit-id +$env:BUILDKITE_BUILD_URL | Out-File -Encoding ASCII ci-url +cd .. + +$daedaluszip = "$env:BUILDKITE_COMMIT.zip" +7z.exe a $daedaluszip .\daedalus\* +buildkite-agent artifact upload $daedaluszip From ccd63361f3c097577399beba7fc6c341c233ad02 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Mincke Date: Wed, 21 Nov 2018 10:50:13 +0100 Subject: [PATCH 052/103] Replace CO-417 (Task) by CO-416 (User Story) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 245a4b27ea7..f70f8a6d50e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -128,7 +128,7 @@ - **[API BREAKING CHANGE]** Improve diagnostic for `NotEnoughMoney` error ([CBR-461](https://iohk.myjetbrains.com/youtrack/issue/CBR-461), [#3702](https://github.com/input-output-hk/cardano-sl/pull/3702)) -- When Content-Type's main MIME-type cannot fall back to 'application/json' then UnsupportedMimeTypeError is returned ([CO-417](https://iohk.myjetbrains.com/youtrack/issue/CO-417), [#3727](https://github.com/input-output-hk/cardano-sl/pull/3727)) +- When Content-Type's main MIME-type cannot fall back to 'application/json' then UnsupportedMimeTypeError is returned ([CO-416](https://iohk.myjetbrains.com/youtrack/issue/CO-416), [#3727](https://github.com/input-output-hk/cardano-sl/pull/3727)) - Add `cardano-node --no-tls` option to wallet ([DEVOPS-879](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-879), [#3074](https://github.com/input-output-hk/cardano-sl/pull/3074)) From 7481bb3a935204c0184218b5416a73072a0e88b1 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Mincke Date: Wed, 21 Nov 2018 11:28:10 +0100 Subject: [PATCH 053/103] Finalize the change log --- CHANGELOG.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f70f8a6d50e..6cf30caaa0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,7 +35,11 @@ - Structured logging ([CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645), [CBR-207](https://iohk.myjetbrains.com/youtrack/issue/CBR-207), [#3476](https://github.com/input-output-hk/cardano-sl/pull/3476) [#3477](https://github.com/input-output-hk/cardano-sl/pull/3477), [CBR-211](https://iohk.myjetbrains.com/youtrack/issue/CBR-211) [#3507](https://github.com/input-output-hk/cardano-sl/pull/3507), [CBR-213](https://iohk.myjetbrains.com/youtrack/issue/CBR-213), [#3481](https://github.com/input-output-hk/cardano-sl/pull/3481), [DEVOPS-1097](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1097), [#3764](https://github.com/input-output-hk/cardano-sl/pull/3764), [#3395](https://github.com/input-output-hk/cardano-sl/pull/3395), [#3443](https://github.com/input-output-hk/cardano-sl/pull/3443), [DEVOPS-1109](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1109), [#3785](https://github.com/input-output-hk/cardano-sl/pull/3785), [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655), [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709), [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523), [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603), [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609)) -- New data layer for wallet ([CBR-150](https://iohk.myjetbrains.com/youtrack/issue/CBR-150), [#3245](https://github.com/input-output-hk/cardano-sl/pull/3245), [CBR-227](https://iohk.myjetbrains.com/youtrack/issue/CBR-227), [#3393](https://github.com/input-output-hk/cardano-sl/pull/3393)) +- New data layer for wallet ([CBR-150](https://iohk.myjetbrains.com/youtrack/issue/CBR-150), [#3245](https://github.com/input-output-hk/cardano-sl/pull/3245), +[CBR-227](https://iohk.myjetbrains.com/youtrack/issue/CBR-227), +[#3393](https://github.com/input-output-hk/cardano-sl/pull/3393) +) + - Enable new data layer in Docker images for exchanges ([DEVOPS-1037](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1037), [#3545](https://github.com/input-output-hk/cardano-sl/pull/3545), [DEVOPS-1046](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1046), [#3594](https://github.com/input-output-hk/cardano-sl/pull/3594)). @@ -47,7 +51,7 @@ - New `cluster` package with utility and CLI to start a full-fledged cluster of nodes - [CO-423](https://iohk.myjetbrains.com/youtrack/issue/CO-423), [#3732](https://github.com/input-output-hk/cardano-sl/pull/3732) - [CO-371](https://iohk.myjetbrains.com/youtrack/issue/CO-371), [#3605](https://github.com/input-output-hk/cardano-sl/pull/3605) - - [CO-386](https://iohk.myjetbrains.com/youtrack/issue/CO-386), [#3608](https://github.com/input-output-hk/cardano-sl/pull/3608) + - [CO-385](https://iohk.myjetbrains.com/youtrack/issue/CO-385), [#3608](https://github.com/input-output-hk/cardano-sl/pull/3608) - [CO-390](https://iohk.myjetbrains.com/youtrack/issue/CO-390), [#3629](https://github.com/input-output-hk/cardano-sl/pull/3629) - Support query against some fields of the Account resource (balance, addresses) enabling client to fetch only the data they need ([CO-324](https://iohk.myjetbrains.com/youtrack/issue/CO-324), [#3210](https://github.com/input-output-hk/cardano-sl/pull/3210)) @@ -104,7 +108,7 @@ - Fix logger implementation, enabling pure logger to be used without side-effects ([CO-409](https://iohk.myjetbrains.com/youtrack/issue/CO-409), [#3697](https://github.com/input-output-hk/cardano-sl/pull/3697)) -- Crash host node when the underlying wallet dies ([CBR-426](https://iohk.myjetbrains.com/youtrack/issue/CBR-426), [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584)) +- Crash host node when the underlying wallet dies ([CBR-263](https://iohk.myjetbrains.com/youtrack/issue/CBR-263), [#3584](https://github.com/input-output-hk/cardano-sl/pull/3584)) - Ensure correct file permissions are set when generate x509 certificates ([CBR-470](https://iohk.myjetbrains.com/youtrack/issue/CBR-470), [#3773](https://github.com/input-output-hk/cardano-sl/pull/3773)) @@ -122,7 +126,7 @@ - Small refactor of wallet Errors implementation to be more maintainable ([CBR-26](https://iohk.myjetbrains.com/youtrack/issue/CBR-26), [#3429](https://github.com/input-output-hk/cardano-sl/pull/3429)) -- Content-Type parser is now more lenient and accepts `application/json`, `application/json;charset=utf-8` and no Content-Type at all (defaulting to `application/json`) ([CO-370](https://iohk.myjetbrains.com/youtrack/issue/CO-370), [#3596](https://github.com/input-output-hk/cardano-sl/pull/3596)) +- Content-Type parser is now more lenient and accepts `application/json`, `application/json;charset=utf-8` and no Content-Type at all (defaulting to `application/json`) ([CO-369](https://iohk.myjetbrains.com/youtrack/issue/CO-369), [#3596](https://github.com/input-output-hk/cardano-sl/pull/3596)) - The codebase now relies on the package `cryptonite` (instead of `ed25519`) for Ed25519 implementation (CO-325) From 3c36e5e9a9efd490267799cdd0c01da6b2feaa92 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 22 Nov 2018 11:21:08 +1000 Subject: [PATCH 054/103] [RCD-48] explorer frontend: Update testnet link in footer --- explorer/frontend/src/Explorer/View/Footer.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/explorer/frontend/src/Explorer/View/Footer.purs b/explorer/frontend/src/Explorer/View/Footer.purs index f052b699a6c..c846553af17 100644 --- a/explorer/frontend/src/Explorer/View/Footer.purs +++ b/explorer/frontend/src/Explorer/View/Footer.purs @@ -143,7 +143,7 @@ navItemsLeft lang = , link: "https://cardanoroadmap.com" } , { label: translate (I18nL.footer <<< I18nL.fooCardanoTestnet) lang - , link: "https://tada.iohk.io" + , link: "https://testnet.iohkdev.io" } , { label: translate (I18nL.footer <<< I18nL.fooCardanoSource) lang , link: "https://github.com/input-output-hk/cardano-sl" From edf53bbd3ec45b04066b8860c3375945052f6e11 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 22 Nov 2018 11:17:24 +0100 Subject: [PATCH 055/103] [RCD-49] Adjust API documentation I've removed some hard-coded references to field and configuration value since this is a source of discrepancy that is easily forgotten when making change with the code. Also corrected the 'softwareVersion' wording to 'protocolVersion' which is more accurate --- .../src/Cardano/Wallet/API/V1/Swagger.hs | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/API/V1/Swagger.hs b/wallet-new/src/Cardano/Wallet/API/V1/Swagger.hs index 180129c53f9..a691ecb34b4 100644 --- a/wallet-new/src/Cardano/Wallet/API/V1/Swagger.hs +++ b/wallet-new/src/Cardano/Wallet/API/V1/Swagger.hs @@ -25,7 +25,7 @@ import Cardano.Wallet.API.V1.Swagger.Example import Cardano.Wallet.API.V1.Types import Cardano.Wallet.TypeLits (KnownSymbols (..)) -import Pos.Chain.Update (SoftwareVersion) +import Pos.Chain.Update (SoftwareVersion (svNumber)) import Pos.Core.NetworkMagic (NetworkMagic (..)) import Pos.Util.CompileInfo (CompileTimeInfo, ctiGitRevision) import Pos.Util.Servant (CustomQueryFlag, LoggingApi) @@ -320,11 +320,9 @@ requestParameterToDescription = M.fromList [ , ("per_page", perPageDescription (fromString $ show maxPerPageEntries) (fromString $ show defaultPerPageEntries)) ] --- TODO: it would be nice to read ntp configuration directly here to fetch --- 30 seconds wait time instead of hardcoding it here. forceNtpCheckDescription :: T.Text forceNtpCheckDescription = [text| -In some cases, API Clients need to force a new NTP check as a previous result gets cached. A typical use-case is after asking a user to fix its system clock. If this flag is set, request will block until NTP server responds or it will timout if NTP server is not available within **30** seconds. +In some cases, API Clients need to force a new NTP check as a previous result gets cached. A typical use-case is after asking a user to fix its system clock. If this flag is set, request will block until NTP server responds or it will timeout if NTP server is not available within a short delay. |] pageDescription :: T.Text @@ -353,14 +351,14 @@ $errors -- 'WalletError' [ mkRow fmtErr $ NotEnoughMoney (ErrAvailableBalanceIsInsufficient 1400) , mkRow fmtErr $ OutputIsRedeem sampleAddress - , mkRow fmtErr $ UnknownError "Unknown error." - , mkRow fmtErr $ InvalidAddressFormat "Invalid Base58 representation." + , mkRow fmtErr $ UnknownError "Unexpected internal error." + , mkRow fmtErr $ InvalidAddressFormat "Provided address format is not valid." , mkRow fmtErr WalletNotFound , mkRow fmtErr $ WalletAlreadyExists exampleWalletId , mkRow fmtErr AddressNotFound - , mkRow fmtErr $ InvalidPublicKey "Invalid root public key for external wallet." + , mkRow fmtErr $ InvalidPublicKey "Extended public key (for external wallet) is invalid." , mkRow fmtErr UnsignedTxCreationError - , mkRow fmtErr $ SignedTxSubmitError "Cannot submit externally-signed transaction." + , mkRow fmtErr $ SignedTxSubmitError "Unable to submit externally-signed transaction." , mkRow fmtErr TooBigTransaction , mkRow fmtErr TxFailedToStabilize , mkRow fmtErr TxRedemptionDepleted @@ -404,7 +402,7 @@ highLevelShortDescription :: DescriptionEnvironment -> T.Text highLevelShortDescription DescriptionEnvironment{..} = [text| This is the specification for the Cardano Wallet API, automatically generated as a [Swagger](https://swagger.io/) spec from the [Servant](http://haskell-servant.readthedocs.io/en/stable/) API of [Cardano](https://github.com/input-output-hk/cardano-sl). -Software Version | Git Revision +Protocol Version | Git Revision -------------------|------------------- $deSoftwareVersion | $deGitRevision |] @@ -415,7 +413,7 @@ highLevelDescription :: DescriptionEnvironment -> T.Text highLevelDescription DescriptionEnvironment{..} = [text| This is the specification for the Cardano Wallet API, automatically generated as a [Swagger](https://swagger.io/) spec from the [Servant](http://haskell-servant.readthedocs.io/en/stable/) API of [Cardano](https://github.com/input-output-hk/cardano-sl). -Software Version | Git Revision +Protocol Version | Git Revision -------------------|------------------- $deSoftwareVersion | $deGitRevision @@ -1050,9 +1048,7 @@ estimateFeesDescription :: Text estimateFeesDescription = [text| Estimate the fees which would incur from the input payment. This endpoint **does not** require a _spending password_ to be supplied as it generates -under the hood an unsigned transaction. Therefore, callers can simply set -the `spendingPassword` field to `null` as that won't influence the fee -calculation. +under the hood an unsigned transaction. |] getAddressDescription :: Text @@ -1065,8 +1061,8 @@ belong to the wallet (since it could be part of a pending transaction in another instance of the same wallet). To reflect this, the V1 endpoint does not fail when an address is not recognised -and returns a new field 'is-ours' which indicates either that an address is ours, -or that it is 'not-recognised' (which may mean 'not recognised yet'). +and returns a new field which indicates the address' ownership status, from the +node point of view. |] -- @@ -1097,7 +1093,7 @@ api (compileInfo, curSoftwareVersion) walletAPI mkDescription = toSwagger wallet , deDefaultPerPage = fromString (show defaultPerPageEntries) , deWalletErrorTable = errorsDescription , deGitRevision = ctiGitRevision compileInfo - , deSoftwareVersion = fromString $ show curSoftwareVersion + , deSoftwareVersion = fromString $ show (svNumber curSoftwareVersion) } & info.license ?~ ("MIT" & url ?~ URL "https://raw.githubusercontent.com/input-output-hk/cardano-sl/develop/lib/LICENSE") & paths %~ (POST, "/api/internal/apply-update") `setDescription` applyUpdateDescription From d722e1b3ba5134c6b6007775f1c6e78c51bd3012 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 22 Nov 2018 11:05:35 +0100 Subject: [PATCH 056/103] [RCD-49] Fix unwrapped API response for /api/internal/next-update --- wallet-new/src/Cardano/Wallet/API/Internal.hs | 2 +- wallet-new/src/Cardano/Wallet/API/Internal/Handlers.hs | 4 ++-- wallet-new/src/Cardano/Wallet/API/Internal/LegacyHandlers.hs | 4 ++-- wallet-new/src/Cardano/Wallet/Client.hs | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/API/Internal.hs b/wallet-new/src/Cardano/Wallet/API/Internal.hs index e44bd19b8e4..5b2e371cd51 100644 --- a/wallet-new/src/Cardano/Wallet/API/Internal.hs +++ b/wallet-new/src/Cardano/Wallet/API/Internal.hs @@ -14,7 +14,7 @@ import Cardano.Wallet.API.V1.Types (V1, Wallet, WalletImport) type API = Tags '["Internal"] :> ( "next-update" :> Summary "Version of the next update (404 if none)" - :> Get '[ValidJSON] (V1 SoftwareVersion) + :> Get '[ValidJSON] (WalletResponse (V1 SoftwareVersion)) :<|> "apply-update" :> Summary "Apply the next available update" diff --git a/wallet-new/src/Cardano/Wallet/API/Internal/Handlers.hs b/wallet-new/src/Cardano/Wallet/API/Internal/Handlers.hs index 10a63cdaaa1..ab5ee8e5e7c 100644 --- a/wallet-new/src/Cardano/Wallet/API/Internal/Handlers.hs +++ b/wallet-new/src/Cardano/Wallet/API/Internal/Handlers.hs @@ -19,11 +19,11 @@ handlers w = nextUpdate w :<|> resetWalletState w :<|> importWallet w -nextUpdate :: PassiveWalletLayer IO -> Handler (V1 SoftwareVersion) +nextUpdate :: PassiveWalletLayer IO -> Handler (WalletResponse (V1 SoftwareVersion)) nextUpdate w = do mUpd <- liftIO $ WalletLayer.nextUpdate w case mUpd of - Just upd -> return upd + Just upd -> return $ single upd Nothing -> throwError err404 applyUpdate :: PassiveWalletLayer IO -> Handler NoContent diff --git a/wallet-new/src/Cardano/Wallet/API/Internal/LegacyHandlers.hs b/wallet-new/src/Cardano/Wallet/API/Internal/LegacyHandlers.hs index fa45a9d4eae..9b850531883 100644 --- a/wallet-new/src/Cardano/Wallet/API/Internal/LegacyHandlers.hs +++ b/wallet-new/src/Cardano/Wallet/API/Internal/LegacyHandlers.hs @@ -57,8 +57,8 @@ nextUpdate :: ( MonadIO m , V0.WalletDbReader ctx m , HasUpdateConfiguration ) - => m (V1 SoftwareVersion) -nextUpdate = (V1 . V0.cuiSoftwareVersion) <$> V0.nextUpdate + => m (WalletResponse (V1 SoftwareVersion)) +nextUpdate = (single . V1 . V0.cuiSoftwareVersion) <$> V0.nextUpdate resetWalletState :: (V0.WalletDbReader ctx m, V0.MonadKeys m, MonadThrow m, MonadIO m) diff --git a/wallet-new/src/Cardano/Wallet/Client.hs b/wallet-new/src/Cardano/Wallet/Client.hs index 2126468ca3c..3e5cad45682 100644 --- a/wallet-new/src/Cardano/Wallet/Client.hs +++ b/wallet-new/src/Cardano/Wallet/Client.hs @@ -150,7 +150,7 @@ data WalletClient m -- Internal API , nextUpdate - :: m (Either ClientError (V1 SoftwareVersion)) + :: Resp m (V1 SoftwareVersion) , applyUpdate :: m (Either ClientError ()) , postponeUpdate From e480dd3eba62f90424fec78cdbb81d4810a3e5e6 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Thu, 22 Nov 2018 15:47:55 +0300 Subject: [PATCH 057/103] wallet-new: run EKG server if --ekg-server IP:PORT is passed --- pkgs/default.nix | 2 ++ wallet-new/cardano-sl-wallet-new.cabal | 1 + wallet-new/server/Main.hs | 13 +++++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index affffbf8fb0..b295969dfc9 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -18203,6 +18203,7 @@ license = stdenv.lib.licenses.mit; , data-default , data-default-class , directory +, ekg , exceptions , filepath , foldl @@ -18326,6 +18327,7 @@ cryptonite data-default data-default-class directory +ekg exceptions filepath foldl diff --git a/wallet-new/cardano-sl-wallet-new.cabal b/wallet-new/cardano-sl-wallet-new.cabal index e2f66242448..b2f95bf5099 100755 --- a/wallet-new/cardano-sl-wallet-new.cabal +++ b/wallet-new/cardano-sl-wallet-new.cabal @@ -299,6 +299,7 @@ executable cardano-node , cardano-sl-util , cardano-sl-wallet , cardano-sl-wallet-new + , ekg , stm , text , universum diff --git a/wallet-new/server/Main.hs b/wallet-new/server/Main.hs index 95842c178a2..339d5b887a4 100644 --- a/wallet-new/server/Main.hs +++ b/wallet-new/server/Main.hs @@ -2,7 +2,10 @@ module Main where import Universum -import Pos.Client.CLI (NodeArgs (..), loggingParams) +import System.Remote.Monitoring (forkServer) + +import Pos.Client.CLI (NodeArgs (..), loggingParams, ekgParams) +import Pos.Infra.Statistics.Ekg import Pos.Launcher (launchNode) import Pos.Util.CompileInfo (withCompileInfo) @@ -11,7 +14,6 @@ import qualified Cardano.Wallet.LegacyAction as Legacy import Cardano.Wallet.Server.CLI (ChooseWalletBackend (..), WalletStartupOptions (..), getWalletNodeOptions) - -- | The main entrypoint for the Wallet. main :: IO () main = withCompileInfo $ do @@ -21,6 +23,13 @@ main = withCompileInfo $ do putText "Wallet is starting..." + case ekgParams cArgs of + Just (EkgParams eHost ePort) -> do + putText $ "EKG is starting on " <> show eHost <> ":" <> show ePort + forkServer eHost ePort + pure () + Nothing -> pure () + launchNode nArgs cArgs lArgs $ case wArgs of WalletLegacy p -> Legacy.actionWithWallet p From 99a57f022fc3518409dc88474f5aa67cf0fa0264 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Thu, 22 Nov 2018 16:25:21 +0300 Subject: [PATCH 058/103] lib: move EKG launch from wallet --- lib/cardano-sl.cabal | 1 + lib/src/Pos/Launcher/Launcher.hs | 10 ++++++++++ pkgs/default.nix | 4 ++-- wallet-new/cardano-sl-wallet-new.cabal | 1 - wallet-new/server/Main.hs | 12 +----------- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/cardano-sl.cabal b/lib/cardano-sl.cabal index 24a167e48a7..3a555e6dd3f 100644 --- a/lib/cardano-sl.cabal +++ b/lib/cardano-sl.cabal @@ -161,6 +161,7 @@ library , data-default , directory , ekg-core + , ekg , ether >= 0.5 , exceptions , filelock >= 0.1.0.1 diff --git a/lib/src/Pos/Launcher/Launcher.hs b/lib/src/Pos/Launcher/Launcher.hs index b9180c94d05..dd6befe1bcc 100644 --- a/lib/src/Pos/Launcher/Launcher.hs +++ b/lib/src/Pos/Launcher/Launcher.hs @@ -22,6 +22,7 @@ import Pos.Client.CLI.Options (configurationOptions) import Pos.Client.CLI.Params (getNodeParams) import Pos.DB.DB (initNodeDBs) import Pos.DB.Txp.Logic (txpGlobalSettings) +import Pos.Infra.Statistics.Ekg import Pos.Launcher.Configuration (AssetLockPath (..), HasConfigurations, WalletConfiguration, cfoKey, withConfigurations) @@ -36,6 +37,8 @@ import Pos.Util.Wlog (logInfo) import Pos.Worker.Update (updateTriggerWorker) import Pos.WorkMode (EmptyMempoolExt) +import System.Remote.Monitoring (forkServer) + -- | Run a given action from a bunch of static arguments launchNode @@ -63,6 +66,13 @@ launchNode nArgs cArgs lArgs action = do (cnaDumpConfiguration cArgs) confOpts + case ekgParams cArgs of + Just (EkgParams eHost ePort) -> do + putText $ "EKG is starting on " <> show eHost <> ":" <> show ePort + _ <- forkServer eHost ePort + pure () + Nothing -> pure () + withLogger' $ withConfigurations' $ \genesisConfig walletConfig txpConfig ntpConfig -> do (nodeParams, Just sscParams) <- getNodeParams (lpDefaultName lArgs) diff --git a/pkgs/default.nix b/pkgs/default.nix index b295969dfc9..b62ca3fd355 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -14708,6 +14708,7 @@ license = stdenv.lib.licenses.bsd3; , data-default , deepseq , directory +, ekg , ekg-core , ether , exceptions @@ -14807,6 +14808,7 @@ cpphs cryptonite data-default directory +ekg ekg-core ether exceptions @@ -18203,7 +18205,6 @@ license = stdenv.lib.licenses.mit; , data-default , data-default-class , directory -, ekg , exceptions , filepath , foldl @@ -18327,7 +18328,6 @@ cryptonite data-default data-default-class directory -ekg exceptions filepath foldl diff --git a/wallet-new/cardano-sl-wallet-new.cabal b/wallet-new/cardano-sl-wallet-new.cabal index b2f95bf5099..e2f66242448 100755 --- a/wallet-new/cardano-sl-wallet-new.cabal +++ b/wallet-new/cardano-sl-wallet-new.cabal @@ -299,7 +299,6 @@ executable cardano-node , cardano-sl-util , cardano-sl-wallet , cardano-sl-wallet-new - , ekg , stm , text , universum diff --git a/wallet-new/server/Main.hs b/wallet-new/server/Main.hs index 339d5b887a4..717017b851c 100644 --- a/wallet-new/server/Main.hs +++ b/wallet-new/server/Main.hs @@ -2,9 +2,7 @@ module Main where import Universum -import System.Remote.Monitoring (forkServer) - -import Pos.Client.CLI (NodeArgs (..), loggingParams, ekgParams) +import Pos.Client.CLI (NodeArgs (..), loggingParams) import Pos.Infra.Statistics.Ekg import Pos.Launcher (launchNode) import Pos.Util.CompileInfo (withCompileInfo) @@ -20,16 +18,8 @@ main = withCompileInfo $ do WalletStartupOptions cArgs wArgs <- getWalletNodeOptions let lArgs = loggingParams "node" cArgs let nArgs = NodeArgs { behaviorConfigPath = Nothing } - putText "Wallet is starting..." - case ekgParams cArgs of - Just (EkgParams eHost ePort) -> do - putText $ "EKG is starting on " <> show eHost <> ":" <> show ePort - forkServer eHost ePort - pure () - Nothing -> pure () - launchNode nArgs cArgs lArgs $ case wArgs of WalletLegacy p -> Legacy.actionWithWallet p From b07ecc4fb25064473e50e693312467a76c3edfdc Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Thu, 22 Nov 2018 17:10:05 +0300 Subject: [PATCH 059/103] Review fixes --- lib/src/Pos/Launcher/Launcher.hs | 9 +++------ wallet-new/server/Main.hs | 3 ++- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/src/Pos/Launcher/Launcher.hs b/lib/src/Pos/Launcher/Launcher.hs index dd6befe1bcc..3f6e45491bf 100644 --- a/lib/src/Pos/Launcher/Launcher.hs +++ b/lib/src/Pos/Launcher/Launcher.hs @@ -66,12 +66,9 @@ launchNode nArgs cArgs lArgs action = do (cnaDumpConfiguration cArgs) confOpts - case ekgParams cArgs of - Just (EkgParams eHost ePort) -> do - putText $ "EKG is starting on " <> show eHost <> ":" <> show ePort - _ <- forkServer eHost ePort - pure () - Nothing -> pure () + whenJust (ekgParams cArgs) $ \(EkgParams eHost ePort) -> do + putText $ "EKG is starting on " <> show eHost <> ":" <> show ePort + void $ forkServer eHost ePort withLogger' $ withConfigurations' $ \genesisConfig walletConfig txpConfig ntpConfig -> do (nodeParams, Just sscParams) <- getNodeParams diff --git a/wallet-new/server/Main.hs b/wallet-new/server/Main.hs index 717017b851c..95842c178a2 100644 --- a/wallet-new/server/Main.hs +++ b/wallet-new/server/Main.hs @@ -3,7 +3,6 @@ module Main where import Universum import Pos.Client.CLI (NodeArgs (..), loggingParams) -import Pos.Infra.Statistics.Ekg import Pos.Launcher (launchNode) import Pos.Util.CompileInfo (withCompileInfo) @@ -12,12 +11,14 @@ import qualified Cardano.Wallet.LegacyAction as Legacy import Cardano.Wallet.Server.CLI (ChooseWalletBackend (..), WalletStartupOptions (..), getWalletNodeOptions) + -- | The main entrypoint for the Wallet. main :: IO () main = withCompileInfo $ do WalletStartupOptions cArgs wArgs <- getWalletNodeOptions let lArgs = loggingParams "node" cArgs let nArgs = NodeArgs { behaviorConfigPath = Nothing } + putText "Wallet is starting..." launchNode nArgs cArgs lArgs $ case wArgs of From 47080d814f28e2283ee1c05a5705cf03548425f2 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Thu, 22 Nov 2018 20:21:31 +0300 Subject: [PATCH 060/103] [DEVOPS-1134] Bump report-server for ZD tickets defaulting to New --- pkgs/default.nix | 4 ++-- stack.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index affffbf8fb0..7d9aa3bd6cf 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -14610,8 +14610,8 @@ version = "0.5.10"; src = fetchgit { url = "https://github.com/input-output-hk/cardano-report-server.git"; -sha256 = "02n86wbfr3z2xqrc8g8naj0dc5j4644y0l295qzdqlfynmz6a82z"; -rev = "9b96874d0f234554a5779d98762cc0a6773a532a"; +sha256 = "0hbgw3ci5057z40vg6vaypq4rjvdpla069llxbv12wck8wd3fb4y"; +rev = "104c61c293c912a5cee216f367a4910614439e2c"; }; isLibrary = true; diff --git a/stack.yaml b/stack.yaml index 40233657a08..1a918f43f82 100644 --- a/stack.yaml +++ b/stack.yaml @@ -56,7 +56,7 @@ packages: - location: git: https://github.com/input-output-hk/cardano-report-server.git - commit: 9b96874d0f234554a5779d98762cc0a6773a532a + commit: 104c61c293c912a5cee216f367a4910614439e2c extra-dep: true - location: From 8a97dd2f9f016ea7477677d3111fa07c5936211c Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Thu, 22 Nov 2018 17:59:44 +0300 Subject: [PATCH 061/103] appveyor: bump OpenSSL to 1.0.2q, as build for 1.0.2p is no longer available --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index b1d78e1add3..68c4e873390 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -63,7 +63,7 @@ before_test: $env:PATH="$env:PATH;C:\ghc\ghc-8.2.2\bin" # Install OpenSSL 1.0.2 (see https://github.com/appveyor/ci/issues/1665) -- ps: (New-Object Net.WebClient).DownloadFile('https://slproweb.com/download/Win64OpenSSL-1_0_2p.exe', "$($env:USERPROFILE)\Win64OpenSSL.exe") +- ps: (New-Object Net.WebClient).DownloadFile('https://slproweb.com/download/Win64OpenSSL-1_0_2q.exe', "$($env:USERPROFILE)\Win64OpenSSL.exe") - ps: cmd /c start /wait "$($env:USERPROFILE)\Win64OpenSSL.exe" /silent /verysilent /sp- /suppressmsgboxes /DIR=C:\OpenSSL-Win64-v102 - ps: Install-Product node 6 # Install stack From 8d5f421cf2a234e86b835f7c35d266b04aac76c7 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Tue, 27 Nov 2018 17:55:12 +1000 Subject: [PATCH 062/103] [RCD-37] ChangeLog: Remove empty section --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cf30caaa0c..071c2c84c8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -183,8 +183,6 @@ - Add a test which checks if the configuration can be correctly parsed - [CDEC-405](https://iohk.myjetbrains.com/youtrack/issue/CDEC-405) [#3175](https://github.com/input-output-hk/cardano-sl/pull/3175) -### Specifications - ### Documentation - Make an inventory of existing wallet errors and exceptions ([CBR-307](https://iohk.myjetbrains.com/youtrack/issue/CO-307)) From 073819844a2748154d9531ad1fa92e41caa4e16d Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Tue, 27 Nov 2018 13:33:08 +0300 Subject: [PATCH 063/103] launcher: EKG already started in Launcher/Runner --- lib/src/Pos/Launcher/Launcher.hs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lib/src/Pos/Launcher/Launcher.hs b/lib/src/Pos/Launcher/Launcher.hs index 3f6e45491bf..b9180c94d05 100644 --- a/lib/src/Pos/Launcher/Launcher.hs +++ b/lib/src/Pos/Launcher/Launcher.hs @@ -22,7 +22,6 @@ import Pos.Client.CLI.Options (configurationOptions) import Pos.Client.CLI.Params (getNodeParams) import Pos.DB.DB (initNodeDBs) import Pos.DB.Txp.Logic (txpGlobalSettings) -import Pos.Infra.Statistics.Ekg import Pos.Launcher.Configuration (AssetLockPath (..), HasConfigurations, WalletConfiguration, cfoKey, withConfigurations) @@ -37,8 +36,6 @@ import Pos.Util.Wlog (logInfo) import Pos.Worker.Update (updateTriggerWorker) import Pos.WorkMode (EmptyMempoolExt) -import System.Remote.Monitoring (forkServer) - -- | Run a given action from a bunch of static arguments launchNode @@ -66,10 +63,6 @@ launchNode nArgs cArgs lArgs action = do (cnaDumpConfiguration cArgs) confOpts - whenJust (ekgParams cArgs) $ \(EkgParams eHost ePort) -> do - putText $ "EKG is starting on " <> show eHost <> ":" <> show ePort - void $ forkServer eHost ePort - withLogger' $ withConfigurations' $ \genesisConfig walletConfig txpConfig ntpConfig -> do (nodeParams, Just sscParams) <- getNodeParams (lpDefaultName lArgs) From cf2a6371e600ce2f39481b670286a0d71e308a10 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Tue, 27 Nov 2018 13:48:49 +0300 Subject: [PATCH 064/103] [DEVOPS-1143] Bump report-server to drop setting of Assignee field in fresh tickets --- pkgs/default.nix | 4 ++-- stack.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index 0fba1b506d8..4c26d1b9e3b 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -14610,8 +14610,8 @@ version = "0.5.10"; src = fetchgit { url = "https://github.com/input-output-hk/cardano-report-server.git"; -sha256 = "0hbgw3ci5057z40vg6vaypq4rjvdpla069llxbv12wck8wd3fb4y"; -rev = "104c61c293c912a5cee216f367a4910614439e2c"; +sha256 = "10hqaxc07rkqaj7br4kki4drg2hz45rp7wr1b8s9b6cfg3apriwp"; +rev = "62f04801ef9fce4c8e856607400a2bb05ab732e9"; }; isLibrary = true; diff --git a/stack.yaml b/stack.yaml index 1a918f43f82..b2040068251 100644 --- a/stack.yaml +++ b/stack.yaml @@ -56,7 +56,7 @@ packages: - location: git: https://github.com/input-output-hk/cardano-report-server.git - commit: 104c61c293c912a5cee216f367a4910614439e2c + commit: 62f04801ef9fce4c8e856607400a2bb05ab732e9 extra-dep: true - location: From a7813e909fc7a1efae5c1c317cb5a13e3ec2f676 Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Tue, 27 Nov 2018 13:32:30 -0500 Subject: [PATCH 065/103] enable bors for release 2.0.0 --- bors.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 bors.toml diff --git a/bors.toml b/bors.toml new file mode 100644 index 00000000000..4542de76c28 --- /dev/null +++ b/bors.toml @@ -0,0 +1,12 @@ +status = [ + # Hydra: Aggregate job from release.nix + "ci/hydra:serokell:cardano-sl:required", + + # Buildkite: stack2nix checks, etc. + "buildkite/cardano-sl", +] +timeout_sec = 7200 +required_approvals = 1 +cut_body_after = "## Type of change" +delete_merged_branches = true +block_labels = [ "DO NOT MERGE", "wip" ] From 8131e2cdfc1186b1d3d9e07c4ef96b14745b6d91 Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Wed, 28 Nov 2018 16:16:19 -0500 Subject: [PATCH 066/103] buildkite legacy windows instance --- .buildkite/pipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 4a24042facb..c05eae05ef1 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -2,7 +2,7 @@ steps: - label: 'Windows' command: 'PowerShell.exe -executionpolicy remotesigned -File .\.buildkite\windows.ps1' agents: - system: x86_64-win2016 + system: x86_64-win2016-legacy - label: 'stack2nix' command: 'nix-shell -Q -j 4 --run scripts/check-stack2nix.sh' From c9040fede18127d3f4ff2cb81bc22ea662651bca Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Wed, 28 Nov 2018 14:56:52 -0500 Subject: [PATCH 067/103] [DEVOPS-1113] New buildkite configuration --- .buildkite/pipeline.yml | 2 +- .buildkite/windows.ps1 | 80 +++++++++++++++---- appveyor.yml | 166 +--------------------------------------- 3 files changed, 66 insertions(+), 182 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index c05eae05ef1..4a24042facb 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -2,7 +2,7 @@ steps: - label: 'Windows' command: 'PowerShell.exe -executionpolicy remotesigned -File .\.buildkite\windows.ps1' agents: - system: x86_64-win2016-legacy + system: x86_64-win2016 - label: 'stack2nix' command: 'nix-shell -Q -j 4 --run scripts/check-stack2nix.sh' diff --git a/.buildkite/windows.ps1 b/.buildkite/windows.ps1 index 0dab8841db7..658830d3774 100644 --- a/.buildkite/windows.ps1 +++ b/.buildkite/windows.ps1 @@ -1,22 +1,20 @@ ############################################################################ # Windows build script for Buildkite # -# Requires the Windows 10 VM to be set up with the compiler, -# and other tools. -# +# Requires the devops buildkite-windows AMI ############################################################################ -Set-PSDebug -Trace 1 +#Set-PSDebug -Trace 1 Write-Output "--- Prepare work directory" # Avoid long paths on Windows -$env:STACK_ROOT="D:\s" +$env:STACK_ROOT="Z:\s" $env:STACK_WORK=".w" -$env:WORK_DIR="D:\w" +$env:WORK_DIR="Z:\w" # Override the temp directory to avoid sed escaping issues # See https://github.com/haskell/cabal/issues/5386 -$env:TMP="D:\\tmp" +$env:TMP="Z:\\tmp" # Store the original checkout directory $env:CHECKOUT_PATH=(Get-Item -Path ".\").FullName @@ -24,7 +22,55 @@ $env:CHECKOUT_PATH=(Get-Item -Path ".\").FullName # Temp directory needs to exist New-Item -ItemType Directory -Force -Path $env:TMP -$env:PATH="$env:PATH;D:\ghc\ghc-8.2.2\bin;D:\stack;$Env:Programfiles\7-Zip;D:\w" +New-Item -ItemType Directory -Force -Path z:\ghc + +New-Item -ItemType Directory -Force -Path z:\Downloads +New-Item -ItemType Directory -Force -Path $env:STACK_ROOT + +$StackConfig = @" +templates: + params: null +system-ghc: true +local-programs-path: "z:\\s\\programs" +local-bin-path: "z:\\s\\bin" +"@ + +$StackConfig | Out-File -FilePath $env:STACK_ROOT\config.yaml -Encoding ASCII + +# +if (!([System.IO.File]::Exists("Z:\ghc\ghc-8.2.2.tar.xz"))) { + echo "Downloading and extracting GHC" + curl.exe https://s3.eu-central-1.amazonaws.com/ci-static/ghc-8.2.2-x86_64-unknown-mingw32.tar.xz -o Z:\ghc\ghc-8.2.2.tar.xz -L + 7z x Z:\ghc\ghc-8.2.2.tar.xz -oZ:\ghc + 7z x Z:\ghc\ghc-8.2.2.tar -oZ:\ghc +} + +# OpenSSL +# +#$env:USERPROFILE +if (!([System.IO.File]::Exists("Z:\Downloads\Win64OpenSSL-1_0_2q.exe"))) { + echo "Downloading and installing OpenSSL" + rd -r -fo z:\OpenSSL-Win64-v102 + curl.exe https://s3.eu-central-1.amazonaws.com/ci-static/Win64OpenSSL-1_0_2q.exe -o Z:\Downloads\Win64OpenSSL-1_0_2q.exe -L + cmd /c start /wait "Z:\Downloads\Win64OpenSSL-1_0_2q.exe" /silent /verysilent /sp- /suppressmsgboxes /DIR=Z:\OpenSSL-Win64-v102 +} +## Install stack +if (!([System.IO.File]::Exists("Z:\Downloads\stack-1.9.1-windows-x86_64.zip"))) { + echo "Downloading and extracting stack" + rd -r -fo z:\stack + curl.exe https://s3.eu-central-1.amazonaws.com/ci-static/stack-1.9.1-windows-x86_64.zip -o z:\Downloads\stack-1.9.1-windows-x86_64.zip -L + 7z -oZ:\stack x Z:\Downloads\stack-1.9.1-windows-x86_64.zip +} + +$env:PATH="$env:PATH;Z:\ghc\ghc-8.2.2\bin;Z:\stack;Z:\w" + +# Install liblzma/xz +if (!([System.IO.File]::Exists("Z:\Downloads\xz-5.2.3-windows.zip"))) { + echo "Downloading and extracting xz" + rd -r -fo z:\xz_extracted + curl.exe -L https://s3.eu-central-1.amazonaws.com/ci-static/xz-5.2.3-windows.zip -o Z:\Downloads\xz-5.2.3-windows.zip + 7z -oZ:\xz_extracted x Z:\Downloads\xz-5.2.3-windows.zip +} # Clear out work directory, copy source tree there, then cd into it. rd -r -fo $env:WORK_DIR @@ -36,8 +82,11 @@ cd $env:WORK_DIR # headers and the zip provides rocksdb.dll. This is needed to build # rocksdb-haskell. git.exe clone https://github.com/facebook/rocksdb.git --branch v4.13.5 -curl.exe -L 'https://s3.eu-central-1.amazonaws.com/ci-static/serokell-rocksdb-haskell-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip' -o D:\Downloads\rocksdb.zip -7z x D:\Downloads\rocksdb.zip +if (!([System.IO.File]::Exists("Z:\Downloads\rocksdb-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip"))) { + echo "Downloading rocksdb" + curl.exe -L 'https://s3.eu-central-1.amazonaws.com/ci-static/serokell-rocksdb-haskell-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip' -o Z:\Downloads\rocksdb-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip +} +7z x Z:\Downloads\rocksdb-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip # CSL-1509: After moving the 'cardano-sl' project itself into a separate folder ('lib/'), the 'cardano-text.exe' executable fails on AppVeyor CI. # After some investigation, it was discovered that this was because 'rocksdb.dll' has to be located in this folder as well, or else the test executable doesn't work. @@ -45,6 +94,9 @@ copy rocksdb.dll node copy rocksdb.dll lib copy rocksdb.dll wallet-new +# Terminate on all errors +$ErrorActionPreference = "Stop" + ############################################################################ # Prepare stack and build tools # @@ -64,7 +116,7 @@ stack.exe exec -- ghc-pkg recache stack.exe --verbosity warn setup --no-reinstall # Install happy separately: https://github.com/commercialhaskell/stack/issues/3151#issuecomment-310642487. Also install cpphs because it's a build-tool and Stack can't figure out by itself that it should be installed -stack.exe --verbosity warn install happy cpphs -j 2 --no-terminal --local-bin-path $env:SYSTEMROOT\system32 --extra-include-dirs="D:\OpenSSL-Win64-v102\include" --extra-lib-dirs="D:\OpenSSL-Win64-v102" --extra-include-dirs="D:\xz_extracted\include" --extra-lib-dirs="D:\xz_extracted\bin_x86-64" --extra-include-dirs="$env:WORK_DIR\rocksdb\include" --extra-lib-dirs="$env:WORK_DIR" +stack.exe --verbosity warn install happy cpphs -j 2 --no-terminal --local-bin-path $env:SYSTEMROOT\system32 --extra-include-dirs="Z:\OpenSSL-Win64-v102\include" --extra-lib-dirs="Z:\OpenSSL-Win64-v102" --extra-include-dirs="Z:\xz_extracted\include" --extra-lib-dirs="Z:\xz_extracted\bin_x86-64" --extra-include-dirs="$env:WORK_DIR\rocksdb\include" --extra-lib-dirs="$env:WORK_DIR" ############################################################################ # Build and test. @@ -74,8 +126,7 @@ stack.exe --verbosity warn install happy cpphs -j 2 --no-terminal --local-bin-pa Write-Output "+++ Stack build and test" -stack.exe --dump-logs install cardano-sl cardano-sl-tools cardano-sl-wallet-new -j 3 --no-terminal --local-bin-path $env:WORK_DIR --no-haddock-deps --flag cardano-sl-core:-asserts --flag cardano-sl-tools:for-installer --extra-include-dirs="D:\OpenSSL-Win64-v102\include" --extra-lib-dirs="D:\OpenSSL-Win64-v102" --extra-include-dirs="D:\xz_extracted\include" --extra-lib-dirs="D:\xz_extracted\bin_x86-64" --extra-include-dirs="$env:WORK_DIR\rocksdb\include" --extra-lib-dirs="$env:WORK_DIR" - +stack.exe --dump-logs install cardano-sl cardano-sl-tools cardano-sl-wallet-new -j 3 --no-terminal --local-bin-path $env:WORK_DIR --no-haddock-deps --flag cardano-sl-core:-asserts --flag cardano-sl-tools:for-installer --extra-include-dirs="Z:\OpenSSL-Win64-v102\include" --extra-lib-dirs="Z:\OpenSSL-Win64-v102" --extra-include-dirs="Z:\xz_extracted\include" --extra-lib-dirs="Z:\xz_extracted\bin_x86-64" --extra-include-dirs="$env:WORK_DIR\rocksdb\include" --extra-lib-dirs="$env:WORK_DIR" ############################################################################ # Assemble artifact zip file for use by the Daedalus installers build @@ -83,9 +134,6 @@ stack.exe --dump-logs install cardano-sl cardano-sl-tools cardano-sl-wallet-new Write-Output "--- Create zip file" -# from here onwards, errors terminate the script -$ErrorActionPreference = "Stop" - # Cardano pieces, modulo the frontend mkdir daedalus ## log config is called `log-config-prod.yaml` just in case, it's the old name diff --git a/appveyor.yml b/appveyor.yml index 68c4e873390..9a08430b05e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,169 +3,5 @@ image: Visual Studio 2015 build: off -environment: - global: - # Avoid long paths on Windows - STACK_ROOT: "c:\\s" - STACK_WORK: ".w" - WORK_DIR: "c:\\w" - CACHE_S3_VERSION: v0.1.4 - CACHE_S3_MAX_SIZE: 1600MB # AppVeyor limits the amount uploaded to approx 2GB - AWS_REGION: us-west-1 - S3_BUCKET: appveyor-ci-cache - AWS_ACCESS_KEY_ID: - secure: sQWt5CpaN0H+jwUVoTsrET46pADUDEcrJ5D9MHmKX0M= - AWS_SECRET_ACCESS_KEY: - secure: m5sQYd16K8HA0zoZaD0gOl4EEWUso1D51L5rp+kT3hLaIE3tt4iT+b+iW8F4F0FU - -init: -- ps: $env:CACHE_S3_READY = (("$env:CACHE_S3_VERSION" -ne "") -and ("$env:S3_BUCKET" -ne "") -and ("$env:AWS_ACCESS_KEY_ID" -ne "") -and ("$env:AWS_SECRET_ACCESS_KEY" -ne "")) - -before_test: -# Avoid long paths not to each MAX_PATH of 260 chars -- xcopy /q /s /e /r /k /i /v /h /y "%APPVEYOR_BUILD_FOLDER%" "%WORK_DIR%" -- cd "%WORK_DIR%" -# Restore cache -- Echo %APPVEYOR_BUILD_VERSION% > build-id -- ps: >- - Write-Host "in pagefile script" ; - $c = Get-WmiObject Win32_computersystem -EnableAllPrivileges ; - if($c.AutomaticManagedPagefile){ - Write-Host "disabling managed page file settings" - $c.AutomaticManagedPagefile = $false - $c.Put() | Out-Null - } ; - $new_page_size=25000 ; - $CurrentPageFile = Get-WmiObject -Class Win32_PageFileSetting ; - if ($CurrentPageFile.InitialSize -ne $new_page_size) { - Write-Host "setting new page file size to $new_page_size" - $CurrentPageFile.InitialSize=$new_page_size - $CurrentPageFile.MaximumSize=$new_page_size - $CurrentPageFile.Put() | Out-Null - } ; - if ( $env:CACHE_S3_READY -eq $true ) { - Start-FileDownload https://github.com/fpco/cache-s3/releases/download/$env:CACHE_S3_VERSION/cache-s3-$env:CACHE_S3_VERSION-windows-x86_64.zip -FileName cache-s3.zip - 7z x cache-s3.zip cache-s3.exe - .\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -v info -c restore stack --base-branch=develop - .\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -v info -c restore stack work --base-branch=develop - } - -# Get custom GHC -- ps: >- - mkdir C:\ghc - - Invoke-WebRequest "https://s3.eu-central-1.amazonaws.com/ci-static/ghc-8.2.2-x86_64-unknown-mingw32.tar.xz" -OutFile "C:\ghc\ghc.tar.xz" -UserAgent "Curl" - - 7z x C:\ghc\ghc.tar.xz -oC:\ghc - - 7z x C:\ghc\ghc.tar -oC:\ghc - - $env:PATH="$env:PATH;C:\ghc\ghc-8.2.2\bin" - -# Install OpenSSL 1.0.2 (see https://github.com/appveyor/ci/issues/1665) -- ps: (New-Object Net.WebClient).DownloadFile('https://slproweb.com/download/Win64OpenSSL-1_0_2q.exe', "$($env:USERPROFILE)\Win64OpenSSL.exe") -- ps: cmd /c start /wait "$($env:USERPROFILE)\Win64OpenSSL.exe" /silent /verysilent /sp- /suppressmsgboxes /DIR=C:\OpenSSL-Win64-v102 -- ps: Install-Product node 6 -# Install stack -- ps: Start-FileDownload http://www.stackage.org/stack/windows-x86_64 -FileName stack.zip -- 7z x stack.zip stack.exe - - -# Install rocksdb -- git clone https://github.com/facebook/rocksdb.git --branch v4.13.5 -- ps: Start-FileDownload 'https://s3.eu-central-1.amazonaws.com/ci-static/serokell-rocksdb-haskell-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip' -FileName rocksdb.zip -- 7z x rocksdb.zip - -# CSL-1509: After moving the 'cardano-sl' project itself into a separate folder ('lib/'), the 'cardano-text.exe' executable fails on AppVeyor CI. -# After some investigation, it was discovered that this was because 'rocksdb.dll' has to be located in this folder as well, or else the test executable doesn't work. -- copy rocksdb.dll node -- copy rocksdb.dll lib -- copy rocksdb.dll wallet -- copy rocksdb.dll wallet-new - -# Install liblzma/xz -- ps: Start-FileDownload https://tukaani.org/xz/xz-5.2.3-windows.zip -Filename xz-5.2.3-windows.zip -- 7z -oC:\xz_extracted x xz-5.2.3-windows.zip - test_script: - - cd "%WORK_DIR%" - - stack config --system-ghc set system-ghc --global true - - stack exec -- ghc-pkg recache - - stack --verbosity warn setup --no-reinstall > nul - # Install happy separately: https://github.com/commercialhaskell/stack/issues/3151#issuecomment-310642487. Also install cpphs because it's a build-tool and Stack can't figure out by itself that it should be installed - - scripts\ci\appveyor-retry call stack --verbosity warn install happy cpphs - -j 2 - --no-terminal - --local-bin-path %SYSTEMROOT%\system32 - --extra-include-dirs="C:\OpenSSL-Win64-v102\include" - --extra-lib-dirs="C:\OpenSSL-Win64-v102" - --extra-include-dirs="C:\xz_extracted\include" - --extra-lib-dirs="C:\xz_extracted\bin_x86-64" - --extra-include-dirs="%WORK_DIR%\rocksdb\include" - --extra-lib-dirs="%WORK_DIR%" -# TODO: CSL-1133. To be reenabled. -# - stack test --coverage -# - stack hpc report cardano-sl cardano-sl-txp cardano-sl-core cardano-sl-db cardano-sl-update cardano-sl-infra cardano-sl-lrc cardano-sl-ssc -# Retry transient failures due to https://github.com/haskell/cabal/issues/4005 - # We intentionally don't build auxx here, because this build is for installer. - - scripts\ci\appveyor-retry call stack --dump-logs install cardano-sl cardano-sl-tools cardano-sl-wallet cardano-sl-wallet-new - -j 3 - --no-terminal - --local-bin-path %WORK_DIR% - --no-haddock-deps - --flag cardano-sl-core:-asserts - --flag cardano-sl-tools:for-installer - --flag cardano-sl-wallet:for-installer - --extra-include-dirs="C:\OpenSSL-Win64-v102\include" - --extra-lib-dirs="C:\OpenSSL-Win64-v102" - --extra-include-dirs="C:\xz_extracted\include" - --extra-lib-dirs="C:\xz_extracted\bin_x86-64" - --extra-include-dirs="%WORK_DIR%\rocksdb\include" - --extra-lib-dirs="%WORK_DIR%" - # Cardano pieces, modulo the frontend - - mkdir daedalus - # log config is called `log-config-prod.yaml` just in case, it's the old name - - copy log-configs\daedalus.yaml daedalus\log-config-prod.yaml - - copy lib\configuration.yaml daedalus\ - - copy lib\*genesis*.json daedalus\ - - copy cardano-launcher.exe daedalus\ - - copy cardano-node.exe daedalus\ - - copy cardano-x509-certificates.exe daedalus\ - - cd daedalus - - Echo %APPVEYOR_BUILD_VERSION% > build-id - - Echo %APPVEYOR_REPO_COMMIT% > commit-id - - Echo https://ci.appveyor.com/project/%APPVEYOR_ACCOUNT_NAME%/%APPVEYOR_PROJECT_SLUG%/build/%APPVEYOR_BUILD_VERSION% > ci-url - -after_test: - - xcopy /q /s /e /r /k /i /v /h /y "%WORK_DIR%\daedalus" "%APPVEYOR_BUILD_FOLDER%\daedalus" - - cd "%WORK_DIR%/daedalus" - - 7z a "%APPVEYOR_REPO_COMMIT%.zip" * - - appveyor PushArtifact "%APPVEYOR_REPO_COMMIT%.zip" - - cd "%WORK_DIR%" # Get back to where cache-s3.exe is located - - ps: >- - if ( ($env:CACHE_S3_READY -eq $true) -and (-not $env:APPVEYOR_PULL_REQUEST_NUMBER) ) { - if ($env:APPVEYOR_REPO_BRANCH -eq "master" -Or $env:APPVEYOR_REPO_BRANCH -eq "develop" -Or $env:APPVEYOR_REPO_BRANCH -like "release*") { - Write-Host "saving stack" - .\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -c -v info save stack - Write-Host "done stack" - } - Write-Host "saving stack work" - .\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -c -v info save stack work - Write-Host "done stack work" - } -artifacts: - - path: daedalus/ - name: CardanoSL - type: zip - -deploy: - provider: S3 - access_key_id: - secure: IEky6PsMzHaKHNBMxR8tQaQI8X7qWRB9+HuEroTVRBk= - secret_access_key: - secure: cqjzG96hWB1x3JDbVSbF9E+aJ5jKvIGacJRUDWATHaTOYfSt6Rvive/NrF4lKBIm - bucket: appveyor-ci-deploy - region: ap-northeast-1 - set_public: true - folder: cardano-sl - artifact: $(APPVEYOR_REPO_COMMIT).zip +- ps: echo "No Longer Used, check buildkite windows job" From 4de27f71e216d7f6be3a5ec308541cf7d8e82938 Mon Sep 17 00:00:00 2001 From: Alfredo Di Napoli Date: Sat, 24 Nov 2018 18:15:43 +0100 Subject: [PATCH 068/103] [DEVOPS-1153] Extend addWAddress to support newly-found accounts The previous incarnation of `addWAddress` had a bug: in case of new accounts (like the ones we could find as part of a restoration) it wouldn't add the relevant address to the DB, because the old code was using a lens traversal with 'ix' which notoriously does nothing if the key (in this case the account index) was not there. This commit fixes it. --- wallet/src/Pos/Wallet/Web/State/Storage.hs | 41 +++++++++++++--------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/wallet/src/Pos/Wallet/Web/State/Storage.hs b/wallet/src/Pos/Wallet/Web/State/Storage.hs index b688016c6c7..e2e0a7cbd48 100644 --- a/wallet/src/Pos/Wallet/Web/State/Storage.hs +++ b/wallet/src/Pos/Wallet/Web/State/Storage.hs @@ -1,5 +1,6 @@ -{-# LANGUAGE Rank2Types #-} -{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE Rank2Types #-} +{-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} @@ -111,7 +112,7 @@ import qualified Data.Acid as Acid import Control.Arrow ((***)) import Control.Lens (at, has, ix, lens, makeClassy, makeLenses, non', - to, toListOf, traversed, (%=), (+=), (.=), (<<.=), (?=), + to, toListOf, traversed, (%=), (.=), (<<.=), (?=), (?~), _Empty, _Just, _head) import Control.Monad.State.Class (get, put) import Data.Default (Default, def) @@ -636,21 +637,29 @@ createWallet cWalId cWalMeta isReady curTime = do let info = WalletInfo cWalMeta curTime curTime NotSynced noSyncStatistics mempty isReady wsWalletInfos . at cWalId %= (<|> Just info) --- | Add new address given 'CWAddressMeta' (which contains information about --- target wallet and account too). +-- | Add new address given 'WAddressMeta' (which contains information about +-- target wallet and account too). If the input account is /not/ there, creates it. addWAddress :: WAddressMeta -> Update () addWAddress addrMeta = do - let accInfo :: Traversal' WalletStorage AccountInfo - accInfo = wsAccountInfos . ix (addrMeta ^. wamAccount) - addr = addrMeta ^. wamAddress - whenJustM (preuse accInfo) $ \info -> do - let mAddr = info ^. aiAddresses . at addr - when (isNothing mAddr) $ do - -- Here we increment current account's last address index - -- and assign its value to sorting index of newly created address. - accInfo . aiUnusedKey += 1 - let key = info ^. aiUnusedKey - accInfo . aiAddresses . at addr ?= AddressInfo addrMeta key + ws@WalletStorage{..} <- get + put (ws { _wsAccountInfos = HM.alter aux (addrMeta ^. wamAccount) _wsAccountInfos }) + where + freshAccount :: AccountInfo + freshAccount = AccountInfo (WebTypes.CAccountMeta "New account") mempty mempty 0 + + aux :: Maybe AccountInfo -> Maybe AccountInfo + aux Nothing = Just $ addAddress freshAccount + aux (Just info) = Just $ addAddress info + + addAddress :: AccountInfo -> AccountInfo + addAddress info@AccountInfo{_aiUnusedKey, _aiAddresses} + | HM.member addr _aiAddresses + = info & (over aiUnusedKey (+ 1)) + . (aiAddresses . at addr ?~ AddressInfo addrMeta key) + | otherwise = info + where + key = info ^. aiUnusedKey + addr = addrMeta ^. wamAddress -- | Update account metadata. setAccountMeta :: WebTypes.AccountId -> WebTypes.CAccountMeta -> Update () From 09c65e498ba74d8619bc8a26dea1e8ed0929e5ee Mon Sep 17 00:00:00 2001 From: KtorZ Date: Mon, 26 Nov 2018 14:43:06 +0100 Subject: [PATCH 069/103] [DEVOPS-1153] review implementation of addWAddress (bis) --- wallet/src/Pos/Wallet/Web/State/Storage.hs | 61 +++++++++++++--------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/wallet/src/Pos/Wallet/Web/State/Storage.hs b/wallet/src/Pos/Wallet/Web/State/Storage.hs index e2e0a7cbd48..0085cbe67f5 100644 --- a/wallet/src/Pos/Wallet/Web/State/Storage.hs +++ b/wallet/src/Pos/Wallet/Web/State/Storage.hs @@ -1,6 +1,5 @@ -{-# LANGUAGE NamedFieldPuns #-} -{-# LANGUAGE Rank2Types #-} -{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE Rank2Types #-} +{-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-orphans #-} @@ -111,13 +110,14 @@ import Universum import qualified Data.Acid as Acid import Control.Arrow ((***)) -import Control.Lens (at, has, ix, lens, makeClassy, makeLenses, non', - to, toListOf, traversed, (%=), (.=), (<<.=), (?=), (?~), - _Empty, _Just, _head) +import Control.Lens (At, Index, IxValue, at, has, ix, lens, + makeClassy, makeLenses, non', to, toListOf, traversed, + (%=), (.=), (<<.=), (?=), (?~), _Empty, _Just, _head) import Control.Monad.State.Class (get, put) import Data.Default (Default, def) import qualified Data.HashMap.Strict as HM import qualified Data.Map as M +import Data.Maybe (fromJust) import Data.SafeCopy (Migrate (..), base, deriveSafeCopySimple, extension) import Data.Time.Clock (nominalDay) @@ -641,25 +641,36 @@ createWallet cWalId cWalMeta isReady curTime = do -- target wallet and account too). If the input account is /not/ there, creates it. addWAddress :: WAddressMeta -> Update () addWAddress addrMeta = do - ws@WalletStorage{..} <- get - put (ws { _wsAccountInfos = HM.alter aux (addrMeta ^. wamAccount) _wsAccountInfos }) - where - freshAccount :: AccountInfo - freshAccount = AccountInfo (WebTypes.CAccountMeta "New account") mempty mempty 0 - - aux :: Maybe AccountInfo -> Maybe AccountInfo - aux Nothing = Just $ addAddress freshAccount - aux (Just info) = Just $ addAddress info - - addAddress :: AccountInfo -> AccountInfo - addAddress info@AccountInfo{_aiUnusedKey, _aiAddresses} - | HM.member addr _aiAddresses - = info & (over aiUnusedKey (+ 1)) - . (aiAddresses . at addr ?~ AddressInfo addrMeta key) - | otherwise = info - where - key = info ^. aiUnusedKey - addr = addrMeta ^. wamAddress + let accId = addrMeta ^. wamAccount + accountInfo <- getAccountInfo accId + let maddr = accountInfo ^. aiAddresses . at (addrMeta ^. wamAddress) + when (isNothing maddr) $ + modify $ (wsAccountInfos . at accId) ?~ (addAddress accountInfo) + where + getAccountInfo :: WebTypes.AccountId -> Update AccountInfo + getAccountInfo accId = do + ws <- get + let infos = createIfMissing defaultAccount accId (ws ^. wsAccountInfos) + put $ ws & wsAccountInfos .~ infos + -- NOTE: 'fromJust' is safe since we just added the account + return $ fromJust $ infos ^. at accId + + addAddress :: AccountInfo -> AccountInfo + addAddress accountInfo = + let + unusedKey = accountInfo ^. aiUnusedKey + addrInfo = AddressInfo addrMeta unusedKey + in accountInfo + & aiAddresses . at (addrMeta ^. wamAddress) ?~ addrInfo + & aiUnusedKey .~ unusedKey + 1 + + defaultAccount :: AccountInfo + defaultAccount = + AccountInfo (WebTypes.CAccountMeta "New account") mempty mempty 0 + + createIfMissing :: At m => IxValue m -> Index m -> m -> m + createIfMissing val idx = + at idx %~ (\x -> x <|> pure val) -- | Update account metadata. setAccountMeta :: WebTypes.AccountId -> WebTypes.CAccountMeta -> Update () From 3a09150bc59cf59070230790d2aae5529a525890 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Wed, 28 Nov 2018 14:08:07 +0100 Subject: [PATCH 070/103] [DEVOPS-1153] Add CHANGELOG entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 071c2c84c8f..1436e220137 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -118,6 +118,8 @@ - Fix Haddock errors ([CDEC-585](https://iohk.myjetbrains.com/youtrack/issue/CDEC-585): [#3614](https://github.com/input-output-hk/cardano-sl/pull/3614)) +- Fix restoration ignoring new accounts in legacy data layer ([DEVOPS-1153](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1153): [#3911](https://github.com/input-output-hk/cardano-sl/pull/3911)) + ### Improvements - Friendly error mistakes from deserializing invalid addresses instead of brutal 500 ([CBR-283](https://iohk.myjetbrains.com/youtrack/issue/CBR-283)) From 37cbe46ce6abb47b1edc87ce3bf00b0f61fb5697 Mon Sep 17 00:00:00 2001 From: Erik de Castro Lopo Date: Wed, 28 Nov 2018 19:13:17 +1100 Subject: [PATCH 071/103] RCD-43: Add delays --- db/cardano-sl-db.cabal | 1 + db/src/Pos/DB/Block/Epoch.hs | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/db/cardano-sl-db.cabal b/db/cardano-sl-db.cabal index 4e451b6e69f..0fd05ffaa0a 100644 --- a/db/cardano-sl-db.cabal +++ b/db/cardano-sl-db.cabal @@ -141,6 +141,7 @@ library , ekg-core , ether >= 0.5 , exceptions + , extra , filepath , formatting , lens diff --git a/db/src/Pos/DB/Block/Epoch.hs b/db/src/Pos/DB/Block/Epoch.hs index 9766c7c377c..400dc5087e4 100644 --- a/db/src/Pos/DB/Block/Epoch.hs +++ b/db/src/Pos/DB/Block/Epoch.hs @@ -46,6 +46,7 @@ import Control.Monad.Trans.Except (ExceptT, throwE) import Data.Binary (decode, encode) import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Lazy as LBS +import Data.List.Extra (chunksOf) import Data.Either (partitionEithers) import Formatting (build, int, sformat, shown, (%)) import System.Directory (removeFile) @@ -363,7 +364,12 @@ consolidateOneEpoch ccp epochSlots = do -- After the check point is written, delete old blunds for the epoch we have just -- consolidated. - lift $ mapM_ deleteOldBlund sihs + lift $ mapM_ deleter $ chunksOf 1000 sihs + where + deleter :: ConsolidateM ctx m => [SlotIndexHash] -> m () + deleter xs = do + mapM_ deleteOldBlund xs + sleepSeconds 2 deleteOldBlund :: ConsolidateM ctx m => SlotIndexHash -> m () deleteOldBlund (SlotIndexHash _ hh) = do @@ -389,7 +395,7 @@ consolidateEpochBlocks fpath xs = ExceptT $ do (liftIO . hClose) (\hdl -> do liftIO $ BS.hPutStr hdl epochFileHeader - mapM (consolidate hdl) xs + mapM (consolidate hdl) $ zip [0 .. ] xs ) pure $ case partitionEithers ys of ([], zs) -> Right $ epochIndexToOffset zs @@ -397,8 +403,10 @@ consolidateEpochBlocks fpath xs = ExceptT $ do where consolidate :: ConsolidateM ctx m - => Handle -> SlotIndexHash -> m (Either ConsolidateError SlotIndexLength) - consolidate hdl (SlotIndexHash lsi hh) = do + => Handle -> (Int, SlotIndexHash) -> m (Either ConsolidateError SlotIndexLength) + consolidate hdl (indx, SlotIndexHash lsi hh) = do + when (indx `mod` 1000 == 0) $ + sleepSeconds 2 mblund <- getSerializedBlund hh case mblund of Nothing -> From c6362a85305164529b4e27de9d67d2566715f59f Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Fri, 30 Nov 2018 20:52:27 +1000 Subject: [PATCH 072/103] [DEVOPS-1112] Bump applicationVersion 2 -> 3 for testnet --- lib/configuration.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 05b9beeb547..82e13582fd8 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14929,7 +14929,7 @@ testnet_wallet: &testnet_wallet <<: *testnet_full update: &testnet_wallet_update applicationName: csl-daedalus - applicationVersion: 2 + applicationVersion: 3 lastKnownBlockVersion: bvMajor: 0 bvMinor: 0 From 085544311255204d0e46058667ad81641533619a Mon Sep 17 00:00:00 2001 From: Karl Knutsson Date: Fri, 30 Nov 2018 11:53:06 +0100 Subject: [PATCH 073/103] [RCD-43] Disable indexing Disable spotlight indexing of the block storage on OSX. --- db/src/Pos/DB/Rocks/Functions.hs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/db/src/Pos/DB/Rocks/Functions.hs b/db/src/Pos/DB/Rocks/Functions.hs index a9b87465952..132ac4bb590 100644 --- a/db/src/Pos/DB/Rocks/Functions.hs +++ b/db/src/Pos/DB/Rocks/Functions.hs @@ -41,6 +41,7 @@ import qualified Database.RocksDB as Rocks import System.Directory (createDirectoryIfMissing, doesDirectoryExist, removeDirectoryRecursive) import System.FilePath (takeDirectory, ()) +import qualified System.Info (os) import Pos.Binary.Class (Bi, serialize') import Pos.DB.BatchOp (rocksWriteBatch) @@ -82,6 +83,7 @@ openNodeDBs recreate fp = do let gStatePath = fp "gState" let lrcPath = fp "lrc" let miscPath = fp "misc" + mapM_ ensureDirectoryExists [ blocksDir , _blockDataDir @@ -91,6 +93,12 @@ openNodeDBs recreate fp = do , lrcPath , miscPath ] + + when (System.Info.os == "darwin") $ do + -- Prevent indexing of blocks on OSX + _ <- openFile (fp ".metadata_never_index") AppendMode + pure () + _blockIndexDB <- openRocksDB blocksIndexPath _gStateDB <- openRocksDB gStatePath _lrcDB <- openRocksDB lrcPath From 3e0a2ba8bf0606483ad63325b4dab617206a0df0 Mon Sep 17 00:00:00 2001 From: Karl Knutsson Date: Fri, 30 Nov 2018 13:01:52 +0100 Subject: [PATCH 074/103] regen --- pkgs/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/default.nix b/pkgs/default.nix index 4c26d1b9e3b..3b6ae74481e 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -16188,6 +16188,7 @@ license = stdenv.lib.licenses.mit; , ekg-core , ether , exceptions +, extra , filepath , formatting , hedgehog @@ -16241,6 +16242,7 @@ directory ekg-core ether exceptions +extra filepath formatting lens From ee2b3e0709f11859defa2efe65678541d995b6c9 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Fri, 30 Nov 2018 19:37:05 +0300 Subject: [PATCH 075/103] Applied stylish suggestions --- db/src/Pos/DB/Block/Epoch.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/src/Pos/DB/Block/Epoch.hs b/db/src/Pos/DB/Block/Epoch.hs index 400dc5087e4..ede1ceaa0e8 100644 --- a/db/src/Pos/DB/Block/Epoch.hs +++ b/db/src/Pos/DB/Block/Epoch.hs @@ -46,8 +46,8 @@ import Control.Monad.Trans.Except (ExceptT, throwE) import Data.Binary (decode, encode) import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Lazy as LBS -import Data.List.Extra (chunksOf) import Data.Either (partitionEithers) +import Data.List.Extra (chunksOf) import Formatting (build, int, sformat, shown, (%)) import System.Directory (removeFile) import System.FilePath (()) From 52d1d9ee689ddf6b295471fba4967fac194cdfea Mon Sep 17 00:00:00 2001 From: Duncan Coutts Date: Fri, 30 Nov 2018 17:07:27 +0000 Subject: [PATCH 076/103] Apply code review suggestion --- db/src/Pos/DB/Rocks/Functions.hs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/db/src/Pos/DB/Rocks/Functions.hs b/db/src/Pos/DB/Rocks/Functions.hs index 132ac4bb590..daa179fdbd8 100644 --- a/db/src/Pos/DB/Rocks/Functions.hs +++ b/db/src/Pos/DB/Rocks/Functions.hs @@ -94,10 +94,9 @@ openNodeDBs recreate fp = do , miscPath ] - when (System.Info.os == "darwin") $ do + when (System.Info.os == "darwin") $ -- Prevent indexing of blocks on OSX - _ <- openFile (fp ".metadata_never_index") AppendMode - pure () + withFile (fp ".metadata_never_index") AppendMode (\_ -> return ()) _blockIndexDB <- openRocksDB blocksIndexPath _gStateDB <- openRocksDB gStatePath From 4bc7bc276b337a30678ae448b0159c352199fc41 Mon Sep 17 00:00:00 2001 From: Duncan Coutts Date: Fri, 30 Nov 2018 17:26:15 +0000 Subject: [PATCH 077/103] Add missing liftIO and move to where clause --- db/src/Pos/DB/Rocks/Functions.hs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/db/src/Pos/DB/Rocks/Functions.hs b/db/src/Pos/DB/Rocks/Functions.hs index daa179fdbd8..50b1314a26c 100644 --- a/db/src/Pos/DB/Rocks/Functions.hs +++ b/db/src/Pos/DB/Rocks/Functions.hs @@ -96,7 +96,7 @@ openNodeDBs recreate fp = do when (System.Info.os == "darwin") $ -- Prevent indexing of blocks on OSX - withFile (fp ".metadata_never_index") AppendMode (\_ -> return ()) + ensureEmptyFileExists (fp ".metadata_never_index") _blockIndexDB <- openRocksDB blocksIndexPath _gStateDB <- openRocksDB gStatePath @@ -108,6 +108,9 @@ openNodeDBs recreate fp = do ensureDirectoryExists :: MonadIO m => FilePath -> m () ensureDirectoryExists = liftIO . createDirectoryIfMissing True + ensureEmptyFileExists :: MonadIO m => FilePath -> m () + ensureEmptyFileExists = liftIO $ withFile file AppendMode (\_ -> return ()) + -- | Safely close all databases from 'NodeDBs'. closeNodeDBs :: MonadIO m => NodeDBs -> m () closeNodeDBs NodeDBs {..} = From e1bca52a37309aad4d84f4a1f9724239420611a6 Mon Sep 17 00:00:00 2001 From: Karl Knutsson Date: Fri, 30 Nov 2018 19:08:30 +0100 Subject: [PATCH 078/103] add missing arg --- db/src/Pos/DB/Rocks/Functions.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/src/Pos/DB/Rocks/Functions.hs b/db/src/Pos/DB/Rocks/Functions.hs index 50b1314a26c..e2235704339 100644 --- a/db/src/Pos/DB/Rocks/Functions.hs +++ b/db/src/Pos/DB/Rocks/Functions.hs @@ -109,7 +109,7 @@ openNodeDBs recreate fp = do ensureDirectoryExists = liftIO . createDirectoryIfMissing True ensureEmptyFileExists :: MonadIO m => FilePath -> m () - ensureEmptyFileExists = liftIO $ withFile file AppendMode (\_ -> return ()) + ensureEmptyFileExists file = liftIO $ withFile file AppendMode (\_ -> return ()) -- | Safely close all databases from 'NodeDBs'. closeNodeDBs :: MonadIO m => NodeDBs -> m () From 79bc51178a9530e45dc826c8ee38dedba4db419e Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Mon, 3 Dec 2018 17:52:48 -0500 Subject: [PATCH 079/103] fix application version --- lib/configuration.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 82e13582fd8..fa9c52f95d0 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14973,7 +14973,7 @@ mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 17 + applicationVersion: 16 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 @@ -14983,7 +14983,7 @@ mainnet_dryrun_wallet_macos64: &mainnet_dryrun_wallet_macos64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 17 + applicationVersion: 16 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 @@ -14993,7 +14993,7 @@ mainnet_dryrun_wallet_linux64: &mainnet_dryrun_wallet_linux64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 17 + applicationVersion: 16 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 From ade060c854114466e1ace5e4ba4e6933d90841c1 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Tue, 4 Dec 2018 14:57:29 +0300 Subject: [PATCH 080/103] [RCD-52] cardano-launcher | win64: kill self via PID, not process name --- tools/src/launcher/Main.hs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/src/launcher/Main.hs b/tools/src/launcher/Main.hs index f2158d3d63b..5cacc0a4f21 100644 --- a/tools/src/launcher/Main.hs +++ b/tools/src/launcher/Main.hs @@ -57,6 +57,8 @@ import Text.PrettyPrint.ANSI.Leijen (Doc) #ifndef mingw32_HOST_OS import System.Posix.Signals (sigKILL, signalProcess) import qualified System.Process.Internals as Process +#else +import qualified System.Win32.Process as Process #endif -- Modules needed for system' @@ -551,7 +553,9 @@ runUpdater ndbp ud = do Nothing -> runUpdaterProc path args' Just rp -> do -- Write the bat script and pass it the updater with all args - writeWindowsUpdaterRunner rp +#ifdef mingw32_HOST_OS + writeWindowsUpdaterRunner rp =<< liftIO Process.getCurrentProcessId +#endif -- The script will terminate this updater so this function shouldn't return runUpdaterProc rp ((toText path):args') case exitCode of @@ -582,12 +586,12 @@ runUpdaterProc path args = do phvar <- newEmptyMVar system' phvar cr mempty EUpdater -writeWindowsUpdaterRunner :: FilePath -> M () -writeWindowsUpdaterRunner runnerPath = liftIO $ do +writeWindowsUpdaterRunner :: FilePath -> Process.ProcessId -> M () +writeWindowsUpdaterRunner runnerPath selfPid = liftIO $ do exePath <- getExecutablePath launcherArgs <- getArgs writeFile (toString runnerPath) $ unlines - [ "TaskKill /IM cardano-launcher.exe /F" + [ "TaskKill /PID "<>show selfPid<>" /F" -- Run updater , "%*" -- Delete updater From bceb3d5af8fec7e86f6ba5b88a2c2d0d69f05604 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Tue, 4 Dec 2018 15:39:37 +0300 Subject: [PATCH 081/103] [RCD-52] cardano-sl-tools: conditionally depend on Win32 --- tools/cardano-sl-tools.cabal | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/cardano-sl-tools.cabal b/tools/cardano-sl-tools.cabal index ba9ddda634c..4a9eb90725c 100644 --- a/tools/cardano-sl-tools.cabal +++ b/tools/cardano-sl-tools.cabal @@ -222,6 +222,8 @@ executable cardano-launcher , yaml if !os(windows) build-depends: unix + else + build-depends: Win32 default-language: Haskell2010 ghc-options: -threaded -Wall From 06a4e55638f77c2fa74f8a5eced8bc1a7d4bc046 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Tue, 4 Dec 2018 15:53:14 +0300 Subject: [PATCH 082/103] [RCD-52] launcher | windows: fix CPP --- tools/src/launcher/Main.hs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/src/launcher/Main.hs b/tools/src/launcher/Main.hs index 5cacc0a4f21..13816ea8c55 100644 --- a/tools/src/launcher/Main.hs +++ b/tools/src/launcher/Main.hs @@ -553,9 +553,7 @@ runUpdater ndbp ud = do Nothing -> runUpdaterProc path args' Just rp -> do -- Write the bat script and pass it the updater with all args -#ifdef mingw32_HOST_OS - writeWindowsUpdaterRunner rp =<< liftIO Process.getCurrentProcessId -#endif + writeWindowsUpdaterRunner rp -- The script will terminate this updater so this function shouldn't return runUpdaterProc rp ((toText path):args') case exitCode of @@ -586,10 +584,15 @@ runUpdaterProc path args = do phvar <- newEmptyMVar system' phvar cr mempty EUpdater -writeWindowsUpdaterRunner :: FilePath -> Process.ProcessId -> M () -writeWindowsUpdaterRunner runnerPath selfPid = liftIO $ do +writeWindowsUpdaterRunner :: FilePath -> M () +writeWindowsUpdaterRunner runnerPath = liftIO $ do exePath <- getExecutablePath launcherArgs <- getArgs +#ifdef mingw32_HOST_OS + selfPid <- Process.getCurrentProcessId +#else + let selfPid = 0 -- This will never be run on non-Windows +#endif writeFile (toString runnerPath) $ unlines [ "TaskKill /PID "<>show selfPid<>" /F" -- Run updater From 947b0465bfb82b6e67b1000b5d1f91c4a17d6422 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Tue, 4 Dec 2018 16:05:52 +0300 Subject: [PATCH 083/103] [RCD-52] launcher: -Wno-type-defaults locally --- tools/src/launcher/Main.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/src/launcher/Main.hs b/tools/src/launcher/Main.hs index 13816ea8c55..395c7295303 100644 --- a/tools/src/launcher/Main.hs +++ b/tools/src/launcher/Main.hs @@ -12,6 +12,7 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeSynonymInstances #-} +{-# OPTIONS_GHC -Wno-type-defaults #-} import qualified Prelude (show) import Universum From 0d3efd1aa5539ccf8f6529dd0c79c2a0b4e2a25c Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Tue, 4 Dec 2018 10:00:15 -0500 Subject: [PATCH 084/103] cleanup tmp on every buildkite windows build --- .buildkite/windows.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/.buildkite/windows.ps1 b/.buildkite/windows.ps1 index 658830d3774..48557d8e768 100644 --- a/.buildkite/windows.ps1 +++ b/.buildkite/windows.ps1 @@ -20,6 +20,7 @@ $env:TMP="Z:\\tmp" $env:CHECKOUT_PATH=(Get-Item -Path ".\").FullName # Temp directory needs to exist +rd -r -fo $env:TMP New-Item -ItemType Directory -Force -Path $env:TMP New-Item -ItemType Directory -Force -Path z:\ghc From 04bee97b64209234bbe24ab117ddef81f83578a6 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Wed, 5 Dec 2018 14:02:45 +0300 Subject: [PATCH 085/103] configuration | staging: factor a little --- lib/configuration.yaml | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index fa9c52f95d0..6dec2ee4e17 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14955,7 +14955,7 @@ testnet_wallet_linux64: &testnet_wallet_linux64 ############################################################################## ## ## -## Mainnet dryrun config sample ## +## Staging config ## ## ## ############################################################################## @@ -14968,10 +14968,7 @@ mainnet_dryrun_full: &mainnet_dryrun_full file: mainnet-genesis-dryrun-with-stakeholders.json hash: c6a004d3d178f600cd8caa10abbebe1549bef878f0665aea2903472d5abf7323 requiresNetworkMagic: RequiresNoMagic - -mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 - <<: *mainnet_dryrun_full - update: + update: &staging_wallet_update applicationName: csl-daedalus applicationVersion: 16 lastKnownBlockVersion: @@ -14979,25 +14976,14 @@ mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 bvMinor: 1 bvAlt: 0 +mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 + <<: *mainnet_dryrun_full + mainnet_dryrun_wallet_macos64: &mainnet_dryrun_wallet_macos64 <<: *mainnet_dryrun_full - update: - applicationName: csl-daedalus - applicationVersion: 16 - lastKnownBlockVersion: - bvMajor: 0 - bvMinor: 1 - bvAlt: 0 mainnet_dryrun_wallet_linux64: &mainnet_dryrun_wallet_linux64 <<: *mainnet_dryrun_full - update: - applicationName: csl-daedalus - applicationVersion: 16 - lastKnownBlockVersion: - bvMajor: 0 - bvMinor: 1 - bvAlt: 0 ############################################################################## ## ## From fcbec308e256a1c1d0d574866686d5543be4b038 Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Wed, 5 Dec 2018 14:03:08 +0300 Subject: [PATCH 086/103] applicationVersion | staging: 17 <- 16 --- lib/configuration.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 6dec2ee4e17..bb47c679abd 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14970,7 +14970,7 @@ mainnet_dryrun_full: &mainnet_dryrun_full requiresNetworkMagic: RequiresNoMagic update: &staging_wallet_update applicationName: csl-daedalus - applicationVersion: 16 + applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 From df0a7380a5b411d0b3e12cc554764a72021a8dde Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Wed, 5 Dec 2018 14:06:46 +0300 Subject: [PATCH 087/103] applicationVersion | testnet: 4 <- 3 --- lib/configuration.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index bb47c679abd..92646afeeeb 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14929,7 +14929,7 @@ testnet_wallet: &testnet_wallet <<: *testnet_full update: &testnet_wallet_update applicationName: csl-daedalus - applicationVersion: 3 + applicationVersion: 4 lastKnownBlockVersion: bvMajor: 0 bvMinor: 0 From 822be205141be192bd84567c86faaad794627743 Mon Sep 17 00:00:00 2001 From: Karl Knutsson Date: Wed, 5 Dec 2018 15:33:49 +0100 Subject: [PATCH 088/103] RCD-43: Clear failure on win update If we read windows updates from a node it is reachable and we should keep sending data to it. --- lib/src/Pos/Diffusion/Full/Block.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/src/Pos/Diffusion/Full/Block.hs b/lib/src/Pos/Diffusion/Full/Block.hs index 2c0076ffd14..13ff033409a 100644 --- a/lib/src/Pos/Diffusion/Full/Block.hs +++ b/lib/src/Pos/Diffusion/Full/Block.hs @@ -722,6 +722,7 @@ handleStreamStart logTrace logic oq = listenerConv logTrace oq $ \__ourVerInfo n lift $ traceWith logTrace (Debug, sformat ("handleStreamStart:loop MsgStart, expected MsgStreamUpdate from "%build) nodeId) return () MsgUpdate u -> do + lift $ OQ.clearFailureOf oq nodeId lift $ traceWith logTrace (Debug, sformat ("handleStreamStart:loop new window "%shown%" from "%build) u nodeId) loop nodeId conv (msuWindow u) loop nodeId conv window = From 91522ff79b10f214a06d0c0efeb9e4327d25d4ba Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 6 Dec 2018 15:41:48 +1000 Subject: [PATCH 089/103] [DEVOPS-1172] faucet: Use OptimizeForHighThroughput grouping policy --- faucet/cardano-sl-faucet.cabal | 5 +---- faucet/src/Cardano/WalletClient.hs | 4 +++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/faucet/cardano-sl-faucet.cabal b/faucet/cardano-sl-faucet.cabal index 5ca9da3d1b6..6d510fcd0b2 100644 --- a/faucet/cardano-sl-faucet.cabal +++ b/faucet/cardano-sl-faucet.cabal @@ -1,7 +1,3 @@ --- This file has been generated from package.yaml by hpack version 0.18.1. --- --- see: https://github.com/sol/hpack - name: cardano-sl-faucet version: 2.0.0 description: Cardano SL - faucet @@ -22,6 +18,7 @@ library , aeson-pretty , base16-bytestring , bytestring + , cardano-sl-client , cardano-sl-core , cardano-sl-crypto , cardano-sl-chain diff --git a/faucet/src/Cardano/WalletClient.hs b/faucet/src/Cardano/WalletClient.hs index 2682997e34e..383d4fa7d76 100644 --- a/faucet/src/Cardano/WalletClient.hs +++ b/faucet/src/Cardano/WalletClient.hs @@ -21,6 +21,7 @@ import qualified Data.ByteArray as BA import Data.ByteString (ByteString) import Data.List.NonEmpty (NonEmpty (..)) import Data.Text.Strict.Lens (utf8) +import Pos.Client.Txp.Util (InputSelectionPolicy(..)) import Pos.Core (Address (..), Coin (..)) import Pos.Crypto.Signing (PassPhrase) import System.Random @@ -49,7 +50,8 @@ withdraw addr = withSublogger "WalletClient.withdraw" $ do q <- view feWithdrawalQ let paymentDist = (V1.PaymentDistribution addr coin :| []) sp = spendingPassword <&> view (re utf8 . to hashPwd . to V1) - payment = Payment paymentSource paymentDist Nothing sp + gp = Just (V1 OptimizeForHighThroughput) + payment = Payment paymentSource paymentDist gp sp eRes <- liftIO $ sendToQueue q payment case eRes of Left e -> do From 46dc93224e9f1f9216fe2453e39330f140efa718 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 6 Dec 2018 20:36:10 +1000 Subject: [PATCH 090/103] [DEVOPS-1172] Regenerate pkgs/default.nix and stylish haskell --- faucet/src/Cardano/WalletClient.hs | 2 +- pkgs/default.nix | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/faucet/src/Cardano/WalletClient.hs b/faucet/src/Cardano/WalletClient.hs index 383d4fa7d76..13fc276165c 100644 --- a/faucet/src/Cardano/WalletClient.hs +++ b/faucet/src/Cardano/WalletClient.hs @@ -21,7 +21,7 @@ import qualified Data.ByteArray as BA import Data.ByteString (ByteString) import Data.List.NonEmpty (NonEmpty (..)) import Data.Text.Strict.Lens (utf8) -import Pos.Client.Txp.Util (InputSelectionPolicy(..)) +import Pos.Client.Txp.Util (InputSelectionPolicy (..)) import Pos.Core (Address (..), Coin (..)) import Pos.Crypto.Signing (PassPhrase) import System.Random diff --git a/pkgs/default.nix b/pkgs/default.nix index 3b6ae74481e..7573da9ab22 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -16543,6 +16543,7 @@ license = stdenv.lib.licenses.mit; , base16-bytestring , bytestring , cardano-sl-chain +, cardano-sl-client , cardano-sl-core , cardano-sl-crypto , cardano-sl-infra @@ -16610,6 +16611,7 @@ base base16-bytestring bytestring cardano-sl-chain +cardano-sl-client cardano-sl-core cardano-sl-crypto cardano-sl-util From 0cb0957b40f24155894ed535efa7d53e147796a1 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 6 Dec 2018 22:46:41 +1000 Subject: [PATCH 091/103] Revert "configuration | staging: factor a little" This reverts commit 04bee97b64209234bbe24ab117ddef81f83578a6. --- lib/configuration.yaml | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 92646afeeeb..54d47bd2bf9 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14955,7 +14955,7 @@ testnet_wallet_linux64: &testnet_wallet_linux64 ############################################################################## ## ## -## Staging config ## +## Mainnet dryrun config sample ## ## ## ############################################################################## @@ -14968,7 +14968,10 @@ mainnet_dryrun_full: &mainnet_dryrun_full file: mainnet-genesis-dryrun-with-stakeholders.json hash: c6a004d3d178f600cd8caa10abbebe1549bef878f0665aea2903472d5abf7323 requiresNetworkMagic: RequiresNoMagic - update: &staging_wallet_update + +mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 + <<: *mainnet_dryrun_full + update: applicationName: csl-daedalus applicationVersion: 17 lastKnownBlockVersion: @@ -14976,14 +14979,25 @@ mainnet_dryrun_full: &mainnet_dryrun_full bvMinor: 1 bvAlt: 0 -mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 - <<: *mainnet_dryrun_full - mainnet_dryrun_wallet_macos64: &mainnet_dryrun_wallet_macos64 <<: *mainnet_dryrun_full + update: + applicationName: csl-daedalus + applicationVersion: 16 + lastKnownBlockVersion: + bvMajor: 0 + bvMinor: 1 + bvAlt: 0 mainnet_dryrun_wallet_linux64: &mainnet_dryrun_wallet_linux64 <<: *mainnet_dryrun_full + update: + applicationName: csl-daedalus + applicationVersion: 16 + lastKnownBlockVersion: + bvMajor: 0 + bvMinor: 1 + bvAlt: 0 ############################################################################## ## ## From b422787a6eb5c11070880b5eeb19be15124bee1d Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 6 Dec 2018 22:46:46 +1000 Subject: [PATCH 092/103] Revert "applicationVersion | staging: 17 <- 16" This reverts commit fcbec308e256a1c1d0d574866686d5543be4b038. --- lib/configuration.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 54d47bd2bf9..31d5ad437b0 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14973,7 +14973,7 @@ mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 17 + applicationVersion: 16 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 From 22a13bac00b10d64521017e4e17799e879c97bbc Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 6 Dec 2018 22:47:51 +1000 Subject: [PATCH 093/103] [DEVOPS-1112] configuration.yaml: staging applicationVersion 16 -> 17 --- lib/configuration.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 31d5ad437b0..df4d49ae7aa 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14973,7 +14973,7 @@ mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 16 + applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 @@ -14983,7 +14983,7 @@ mainnet_dryrun_wallet_macos64: &mainnet_dryrun_wallet_macos64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 16 + applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 @@ -14993,7 +14993,7 @@ mainnet_dryrun_wallet_linux64: &mainnet_dryrun_wallet_linux64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 16 + applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 bvMinor: 1 From 593f79c785b31ad6564cd51eb68e57a019d7158e Mon Sep 17 00:00:00 2001 From: Samuel Leathers Date: Thu, 6 Dec 2018 14:25:26 -0500 Subject: [PATCH 094/103] bump last known block version for staging --- lib/configuration.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index df4d49ae7aa..34c8cf6161b 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14976,7 +14976,7 @@ mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 - bvMinor: 1 + bvMinor: 2 bvAlt: 0 mainnet_dryrun_wallet_macos64: &mainnet_dryrun_wallet_macos64 @@ -14986,7 +14986,7 @@ mainnet_dryrun_wallet_macos64: &mainnet_dryrun_wallet_macos64 applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 - bvMinor: 1 + bvMinor: 2 bvAlt: 0 mainnet_dryrun_wallet_linux64: &mainnet_dryrun_wallet_linux64 @@ -14996,7 +14996,7 @@ mainnet_dryrun_wallet_linux64: &mainnet_dryrun_wallet_linux64 applicationVersion: 17 lastKnownBlockVersion: bvMajor: 0 - bvMinor: 1 + bvMinor: 2 bvAlt: 0 ############################################################################## From 2b0a0216106e26d32f1d6f922669428b03de8d59 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sat, 8 Dec 2018 17:39:05 +0100 Subject: [PATCH 095/103] Clean up transaction metadata after deleting an account or wallet This fix is actually two folds: - It discards incoherent transactions fetched from the DB, if any, and shout a warning in the log. This is in order to make the system more resilient to conconcurrent calls while a wallet or account is being deleted (since metadata and accounts / wallets are stored in separated databases, we can't easily run both delete in a single transaction). - It also deletes corresponding metadata when an account or a wallet is removed. This may cause extra damage? What if there are pending transactions when we delete the account or wallet. --- .../src/Cardano/Wallet/Kernel/DB/Sqlite.hs | 29 ++++++++ .../src/Cardano/Wallet/Kernel/DB/TxMeta.hs | 1 + .../Cardano/Wallet/Kernel/DB/TxMeta/Types.hs | 1 + .../Wallet/WalletLayer/Kernel/Accounts.hs | 13 +++- .../Wallet/WalletLayer/Kernel/Transactions.hs | 67 ++++++++++++++----- 5 files changed, 91 insertions(+), 20 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs b/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs index c728a707e0e..eaa11195164 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs @@ -18,6 +18,7 @@ module Cardano.Wallet.Kernel.DB.Sqlite ( , putTxMeta , getTxMeta , getTxMetas + , deleteTxMetas -- * Unsafe functions , unsafeMigrateMetaDB @@ -447,6 +448,34 @@ clearMetaDB conn = do putTxMeta :: Sqlite.Connection -> Kernel.TxMeta -> IO () putTxMeta conn txMeta = void $ putTxMetaT conn txMeta +-- | Clear some metadata from the database +deleteTxMetas + :: Sqlite.Connection + -- | Database Handle + -> Core.Address + -- | Target wallet + -> Maybe Word32 + -- | A target account index. If none, delete metas for all accounts + -> IO () +deleteTxMetas conn walletId mAccountIx = do + runBeamSqlite conn $ SQL.runDelete $ SQL.delete (_mDbMeta metaDB) $ \meta -> + conditionWalletId meta &&. conditionAccountIx meta + where + conditionWalletId + :: TxMetaT (SQL.QExpr SqliteExpressionSyntax s) + -> SQL.QGenExpr SQL.QValueContext SqliteExpressionSyntax s Bool + conditionWalletId meta = + _txMetaTableWalletId meta ==. SQL.val_ walletId + conditionAccountIx + :: TxMetaT (SQL.QExpr SqliteExpressionSyntax s) + -> SQL.QGenExpr SQL.QValueContext SqliteExpressionSyntax s Bool + conditionAccountIx meta = case mAccountIx of + Nothing -> + SQL.val_ True + Just ix -> + _txMetaTableAccountIx meta ==. SQL.val_ ix + + -- | Inserts a new 'Kernel.TxMeta' in the database, given its opaque -- 'MetaDBHandle'. putTxMetaT :: Sqlite.Connection -> Kernel.TxMeta -> IO Kernel.PutReturn diff --git a/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta.hs b/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta.hs index 79ff78ad938..2311b6f4e85 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta.hs @@ -24,6 +24,7 @@ openMetaDB fp = do closeMetaDB = withMVar lock ConcreteStorage.closeMetaDB , migrateMetaDB = withMVar lock ConcreteStorage.unsafeMigrateMetaDB , clearMetaDB = withMVar lock ConcreteStorage.clearMetaDB + , deleteTxMetas = \w a -> withMVar lock $ \c -> ConcreteStorage.deleteTxMetas c w a , getTxMeta = \t w a -> withMVar lock $ \c -> ConcreteStorage.getTxMeta c t w a , putTxMeta = \ t -> withMVar lock $ \c -> ConcreteStorage.putTxMeta c t , putTxMetaT = \ t -> withMVar lock $ \c -> ConcreteStorage.putTxMetaT c t diff --git a/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta/Types.hs b/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta/Types.hs index 0a7836a99c7..608a852dbcc 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta/Types.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/DB/TxMeta/Types.hs @@ -292,6 +292,7 @@ data MetaDBHandle = MetaDBHandle { closeMetaDB :: IO () , migrateMetaDB :: IO () , clearMetaDB :: IO () + , deleteTxMetas :: Core.Address -> Maybe Word32 -> IO () , getTxMeta :: Txp.TxId -> Core.Address -> Word32 -> IO (Maybe TxMeta) , putTxMeta :: TxMeta -> IO () , putTxMetaT :: TxMeta -> IO PutReturn diff --git a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Accounts.hs b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Accounts.hs index 741dec360f0..b10a2d522e0 100644 --- a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Accounts.hs +++ b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Accounts.hs @@ -22,7 +22,9 @@ import Cardano.Wallet.API.V1.Types (V1 (..), WalletAddress) import qualified Cardano.Wallet.API.V1.Types as V1 import qualified Cardano.Wallet.Kernel.Accounts as Kernel import qualified Cardano.Wallet.Kernel.DB.HdWallet as HD +import Cardano.Wallet.Kernel.DB.InDb (fromDb) import Cardano.Wallet.Kernel.DB.Read (addressesByAccountId) +import qualified Cardano.Wallet.Kernel.DB.TxMeta.Types as Kernel import Cardano.Wallet.Kernel.DB.Util.IxSet (Indexed (..), IxSet) import qualified Cardano.Wallet.Kernel.DB.Util.IxSet as IxSet import qualified Cardano.Wallet.Kernel.Internal as Kernel @@ -122,10 +124,15 @@ deleteAccount :: MonadIO m -> V1.AccountIndex -> m (Either DeleteAccountError ()) deleteAccount wallet wId accIx = runExceptT $ do + rootId <- withExceptT DeleteAccountWalletIdDecodingFailed $ + fromRootId wId accId <- withExceptT DeleteAccountWalletIdDecodingFailed $ - fromAccountId wId accIx - withExceptT DeleteAccountError $ ExceptT $ liftIO $ - Kernel.deleteAccount accId wallet + fromAccountId wId accIx + withExceptT DeleteAccountError $ ExceptT $ liftIO $ do + let walletId = HD.getHdRootId rootId ^. fromDb + let accountIx = Just $ V1.getAccIndex accIx + Kernel.deleteTxMetas (wallet ^. Kernel.walletMeta) walletId accountIx + Kernel.deleteAccount accId wallet updateAccount :: MonadIO m => Kernel.PassiveWallet diff --git a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Transactions.hs b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Transactions.hs index d395ccb3788..72b4251dc6f 100644 --- a/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Transactions.hs +++ b/wallet-new/src/Cardano/Wallet/WalletLayer/Kernel/Transactions.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE LambdaCase #-} + module Cardano.Wallet.WalletLayer.Kernel.Transactions ( getTransactions , toTransaction @@ -6,11 +8,13 @@ module Cardano.Wallet.WalletLayer.Kernel.Transactions ( import Universum import Control.Monad.Except +import Formatting (build, sformat) import GHC.TypeLits (symbolVal) import Pos.Chain.Txp (TxId) import Pos.Core (Address, Coin, SlotCount, SlotId, Timestamp, decodeTextAddress, flattenSlotId, getBlockCount) +import Pos.Util.Wlog (Severity (..)) import Cardano.Wallet.API.Indices import Cardano.Wallet.API.Request @@ -43,23 +47,52 @@ getTransactions wallet mbWalletId mbAccountIndex mbAddress params fop sop = lift let PaginationParams{..} = rpPaginationParams params let PerPage pp = ppPerPage let Page cp = ppPage - accountFops <- castAccountFiltering mbWalletId mbAccountIndex - mbSorting <- castSorting sop - db <- liftIO $ Kernel.getWalletSnapshot wallet - sc <- liftIO $ Node.getSlotCount (wallet ^. Kernel.walletNode) - currentSlot <- liftIO $ Node.getTipSlotId (wallet ^. Kernel.walletNode) - (meta, mbTotalEntries) <- liftIO $ TxMeta.getTxMetas - (wallet ^. Kernel.walletMeta) - (TxMeta.Offset . fromIntegral $ (cp - 1) * pp) - (TxMeta.Limit . fromIntegral $ pp) - accountFops - (unV1 <$> mbAddress) - (castFiltering $ mapIx unV1 <$> F.findMatchingFilterOp fop) - (castFiltering $ mapIx unV1 <$> F.findMatchingFilterOp fop) - mbSorting - txs <- withExceptT GetTxUnknownHdAccount $ - mapM (metaToTx db sc currentSlot) meta - return $ respond params txs mbTotalEntries + (txs, total) <- go cp pp ([], Nothing) + return $ respond params txs total + where + -- NOTE: See cardano-wallet#141 + -- + -- We may end up with some inconsistent metadata in the store. When fetching + -- them all, instead of failing with a non very helpful 'WalletNotfound' or + -- 'AccountNotFound' error because one or more metadata in the list contains + -- unknown ids, we simply discard them from what we fetched and we fetch + -- another batch up until we have enough (== pp). + go cp pp (acc, total) + | length acc >= pp = + return $ (take pp acc, total) + | otherwise = do + accountFops <- castAccountFiltering mbWalletId mbAccountIndex + mbSorting <- castSorting sop + (metas, mbTotalEntries) <- liftIO $ TxMeta.getTxMetas + (wallet ^. Kernel.walletMeta) + (TxMeta.Offset . fromIntegral $ (cp - 1) * pp) + (TxMeta.Limit . fromIntegral $ pp) + accountFops + (unV1 <$> mbAddress) + (castFiltering $ mapIx unV1 <$> F.findMatchingFilterOp fop) + (castFiltering $ mapIx unV1 <$> F.findMatchingFilterOp fop) + mbSorting + db <- liftIO $ Kernel.getWalletSnapshot wallet + sc <- liftIO $ Node.getSlotCount (wallet ^. Kernel.walletNode) + currentSlot <- liftIO $ Node.getTipSlotId (wallet ^. Kernel.walletNode) + if null metas then + -- A bit artificial, but we force the termination and make sure + -- in the meantime that the algorithm only exits by one and only + -- one branch. + go cp (min pp $ length acc) (acc, total <|> mbTotalEntries) + else do + txs <- catMaybes <$> forM metas (\meta -> do + runExceptT (metaToTx db sc currentSlot meta) >>= \case + Left e -> do + let warn = lift . ((wallet ^. Kernel.walletLogMessage) Warning) + warn $ "Inconsistent entry in the metadata store: " <> sformat build e + return Nothing + + Right tx -> + return (Just tx) + ) + go (cp + 1) pp (acc ++ txs, total <|> mbTotalEntries) + toTransaction :: MonadIO m => Kernel.PassiveWallet From 7f3472fa3352595c4806c449865a5d6869f42505 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Mon, 10 Dec 2018 10:33:47 +1000 Subject: [PATCH 096/103] [DEVOPS-1112] Add more ChangeLog entries --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1436e220137..d0c007ef7a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,7 @@ - [CO-388](https://iohk.myjetbrains.com/youtrack/issue/CO-388), [#3610](https://github.com/input-output-hk/cardano-sl/pull/3610) - [CO-389](https://iohk.myjetbrains.com/youtrack/issue/CO-389), [#3620](https://github.com/input-output-hk/cardano-sl/pull/3620), [#3658](https://github.com/input-output-hk/cardano-sl/pull/3658) -- Structured logging ([CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645), [CBR-207](https://iohk.myjetbrains.com/youtrack/issue/CBR-207), [#3476](https://github.com/input-output-hk/cardano-sl/pull/3476) [#3477](https://github.com/input-output-hk/cardano-sl/pull/3477), [CBR-211](https://iohk.myjetbrains.com/youtrack/issue/CBR-211) [#3507](https://github.com/input-output-hk/cardano-sl/pull/3507), [CBR-213](https://iohk.myjetbrains.com/youtrack/issue/CBR-213), [#3481](https://github.com/input-output-hk/cardano-sl/pull/3481), [DEVOPS-1097](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1097), [#3764](https://github.com/input-output-hk/cardano-sl/pull/3764), [#3395](https://github.com/input-output-hk/cardano-sl/pull/3395), [#3443](https://github.com/input-output-hk/cardano-sl/pull/3443), [DEVOPS-1109](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1109), [#3785](https://github.com/input-output-hk/cardano-sl/pull/3785), [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655), [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709), [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523), [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603), [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609)) +- Structured logging ([CBR-97](https://iohk.myjetbrains.com/youtrack/issue/CBR-97) [#3483](https://github.com/input-output-hk/cardano-sl/pull/3483) [#3645](https://github.com/input-output-hk/cardano-sl/pull/3645), [CBR-207](https://iohk.myjetbrains.com/youtrack/issue/CBR-207), [#3476](https://github.com/input-output-hk/cardano-sl/pull/3476) [#3477](https://github.com/input-output-hk/cardano-sl/pull/3477), [CBR-211](https://iohk.myjetbrains.com/youtrack/issue/CBR-211) [#3507](https://github.com/input-output-hk/cardano-sl/pull/3507), [CBR-213](https://iohk.myjetbrains.com/youtrack/issue/CBR-213), [#3481](https://github.com/input-output-hk/cardano-sl/pull/3481), [DEVOPS-1097](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1097), [#3764](https://github.com/input-output-hk/cardano-sl/pull/3764), [#3395](https://github.com/input-output-hk/cardano-sl/pull/3395), [#3443](https://github.com/input-output-hk/cardano-sl/pull/3443), [DEVOPS-1109](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1109), [#3785](https://github.com/input-output-hk/cardano-sl/pull/3785), [CBR-275](https://iohk.myjetbrains.com/youtrack/issue/CBR-275) [#3533](https://github.com/input-output-hk/cardano-sl/pull/3533) [#3534](https://github.com/input-output-hk/cardano-sl/pull/3534) [#3655](https://github.com/input-output-hk/cardano-sl/pull/3655), [CBR-345](https://iohk.myjetbrains.com/youtrack/issue/CBR-345) [#3526](https://github.com/input-output-hk/cardano-sl/pull/3526) [#3613](https://github.com/input-output-hk/cardano-sl/pull/3613) [#3632](https://github.com/input-output-hk/cardano-sl/pull/3632) [#3633](https://github.com/input-output-hk/cardano-sl/pull/3633) [#3709](https://github.com/input-output-hk/cardano-sl/pull/3709), [CBR-348](https://iohk.myjetbrains.com/youtrack/issue/CBR-348) [#3523](https://github.com/input-output-hk/cardano-sl/pull/3523), [CBR-430](https://iohk.myjetbrains.com/youtrack/issue/CBR-430) [#3603](https://github.com/input-output-hk/cardano-sl/pull/3603), [CBR-423](https://iohk.myjetbrains.com/youtrack/issue/CBR-423) [#3609](https://github.com/input-output-hk/cardano-sl/pull/3609), [RCD-42](https://iohk.myjetbrains.com/youtrack/issue/RCD-42) [#3816](https://github.com/input-output-hk/cardano-sl/pull/3816)) - New data layer for wallet ([CBR-150](https://iohk.myjetbrains.com/youtrack/issue/CBR-150), [#3245](https://github.com/input-output-hk/cardano-sl/pull/3245), [CBR-227](https://iohk.myjetbrains.com/youtrack/issue/CBR-227), @@ -120,6 +120,10 @@ - Fix restoration ignoring new accounts in legacy data layer ([DEVOPS-1153](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1153): [#3911](https://github.com/input-output-hk/cardano-sl/pull/3911)) +- Tweaks to [Cardano Explorer](https://cardanoexplorer.com/) for [Testnet](https://testnet.iohkdev.io/cardano/) ([DEVOPS-1094](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1094), [#3817](https://github.com/input-output-hk/cardano-sl/pull/3817), [DEVOPS-1121](https://iohk.myjetbrains.com/youtrack/issue/DEVOPS-1121), [#3831](https://github.com/input-output-hk/cardano-sl/pull/3831), [RCD-48](https://iohk.myjetbrains.com/youtrack/issue/RCD-48), [#3883](https://github.com/input-output-hk/cardano-sl/pull/3883)) + +- Fix bug in Windows launcher where upgrading to 2.0.0 would terminate any other Daedalus wallets that were running ([RCD-52](https://iohk.myjetbrains.com/youtrack/issue/RCD-52), [#3926](https://github.com/input-output-hk/cardano-sl/pull/3926)) + ### Improvements - Friendly error mistakes from deserializing invalid addresses instead of brutal 500 ([CBR-283](https://iohk.myjetbrains.com/youtrack/issue/CBR-283)) From 56c179dd564b674476a4e02f3436102daac0bed4 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Mon, 10 Dec 2018 11:48:04 +0100 Subject: [PATCH 097/103] [CBR-496] Fix --rebuild-db not rebuilding sqlite The sqlite db is actually stored in a file and not a directory --- wallet-new/src/Cardano/Wallet/Kernel.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel.hs b/wallet-new/src/Cardano/Wallet/Kernel.hs index 15f55ed8344..d7b39ce1b73 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel.hs @@ -31,7 +31,7 @@ import Data.Acid (AcidState, createArchive, createCheckpoint, openLocalStateFrom) import Data.Acid.Memory (openMemoryState) import qualified Data.Map.Strict as Map -import System.Directory (doesDirectoryExist, removeDirectoryRecursive) +import System.Directory (doesPathExist, removePathForcibly) import Pos.Chain.Txp (TxAux (..)) import Pos.Crypto (ProtocolMagic) @@ -128,8 +128,8 @@ handlesOpen mode = UseFilePath (DatabaseOptions acidDb sqliteDb rebuildDB) -> do let deleteMaybe fp = do when rebuildDB $ do - itsHere <- doesDirectoryExist fp - when itsHere $ removeDirectoryRecursive fp + itsHere <- doesPathExist fp + when itsHere $ removePathForcibly fp deleteMaybe acidDb db <- openLocalStateFrom acidDb defDB deleteMaybe sqliteDb From 613445d9dd090270d4998061e3de611761f1c9ac Mon Sep 17 00:00:00 2001 From: KtorZ Date: Mon, 10 Dec 2018 14:38:52 +0100 Subject: [PATCH 098/103] Add missing entries for RCD-44 to RCD-47 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0c007ef7a8..be0202a2e0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,10 @@ - [CBR-471](https://iohk.myjetbrains.com/youtrack/issue/CBR-471) [#3786](https://github.com/input-output-hk/cardano-sl/pull/3786) - [CO-367](https://iohk.myjetbrains.com/youtrack/issue/CO-367) [#3661](https://github.com/input-output-hk/cardano-sl/pull/3661) - [CBR-366](https://iohk.myjetbrains.com/youtrack/issue/CBR-366) [#3469](https://github.com/input-output-hk/cardano-sl/pull/3469) + - [RCD-44](https://iohk.myjetbrains.com/youtrack/issue/RCD-44) [#3875](https://github.com/input-output-hk/cardano-sl/pull/3875) + - [RCD-45](https://iohk.myjetbrains.com/youtrack/issue/RCD-45) [#3875](https://github.com/input-output-hk/cardano-sl/pull/3875) + - [RCD-46](https://iohk.myjetbrains.com/youtrack/issue/RCD-46) [#3875](https://github.com/input-output-hk/cardano-sl/pull/3875) + - [RCD-47](https://iohk.myjetbrains.com/youtrack/issue/RCD-47) [#3876](https://github.com/input-output-hk/cardano-sl/pull/3876) - Finalize port of API V0 to V1 - [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) From a74f4a0418eadf3ea4a45c479dc05825c2cfeb5c Mon Sep 17 00:00:00 2001 From: kderme Date: Mon, 10 Dec 2018 15:47:41 +0200 Subject: [PATCH 099/103] [CBR-495] Make UndisputableLookupFailed lenient, since we may end up with no Txs-Accounts relations in SQlite --- wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs b/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs index eaa11195164..c9408fa6f77 100644 --- a/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs +++ b/wallet-new/src/Cardano/Wallet/Kernel/DB/Sqlite.hs @@ -498,17 +498,16 @@ putTxMetaT conn txMeta = -- This is the only acceptable exception here. If anything else is thrown, that`s an error. t <- getTxMetasById conn txId case (Kernel.txIdIsomorphic txMeta <$> t) of - Nothing -> - -- Output is there but not TxMeta. This should never happen. - -- This could be improved with foreign keys, which indicate - -- the existence of at least one Meta entry for each Output. - throwIO $ Kernel.InvariantViolated (Kernel.UndisputableLookupFailed "txId") Just False -> -- This violation means the Tx has same TxId but different -- Inputs (as set) or Outputs (ordered). throwIO $ Kernel.InvariantViolated (Kernel.TxIdInvariantViolated txId) - Just True -> do - -- If there not a TxId violation, we can try to insert TxMeta. + _ -> do + -- If there is not a TxId violation, we can try to insert TxMeta. + -- We handle Nothing and (Just True) the same here, since + -- it's possible that there is no Meta with this Inputs/Outputs. + -- In the future we may consider doing a better cleanup to avoid + -- such cases. res2 <- Sqlite.runDBAction $ runBeamSqlite conn $ SQL.runInsert $ SQL.insert (_mDbMeta metaDB) $ SQL.insertValues [tMeta] case res2 of From 66d7ac9517bf456d402995299e077055c3d54efc Mon Sep 17 00:00:00 2001 From: KtorZ Date: Mon, 10 Dec 2018 16:55:24 +0100 Subject: [PATCH 100/103] Add entry for CBR-495 & CBR-496 to 2.0.0 CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index be0202a2e0b..298c4ae27dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,8 @@ - [RCD-45](https://iohk.myjetbrains.com/youtrack/issue/RCD-45) [#3875](https://github.com/input-output-hk/cardano-sl/pull/3875) - [RCD-46](https://iohk.myjetbrains.com/youtrack/issue/RCD-46) [#3875](https://github.com/input-output-hk/cardano-sl/pull/3875) - [RCD-47](https://iohk.myjetbrains.com/youtrack/issue/RCD-47) [#3876](https://github.com/input-output-hk/cardano-sl/pull/3876) + - [CBR-495](https://iohk.myjetbrains.com/youtrack/issue/CBR-495) [#3943](https://github.com/input-output-hk/cardano-sl/pull/3943) + - [CBR-496](https://iohk.myjetbrains.com/youtrack/issue/CBR-496) [#3947](https://github.com/input-output-hk/cardano-sl/pull/3947) - Finalize port of API V0 to V1 - [CO-334](https://iohk.myjetbrains.com/youtrack/issue/CO-334) [#3197](https://github.com/input-output-hk/cardano-sl/pull/3197) From 56f45b5df647efebdd8e7156bfe895e96039caae Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Thu, 13 Dec 2018 23:50:03 +1000 Subject: [PATCH 101/103] =?UTF-8?q?[DEVOPS-1112]=20Bump=20staging=20applic?= =?UTF-8?q?ationVersion=2017=20=E2=86=92=2018?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/configuration.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/configuration.yaml b/lib/configuration.yaml index 34c8cf6161b..281dd3be661 100644 --- a/lib/configuration.yaml +++ b/lib/configuration.yaml @@ -14973,7 +14973,7 @@ mainnet_dryrun_wallet_win64: &mainnet_dryrun_wallet_win64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 17 + applicationVersion: 18 lastKnownBlockVersion: bvMajor: 0 bvMinor: 2 @@ -14983,7 +14983,7 @@ mainnet_dryrun_wallet_macos64: &mainnet_dryrun_wallet_macos64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 17 + applicationVersion: 18 lastKnownBlockVersion: bvMajor: 0 bvMinor: 2 @@ -14993,7 +14993,7 @@ mainnet_dryrun_wallet_linux64: &mainnet_dryrun_wallet_linux64 <<: *mainnet_dryrun_full update: applicationName: csl-daedalus - applicationVersion: 17 + applicationVersion: 18 lastKnownBlockVersion: bvMajor: 0 bvMinor: 2 From e0802a2fdba74b57dc2776f7e01614532dc6875d Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Fri, 4 Jan 2019 20:05:47 +1000 Subject: [PATCH 102/103] Resolve merge conflicts --- appveyor.yml | 172 ------------------ bors.toml | 3 - default.nix | 7 - ...ardano-sl-and-daedalus-from-source-code.md | 4 - nix/.stack.nix/cardano-sl-db.nix | 1 + nix/.stack.nix/cardano-sl-tools.nix | 4 +- nix/stack2nix.nix | 7 - pkgs/default.nix | 13 -- release.nix | 19 -- stack.yaml | 4 - 10 files changed, 4 insertions(+), 230 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 6ee0df19e66..9a08430b05e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -3,177 +3,5 @@ image: Visual Studio 2015 build: off -<<<<<<< HEAD -environment: - global: - # Avoid long paths on Windows - STACK_ROOT: "c:\\s" - STACK_WORK: ".w" - WORK_DIR: "c:\\w" - # Override the temp directory to avoid sed escaping issues - # See https://github.com/haskell/cabal/issues/5386 - TMP: "c:\\tmp" - CACHE_S3_VERSION: v0.1.4 - CACHE_S3_MAX_SIZE: 1600MB # AppVeyor limits the amount uploaded to approx 2GB - AWS_REGION: us-west-1 - S3_BUCKET: appveyor-ci-cache - AWS_ACCESS_KEY_ID: - secure: sQWt5CpaN0H+jwUVoTsrET46pADUDEcrJ5D9MHmKX0M= - AWS_SECRET_ACCESS_KEY: - secure: m5sQYd16K8HA0zoZaD0gOl4EEWUso1D51L5rp+kT3hLaIE3tt4iT+b+iW8F4F0FU - -init: -- ps: $env:CACHE_S3_READY = (("$env:CACHE_S3_VERSION" -ne "") -and ("$env:S3_BUCKET" -ne "") -and ("$env:AWS_ACCESS_KEY_ID" -ne "") -and ("$env:AWS_SECRET_ACCESS_KEY" -ne "")) - -before_test: -# Avoid long paths not to each MAX_PATH of 260 chars -- xcopy /q /s /e /r /k /i /v /h /y "%APPVEYOR_BUILD_FOLDER%" "%WORK_DIR%" -- cd "%WORK_DIR%" -# Restore cache -- Echo %APPVEYOR_BUILD_VERSION% > build-id -- ps: >- - Write-Host "in pagefile script" ; - $c = Get-WmiObject Win32_computersystem -EnableAllPrivileges ; - if($c.AutomaticManagedPagefile){ - Write-Host "disabling managed page file settings" - $c.AutomaticManagedPagefile = $false - $c.Put() | Out-Null - } ; - $new_page_size=25000 ; - $CurrentPageFile = Get-WmiObject -Class Win32_PageFileSetting ; - if ($CurrentPageFile.InitialSize -ne $new_page_size) { - Write-Host "setting new page file size to $new_page_size" - $CurrentPageFile.InitialSize=$new_page_size - $CurrentPageFile.MaximumSize=$new_page_size - $CurrentPageFile.Put() | Out-Null - } ; - if ( $env:CACHE_S3_READY -eq $true ) { - Start-FileDownload https://github.com/fpco/cache-s3/releases/download/$env:CACHE_S3_VERSION/cache-s3-$env:CACHE_S3_VERSION-windows-x86_64.zip -FileName cache-s3.zip - 7z x cache-s3.zip cache-s3.exe - .\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -v info -c restore stack --base-branch=develop - .\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -v info -c restore stack work --base-branch=develop - } - -# Get custom GHC -- ps: >- - mkdir C:\ghc - - Invoke-WebRequest "https://s3.eu-central-1.amazonaws.com/ci-static/ghc-8.4.4-x86_64-unknown-mingw32-20181113-b907eb0f9b.tar.xz" -OutFile "C:\ghc\ghc.tar.xz" -UserAgent "Curl" - - 7z x C:\ghc\ghc.tar.xz -oC:\ghc - - 7z x C:\ghc\ghc.tar -oC:\ghc - - $env:PATH="$env:PATH;C:\ghc\ghc-8.4.4\bin" - -# Install OpenSSL 1.0.2 (see https://github.com/appveyor/ci/issues/1665) -- ps: (New-Object Net.WebClient).DownloadFile('https://slproweb.com/download/Win64OpenSSL-1_0_2q.exe', "$($env:USERPROFILE)\Win64OpenSSL.exe") -- ps: cmd /c start /wait "$($env:USERPROFILE)\Win64OpenSSL.exe" /silent /verysilent /sp- /suppressmsgboxes /DIR=C:\OpenSSL-Win64-v102 -- ps: Install-Product node 6 -# Install stack -- ps: Start-FileDownload http://www.stackage.org/stack/windows-x86_64 -FileName stack.zip -- 7z x stack.zip stack.exe - - -# Install rocksdb -- git clone https://github.com/facebook/rocksdb.git --branch v4.13.5 -- ps: Start-FileDownload 'https://s3.eu-central-1.amazonaws.com/ci-static/serokell-rocksdb-haskell-325427fc709183c8fdf777ad5ea09f8d92bf8585.zip' -FileName rocksdb.zip -- 7z x rocksdb.zip - -# CSL-1509: After moving the 'cardano-sl' project itself into a separate folder ('lib/'), the 'cardano-text.exe' executable fails on AppVeyor CI. -# After some investigation, it was discovered that this was because 'rocksdb.dll' has to be located in this folder as well, or else the test executable doesn't work. -- copy rocksdb.dll node -- copy rocksdb.dll lib -- copy rocksdb.dll wallet - -# Install liblzma/xz -- ps: Start-FileDownload https://tukaani.org/xz/xz-5.2.3-windows.zip -Filename xz-5.2.3-windows.zip -- 7z -oC:\xz_extracted x xz-5.2.3-windows.zip - -test_script: - - cd "%WORK_DIR%" - - stack config --system-ghc set system-ghc --global true - - stack exec -- ghc-pkg recache - - stack --verbosity warn setup --no-reinstall > nul - # Install happy separately: https://github.com/commercialhaskell/stack/issues/3151#issuecomment-310642487. Also install cpphs because it's a build-tool and Stack can't figure out by itself that it should be installed - - scripts\ci\appveyor-retry call stack --verbosity warn install happy cpphs - -j 2 - --no-terminal - --local-bin-path %SYSTEMROOT%\system32 - --extra-include-dirs="C:\OpenSSL-Win64-v102\include" - --extra-lib-dirs="C:\OpenSSL-Win64-v102" - --extra-include-dirs="C:\xz_extracted\include" - --extra-lib-dirs="C:\xz_extracted\bin_x86-64" - --extra-include-dirs="%WORK_DIR%\rocksdb\include" - --extra-lib-dirs="%WORK_DIR%" - --ghc-options="-copy-libs-when-linking" -# TODO: CSL-1133. To be reenabled. -# - stack test --coverage -# - stack hpc report cardano-sl cardano-sl-txp cardano-sl-core cardano-sl-db cardano-sl-update cardano-sl-infra cardano-sl-lrc cardano-sl-ssc -# Retry transient failures due to https://github.com/haskell/cabal/issues/4005 - # We intentionally don't build auxx here, because this build is for installer. - - scripts\ci\appveyor-retry call stack --dump-logs install cardano-sl cardano-sl-tools cardano-wallet - -j 3 - --no-terminal - --local-bin-path %WORK_DIR% - --no-haddock-deps - --flag cardano-sl-core:-asserts - --flag cardano-sl-tools:for-installer - --extra-include-dirs="C:\OpenSSL-Win64-v102\include" - --extra-lib-dirs="C:\OpenSSL-Win64-v102" - --extra-include-dirs="C:\xz_extracted\include" - --extra-lib-dirs="C:\xz_extracted\bin_x86-64" - --extra-include-dirs="%WORK_DIR%\rocksdb\include" - --extra-lib-dirs="%WORK_DIR%" - --ghc-options="-copy-libs-when-linking" - # Cardano pieces, modulo the frontend - - mkdir daedalus - # log config is called `log-config-prod.yaml` just in case, it's the old name - - copy log-configs\daedalus.yaml daedalus\log-config-prod.yaml - - copy lib\configuration.yaml daedalus\ - - copy lib\*genesis*.json daedalus\ - - copy cardano-launcher.exe daedalus\ - - copy cardano-node.exe daedalus\ - - copy cardano-x509-certificates.exe daedalus\ - - cd daedalus - - Echo %APPVEYOR_BUILD_VERSION% > build-id - - Echo %APPVEYOR_REPO_COMMIT% > commit-id - - Echo https://ci.appveyor.com/project/%APPVEYOR_ACCOUNT_NAME%/%APPVEYOR_PROJECT_SLUG%/build/%APPVEYOR_BUILD_VERSION% > ci-url - -after_test: - - xcopy /q /s /e /r /k /i /v /h /y "%WORK_DIR%\daedalus" "%APPVEYOR_BUILD_FOLDER%\daedalus" - - cd "%WORK_DIR%/daedalus" - - 7z a "%APPVEYOR_REPO_COMMIT%.zip" * - - appveyor PushArtifact "%APPVEYOR_REPO_COMMIT%.zip" - - cd "%WORK_DIR%" # Get back to where cache-s3.exe is located - - ps: >- - if ( ($env:CACHE_S3_READY -eq $true) -and (-not $env:APPVEYOR_PULL_REQUEST_NUMBER) ) { - if ($env:APPVEYOR_REPO_BRANCH -eq "master" -Or $env:APPVEYOR_REPO_BRANCH -eq "develop" -Or $env:APPVEYOR_REPO_BRANCH -like "release*") { - Write-Host "saving stack" - .\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -c -v info save stack - Write-Host "done stack" - } - Write-Host "saving stack work" - .\cache-s3 --max-size=$env:CACHE_S3_MAX_SIZE --prefix=$env:APPVEYOR_PROJECT_NAME --git-branch=$env:APPVEYOR_REPO_BRANCH --suffix=windows -c -v info save stack work - Write-Host "done stack work" - } -artifacts: - - path: daedalus/ - name: CardanoSL - type: zip - -deploy: - provider: S3 - access_key_id: - secure: IEky6PsMzHaKHNBMxR8tQaQI8X7qWRB9+HuEroTVRBk= - secret_access_key: - secure: cqjzG96hWB1x3JDbVSbF9E+aJ5jKvIGacJRUDWATHaTOYfSt6Rvive/NrF4lKBIm - bucket: appveyor-ci-deploy - region: ap-northeast-1 - set_public: true - folder: cardano-sl - artifact: $(APPVEYOR_REPO_COMMIT).zip -======= test_script: - ps: echo "No Longer Used, check buildkite windows job" ->>>>>>> release/2.0.0 diff --git a/bors.toml b/bors.toml index cfe45098daa..1d50cb1e233 100644 --- a/bors.toml +++ b/bors.toml @@ -4,12 +4,9 @@ status = [ # Buildkite: stack2nix checks, etc. "buildkite/cardano-sl", -<<<<<<< HEAD # Windows: builds are too unreliable to use at present # "continuous-integration/appveyor/branch", -======= ->>>>>>> release/2.0.0 ] timeout_sec = 7200 required_approvals = 1 diff --git a/default.nix b/default.nix index 37799e942ac..46d5bd7727d 100644 --- a/default.nix +++ b/default.nix @@ -285,16 +285,9 @@ let cardano-sl-tools cardano-sl-tools-post-mortem cardano-sl-util -<<<<<<< HEAD cardano-sl-x509 cardano-wallet cardano-wallet-static; -======= - cardano-sl-wallet - cardano-sl-wallet-new - cardano-sl-wallet-new-static - cardano-sl-x509; ->>>>>>> release/2.0.0 inherit (self.haskellPackages) cardano-report-server; } # nix-tools setup diff --git a/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md b/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md index 593dc7a04ce..5e50634f296 100644 --- a/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md +++ b/docs/how-to/build-cardano-sl-and-daedalus-from-source-code.md @@ -65,11 +65,7 @@ NOTE: the various other Cardano components can be obtained through other attribu - `cardano-explorer`, `cardano-explorer-swagger`, `cardano-explorer-mock` - `cardano-sl-tools`: - `cardano-analyzer`, `cardano-dht-keygen`, `cardano-genupdate`, `cardano-keygen`, `cardano-launcher`, `cardano-addr-convert`, `cardano-cli-docs`, `cardano-block-gen`, `cardano-post-mortem` -<<<<<<< HEAD - `cardano-wallet-static`: -======= -- `cardano-sl-wallet-new-static`: ->>>>>>> release/2.0.0 - `cardano-node`, `cardano-generate-swagger-file` In general, for any given cabal `PACKAGE` provided by Cardano, there is a diff --git a/nix/.stack.nix/cardano-sl-db.nix b/nix/.stack.nix/cardano-sl-db.nix index deedaeb995f..b77694dcc61 100644 --- a/nix/.stack.nix/cardano-sl-db.nix +++ b/nix/.stack.nix/cardano-sl-db.nix @@ -44,6 +44,7 @@ (hsPkgs.ekg-core) (hsPkgs.ether) (hsPkgs.exceptions) + (hsPkgs.extra) (hsPkgs.filepath) (hsPkgs.formatting) (hsPkgs.lens) diff --git a/nix/.stack.nix/cardano-sl-tools.nix b/nix/.stack.nix/cardano-sl-tools.nix index a7e89b9bd1b..4be8821560e 100644 --- a/nix/.stack.nix/cardano-sl-tools.nix +++ b/nix/.stack.nix/cardano-sl-tools.nix @@ -115,7 +115,9 @@ (hsPkgs.universum) (hsPkgs.unordered-containers) (hsPkgs.yaml) - ] ++ pkgs.lib.optional (!system.isWindows) (hsPkgs.unix); + ] ++ (if !system.isWindows + then [ (hsPkgs.unix) ] + else [ (hsPkgs.Win32) ]); }; "cardano-addr-convert" = { depends = [ diff --git a/nix/stack2nix.nix b/nix/stack2nix.nix index f3bcd8bb2e5..19829800247 100644 --- a/nix/stack2nix.nix +++ b/nix/stack2nix.nix @@ -1,14 +1,7 @@ {pkgs, fetchFromGitHub }: -<<<<<<< HEAD import (fetchFromGitHub { owner = "input-output-hk"; -======= -let - hostPkgs = import pkgs.path { config = {}; system = builtins.currentSystem; overlays = []; }; -in import (hostPkgs.fetchFromGitHub { - owner = "avieth"; ->>>>>>> release/2.0.0 repo = "stack2nix"; rev = "60c36985f07ab87ed01a8a68b6978aba58c8afbd"; sha256 = "13swg8wxsvy91gkbqs0j661kk4gz2mhqbjghwhhsjqqpwxp2wlns"; diff --git a/pkgs/default.nix b/pkgs/default.nix index 53eaa28610c..ee9475c22ea 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -13409,14 +13409,9 @@ version = "0.5.10"; src = fetchgit { url = "https://github.com/input-output-hk/cardano-report-server.git"; -<<<<<<< HEAD sha256 = "04zsgrmnlyjymry6fsqnz692hdp89ykqb8jyxib8yklw101gdn3x"; rev = "93f2246c54436e7f98cc363b4e0f8f1cb5e78717"; fetchSubmodules = true; -======= -sha256 = "10hqaxc07rkqaj7br4kki4drg2hz45rp7wr1b8s9b6cfg3apriwp"; -rev = "62f04801ef9fce4c8e856607400a2bb05ab732e9"; ->>>>>>> release/2.0.0 }; isLibrary = true; @@ -15367,10 +15362,6 @@ license = stdenv.lib.licenses.mit; , aeson , base , bytestring -<<<<<<< HEAD -======= -, cardano-sl-chain ->>>>>>> release/2.0.0 , cardano-sl-client , cardano-sl-core , cardano-sl-crypto @@ -15431,10 +15422,6 @@ libraryHaskellDepends = [ aeson base bytestring -<<<<<<< HEAD -======= -cardano-sl-chain ->>>>>>> release/2.0.0 cardano-sl-client cardano-sl-core cardano-sl-crypto diff --git a/release.nix b/release.nix index d93a58ecbb1..ed73b5a483c 100644 --- a/release.nix +++ b/release.nix @@ -172,7 +172,6 @@ let dockerImage = wrapDockerImage cluster; }; }; -<<<<<<< HEAD # return an attribute set containing the result of running every test-suite in cardano, on the given system makeCardanoTestRuns = system: let @@ -181,9 +180,6 @@ let f = name: value: value.testrun; in pkgs.lib.mapAttrs f (lib.filterAttrs pred cardanoPkgs); in pkgs.lib.fix (jobsets: mapped // mapped-nix-tools' // { -======= -in pkgs.lib.fix (jobsets: mapped // { ->>>>>>> release/2.0.0 inherit tests; inherit (pkgs) cabal2nix; nixpkgs = let @@ -191,27 +187,18 @@ in pkgs.lib.fix (jobsets: mapped // { ln -sv ${fixedNixpkgs} $out ''; in if 0 <= builtins.compareVersions builtins.nixVersion "1.12" then wrapped else fixedNixpkgs; -<<<<<<< HEAD # the result of running every cardano test-suite on 64bit linux all-cardano-tests.x86_64-linux = makeCardanoTestRuns "x86_64-linux"; # hydra will create a special aggregate job, that relies on all of these sub-jobs passing -======= ->>>>>>> release/2.0.0 required = pkgs.lib.hydraJob (pkgs.releaseTools.aggregate { name = "cardano-required-checks"; constituents = let -<<<<<<< HEAD allLinux = x: map (system: x.${system}) [ "x86_64-linux" ]; all = x: map (system: x.${system}) supportedSystems; in [ (builtins.concatLists (map lib.attrValues (allLinux jobsets.all-cardano-tests))) -======= - all = x: map (system: x.${system}) supportedSystems; - in - [ ->>>>>>> release/2.0.0 (all jobsets.all-cardano-sl) (all jobsets.daedalus-bridge) jobsets.mainnet.connectScripts.wallet.x86_64-linux @@ -219,15 +206,9 @@ in pkgs.lib.fix (jobsets: mapped // { jobsets.tests.shellcheck jobsets.tests.stylishHaskell jobsets.tests.swaggerSchemaValidation -<<<<<<< HEAD (builtins.concatLists (lib.attrValues (lib.mapAttrs (_: allLinux) jobsets.nix-tools.libs))) (builtins.concatLists (lib.attrValues (lib.mapAttrs (_: allLinux) jobsets.nix-tools.exes))) ]; }); } // (builtins.listToAttrs (map makeRelease [ "mainnet" "staging" ]))) -======= - ]; - }); -} // (builtins.listToAttrs (map makeRelease [ "mainnet" "staging" ]))) ->>>>>>> release/2.0.0 diff --git a/stack.yaml b/stack.yaml index 9befd83ad5b..209c9f5d67b 100644 --- a/stack.yaml +++ b/stack.yaml @@ -47,11 +47,7 @@ packages: - location: git: https://github.com/input-output-hk/cardano-report-server.git -<<<<<<< HEAD commit: 93f2246c54436e7f98cc363b4e0f8f1cb5e78717 -======= - commit: 62f04801ef9fce4c8e856607400a2bb05ab732e9 ->>>>>>> release/2.0.0 extra-dep: true - location: From 601a2ce9d7844d56bf3305344e3e88154374a718 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Mincke Date: Fri, 11 Jan 2019 11:50:25 +0100 Subject: [PATCH 103/103] Remove all references to Win32 from tools --- tools/cardano-sl-tools.cabal | 2 -- tools/src/launcher/Main.hs | 10 +--------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/tools/cardano-sl-tools.cabal b/tools/cardano-sl-tools.cabal index 907c5226bc1..2cea556ad03 100644 --- a/tools/cardano-sl-tools.cabal +++ b/tools/cardano-sl-tools.cabal @@ -156,8 +156,6 @@ executable cardano-launcher , yaml if !os(windows) build-depends: unix - else - build-depends: Win32 default-language: Haskell2010 ghc-options: -threaded -Wall diff --git a/tools/src/launcher/Main.hs b/tools/src/launcher/Main.hs index 395c7295303..f2158d3d63b 100644 --- a/tools/src/launcher/Main.hs +++ b/tools/src/launcher/Main.hs @@ -12,7 +12,6 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeSynonymInstances #-} -{-# OPTIONS_GHC -Wno-type-defaults #-} import qualified Prelude (show) import Universum @@ -58,8 +57,6 @@ import Text.PrettyPrint.ANSI.Leijen (Doc) #ifndef mingw32_HOST_OS import System.Posix.Signals (sigKILL, signalProcess) import qualified System.Process.Internals as Process -#else -import qualified System.Win32.Process as Process #endif -- Modules needed for system' @@ -589,13 +586,8 @@ writeWindowsUpdaterRunner :: FilePath -> M () writeWindowsUpdaterRunner runnerPath = liftIO $ do exePath <- getExecutablePath launcherArgs <- getArgs -#ifdef mingw32_HOST_OS - selfPid <- Process.getCurrentProcessId -#else - let selfPid = 0 -- This will never be run on non-Windows -#endif writeFile (toString runnerPath) $ unlines - [ "TaskKill /PID "<>show selfPid<>" /F" + [ "TaskKill /IM cardano-launcher.exe /F" -- Run updater , "%*" -- Delete updater