Haskell Application BlockChain Interface (ABCI) Server Library.
Haskell library for writing Application BlockChain Interface (ABCI) servers. Licensed under BSD 3-clause (see LICENSE).
Haskell ABCI Server Library
Haskell library for writing Application BlockChain Interface (ABCI) servers. Licensed under BSD 3-clause (see LICENSE).
Usage
Available as a library on Hackage.
If you're using Stack, simply add haskell-abci to the build-depends in your project's Cabal file.
If you're using Cabal directly, cabal install haskell-abci should do the trick.
This library exposes a request-response API. Usage is simple:
- Import the library
import qualified Network.ABCI as ABCI
Define your application (for more information, see the ABCI application development documentation)
See the example counter app for a template.
app :: ABCI.Request -> IO ABCI.Response
app = undefined
- Specify a host and port on which to bind the ABCI server, or use the defaults
host :: String
host = ABCI.defaultHost
port :: Int
port = ABCI.defaultPort
- Launch the server
run :: IO ()
run = ABCI.serve host port app
Development / Testing
You'll need Stack and a relatively recent version of protobuf.
git clone https://github.com/cwgoes/haskell-abci.git
cd haskell-abci
stack build --install-ghc
Note that src/types.proto is used to generate a Haskell interface file whenever you run stack build.
Optionally, to also install the example counter application (haskell-abci-counter) in ~/.local/bin:
stack install
Once you've installed haskell-abci-counter, to run the counter example application with the standard ABCI Golang tests: (note that you'll need ~/.local/bin on your shell path and Tendermint installed)
git clone https://github.com/tendermint/abci.git
cd abci/tests/test_app
ABCI_APP="haskell-abci-counter" go run ./*.go