Task:
- DB key;
- Date-time created at;
- client's id;
- integer difficulty;
- (Big) integer parameter t;
- Binary (cryptographically secure hash) fingerprint of input;*
- Task-Assignment id first assignment (NULL if not applicable);
- Task-Assignment id second assignment (NULL if not applicable);
- integer number of assignments;
- Payment id;
Task-assignment:
- DB key;
- Task id;
- Date-time created at;
- Date-time of delivery / expiration;
- Date-time delivery deadline;
- Date-time complaint deadline;
- Elapsed time;
- bool Delivered in time ("delivered" / "expired");
- Complaint id (NULL if no complaint);
- integer Response (power);
- Date-time of complaint (if any);
- bool Validity ("good", or "bad");
- integer solver's id;
- integer task key;
Payment:
- DB key;
- Date-time created at;
- currency id;
- method id;
- reason id;
- (TBD Big)****Integer amount (of smallest possible unit);
Currency Index:
- DB key;
- Text name;
- Bool currently accepted;
(payment) Method Index:
- DB key;
- Text name;
- Bool currently accepted;
(payment) Reason Index;
- DB key;
- Text name;
Complaint:
- DB key;
- Date-time created at;
- client id;
- solver id;
- arbiter id; (TBD server has one such id. In future, dispute is untied by other reputed solver);
- task assignment id;
- Date-time solved at;
- 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
- Binary fingerprint of (client id || solver id || task assignment id || created at);
Solver:
- DB key;
- Date-time created at;
- integer ID (fingerprint of key);
- bool is_online;
- integer number of tasks taken;
- integer number of tasks delivered;
- integer number of tasks expired;
- integer number of tasks not complained about;
- integer number of tasks complained about;
- integer number of complaints won;
- float success rate;
- float computation power score (TBD);
- float Reputation score (TBD heuristic function of history);
- Payment ID subscription fee; //to avoid DOS and work as collateral in case of bad behavior like false complaint
Client:
- DB key;
- Date-time created at;
- integer client ID (fingerprint of cryptographic key used to establish session with server)**;
- bool is_online;
- integer number of tasks requested;
- integer number of tasks received;
- integer number of tasks complained about;
- integer number of tasks accepted;
- float acceptance rate;
- float Reputation heuristic (TBD);
- 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):
- Biginteger product; //OO us
- 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;
Task:
Task-assignment:
Payment:
Currency Index:
(payment) Method Index:
(payment) Reason Index;
Complaint:
Solver:
Client:
=======================
DB key = integer
*Input (doesn't go to DB):
**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;