Hive Rewards SDK [Open-Source]

image.png

image.png

AI image generated starting from a screenshot of our game


npm hiverewards is out on @cryptoshots.nft's GitHub as an Open Source library!

https://github.com/Crypto-Shots/Hive-Earnings

 
A new npm library designed to make it easier for both end users and developers to track HIVE-based earnings and reliably interact with the Hive ecosystem APIs for different purposes.


  • Have you ever wondered how much you earned from a Hive game or project in the past day/week/month/year?

  • Have you spent days/months wiring up a Hive app just to later find out that it's misbehaving because of a node issue?

 
Hive Rewards is here to simplify your life. With a very little coding experience you can now execute some queries to find out your daily/weekly/monthly earnings.

Run such searches in your HTML page, directly in a terminal, or in your NodeJS scripts/backend.


npm hiverewards takes care of all the plumbing under the hood:

💰 Automatic price lookups and $ conversions, so you always know the dollar value you sent/received in any specific time range.
👨‍🔧 Retry mechanisms, node switching, smart caching and exponential back-off - meaning for example no surprises when a node hiccups.
🏥 Health checks to ensure the node is available before trying to fetch your data.


 
Hive Rewards offers two SDKs out of the box:

  1. Hive Earnings SDK
    • Quickly compute how much HIVE and Hive-Engine tokens each target user has sent or received over any time window (hours, days, weeks, or months).
    • Handy insights for project owners/maintainers: monitor token distributions for marketing campaigns and/or manage your tokenomics with confidence.
    • Rather than (or on top of) storing user data in a database that you maintain, hiverewards allows you to pull player earnings straight from the Hive and Hive-Engine blockchains. No centralized ledger required. Or run it alongside your existing system as an audit tool, comparing your database reward records against the on-chain data to spot any discrepancies or anomalies.
       
  2. Hive & Hive-Engine API wrappers with automatic node switching
    • Forget manually configuring endpoints or handling flaky RPC calls — our methods like hiveApiCall() and hiveEngineApiCall() will automatically and gracefully rotate and retry using other healthy nodes when one fails.
    • Extendable to any sidechain — the same pattern applies whether you’re talking to Hive Engine today or a brand-new chain tomorrow.




Project Readme

 
📑 CONTENTS


Hive Rewards

An SDK for Node.js and the browser, and a command‑line tool to scan HIVE and Hive‑Engine token transfers:

  • Inbound — sum HIVE & tokens and USD value received by specified accounts, tracking specific sender accounts.
  • Outbound — map all recipients, tokens and USD values sent by a given sender.

Usage - NodeJS and Browser

import { hiveRewards } from 'hiverewards';

const analyzer = await hiveRewards({ verbose: true });

const inbound = await analyzer.inbounds({
  receivers: ['zillionz', 'obifenom'],
  hiveSenders: { PVP_HIVE: 'cryptoshots.tips' },
  tokenSenders: { PVP_TOKENS: 'cryptoshots.tips' },
  hours: 2,
});
console.log(inbound);

const outbound = await analyzer.outbounds({
  senders: ['cryptoshots.tips', 'karina.gpt'],
  ignoredReceivers: ['keychain.swap'],
  days: 1,
});
console.log(outbound);

Self-hosted bundle

A bundled build can be generated with Webpack:

  1. Clone the project

  2. Build it with

npm run build:web        # outputs dist/hiverewards.bundle.js
  1. Host the generated dist folder on your server
  2. Import it in your frontend and use it this way:
<script src="dist/hiverewards.bundle.js"></script>
<script>
  (async () => {
    const analyzer = await window.HiveRewards.hiveRewards();
    const result = await analyzer.inbounds({
      receivers: ['obifenom'],
      hiveSenders: { PVP_GAME_REWARDS: 'cryptoshots.tips' },
      days: 7,
    });
    console.log(result);
  })();
</script>

Usage - CLI

git clone <repo>
cd <repo>
npm install
npm start -- --inbound obifenom zillionz --from pvpRewards=cryptoshots.tips pveRewards=cryptoshotsdoom --hours 24



npm start -- --outbound cryptoshots.tips karina.gpt --days 1



Note: append --verbose for verbose logging


Configuration

Env varDefault
HIVE_PRICE_URLhttps://api.coingecko.com/api/v3/simple/price?ids=hive&vs_currencies=usd

You can also override the initial Hive / Hive Engine node by passing a config object to the hiveRewards() factory in code.
eg.

const analyzer = await hiveRewards({
  hiveNodeUrl: 'https://your.hive.node',
  hiveEngineRpcUrl: 'https://your.he.rpc',
  hiveEngineHistoryUrl: 'https://your.he.history',
});

Other Overrides:

Constructor AttributeDescriptionDefault
fetchFetch API implementationnpm cross-fetch
hiveJspass in another @hiveio/hive-js version, if neededv2
logcustom loggerconsole
apiCallsDelaydefault wait time for api call retries500 (with exp backoff)
priceCacheMinshow long Hive price is cached for10 mins
hiveHistoryLimitpage size (max account‐history ops per call)500
heHistoryLimitpage size (max Hive-Engine history records per call)250



Peakd's Beacon Wrapper

Wrapper for @peakd's Beacon APIs.

Usage:

import { peakdBeaconWrapper } from 'hiverewards';

const { getHealthyHiveNode, getHealthyHeNode, getHealthyHeHistoryNode } = peakdBeaconWrapper;
const hiveUrl = await getHealthyHiveNode();
const heUrl = await getHealthyHeNode();
const hehUrl = await getHealthyHeHistoryNode();

// Now you can configure your client:
hiveApi.api.setOptions({ url: hiveUrl });

...our use our Hive / Hive Engine client wrappers that automatically rotate healthy nodes:

import { healthyApisWrapper } from 'hiverewards';

const { hiveApiCall, hiveEngineApiCall, hiveEngineHistoryApiCall } = healthyApisWrapper;

const history = await hiveApiCall('getAccountHistory', ['cryptoshotsdoom', -1, 10]);
console.log(history);

const metrics = await hiveEngineApiCall({
  jsonrpc: '2.0',
  method:  'find',
  params: {
    contract: 'market',
    table:    'metrics',
    query:    { symbol: 'DOOM' },
    limit:    1,
    offset:   0
  },
  id: 1
});
console.log(metrics);

const history = await hiveEngineHistoryApiCall('cryptoshotstips', 20);
console.log(history);



Usage in CRYPTO SHOTS

DISCORD:

  • Earnings report for Daily Tournaments
  • Weekly/monthly Top Earners leaderboard



GAME UI: Coming Soon


Coming Next

  • Support for additional Hive sidechains
  • Porting into Unity as an Open Source plugin


cs-logo.png

Support us

 

  • VOTE for our witness 🙇‍♂️


 


H2
H3
H4
Upload from PC
Video gallery
3 columns
2 columns
1 column
6 Comments