Giter Site home page Giter Site logo

raiden-network / light-client Goto Github PK

View Code? Open in Web Editor NEW
33.0 33.0 31.0 521.7 MB

The Raiden Light Client

Home Page: https://raiden.network/

License: MIT License

TypeScript 82.49% JavaScript 0.96% HTML 0.22% Vue 13.99% Shell 0.94% Dockerfile 0.24% Python 0.93% SCSS 0.14% EJS 0.01% Ruby 0.07%

light-client's People

Contributors

agatsoh avatar andrevmatos avatar christianbrb avatar compojoom avatar dependabot-preview[bot] avatar dependabot[bot] avatar drselump14 avatar ezdac avatar franzihei avatar fredo avatar hackaugusto avatar heikoheiko avatar karlb avatar kelsos avatar manuelwedler avatar marcosmartinez7 avatar nephix avatar palango avatar renovate-bot avatar renovate[bot] avatar taleldayekh avatar weilbith avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

light-client's Issues

Measure coverage in the CI

Description

Retro action item: Measure coverage once the CI has been set up

Acceptance criteria

  • We see the coverage at every PR
  • We see the coverage in CodeCov
  • We measure the wallet and the light client sdk

Tasks

  • One test runs that use coverage
  • Install CodeCov
  • Add codecov token to the CI configuration

Story Points

3

Basic development environment set-up

Description

The basic development environment is set up.

Acceptance criteria

  • Github is set up
  • Basic CI to run the checks are working
  • A POC test is implemented
  • A basic readme is available
  • Basic requirements are included
  • The build is split up
  • Prettier, ESlint, TypeScript, Web3, Webpack, Jest, Jasmin

Tasks

  • Set up repository
  • Check with @karlb about mono repo built
  • Add license
  • Create readme
  • Requirements SDK
  • Vue set up
  • Copy CircleCI from WebUI and adjust
  • Define requirements for Wallet
  • Add dev. requirements

Story Points

5

Automate release flow through github

Description

Automate release flow through github as a follow up to #14

Acceptance criteria

  • Whenever a new release of the SDK is made on GitHub releases it should also be published on npm.

Tasks

  • Mostly DevOps work, perhaps Ask Nils for assistance.

Story Points

Describe Redux Architecture, 3rd party tools and example flow

Description

As a state machine framework, Redux is getting used. The goal of this issue is the description of the basic architecture, 3rd party tools being used and an example data flow.

Acceptance criteria

  • We know which library helps us at the start
  • We have been learning about redux architecture and patterns
  • We know, which patterns we are following
  • We are able to explain to @christianbrb what is happening
  • We can read about it in the readme

Tasks

  • Create an architecture overview diagram
  • Describe the architecture on a component level

Story Points

5

I want to learn how to use the API

User Story

As Kelsos I want to learn how to use the API so that I am able to interact with Raiden in my JavaScript dApp.

Acceptance criteria

  • It is available in the Readme
  • In-dept architecture description (how it is implemented)
  • Description of the public API and how to use it
  • Basic quality - not too much

Tasks

Story Points

3

Download SDK via NPM

User Story

As Kelsos I want to download the SDK from NPM so that I can include in my JavaScript project.

Acceptance criteria

  • I can type 'npm install raiden-client' and the light client sdk gets installed
  • After install, I am able to install it
  • Only light client sdk gets installed (if possible)

Tasks

  • Configure npm account (Raiden network has got alread an organization)
  • Choose a name (raiden-ts)
  • Configure .npmrc
  • Package .json to publish

Story Points

2

Send processed without processing for refunds

Description

Send a processed message without processing for a refund transfer

Acceptance criteria

  • Standalone response for some messages
  • The type property of the message is "refund"
  • Reply with the Processed Message
  • Message "LockExpired" needs to be answered with Processed as well
  • Has got tests

Tasks

Gitter link for questions

User Story

As Kelsos I want to be able to contact the developers so that I am able to get questions answered.

Acceptance criteria

Tasks

Story Points

I want to be able to settle the channel

User Story

As Chris, I want to settle the channel so that I can receive my funds.

Acceptance criteria

  • Show the information that the channel can be settled
  • Confirm/Sign the settle message
  • I get a message, that you I get back x tokens
  • The open channel button appears
  • It is inside the channel list

Tasks

  • Implement it on the SDK (#73)
  • Design
  • Implement in the wallet

Story Points

5

Review of Readme from comms

Description

Readme has been made nice #34 (see issues for example readmes)
Still needs a review from comms

Acceptance criteria

  • Readme can be released

Tasks

  • Copy our "final" Readme to a google doc
  • Review by @franzihei
  • Make requested changes

Story Points

2

Describe flow in the state machine

Description

As a follow up to #31 describe the flow in Redux

Acceptance criteria

Tasks

  • Create a state change and state machine flow diagram
  • Describing the patterns for asynchronous operations inside the state machine

Story Points

Implement CodeCov Workflow

Description

Implement CodeCov Workflow and enforce coverage once the repo is open source

Acceptance criteria

Tasks

  • [ ]

Story Points

Copy CircleCI from WebUI and adjust

Description

Copy CircleCI from WebUI and adjust

Acceptance criteria

  • For every PR Lint, CodeStyle, Tests and Build will run
  • Will run for the wallet and the light client
  • Uses the same plan as Raiden

Tasks

  • Set-up the workflow for both project (see if we can parallelize it)

Story Points

3

Raiden Light Client

Raiden Light Client

This is a spec for the Raiden Light Client. It should essentially end up being a
JS library that will work via the browser.

Requirements

The following are the hard requirements for a light client for the Raiden Network:

  • Be required to be online for as little time as possible. Essentially a light
    client Raiden node should be online only for the duration of a transfer. For the
    mediated transfer case that is until a Secret message is exchanged.

  • Send payments (has to be online to do so)

  • Receive payments (has to be online to do so)

Limitations

A Raiden light client node will not be able to mediate transfers.

Transfers

Transfers from a light node should be working exactly like transfers from a normal
full node. In the first implementation which would be just a quick PoC they should
use chromium's UDP sockets and as
such send packets like a normal raiden node would. In the future this should be
replaced by something like Web RTC.

The big difference with a full node is that, as already defined in the requirements section, the light node can go offline again as soon as its transfers are complete.

Required Changes to the Full Raiden Client

Capabilities

We should introduce also in the full node, the concept of node capabilities. For
example a full node can and should participate in mediated transfers so should be
part of the healthcheck task but a light client should not.

Discovery

The discovery of a transfer recipient should be delegated to a running raiden
full node.

Basic design for the wallet (Open Channel) - Design implementation of iteration 2

Description

In today's retro, we have decided, that it makes sense to start with a professional visual design now. We want to implement and develop the design in iterations.

This issue is reserved to design, what has been implemented in iteration 2

Acceptance criteria

  • Can be implemented by @kelsos
  • The open channel screen is updated in the wallet
  • It is already nicer than before (skateboard)
  • Focus is on the structure
  • No finetuning of the details right now
  • @roy-castrillo is onboarded
  • Just open channel

Tasks

  • Meeting in Berlin
  • Getting access to the wallet @roy-castrillo
  • Finish reading the book @roy-castrillo
  • Doing the research @roy-castrillo
  • Create wireframes
  • Implement iterations
  • Provide the layouts to @kelsos
  • Implement design changes
  • Look at Vuetify
  • Conduct tests with people
  • Analyzing the results of the tests
  • Finetuning
  • Run tests on the implemented changes (between @kelsos and @roy-castrillo)

Story Points

8

I want to be able to close the channel

User Story

As Chris, I want to be able to close the channel so that I can get my deposit back.

Acceptance criteria

  • I have got a button to close the channel
  • I see when my counterparty has closed the channel
  • I see, that the channel is closing
  • I see, that the channel is settling

Tasks

  • Implement it on the SDK
  • Design
  • Implement in the wallet

Story Points

5

I want to get feedback on the channel open progress

User Story

As Chris, I want to get feedback on the channel open progress so that I don't close or reload the window because it takes so long.

Acceptance criteria

  • I see the steps upfront
  • I am getting informed, that I have got accept the transaction in Metamask
  • I see which step has been completed (mined successfully)
  • I can see how many block have been passed since the transaction has been submitted

Tasks

  • Copy text needs to be written
  • Create wireframes
  • Send intermediary events from the SDK
  • Implement everything on the wallet (taking the design, the wireframes and the changes in the SDK)

Story Points

3

Open channel with default parameters

User Story

As Chris, I want to open a channel so that I can see that the interaction with the Raiden contracts is working

Acceptance criteria

  • I can see the created channel on the explorer page
  • I can do this on a testnet
  • It can be done using the "production" environment and WETH
  • A hardcoded address (node) is fine
  • The hub does not need to be online
  • I can see a success message in the Wallet

Tasks

  • Setting up Web3
  • Configuration for the Wallet
  • Initial Redux set up and tests
  • Configure and use Vuetify
  • Pull contract.json from the Raiden repo
  • Implement Open Channel in the Wallet
  • Implement Open Channel in the state
  • Implement the Open Channel API method
  • Implement Jest tests
  • Implement Ganache tests
  • Integrate the Open Channel Method in the Wallet
  • Implement validations and test it
  • Create short instructions on how to test it

Story Points

8

I want to know what I am signing with MetaMask

User Story

As Chris I want to know what I am signing with MetaMask so that I am able to trust the wallet.

Closely related to #50

Acceptance criteria

  • I see the name of the step in the progress bar
  • I see a nice description for each step
  • I see an indicator, that the steps in the progress bar are the messages I am signing with Metamask

Tasks

  • Create wireframes
  • Design prototypes in sketch
  • Copy text for the description and the steps
  • Implement everything in the wallet

Story Points

2

I want to be able to enter a payment amount

User Story

As Chris, I want to be able to enter a payment amount so that I can transfer a specific amount to another node.

Acceptance criteria

Tasks

  • Design
  • Implementation

Story Points

Deploy dApp on IPFS

Description

Acceptance criteria

Tasks

  • [ ]

Story Points

Why do this?

We want to ensure the dApp is always accessible in a decetralized way.

Enter deposit to open a channel

User Story

As Chris, I want to be able to enter the token amount, which I deposit in my channel so that I can open a channel with a specific amount.

Acceptance criteria

Tasks

Story Points

Deploy Wallet to github pages continiously

Description

Deploy wallet to github pages at the end of the CI continuously, that it can be directly tested.

Acceptance criteria

  • Deployed to github pages

Tasks

  • Research
  • Add script to deploy
  • Add master only flow to automatically deploy
  • Get a subdomain for the GitHub pages

Story Points

0

Pointing to the Raiden docs

User Story

As Kelsos I want to be able to see the link to the Raiden documentation in the light-client readme so that I can learn how to use Raiden.

Acceptance criteria

Tasks

Story Points

Link to wallet code as example

User Story

As Kelsos I want to be able to see the link to the Wallet code in the light-client readme so that I can use it as a basis for my JavaScript dApp.

Acceptance criteria

Tasks

Story Points

Document the light client protocol and changes to the Raiden client/transport

Description

We discussed the light client protocol in our kick-off workshop. The outcome should be documented.

Acceptance criteria

  • It is written down, what we have discussed
  • There is an agreement between @hackaugusto and @andrevmatos
  • Changes needed for the Raiden client are specified
  • People outside the team understand it

Tasks

Story Points

3

I want to be able to select the token network from a list of available token networks

User Story

As Chris I want to be able to select the token network from a list of available token networks so that I can join my preferred token network.

Whole onboarding included:

  • Select a token network
  • Select a hub
  • Make a deposit

Acceptance criteria

  • If I click on connect, I get a screen to select a token or I can enter a token address to select the token
  • I see the address, token symbol and name of the token
  • If I click on "Select Token" I am connecting to a token network
  • Parameters are included
  • Validation included
  • History included

Tasks

  • Design
  • Implementation

Store state (nonce) locally

User Story

As Chris, I want to store my state locally, so that I am able to send a valid balance proof with the next available nonce.

Acceptance criteria

Tasks

Story Points

Making the Readme nice

User Story

As Kelsos I want to find everything I need to start developing in a beautiful readme

Acceptance criteria

  • "Find everything" is defined
  • Looks very good compared to other examples in the market
  • Well structured - can be scanned very well and it does not make me think ;-)
  • Badges are included (CI, Coverage, Stats)

Tasks

  • Find good examples, templates and decide which components to use
  • Define the structure of the readme
  • Create or pick first visual (Raiden Logo) for the Readme
  • Decide where to put the architecture description (#31)
  • Fill 'Learning about Raiden' -> @christianbrb
  • Fill 'Prerequisites' -> @andrevmatos
  • Fill 'Installation' - can be merged with prerequisites? -> @andrevmatos
  • Fill 'Example Wallet' -> @kelsos
  • Adapt 'Contributing' -> copy link to Raiden? -> @kelsos
  • Fill structure (...add additional tasks ...)

Story Points

5

Nice Examples

Template

More information

Measure code quality / maintainability

Description

Besides test coverage, other metrics might be beneficial to measure the maintainability of the sdk and the wallet

Example:

Acceptance criteria

  • We see the stats in code climate

Tasks

  • Someone with admin access to the organization needs to go to CodeClimate and add it

Story Points

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.