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

Define architecture and interfaces for the protocol layer #54

Open
4 tasks
chimp1984 opened this issue Apr 29, 2021 · 2 comments
Open
4 tasks

Define architecture and interfaces for the protocol layer #54

chimp1984 opened this issue Apr 29, 2021 · 2 comments
Labels
a:proposal bisq.wiki/Project_management#Proposal needs:triage bisq.wiki/Project_management#Triage

Comments

@chimp1984
Copy link

chimp1984 commented Apr 29, 2021

This is a Bisq Network project. Please familiarize yourself with the project management process.

Description

Define architecture and interfaces for the protocol layer with the requirement to support multiple protocols and potentially external protocols (e.g. farcaster).

Rationale

To support multiple contract execution protocols (asset trades, loans,...) we need an architecture which allows different protocol implementations to be used.
Asset transfer and security are considered as separate aspects. They can be combined like in the current Bisq protocol or atomic swaps or be decoupled like in an off-chain protocol using BSQ bonds or reputation for security.

Criteria for delivery

  • A proposal for the architecture and basic interfaces
  • A prototype demonstrating the feasibility to support different types of protocols (mocked and just very high level). Integrating external protocols (farcaster) is not required
  • Proposal how to integrate external protocols (farcaster)

Measures of success

The provided results are considered sufficient to be used for futher refinements .

Risks

  • No solution found
  • No sufficient progress
  • Quality of proposed architecture insufficient
  • Solution does not fit goals or constraints of overall project
  • It turns out the challenges are too high and not realistic to be solved within Bisq's resource constraints (not really a risk for that project but for the overall project, but better to fail fast if that is the case)

Tasks

  • Design architecture
  • Write up proposed solution
  • A prototype demonstrating the application for different types of protocols (all mocked and just high level)
  • Proposal how to integrate external protocols (farcaster)

Estimates

This investigation should be scoped from effort and time. It will likely require further interations before we get ready for implementing it.
So this should be seen as a first shot to get a better understanding of the challenges and fail fast if it turns out the challenges cannot be solved within our resource constraints.
I think 4 weeks for 1 contributor should not be exceeded. According to that the contributor should post their expected compensation.

Notes

A main challenge will be how we support external protocol implementations (e.g. farcaster project in Rust). To be able to hook into those instead of re-implementing those protocols and infrastructures in Java would be good.

There should be a close feeback loop with the contributor working on:
#52

The protocol can be modeled as a finite state machine (likely it will require a hierarchy of FSMs). Farcasters seem to use a Petri net. I am not familiar with that but might be worth to look into.

The question how trade fees are part of the protocol can be ignored at that stage.

Formulating current Bisq protocol as RFC as an example protocol might be useful. But not sure if required/helpful at that moment. But if anyone wants to work on that would be a good to have. Can be done by another contributor and be seen outside of the scope of that project.

Examples of protocol we should be able to support:

@chimp1984 chimp1984 added a:proposal bisq.wiki/Project_management#Proposal needs:triage bisq.wiki/Project_management#Triage labels Apr 29, 2021
@chimp1984
Copy link
Author

@stejbac Would you be interested/available for that project?

@stejbac
Copy link

stejbac commented May 3, 2021

I would be interested in this project and should be available full time over the next month to work on it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a:proposal bisq.wiki/Project_management#Proposal needs:triage bisq.wiki/Project_management#Triage
Projects
None yet
Development

No branches or pull requests

2 participants