Skip to content

streamr-dev/data-union-admin-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

data-union-admin-tools

CI badge

UTILITIES IN THIS REPOSITORY SHOULD BE CONSIDERED EXPERIMENTAL. USE AT YOUR OWN RISK, PLEASE KNOW WHAT YOU'RE DOING. Contact us in Discord if you're unsure.

This repository contains a selection of command-line tools for administering Data Unions on Streamr:

Installation

To use the tools, you should have node.js and git installed as prerequisites.

  • Clone the repo: git clone git@github.com:streamr-dev/data-union-admin-tools.git
  • cd data-union-admin-tools
  • Install dependencies: npm ci

bin/autokick.js

WARNING: this tool depends on large historical resends, which are currently unreliable. Do NOT run the util without the --dry-run flag. You have been warned!

A utility to automatically remove non-contributing members from your data union.

Ships with a simple inactivity logic, which kicks users who haven't sent any data within the inspected time window. More elaborate logic can be plugged in.

To get help, just run bin/autokick.js without any arguments:

Usage: autokick.js --stream [streamId] --contract-address [0x...] ...

Options:
  --help                   Show help                                   [boolean]
  --version                Show version number                         [boolean]
  --stream                 ID of your content stream (to which members produce
                           data). Give this option multiple times to cover
                           multiple streams.                  [array] [required]
  --contract-address       The address of the data union smart contract.
                                                             [string] [required]
  --window-hours           The time window during which to observe messages in
                           the content stream(s).         [number] [default: 48]
  --kick-logic             Loads the desired kick logic from src/autokick
                           folder. The default 'inactivity' logic simply kicks
                           members who haven't published any data during the
                           inspected period.    [string] [default: "inactivity"]
  --batch                  Does a resend on the stream, runs the kick logic, and
                           quits. No continuous monitoring.
                                                      [boolean] [default: false]
  --kick-interval-minutes  How often, in minutes, to check for kickable members
                           and send part messages to kick them. Has no effect in
                           --batch mode.                  [number] [default: 10]
  --api-key                API key of a user that has publish permission to the
                           join/part stream. Either --api-key or --private-key
                           must be given.
  --private-key            Ethereum private key of a user that has publish
                           permission to the join/part stream. Either api-key or
                           private-key must be given.
  --streamr-url            The Streamr websocket API URL. By default, uses the
                           default value in the Streamr JS SDK
                           (wss://streamr.network/api/v1/ws)
  --streamr-rest-url       The Streamr REST API URL. By default, uses the
                           default value in the Streamr JS SDK
                           (https://streamr.network/api/v1)
  --order-messages         Set the orderMessages Streamr client option to true,
                           activating message ordering and gapfill.
                                                      [boolean] [default: false]
  --dry-run                If this option is given, the script doesn't really
                           kick members from the data union, but instead logs
                           kicks to the console.      [boolean] [default: false]

Missing required arguments: stream, contract-address

To try it out with default settings and in --dry-run mode to avoid accidents, try:

bin/autokick.js --stream [streamId] --contract-address [address] --private-key [key] --dry-run

Where the arguments are:

  • --stream [streamId]: The id of the stream your users are sending signed messages to. You can give the --stream option multiple times if there are multiple streams related to your data union.
  • --contract-address [address]: The Ethereum address of your data union smart contract.
  • --private-key [key]: An Ethereum private key for an address that has been granted permissions to:
    • Read data in all the streams given with --stream, and
    • Write to the join/part stream of your data union (not required in --dry-run mode, as you're not really kicking anybody)

Signed withdraw server

Opens a HTTP port and executes the signed withdrawals from given data unions. This way the data union member doesn't need to pay for the gas when the withdrawn tokens are transported to mainnet over the Asyncronous Message-passing Bridge (AMB).

The data union member only signs a permission to withdraw their tokens into a given (maybe 3rd party) address. The signature is created using StreamrClient:

const client = new StreamrClient({
    auth: { privateKey },
    dataUnion,
})
const signature = await client.signWithdrawTo(recipientAddress)

Pass arguments as environment variables:

Usage: SERVER_PRIVATE_KEY=0x1234... DATA_UNION_ADDRESS=0x1234... bin/start-signed-withdraw-server.js

SERVER_PRIVATE_KEY is the Ethereum key that will be used for paying the transaction fees
                   so the account must have ETH in it

DATA_UNION_ADDRESS is the Ethereum address or comma-separated list of Ethereum addresses,
                   of the data union whose withdraws are handled by this server (default: handle all)

PORT is where the HTTP server listens for incoming connections (default: 3000)

ETHEREUM_URL is the Ethereum (mainnet) node used for sending the transactions (default: ethers.js)

About

A selection of command-line tools for administering Data Unions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published