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

Ship Daemon and gRPC API #11

Open
cbeams opened this issue Feb 17, 2020 · 4 comments
Open

Ship Daemon and gRPC API #11

cbeams opened this issue Feb 17, 2020 · 4 comments
Assignees
Labels
has:approval bisq.wiki/Project_management#Approval to:Increase Liquidity

Comments

@cbeams
Copy link
Member

cbeams commented Feb 17, 2020

Project Board

https://github.com/orgs/bisq-network/projects/17

Refer to the project board to track progress of issues and PRs.

Description

The API Project’s scope includes exposing a Core API using gRPC, and serving a Linux / OSX based gRPC CLI and RESTful web clients.

The API should be able to perform all functions now provided by the Bisq desktop UI. The release process is incremental;
approved contributions to the API project will be merged into the main branch as work progresses.

Rationale

The most important justification for a gRPC based API is scaling Bisq to increase trading volume and liquidity. This will be accomplished by supporting trading bots, enabling development of new RESTful HTTP clients, opening opportunities for Bisq integration into products such as myNode, facilitating automated functional testing (narrow and broad), and full end to end testing. Automated testing may also lead to faster improvements to mature, core components now in use by the UI.

Criteria for delivery

As mentioned above, delivery of the API will be incremental, and small bits of the API have already been merged into the main branch.

Before code supporting this simplest trade use case can be merged into the main branch, security risks must be discovered, analyzed and mitigated.

Releasing a programmatic interface to the Bisq protocol presents opportunity and risk; risk analysis must be a priority for each phase of the development / test / release cycle as soon a the API supports any trading on mainnet.

Tasks

The short, near term goal is to demonstrate the minimum, simplest API and gRPC CLI capable of performing all tasks required by a basic trading scenario: protecting a wallet, funding a wallet, creating a payment method, listing offers, creating & taking an offer, through completing the trade protocol and moving received funds to a Bisq wallet. After demonstrating this use case, feedback will be studied, bugs fixed, work on supporting more payment methods will begin, and decisions will be made about the next phase of development.

Some of the work to support the simplest trading use case have been merged into the main branch. Tasks lists used for planning and tracking this work are listed below.

Currently, an API Test Harness PR is in review. If approved and merged, some polishing will done on the test harness, test cases will be added, and work on the API itself will be restarted.

After the gRPC based CLI is stabilized, passes risk assessments, supports enough features, and is accepted by sufficient numbers of users, work will begin on supporting RESTful HTTP clients. The current plan is to use a go based reverse-proxy / grpc-gateway to transform HTTP 1.1 requests into HTTP 2 (gRPC), and back. (The scope of this project does not include building HTTP RESTful clients.)

History

Earlier discussions are in the comments here .

The earliest proof of concept was merged from PR 3888 .

@cbeams cbeams self-assigned this Feb 17, 2020
@cbeams cbeams changed the title gRPC API Ship Daemon and gRPC API Feb 20, 2020
@cbeams cbeams added has:approval bisq.wiki/Project_management#Approval is:stalled bisq.wiki/Project_management#Stopping_work needs:info bisq.wiki/Project_management#Triage labels Mar 6, 2020
@cbeams cbeams removed the is:stalled bisq.wiki/Project_management#Stopping_work label May 8, 2020
@cbeams cbeams assigned ghubstan and unassigned cbeams Jun 17, 2020
@cbeams
Copy link
Member Author

cbeams commented Jun 17, 2020

I've reassigned this project to @ghubstan, who has agreed to take the lead on it.

@ripcurlx
Copy link

@ghubstan It would be great if you could update this project, so the project and the current state of it is easier to follow. Thanks!

@ghubstan
Copy link
Member

ghubstan commented Aug 1, 2020

@ghubstan It would be great if you could update this project, so the project and the current state of it is easier to follow.

@ripcurlx Just a ping to let you know this project issue has been updated.

@ghubstan ghubstan pinned this issue Aug 1, 2020
@ghubstan ghubstan unpinned this issue Aug 1, 2020
@cbeams
Copy link
Member Author

cbeams commented Aug 3, 2020

@ghubstan wrote:

@ripcurlx Just a ping to let you know this project issue has been updated.

It's better to post updates, I believe, as comments here on the project issue thread...

I thought updating the original post didn't seem right, but neither did adding a comment. Now I know. Thanks, @cbeams .

@ghubstan ghubstan removed the needs:info bisq.wiki/Project_management#Triage label Aug 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
has:approval bisq.wiki/Project_management#Approval to:Increase Liquidity
Projects
None yet
Development

No branches or pull requests

3 participants