bisq-network / projects

@bisq-network project management
https://bisq.wiki/Project_management
9 stars 2 forks source link

Ship Daemon and gRPC API #11

Open cbeams opened 4 years ago

cbeams commented 4 years ago

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 commented 4 years ago

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

ripcurlx commented 4 years ago

@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 commented 4 years ago

@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.

cbeams commented 4 years ago

@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 .