Skip to content

Create python client to interact with Streamr API - Stage 2 #2

@githubwei

Description

@githubwei

What is it about

This is a Streamr Community Bounty project to build a python client and it is a followup to the Stage 1. Please take a look at it to see what has been already completed. A new Gitcoin link will be added here for stage 2 application once the stage 1 has been completed.

About us

Streamr is building a pubsub P2P (peer-to-peer) network for realtime data exchange to help unleash the next wave of Web3. To learn more about our tech stack please visit our main website at Streamr.com. Also if you are interested in learning more about our Streamr Network development please have a look at this blog post. Here are two interesting prospective of what Web3 means, article1 by Josh Stark at L4 and article2 from Emre Tekisalp at Coinbase

Development overview

This current project is divided into stage 1 and stage 2. In order to work on this stage 2 part, please make sure that stage 1 requirements have been completed and approved by Streamr team first.

Stage 2 adds cryptographic functionality such as Ethereum key-based session authentication, data signing, and data verification - as well as completing the remaining stream REST API endpoints.

Stage 2

Session management

  • Fetch sessionToken using Ethereum key
  • Fetch challenge
  • Sign challenge using Ethereum key
  • Send response to authentication endpoint

Websocket API

  • Signing messages before publish
  • Requesting message re-sends
  • Detecting gaps in message sequence: filling gaps with resend request
  • Verifying integrity of signed messages
  • Upgrade to protocol version 1 / message payload version 30 if already available

Stream REST API endpoints

  • listing / searching streams
  • updating a stream
  • deleting a stream

Tests

  • Integration tests: coverage for new features
  • Sequentially authenticate, create stream, subscribe to it, publish signed data to it, verify received messages on subscriber
  • Unit tests for functionality that doesn’t call the API

For any question feel free to reach out directly at my email weilei at streamr.com or also follow us on Reddit or Telegram

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions