
Research
/Security News
Popular Tinycolor npm Package Compromised in Supply Chain Attack Affecting 40+ Packages
Malicious update to @ctrl/tinycolor on npm is part of a supply-chain attack hitting 40+ packages across maintainers
bsocial-planaria
Advanced tools
Bitcoin Social (BitcoinSchema) transaction indexer
bSocial-planaria is a Bitbus compatible Bitcoin Social indexer. It scans all MAP compatible transactions and processes them into a global bSocial state using the bitsocket.network servers.
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.
NOTE: This is still work in progress and should be considered beta software. Issues / requests and PR's are welcome.
npm install -g bsocial-planaria
Set the environment variables. You must at least set the planaria token.
export BSOCIAL_PLANARIA_TOKEN=""
The token is a Planaria Token that can be created here: https://token.planaria.network/
And optionally overwrite the defaults for the database:
export BSOCIAL_MONGO_URL="mongodb://localhost:27017/bsocial-planaria"
Indexing bSocial blocks can now be done by running
bsocial-planaria
If you want to run continuously and also listen to the mempool, run:
bsocial-planaria -a watch
It's also possible to get transactions directly from bitbus with the bsocial-planaria cli
bsocial-planaria -a get -t <txId>
Or run a query for at most 10 transactions
bsocial-planaria -a get -q '{"out.tape.cell":"MAP SET app type"}' -p bob
The arguments to the bsocial-planaria cli are:
arg | Description |
---|---|
-a <action> | Action to call (index (default), watch , get ) |
-t <txId> | Transaction Id to search for. Only works together with -a get |
-q <query> | JSON stringified query. Only works together with -a get |
-p <parser> | Parser to use for the returned transaction (txo (default), bob ). Only works together with -a get |
git clone https://github.com/icellan/bsocial-planaria.git
bsocial-planaria can run either with settings from a config file (config.json
) or from environment variables.
config.json
{
"token": "ey...",
"mongoUrl": "mongodb://..."
}
environment
export BSOCIAL_PLANARIA_TOKEN="ey..."
export BSOCIAL_MONGO_URL="mongo://..."
export BSOCIAL_DEBUG=""
export BSOCIAL_VERBOSE=1
export BSOCIAL_BITFS_STORE=1
export BSOCIAL_BITFS_MAX_LENGTH=10000
To run the indexer once to index all blocks:
./start.sh
To run the indexer in watch mode, which also indexes all transactions in the mempool:
./watch.sh
npm run test
or
npm run testwatch
npm install bsocial-planaria
Make sure you set the environment variables before running any scripts:
export BSOCIAL_PLANARIA_TOKEN = '<planaria token>';
export BSOCIAL_MONGO_URL = 'mongodb://localhost:27017/bsocial-planaria';
Index all mined bSocial transactions:
import { indexBSocialTransactions } from 'bsocial-planaria/dist';
(async function() {
await indexBSocialTransactions();
})();
or, index all mined transactions + listen to the mempool:
import { watchBSocialTransactions } from 'bsocial-planaria/dist/watch';
(async function() {
await watchBSocialTransactions();
})();
You can also pass a custom query to the bSocial scripts, overriding the default query that searches for transactions.
import { watchBSocialTransactions } from 'bsocial-planaria/dist/watch';
(async function() {
// this will only watch for new ID transactions
await watchBSocialTransactions({
'out.s2': 'MAP',
'out.s3': 'SET',
'out.s4': 'app'
});
})();
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-planaria/dist/watch';
import { BSOCIAL } from 'bsocial-planaria/dist/schemas/bsocial';
import { LIKES } from 'bsocial-planaria/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();
})();
Make sure babel is set up properly or that es6 is supported by your own package.
FAQs
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
Malicious update to @ctrl/tinycolor on npm is part of a supply-chain attack hitting 40+ packages across maintainers
Security News
pnpm's new minimumReleaseAge setting delays package updates to prevent supply chain attacks, with other tools like Taze and NCU following suit.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.