@rishi556/dhive
v1.2.4
Published
Hive blockchain RPC client library
Downloads
1
Maintainers
Readme
@hiveio/dhive
Robust Hive client library that runs in both node.js and the browser.
Installation
Via npm
For node.js or the browser with browserify or webpack.
npm install @hiveio/dhive
From cdn or self-hosted script
Grab dist/dhive.js
from git and include in your html:
<script src="dhive.js"></script>
Or from the unpkg cdn:
<script src="https://unpkg.com/@hiveio/dhive@latest/dist/dhive.js"></script>
Make sure to set the version you want when including from the cdn, you can also use dhive@latest
but that is not always desirable. See unpkg.com for more information.
Usage
In the browser
<script src="https://unpkg.com/@hiveio/dhive@latest/dist/dhive.js"></script>
<script>
var client = new dhive.Client(["https://api.hive.blog", "https://api.hivekings.com", "https://anyx.io", "https://api.openhive.network"]);
client.database
.getDiscussions("trending", { tag: "writing", limit: 1 })
.then(function(discussions) {
document.body.innerHTML += "<h1>" + discussions[0].title + "</h1>";
document.body.innerHTML += "<h2>by " + discussions[0].author + "</h2>";
document.body.innerHTML +=
'<pre style="white-space: pre-wrap">' + discussions[0].body + "</pre>";
});
</script>
See the demo source for an example on how to setup a livereloading TypeScript pipeline with wintersmith and browserify.
In node.js
With TypeScript:
import { Client } from "@hiveio/dhive";
const client = new Client(["https://api.hive.blog", "https://api.hivekings.com", "https://anyx.io", "https://api.openhive.network"]);
for await (const block of client.blockchain.getBlocks()) {
console.log(`New block, id: ${block.block_id}`);
}
With JavaScript:
var dhive = require("@hiveio/dhive");
var client = new dhive.Client(["https://api.hive.blog", "https://api.hivekings.com", "https://anyx.io", "https://api.openhive.network"]);
var key = dhive.PrivateKey.fromLogin("username", "password", "posting");
client.broadcast
.vote(
{
voter: "username",
author: "almost-digital",
permlink: "dhive-is-the-best",
weight: 10000
},
key
)
.then(
function(result) {
console.log("Included in block: " + result.block_num);
},
function(error) {
console.error(error);
}
);
With ES2016 (node.js 7+):
const { Client } = require("@hiveio/dhive");
const client = new Client(["https://api.hive.blog", "https://api.hivekings.com", "https://anyx.io", "https://api.openhive.network"]);
async function main() {
const props = await client.database.getChainProperties();
console.log(`Maximum blocksize consensus: ${props.maximum_block_size} bytes`);
client.disconnect();
}
main().catch(console.error);
With node.js streams:
var dhive = require("@hiveio/dhive");
var es = require("event-stream"); // npm install event-stream
var util = require("util");
var client = new dhive.Client(["https://api.hive.blog", "https://api.hivekings.com", "https://anyx.io", "https://api.openhive.network"]);
var stream = client.blockchain.getBlockStream();
stream
.pipe(
es.map(function(block, callback) {
callback(null, util.inspect(block, { colors: true, depth: null }) + "\n");
})
)
.pipe(process.stdout);
Bundling
The easiest way to bundle dhive (with browserify, webpack etc.) is to just npm install @hiveio/dhive
and require('@hiveio/dhive')
which will give you well-tested (see browser compatibility matrix above) pre-bundled code guaranteed to JustWork™. However, that is not always desirable since it will not allow your bundler to de-duplicate any shared dependencies dhive and your app might have.
To allow for deduplication you can require('@hiveio/dhive/lib/index-browser')
, or if you plan to provide your own polyfills: require('@hiveio/dhive/lib/index')
. See src/index-browser.ts
for a list of polyfills expected.
Documentation
Documentation available at https://hive.pages.syncad.com/dhive/
Share and Enjoy!