Haskell JSON-RPC client for PegNet daemon
A JSON-RPC Haskell client for the PegNet API daemon. Allows retrieval of data from PegNet dApp. Each response has special ADT(algebraic data type) that automatically converted from JSON response. Using Remote Monad pattern multiple request can be batched and executed simulatenously, following more robust approach and reducing usage of expensive RPC calls.
Choosing a batching strategy. There are two strategies:
Weak
- a single command or a single procedure, or
Strong
- a sequence of commands, optionally terminated by a procedure
- Installation
- Usage
- Contributions
Installation
You can install package from Hackage and build with Cabal, but we recommend to use Stack tool. Add to you dependencies in stack.yaml and cabal file dependency - api-rpc-pegnet
.
To run and test from repository:
- Build with stack
$ stack build
- Load REPL with stack for evaluation
$ stack repl
- execute required methods
Usage
for basic daemon functionality
- import with
import PegNet.RPC.Api
or load in REPL.
- build communication session with
weakSession (traceSendAPI "" $ clientSendAPIWithAlt endpoint)
- run required methods inside
RPC
monad
Usage
You can construct simple session with all methods available for further processings. Check following execution
main = do
-- build communication session
let s = weakSession $ traceSendAPI "" $ clientSendAPIWithAlt endpointRemote
(h, i) <- send s $ do
h <- reqGetSyncStatus
i <- reqPegNetIssuance
b <- reqPegNetBalances "FA38cwer93mmPw1HxjScLmK1yF9iJTu5P87T2vdkbuLovm2YXyss"
t <- reqGetTransaction "0-e4380e6334b0c42d4d6155fbd1378050b91c02a0df93d7fdfe6656f94c61e7eb"
r <- reqPegNetRates 213000
s <- reqGetTransactionStatus "a33d4f334a2658c17d3f44158af75f1c32cc6b2f3de9ddc337064c93043d8db0"
rich <- reqGetRichList (Just "PEG") 5
-- return values as N-ary tuple
return (h, i)
-- process resulted values
print h
-- or use for special business logic
Variables h
and i
mapped to exact data stucture. All types available for detailed overview in Types
directory.
Contributions
Please, feel free to contribute, fork the repo and submit PR.
Say thanks, send a tip:
btc
: 39oVXpsgsyW8ZgzsnX3sV7HLdtXWfT96qN
fct
: FA38cwer93mmPw1HxjScLmK1yF9iJTu5P87T2vdkbuLovm2YXyss
eth
: 0x9cDBA6bb44772259B3A3fb89cf233A147a720f34
xlm
: GD2FROTYXYSNOQQREYXHCXVOYWV556EM6PAHMVUHJNJEUYTUXUSNUZQ3