Elements¶
Contracts¶
BugMark trades Reward Contacts and a Forecast Contracts.
Forecast Contract¶
"I will pay $X if an Issue matching ${METADATA} exists before $DATE"

Reward Contact¶
"I will pay $X if Issue $Y is resolved before $Date"

Contract Attributes¶
| ATTRIBUTE | DESCRIPTION |
|---|---|
| Premium | Adjustable risk premium |
| Metadata | Labels and Fields used for issue matching |
| Payout Algorithm | DSL for pluggable payout algorithm |
Repos¶
Types¶
Repo Types are hard coded into the system.
| REPO TYPE | SUPPORTED CONTRACT TYPES |
|---|---|
| GitHub | REWARD, FORECAST |
| BugZilla | REWARD, FORECAST |
| CVE | FORECAST |
Characteristics¶
- Some repos are hard-coded in the system (eg BugZilla/Firefox, BugZilla/Thunderbird, CVE)
- Some repos are added dynamically by users (eg GitHub/Repo1, GitHub/Repo2, ...)
Issues¶
Issue Metadata¶
Note: For each issue we can programatically extract:
- the issue status (Open, Closed)
- the issue metadata
| REPO TYPE | ISSUE META-DATA |
|---|---|
| CVE | [hardcoded] severity, type, etc. etc. |
| BugZilla | [hardcoded] severity, etc. |
| GitHub | [dynamic] labels |
Sync¶
We pull issues from each repo periodicaly (once an hour?) and resolve in the oracle.
Match Params¶
- CVE - match against hardcoded metadata fields
- BUGZILLA - match against hardcoded metadata fields
- GitHub - match against dynamic labels