Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Contributing to ProofWorks

Thank you for your interest in contributing to **ProofWorks**! This document outlines the process for setting up your environment, running tests, and submitting your contributions.

## Setup

To set up the development environment locally:

1. **Clone the Repository**:
Clone the repository and navigate into the project root:
```bash
git clone https://github.com/tommycet/proofworks-genlayer.git
cd proofworks-genlayer
```

2. **Install Python Dependencies**:
ProofWorks requires Python dependencies for contract testing and linting. Install them using `requirements.txt`:
```bash
pip install -r requirements.txt
```

3. **Install Node.js Dependencies**:
Install root dependencies and frontend dependencies:
```bash
npm install
npm --prefix frontend install
```

## Running the tests

To verify your changes locally, you can run the test suite using the configured Makefile targets:

- **Run all direct contract tests**:
```bash
make test
```
*(Note: This command runs the Python pytest suite against GenVM direct-mode tests.)*

- **Lint the escrow contract**:
```bash
make lint-contract
```

- **Build the frontend production package**:
```bash
npm --prefix frontend run build
```

- **Validate all components in one shot** (Tests, Contract Linter, and Frontend build):
```bash
make validate-all
```

## Submitting a pull request

When you are ready to submit your changes:

1. **Create a Local Branch**:
Branch off from the `main` branch with a descriptive name:
```bash
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bugfix-name
```

2. **Commit Your Changes**:
Make small, atomic commits with clear commit messages describing your changes.

3. **Validate Your Changes**:
Ensure all tests and build checks pass successfully by running:
```bash
make validate-all
```

4. **Submit the Pull Request**:
Push your branch to GitHub and open a Pull Request targeting the `main` branch.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 tommycet

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
13 changes: 13 additions & 0 deletions bounty_context.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"owner": "tommycet",
"repo": "proofworks-genlayer",
"issueNumber": "45",
"title": "Add an MIT LICENSE file at the repository root",
"body": "## Summary\n\nThe repo currently has no top-level license file. The README's License section explicitly says \"Not yet specified. An explicit license will be added before mainnet.\" Time to add it.\n\nMIT is the right call: short, permissive, well-understood by reviewers and contributors, and consistent with the rest of the GenLayer ecosystem.\n\n## Acceptance criteria\n\nA submitted PR must:\n\n1. Add a new file named `LICENSE` at the repository root (no extension, all caps).\n2. The file must be the standard MIT License text.\n3. The copyright line must reference the year `2026` and the holder `tommycet`.\n4. The PR must come from the same repository (tommycet/proofworks-genlayer).\n\n## Reward\n\nFunded as a ProofWorks bounty case. Worker payout on APPROVE.\n",
"labels": [
"documentation",
"bounty"
],
"gitCloneUrl": "https://github.com/tommycet/proofworks-genlayer.git",
"repoDir": "/Users/macminim1/Documents/efe/bounty-hunter/temp/proofworks-genlayer"
}
15 changes: 15 additions & 0 deletions docs/bounty-rules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ProofWorks Bounty Rules

This document outlines the rules governing worker staking and dispute resolution (appeals) introduced in ProofWorks Phase 9.

## Appeal Fees & Bonds

To prevent spam disputes and ensure high-quality validations:
- **Appeal Bond Rate**: The appeal bond is set to **20% of the task reward**.
- **Payment & Recovery**: The appellant must deposit this bond when opening an appeal. If the appeal is successful, the bond is returned; otherwise, it is distributed to the validators.

## Worker Staking & Expiry

To guarantee that claimed tasks are completed in a timely manner:
- **Forfeiture on Expiry**: If a worker claims a task but the claim expires without a valid proof submission, the worker's staked amount is **forfeited**.
- **Stake Release**: The stake is released back to the worker upon successful submission and approval of the proof.
5 changes: 5 additions & 0 deletions pr_status.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"submitted": true,
"dryRun": false,
"prUrl": "https://github.com/tommycet/proofworks-genlayer/pull/40"
}
4 changes: 4 additions & 0 deletions test_status.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"passed": true,
"output": "........................................................................ [ 80%]\n................. [100%]\n89 passed in 1.89s\n"
}