gitbitex / gitbitex-new

an open source cryptocurrency exchange
Apache License 2.0
230 stars 84 forks source link

Roadmap, features etc. #8

Closed SimonVillage closed 2 years ago

SimonVillage commented 2 years ago

It would be awesome to see what is done and what is to come. Some kind of a checkbox feature list in the readme file.

As example, I have seen that there was some work done on fee, base_max_size, base_min_size and order types like GTC, FOK etc. Some might be easy to implement while others aren't. I am not sure if there is a lot of community interest and if you are willing to accept PRs for certain planned features?

Also do you have any benchmark or maybe a diagram like in the old repo? What information is redis storing?

greensheng commented 2 years ago

To do:

  1. Time in force policy support: GTT, Fok, IOC
  2. Performance test
  3. Architecture document
  4. Integrate a digital currency Wallet
  5. ratelimit

Welcome to submit PR, especially web page, or digital currency wallet integration, KYC integration.

Redis is currently used to save ticker, orderbook snapshot, access token and Pub / sub pipeline. Saving orderbook snapshots in redis is not a good solution, because redis is not suitable for storing big value data. However, in order to keep the project deployment simple, redis is used first

greensheng commented 2 years ago

In addition, a management panel is required

SimonVillage commented 2 years ago

Would you like to keep things separate?

You have build API and websocket into the engine. How would scaling in that case work? Currency wallet and KYC also shouldn't be part of the engine but an extra microservice?

What about the engine consuming order events and producing the results and another service writes to the database. Balance management should stay in the engine (risk engine check) and if you have a currency wallet service then balance should get transferred from currency wallet to the engine.

Separation would also make it a bit easier to maintain if the project gets bigger and gains more contributors.

I understand that this would require a few changes to the existing project but I am curious what the goal is?

greensheng commented 2 years ago

You're right. It's necessary to split the project into small modules. Therefore, I have split some independent modules into different directories, such as account, order, product, user, OpenAPI, feed and matching engine. These modules should be deployed independently. It is also necessary to split these modules into separate Maven projects, but it will increase the debugging and deployment complexity of the project. I'll consider taking them apart.

SimonVillage commented 2 years ago

I am not a java expert but maybe there is also the possibility of a mono-repository? So that it is possible to only start certain services or all together using one repository?

greensheng commented 2 years ago

I am not a java expert but maybe there is also the possibility of a mono-repository?

So that it is possible to only start certain services or all together using one repository?

Yes, just use Maven module.