argosjs
Version:
Ethereum smart-contract events visualiser
113 lines (80 loc) • 3.01 kB
Markdown
[![NPM Version][npm-image]][npm-url]
With the smart-contracts, we are able to make exchanges with complex arbitrary rules. By looking at the interaction data, we hope to extract meaningful/valuable information that provide great assistance in decision-making process.
- A **platform** that provides the ability to watch any smart-contract events, on any blockchain
- **Only 3 modules**: Watcher, Database, Visualiser
- **Community-orientated**: you can add support for your favourtite tools just by extending 3 base classes in each module
This module allows you to extract data from smart-contract events. You only need to tell it:
- The address of the contract
- The blockrange (by blocknumber or by date)
- The data type you want to extract (you must be able to read smart-contract code)
### Database
This module connects to your Graph DB and execute queries.
### Visualiser
This module executes MATCH queries to your Graph DB and display results.
## Install
```bash
npm install argosjs
```
or
```bash
npm install https://github.com/zgorizzo69/EthGraphQL
```
## Development
All customised libraries are put under `vendor` as git modules which are linked to other git repositories. If your
## Usage
```javascript
const watcher = new EthereumWatcher(
contract.address,
contract.abi,
ProviderEnum.defaultProvider, {
username: config.database.neo4j.username,
password: config.database.neo4j.password,
bolt: config.database.neo4j.bolt,
enterpriseMode: config.database.neo4j.enterpriseMode,
driverConf: config.database.neo4j.driverConf,
model: config.contract.model
},
config.providers,
true,
config.contract.export
);
watcher.watchEvents("Transfer", fromDate, toDate).then(() => {
visualiser.refresh();
});
```
> Create an Visualiser instance (here NeoVis)
```javascript
const visualiser = new NeoVis(this.dbConstructor, "viz", config.datavis.neovis);
// Run community-detection algorithm (procedure) on DB
visualiser.detectCommunity(this.communityDetectionAlgorithm, {
label: 'Account',
relationship: 'TRANSFER',
writeProperty: "community"
});
// Run centrality algorithm (procedure);
visualiser.centrality(this.centralityAlgorithm, {
label: 'Account',
relationship: 'TRANSFER',
writeProperty: "size"
});
// Run pathfinding algorithm on DB
visualiser.pathfinding({
algo: PathFindingAlgorithmEnum.ShortestPath,
param: {}
});
// Display all nodes with LIMIT of 700 objects
visualiser.displayWithCypher({
query: "MATCH (n:Account)-[r:TRANSFER]->(m:Account) RETURN n,r,m"
}, 700);
```
Under examples you will be linked to other repositories.
[](http://vjpr.mit-license.org)
[]: https://img.shields.io/npm/v/argosjs.svg
[]: https://www.npmjs.com/package/argosjs
[]: https://img.shields.io/travis/live-js/live-xxx/master.svg
[]: https://travis-ci.org/live-js/live-xxx