arweave-synchronizer
v1.0.2
Published
A cool tool to process and sync all transactions from a custom GQL query in order to gather metrics for from a specific data protocol.
Downloads
5
Readme
Arweave synchronizer node
A cool tool to process and sync all transactions from a custom GQL query in order to gather metrics for from a specific data protocol.
Documentation
Getting started
$ npm install arweave-synchronizer
or
$ yarn add arweave-synchronizer
Simple example
import Synchronizer from 'arweave-synchronizer';
const sync = new Synchronizer([
{ name: "Protocol-Name", values: "Account-0.2" },
{ name: "Signing-Client", values: "ArConnect" }
]);
sync.on('response', ({txs, txCounter}) => {
// process the page of transactions here
});
sync.start(); // This must be called at the end
References
Constructor arguments
| argument | default | | ------------------------------ | ------- | | Tags array (GQLTagInterface[]) | x | | Txs per query | 100 | | Delay between queries (ms) | 5000 |
Event listeners
⚠️ Event listeners must be set before
sync.start()
method is called or it won't work.
In chronological order:
- on
start
:
sync.on('start', () => console.log(" 🚦 Starting the synchronizer..."));
- on
request
:
sync.on('request', () => console.log(" 🔄 Requesting transactions, waiting for response..."));
- on
exception
:
sync.on('exception', (e) => console.log(` ❌ ${e.message}`));
- on
response
:
sync.on('response', ({txs, txCounter, timestamp, cursor}) => {
// process the transactions page
});
- on
synchronized
:
sync.on('synchronized', () => console.log(" ✅ The node has synchronized with the Blockweave."));
Status
You can get the current status:
console.log(sync.getStatus()) // return "stopped", "syncing" or "synced"
To do
- Add optional caching that would store the
txCounter
in a flat file so stopping synchronization doesn't require to start over from the beginning