haskoin-store 0.21.6 → 0.21.7
raw patch · 5 files changed
+113/−105 lines, 5 filesdep −resourcetdep ~QuickCheckdep ~aesondep ~bytestring
Dependencies removed: resourcet
Dependency ranges changed: QuickCheck, aeson, bytestring, cereal, conduit, containers, data-default, deepseq, hashable, haskoin-core, haskoin-node, hedis, hspec, http-types, monad-logger, mtl, network, nqe, random, rocksdb-haskell, scotty, string-conversions, text, time, transformers, unliftio, unordered-containers, wai, warp
Files
- CHANGELOG.md +7/−0
- app/Main.hs +1/−1
- haskoin-store.cabal +80/−89
- src/Haskoin/Store.hs +22/−13
- src/Network/Haskoin/Store/CacheWriter.hs +3/−2
CHANGELOG.md view
@@ -4,6 +4,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 0.21.7+### Changed+- Improve build configuration.++### Fixed+- Use minimum used addresses instead of minimum index for xpub cache decision.+ ## 0.21.6 ### Fixed - Fix missing xpub unspent outputs when using cache.
app/Main.hs view
@@ -155,7 +155,7 @@ configRedisMin <- option auto $ metavar "MINADDRS" <> long "cachemin" <>- help "Minimum xpub address count to cache" <>+ help "Minimum used xpub addresses to cache" <> showDefault <> value defRedisMin pure
haskoin-store.cabal view
@@ -4,12 +4,15 @@ -- -- see: https://github.com/sol/hpack ----- hash: 6c63490ebe39ea225abdcdb632f87f7913ab38a1bba8e637149e5873b85d8803+-- hash: 89d53a7ce243c07c2c313ca4cdeef18c520b70f50e576c1810596f1e412f4eee name: haskoin-store-version: 0.21.6+version: 0.21.7 synopsis: Storage and index for Bitcoin and Bitcoin Cash-description: Store blocks, transactions, and balances for Bitcoin or Bitcoin Cash, and make that information via REST API.+description: Store and index Bitcoin or Bitcoin Cash blocks, transactions, balances and unspent outputs.+ All data is available via REST API in JSON or binary format.+ Uses in-process RocksDB database to store data.+ Supports Redis cache that can be shared by multiple nodes for faster access to extended public key balances, transactions and unspent outputs. category: Bitcoin, Finance, Network homepage: http://github.com/haskoin/haskoin-store#readme bug-reports: http://github.com/haskoin/haskoin-store/issues@@ -46,37 +49,35 @@ hs-source-dirs: src build-depends:- QuickCheck- , aeson+ aeson >=1.4.7.1 , base >=4.9 && <5- , bytestring- , cereal- , conduit- , containers- , data-default- , deepseq- , hashable- , haskoin-core >=0.10.1+ , bytestring >=0.10.10.0+ , cereal >=0.5.8.1+ , conduit >=1.3.2+ , containers >=0.6.2.1+ , data-default >=0.7.1.1+ , deepseq >=1.4.4.0+ , hashable >=1.3.0.0+ , haskoin-core >=0.12.0 , haskoin-node >=0.9.21- , hedis- , http-types- , monad-logger- , mtl- , network- , nqe- , random- , resourcet- , rocksdb-haskell+ , hedis >=0.12.13+ , http-types >=0.12.3+ , monad-logger >=0.3.32+ , mtl >=2.2.2+ , network >=3.1.1.1+ , nqe >=0.6.1+ , random >=1.1+ , rocksdb-haskell >=1.0.1 , rocksdb-query >=0.3.1- , scotty- , string-conversions- , text- , time- , transformers- , unliftio- , unordered-containers- , wai- , warp+ , scotty >=0.11.5+ , string-conversions >=0.4.0.1+ , text >=1.2.4.0+ , time >=1.9.3+ , transformers >=0.5.6.2+ , unliftio >=0.2.12.1+ , unordered-containers >=0.2.10.0+ , wai >=3.2.2.1+ , warp >=3.3.10 default-language: Haskell2010 executable haskoin-store@@ -87,40 +88,31 @@ app ghc-options: -threaded -rtsopts -with-rtsopts=-N build-depends:- QuickCheck- , aeson+ aeson >=1.4.7.1 , base >=4.9 && <5- , bytestring- , cereal- , conduit- , containers- , data-default- , deepseq+ , bytestring >=0.10.10.0+ , cereal >=0.5.8.1+ , conduit >=1.3.2+ , containers >=0.6.2.1+ , data-default >=0.7.1.1+ , deepseq >=1.4.4.0 , filepath- , hashable- , haskoin-core >=0.10.1- , haskoin-node >=0.9.21+ , hashable >=1.3.0.0+ , haskoin-core >=0.12.0+ , haskoin-node , haskoin-store , hedis- , http-types- , monad-logger- , mtl- , network- , nqe+ , monad-logger >=0.3.32+ , mtl >=2.2.2+ , nqe >=0.6.1 , optparse-applicative- , random- , resourcet- , rocksdb-haskell- , rocksdb-query >=0.3.1- , scotty- , string-conversions- , text- , time- , transformers- , unliftio- , unordered-containers- , wai- , warp+ , random >=1.1+ , string-conversions >=0.4.0.1+ , text >=1.2.4.0+ , time >=1.9.3+ , transformers >=0.5.6.2+ , unliftio >=0.2.12.1+ , unordered-containers >=0.2.10.0 default-language: Haskell2010 test-suite haskoin-store-test@@ -147,37 +139,36 @@ src ghc-options: -threaded -rtsopts -with-rtsopts=-N build-depends:- QuickCheck- , aeson+ QuickCheck >=2.13.2+ , aeson >=1.4.7.1 , base >=4.9 && <5- , bytestring- , cereal- , conduit- , containers- , data-default- , deepseq- , hashable- , haskoin-core >=0.10.1+ , bytestring >=0.10.10.0+ , cereal >=0.5.8.1+ , conduit >=1.3.2+ , containers >=0.6.2.1+ , data-default >=0.7.1.1+ , deepseq >=1.4.4.0+ , hashable >=1.3.0.0+ , haskoin-core >=0.12.0 , haskoin-node >=0.9.21- , hedis- , hspec- , http-types- , monad-logger- , mtl- , network- , nqe- , random- , resourcet- , rocksdb-haskell+ , hedis >=0.12.13+ , hspec >=2.7.1+ , http-types >=0.12.3+ , monad-logger >=0.3.32+ , mtl >=2.2.2+ , network >=3.1.1.1+ , nqe >=0.6.1+ , random >=1.1+ , rocksdb-haskell >=1.0.1 , rocksdb-query >=0.3.1- , scotty- , string-conversions- , text- , time- , transformers- , unliftio- , unordered-containers- , wai- , warp+ , scotty >=0.11.5+ , string-conversions >=0.4.0.1+ , text >=1.2.4.0+ , time >=1.9.3+ , transformers >=0.5.6.2+ , unliftio >=0.2.12.1+ , unordered-containers >=0.2.10.0+ , wai >=3.2.2.1+ , warp >=3.3.10 default-language: Haskell2010 build-tool-depends: hspec-discover:hspec-discover
src/Haskoin/Store.hs view
@@ -1,9 +1,18 @@ module Haskoin.Store- ( StoreConfig (..)+ ( StoreConfig(..) , store , withStore- , module X )- where+ , module Network.Haskoin.Store.Common+ , module Network.Haskoin.Store.BlockStore+ , module Network.Haskoin.Store.Logic+ , module Network.Haskoin.Store.Web+ , module Network.Haskoin.Store.CacheWriter+ , module Network.Haskoin.Store.Data.Types+ , module Network.Haskoin.Store.Data.CacheReader+ , module Network.Haskoin.Store.Data.DatabaseReader+ , module Network.Haskoin.Store.Data.DatabaseWriter+ , module Network.Haskoin.Store.Data.MemoryDatabase+ ) where import Control.Monad (forever, unless, when)@@ -33,16 +42,16 @@ NodeEvent (..), PeerEvent (..), node)-import Network.Haskoin.Store.BlockStore as X-import Network.Haskoin.Store.CacheWriter as X-import Network.Haskoin.Store.Common as X-import Network.Haskoin.Store.Data.CacheReader as X-import Network.Haskoin.Store.Data.DatabaseReader as X-import Network.Haskoin.Store.Data.DatabaseWriter as X-import Network.Haskoin.Store.Data.MemoryDatabase as X-import Network.Haskoin.Store.Data.Types as X-import Network.Haskoin.Store.Logic as X-import Network.Haskoin.Store.Web as X+import Network.Haskoin.Store.BlockStore+import Network.Haskoin.Store.CacheWriter+import Network.Haskoin.Store.Common+import Network.Haskoin.Store.Data.CacheReader+import Network.Haskoin.Store.Data.DatabaseReader+import Network.Haskoin.Store.Data.DatabaseWriter+import Network.Haskoin.Store.Data.MemoryDatabase+import Network.Haskoin.Store.Data.Types+import Network.Haskoin.Store.Logic+import Network.Haskoin.Store.Web import Network.Socket (SockAddr (..)) import NQE (Inbox, Listen, Process (..),
src/Network/Haskoin/Store/CacheWriter.hs view
@@ -53,7 +53,7 @@ XPubBal (..), XPubSpec (..), XPubUnspent (..),- sortTxs,+ nullBalance, sortTxs, xPubAddrFunction, xPubBals, xPubTxs, xPubUnspents)@@ -147,7 +147,8 @@ x <- asks cacheWriterMin when empty $ do bals <- lift $ xPubBals xpub- when (x <= length bals) (go bals)+ let l = length $ filter (not . nullBalance . xPubBal) bals+ when (x <= l) (go bals) where go bals = do utxo <- lift $ xPubUnspents xpub Nothing 0 Nothing