Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sideproject: Joystream CLI #355

Closed
bedeho opened this issue Nov 1, 2019 · 0 comments
Closed

Sideproject: Joystream CLI #355

bedeho opened this issue Nov 1, 2019 · 0 comments

Comments

@bedeho
Copy link
Member

bedeho commented Nov 1, 2019

Sideproject: Joystream CLI

Status

Available

Purpose

  1. Define a self-contained project which new developers can tackle as part of the screening process for Jsgenesis development team.

  2. Start building a product that can offload some of the scope in Pioneer.

  3. Generate an initial set of query requirements that the future query node will need to support.

Background

Pioneer is a web application that interacts with the Joystream blockchain.

pic

It is the main application for doing things as

  • Reading/writing on the forums.
  • Entering/staking for various roles, such as a council member.
  • Participating in governance, both in elections and proposal voting.
  • Uploading and viewing content.
  • Making token transfers.
  • Sending general extrinsics.

In general, all of these activities can be separated into three categories

  1. General Polkadot activities: view blocks arriving, make transfers, etc.
  2. Joystream community activities: participating in community & governance of Joystream platform
  3. Joystream content activities: browsing, viewing and uploading new content.

This project is primarily targeted at addressing point nr. two.

Goal

Make initial progress on a CLI which allows us to offload community and governance-related activities currently conducted in Pioneer. In the future, we may want to factor out use case specific CLIs, however, at present we will just start with one product.

We can figure out the right order as we go along, but it would be most useful to start by focusing on core governance activities, like voting in elections, becoming a council member, voting on proposals, etc.

Requirements

  • Must use Typescript.

  • Must use some mature CLI framework, don't start from scratch! @siman may offer some advice here.

  • Must talk directly to a trusted Joystream full node instance. This node exposes a standard Substrate JSON-RPC interface which is used for

    • issuing transactions

    • reading blockchain state

    • subscribing to events

  • User keys, which are used for transaction signing, are generated, managed and stored client side.

  • A proper well-documented command interface built into the tool.

  • In the near future we plan to have a GraphQL query node which the CLI can talk to, but it is not currently ready. This node will allow a client to make queries at an abstraction level much higher than the low-level key-value reads that is native to Substrate. In order to make the transition to using such a tool smooth, and also to generate some requirements about what specific requirements we may need, the code should be written as if such a query layer exists. Then we can just swap out the implementation later. More information is available on the work on this query node here

@bedeho bedeho transferred this issue from another repository May 1, 2020
Lezek123 pushed a commit to Lezek123/substrate-runtime-joystream that referenced this issue May 21, 2020
@bedeho bedeho closed this as completed Nov 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant