Skip to content

Database of tasks, clients and providers #2

Description

@Yuri-SVB

Task:

  1. DB key;
  2. Date-time created at;
  3. client's id;
  4. integer difficulty;
  5. (Big) integer parameter t;
  6. Binary (cryptographically secure hash) fingerprint of input;*
  7. Task-Assignment id first assignment (NULL if not applicable);
  8. Task-Assignment id second assignment (NULL if not applicable);
  9. integer number of assignments;
  10. Payment id;

Task-assignment:

  1. DB key;
  2. Task id;
  3. Date-time created at;
  4. Date-time of delivery / expiration;
  5. Date-time delivery deadline;
  6. Date-time complaint deadline;
  7. Elapsed time;
  8. bool Delivered in time ("delivered" / "expired");
  9. Complaint id (NULL if no complaint);
  10. integer Response (power);
  11. Date-time of complaint (if any);
  12. bool Validity ("good", or "bad");
  13. integer solver's id;
  14. integer task key;

Payment:

  1. DB key;
  2. Date-time created at;
  3. currency id;
  4. method id;
  5. reason id;
  6. (TBD Big)****Integer amount (of smallest possible unit);

Currency Index:

  1. DB key;
  2. Text name;
  3. Bool currently accepted;

(payment) Method Index:

  1. DB key;
  2. Text name;
  3. Bool currently accepted;

(payment) Reason Index;

  1. DB key;
  2. Text name;

Complaint:

  1. DB key;
  2. Date-time created at;
  3. client id;
  4. solver id;
  5. arbiter id; (TBD server has one such id. In future, dispute is untied by other reputed solver);
  6. task assignment id;
  7. Date-time solved at;
  8. integer result (0 for client in the right, 1 for solver in the right); //kept as integer instead of bool in case of adding more values
  9. Binary fingerprint of (client id || solver id || task assignment id || created at);

Solver:

  1. DB key;
  2. Date-time created at;
  3. integer ID (fingerprint of key);
  4. bool is_online;
  5. integer number of tasks taken;
  6. integer number of tasks delivered;
  7. integer number of tasks expired;
  8. integer number of tasks not complained about;
  9. integer number of tasks complained about;
  10. integer number of complaints won;
  11. float success rate;
  12. float computation power score (TBD);
  13. float Reputation score (TBD heuristic function of history);
  14. Payment ID subscription fee; //to avoid DOS and work as collateral in case of bad behavior like false complaint

Client:

  1. DB key;
  2. Date-time created at;
  3. integer client ID (fingerprint of cryptographic key used to establish session with server)**;
  4. bool is_online;
  5. integer number of tasks requested;
  6. integer number of tasks received;
  7. integer number of tasks complained about;
  8. integer number of tasks accepted;
  9. float acceptance rate;
  10. float Reputation heuristic (TBD);
  11. Payment ID subscription fee; //to avoid DOS and work as collateral in case of bad behavior like false complaint

=======================

DB key = integer

*Input (doesn't go to DB):

  1. Biginteger product; //OO us
  2. Biginteger base g; //OO us

**if you want more reputation (and keep good behavior), reuse key; if you want more anonymity, refresh keys all the time.
That key has no relationship with GW protocol itself;
//User may either create a new key each session (for more anonymity) or reuse key (for more reputation);

*** micropayment price for setting up new client to prevent DOS creation of new anonymous clients;

**** look up on stack exchange / Google / GPT how to deal with micropayment amounts in DBA;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions