1.0.4 • Published 1 year ago

bsocial-junglebus v1.0.4

Weekly downloads
-
License
Open BSV License
Repository
github
Last release
1 year ago

bsocial-junglebus

Bitcoin Social (BitcoinSchema) transaction indexer

bSocial-junglebus is a Bitbus compatible Bitcoin Social indexer. It scans all MAP compatible transactions and processes them into a global bSocial state using JungleBus.

There are other ways to index bSocial transaction, for instance with bmap-planaria. The difference is that bSocial is optimized for the bitcoin social networking features and is less generic than bmap-planaria.

global installation

npm install -g bsocial-junglebus

Set the environment variables. You must at least set the JungleBus subscription id.

export BSOCIAL_SUBSCRIPTION_ID=""

And optionally overwrite the defaults for the database:

export BSOCIAL_MONGO_URL="mongodb://localhost:27017/bsocial-junglebus"

Indexing bSocial blocks can now be done by running

bsocial-junglebus

The arguments to the bsocial-junglebus cli are:

argDescription
-s <subscription id>JungleBus subscription id

local installation

git clone https://github.com/icellan/bsocial-junglebus.git

bsocial-junglebus can run either with settings from a config file (config.json) or from environment variables.

config.json

{
  "subscriptionId": "...",
  "mongoUrl": "mongodb://..."
}

environment

export BSOCIAL_SUBSCRIPTION_ID="..."
export BSOCIAL_MONGO_URL="mongo://..."
export BSOCIAL_DEBUG=""
export BSOCIAL_VERBOSE=1
export BSOCIAL_BITFS_STORE=1
export BSOCIAL_BITFS_MAX_LENGTH=10000

run

To run the indexer in watch mode, which also indexes all transactions in the mempool:

./start.sh

testing

yarn test

or

yarn testwatch

Including in your own package or site

npm install bsocial-junglebus
or
yarn add bsocial-junglebus

Make sure you set the environment variables before running any scripts:

export BSOCIAL_SUBSCRIPTION_ID = '<junglebus subscription id>';
export BSOCIAL_MONGO_URL = 'mongodb://localhost:27017/bsocial-junglebus';

Index all mined transactions + listen to the mempool:

import { watchBSocialTransactions } from 'bsocial-junglebus/dist';

(async function() {
  await watchBSocialTransactions();
})();

There are also hooks available on all the BSocial collections, which you can use to do your own processing when a transaction comes in.

import { watchBSocialTransactions } from 'bsocial-junglebus/dist/watch';
import { BSOCIAL } from 'bsocial-junglebus/dist/schemas/bsocial';
import { LIKES } from 'bsocial-junglebus/dist/schemas/likes';

// BSocial contains the raw posts in bmap format
BSOCIAL.after('insert', async (doc) => {
  // do something with the doc after insert
});

// The LIKES collection contains the like referenced to the tx and idKey
LIKES.before('insert', async(doc) => {
  // do something with the doc before insert
  // the modified doc is what will be inserted
});

(async function() {
  await watchBSocialTransactions();
})();

Babel

Make sure babel is set up properly or that es6 is supported by your own package.