@agilie/electrum-proxy-middleware
v1.0.2
Published
# Electrum Proxy Middleware
Readme
README
Electrum Proxy Middleware
ExpressJS middleware to add functionality for proxying requests to Electrum servers
Agenda
Web applications can't communicate with electrum servers. This package provide ability to make requests to them.
Requirements
Node >= 7.x
Getting started
npm install @agilie/electrum-proxy-middlewareconst electrum = require('@agilie/electrum-proxy-middleware');
app.use(electrum.router);
app.listen(3000)curl -X GET http://localhost:3000/server/version?coinType=btc
> {"status":"success","result":["ElectrumX 1.13.0","1.4"]}
or
curl -X GET 'http://localhost:3000/server/version?port=55002&host=tn.not.fyi&connectionType=ssl&version=1.4'
> {"status":"success","result":["ElectrumX 1.13.0","1.4"]}Running the tests
npm testSupported calls
All calls are required to have a coinType param or at least host, port, connectionType and version params.
Param | Value ------------ | ------------- coinType (required) | supported coin types netMode | mainnet(by default) or testnet
or
Param | Value ------------ | ------------- host (required) | e.g. tn.not.fyi port (required)| e.g. 55002 connectionType (required) | ssl or tcp version (required) | e.g 1.4 netMode | mainnet (by default) or testnet
Server methods
[GET] /server/version eq. to server.version
[GET] /server/features eq. to server.features
[GET] /server/banner eq. to server.banner
[GET] /server/donation-address eq. to server.donation_address
[GET] /server/add_peer eq. to server.add_peer
[GET] /server/get-peers eq. to server.peers.subscribe
[GET] /server/ping eq. to server.ping
Example: /server/version?coinType=btc
Blockchain methods
[GET] /block/header eq. to blockchain.block.header
Additional params:
Param | Type | Description ------------ | ------------- | ------------- version | Float | server version height | non-negative integer | the height of the block
Example: /block/header?coinType=btc&height=5
[GET] /block/headers eq. to blockchain.block.headers
Additional params: start_height - the height of the first header requested, count - the number of headers requested.
Example: /block/headers?&coinType=btc&start_height=5&count=1
[GET] /blockchain/estimatefee eq. to blockchain.estimatefee
Additional params:
Param | Description ------------ | ------------- blocks | the number of blocks to target for confirmation
Example: /blockchain/estimatefee?coinType=btc&blocks=1
[GET] /blockchain/relayfee eq. to blockchain.relayfee
Example: /blockchain/relayfee?coinType=btc
Mempool methods
[GET] /mempool/get_fee_histogram eq. to mempool.get_fee_histogram
Example: /mempool/get_fee_histogram?coinType=btc
Scripthash methods
Param | Type | Description ------------ | ------------- | ------------- scripthash |hexadecimal string | script hash
[GET] /scripthash/balance eq. to blockchain.scripthash.get_balance
[GET] /scripthash/listunspent eq. to blockchain.scripthash.listunspent
[GET] /scripthash/get_history eq. to blockchain.scripthash.get_history
[GET] /scripthash/get_mempool eq. to blockchain.scripthash.get_mempool
Example: /scripthash/balance?scripthash=20b360e68b4fe6d1eb460e45434f756fa1582ed687167898f9a716435ecd737f&coinType=btc
Transaction methods
[POST] /transaction/broadcast eq. to blockchain.transaction.broadcast
Additional params:
Param | Type | Description ------------ | ------------- | ------------- raw_tx | hexadecimal string | raw transaction
[GET] /transaction/get eq. to blockchain.transaction.get
Additional params:
Param | Type | Description ------------ | ------------- | ------------- tx_hash | hexadecimal string | transaction hash verbose | boolean | whether a verbose coin-specific response is required
Example: /transaction/get?tx_hash=871af2528c83ba90bd7b3fbfeac703cbd20f204f1b800ba4ec748842fcac0c9b&coinType=btc
[GET] /transaction/get-merkle eq. to blockchain.transaction.get_merkle
Additional params:
Param | Type | Description ------------ | ------------- | ------------- tx_hash | hexadecimal string | raw transaction height | integer | the height at which it was confirmed
[GET] /transaction/id-from-pos eq. to blockchain.transaction.id_from_pos
Additional params:
Param | Type | Description ------------ | ------------- | ------------- height | non-negative integer | the main chain block height tx_pos | integer | a zero-based index of the transaction in the given block merkle | boolean | whether a merkle proof should also be returned
Getting history
Getting history docs.
For more details, refer to the ElectrumX Protocol Methods docs.
Examples
Here are some basic examples.
Protocol version
URL
</server/version?coinType=btc>
Method:
GETURL Params
Required:
coinType=[CoinType]Optional:
netMode=[Netmode]Success Response:
- Code: 200
- Content:
Error Response:
- Code: 409
- Content:
Or you can specify electrum server:
URL
</server/version?port=55002&host=tn.not.fyi&connectionType=ssl&version=1.4>
Method:
GETURL Params
Required:
port=[integer]host=[string]connectionType=[ssl | tcp]version=[server version]Optional:
netMode=[testnet | mainnet]
Confirmed and unconfirmed history of a script hash.
URL
</history/get_history?address=1BWwXJH3q6PRsizBkSGm2Uw4Sz1urZ5sCj&coinType=btc&page=1&pageSize=2>
Method:
GETURL Params
Required:
coinType=[CoinType]address=[string]Optional:
netMode=[Netmode]page=[number]pageSize=[number]Success Response:
- Code: 200
- Content:
Error Response:
- Code: 409
- Content:
License
The MIT License (MIT). Full license text is available in LICENSE.
