bitcoin-api-extra 0.9.0 → 0.9.1
raw patch · 4 files changed
+28/−33 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- README.md +9/−6
- bitcoin-api-extra.cabal +2/−1
- src/Control/Bitcoin/Api/Transaction.hs +15/−26
- test/Control/Bitcoin/Api/TransactionSpec.hs +2/−0
README.md view
@@ -1,10 +1,13 @@-haskell-bitcoin-script -================== +haskell-bitcoin-api-extra +========================= -[](https://travis-ci.org/solatis/haskell-bitcoin-script) -[](https://coveralls.io/r/solatis/haskell-bitcoin-script?branch=master) +[](https://travis-ci.org/solatis/haskell-bitcoin-api-extra) +[](https://coveralls.io/r/solatis/haskell-bitcoin-api-extra?branch=master) [](http://en.wikipedia.org/wiki/MIT_License) [](http://haskell.org) -This library provides utilities for compiling, manipulation and decompiling of -Bitcoin scripts. +Where `bitcoin-api` focusses solely on interacting with the Bitcoin Core client, +this library attempts to provide higher level constructs on top of that API. + +It provides a collection of algorithms and useful interfaces for communicating +with Bitcoin.
bitcoin-api-extra.cabal view
@@ -1,6 +1,6 @@ name: bitcoin-api-extra category: Network, Finance -version: 0.9.0 +version: 0.9.1 license: MIT license-file: LICENSE copyright: (c) 2015 Leon Mergen @@ -33,6 +33,7 @@ , text , bytestring , binary + , lens , conduit , transformers
src/Control/Bitcoin/Api/Transaction.hs view
@@ -1,35 +1,24 @@ {-# LANGUAGE OverloadedStrings #-} --- | This module provides functionality to manipulate raw transaction. It --- automatically interprets transactions using the `bitcoin-tx` package, so --- you can work with actual 'Btc.Transaction' objects rather than their --- serialized format. - module Control.Bitcoin.Api.Transaction where -import Data.Maybe (fromMaybe) - -import qualified Data.Conduit as C (Source) - -import Control.Concurrent (forkIO, - killThread, - myThreadId, - threadDelay) -import Control.Concurrent.STM.TBMQueue (isClosedTBMQueue, - newTBMQueue, - writeTBMQueue) -import Control.Monad (unless) -import Control.Monad.IO.Class (liftIO) -import Control.Monad.STM (atomically) -import Data.Conduit.TQueue (sourceTBMQueue) +import qualified Data.Conduit as C (Source) -import qualified Data.Bitcoin.Transaction as Btc -import qualified Data.Bitcoin.Block as Btc +import Control.Concurrent (forkIO, killThread, + myThreadId, threadDelay) +import Control.Concurrent.STM.TBMQueue (isClosedTBMQueue, newTBMQueue, + writeTBMQueue) +import Control.Lens ((^.)) +import Control.Monad (unless) +import Control.Monad.IO.Class (liftIO) +import Control.Monad.STM (atomically) +import Data.Conduit.TQueue (sourceTBMQueue) -import qualified Network.Bitcoin.Api.Blockchain as Blockchain -import qualified Network.Bitcoin.Api.Types as T +import qualified Data.Bitcoin.Block as Btc +import qualified Data.Bitcoin.Transaction as Btc -import Network.Bitcoin.Api.Types.UnspentTransaction hiding (confirmations) +import qualified Network.Bitcoin.Api.Blockchain as Blockchain +import qualified Network.Bitcoin.Api.Types as T -- | Watches incoming transactions and yields new transactions as soon as they -- are are inside a block. This is modelled as a Conduit 'C.Source', which means @@ -71,7 +60,7 @@ tid <- myThreadId - result <- mapM (insert chan) (Btc.blockTxns block) + result <- mapM (insert chan) (block ^. Btc.blockTxns) let isClosed = False `elem` result if isClosed
test/Control/Bitcoin/Api/TransactionSpec.hs view
@@ -13,6 +13,7 @@ import Network.Bitcoin.Api.Types.UnspentTransaction (amount) import qualified Network.Bitcoin.Api.Wallet as Wallet +import qualified Control.Bitcoin.Api.Transaction as Transaction import Control.Bitcoin.Api.TestUtil (testClient) import Test.Hspec @@ -22,6 +23,7 @@ it "can watch for new transactions" $ do testClient $ \client -> do + _ <- Mining.generate client 10 result <- newEmptyMVar -- This forks a thread, consumes a single transaction from the conduit,