Introducing: dhive-sl

If you've ever coded with Javascript/Typescript, you've probably stumbled upon 1 of 3 libraries: hive-js, hive-tx-js and dhive; all great, but the latter being my personal favourite.

For over half a year now, as part of my work at Splinterlands, I've been continuously developing a new version of dhive. Because as great as dhive is, I believe an amazing business, running on an amazing blockchan with an amazing community, needs an ... amazing library.

So with this said, I'm happy to announce that dhive-sl, brought to you by Splinterlands and myself, is now ready for testing!

Please note that there might be more breaking changes introduced until a stable version is released. (currently on 2.0.0-prerelease.9)

Info

Okay, but you might be asking yourself now:

Why should I test this?

Here might be a few reasons:

  1. It's now over 66% smaller than before (63.5kb vs 186.7kb gzipped)
  2. It (should be) tree-shakable
  3. Memo encoding is natively supported within dhive (async, thus requires await/then)
  4. Hashing/crypto packages have been replaced with newer/better ones
  5. Old unmaintained packages such as bytebuffer and ecurve have been added as native code and thus massively reduced in size.
  6. Hive Engine is now natively supported
  7. Types have been updated
  8. Peakd Beacon is now supported (https://beacon.peakd.com/)

and much more.

Please note that there are breaking changes if you upgrade from @hiveio/dhive, but Typescript should display them for you.

I've also written some tests to test the compatibility between dhive-sl and @hiveio/dhive/@hiveio/hive-js.

Compatibility tests

Code Example

import { Client } from 'dhive-sl';

const main = async () => {
    // Client
    // Loads beacon nodes once if no nodes are provided or if all of them are unresponsive
    const client = new Client()
    // (Optional) const client = new Client({ nodes: ['api.hive.blog', 'api.deathwing.me', 'anyx.io'] })

    // Getting data from Hive
    const account = await client.database.getAccount('splinterlands')

    // Encoding & decoding memos
    const encoded = await client.memo.encode('test', 'pub-key-B', 'private-key-A')
    const decoded = await client.memo.decode(encoded, 'private-key-B')

    // Getting data from Hive Engine (layer2 of Hive)
    const block = await client.engine.blockchain.getLatestBlock()
};

main();

Size Comparison

dhive-sl

image.png


dhive

image.png


I found a bug, have a question or an issue

While I've of course developed dhive-sl for Splinterlands to have an amazing library to interact with Hive & Hive Engine. In the spirit of open source, giving back to the community and making it also easier for community developers to build cool stuff for Hive & Splinterlands, I'm also very much interested in hearing from you if you're a Javascript/Typescript developer.

So if you found a bug or an issue, please open a Github issue here: https://github.com/steem-monsters/dhive-sl/issues

If you have a question or feedback, I'm available on Discord, Mattermost as well as within the comments section.

With this said,

Happy New Year

Wolf

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now