Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mappum/js-tendermint
A JS light client for Tendermint blockchains
https://github.com/mappum/js-tendermint
Last synced: 5 days ago
JSON representation
A JS light client for Tendermint blockchains
- Host: GitHub
- URL: https://github.com/mappum/js-tendermint
- Owner: mappum
- Created: 2017-01-11T22:49:56.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2022-12-09T08:57:47.000Z (about 2 years ago)
- Last Synced: 2025-01-06T03:42:30.995Z (9 days ago)
- Language: JavaScript
- Homepage:
- Size: 956 KB
- Stars: 72
- Watchers: 9
- Forks: 26
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome - RPC client
README
# tendermint
A light client for Tendermint blockchains which works in Node.js and browsers.
Supports Tendermint v0.33.
**NOTICE:** This library has not undergone any kind of security review, so think twice before using it to secure any real value.
### Usage
```
npm install tendermint
```**Light Node**
Requests data over RPC and verifies blockchain headers
```js
let Tendermint = require('tendermint')// some full node's RPC port
let peer = 'ws://localhost:26657'// `state` contains a part of the chain we know to be valid. If it's
// too old, we cannot safely verify the chain and need to get a newer
// state out-of-band.
let state = {
// a header, in the same format as returned by RPC
// (see http://localhost:26657/commit, under `"header":`)
header: { ... },// the valdiator set for this header, in the same format as returned by RPC
// (see http://localhost:26657/validators)
validators: [ ... ],// the commit (validator signatures) for this header, in the same format as
// returned by RPC (see http://localhost:26657/commit, under `"commit":`)
commit: { ... }
}// options
let opts = {
// the maximum age of a state to be safely accepted,
// e.g. the unbonding period
// (in seconds)
maxAge: 1728000 // defaults to 30 days
}// instantiate client. will automatically start syncing to the latest state of
// the blockchain
let node = Tendermint(peer, state, opts)// make sure to handle errors
node.on('error', (err) => { ... })
// emitted once we have caught up to the current chain tip
node.on('synced', () => { ... })
// emitted every time we have verified a new part of the blockchain
node.on('update', () => { ... })// returns the height of the most recent header we have verified
node.height()// returns the state object ({ header, validators, commit }) of the most recently
// verified header, should be stored and used to instantiate the light client
// the next time the user runs the app
node.state()
```**RPC Client**
Simple client to make RPC requests to nodes
```js
let { RpcClient } = require('tendermint')let client = RpcClient('ws://localhost:26657')
// request a block
client.block({ height: 100 })
.then((res) => console.log(res))
```The following RPC methods are available:
```
- subscribe
- unsubscribe
- status
- netInfo
- dialSeeds
- blockchain
- genesis
- block
- validators
- dumpConsensusState
- broadcastTxCommit
- broadcastTxAsync
- broadcastTxSync
- unconfirmedTxs
- numUnconfirmedTxs
- abciQuery
- abciInfo
- abciProof
- unsafeFlushMempool
- unsafeSetConfig
- unsafeStartCpuProfiler
- unsafeStopCpuProfiler
- unsafeWriteHeapProfile
```