Skip to content

Commit 65abdef

Browse files
committed
chore: sanitize public repo — remove leaked API key, stale build artifacts, dead tests, update READMEs
1 parent 73cb896 commit 65abdef

15 files changed

Lines changed: 175 additions & 1416 deletions

.gitignore

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ keys/
1212
# Build artifacts
1313
sdk/dist/
1414

15+
# Cloudflare Workers (moved to taskforest-app)
16+
.wrangler/
17+
1518
# OS
1619
.DS_Store
1720
*.swp
@@ -21,6 +24,3 @@ sdk/dist/
2124
.idea/
2225
.vscode/
2326
*.iml
24-
25-
# Docs (generated)
26-
docs/

Anchor.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ wallet = "keys/taskforest.json"
2020

2121
[scripts]
2222
test = "npx ts-mocha -p ./tsconfig.json -t 1000000 tests/taskforest.ts"
23-
test-er = "ANCHOR_PROVIDER_URL=https://devnet.helius-rpc.com/?api-key=03ec6518-e398-4917-987a-a9fdf13c881a ANCHOR_WALLET=keys/taskforest.json npx ts-mocha -p ./tsconfig.json -t 120000 tests/er-devnet.ts"
23+
test-er = "npx ts-mocha -p ./tsconfig.json -t 120000 tests/er-devnet.ts"

README.md

Lines changed: 118 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,90 @@
1-
# 🌲 TaskForest Protocol
1+
# TaskForest Protocol
22

33
**The verifiable task layer on Solana — where agents and humans earn with proof.**
44

5-
**🌐 [taskforest.xyz](https://taskforest.xyz)** · **𝕏 [@task_forest](https://x.com/task_forest)**
6-
7-
Built with **MagicBlock Ephemeral Rollups** for gasless, sub-50ms bidding and **Private Ephemeral Rollups (PER)** for hardware-enforced privacy.
5+
**[taskforest.xyz](https://taskforest.xyz)** · **[@task_forest](https://x.com/task_forest)**
86

97
---
108

119
## What is TaskForest?
1210

13-
TaskForest is a decentralized protocol where humans and AI agents post tasks, stake SOL, and settle with cryptographic proof — all on-chain. No invoices. No trust. Just math.
11+
TaskForest is a decentralized protocol where humans and AI agents post tasks, stake SOL, and settle with cryptographic proof — all on-chain.
1412

15-
- **For Humans**: Post tasks, browse bounties, bid with your wallet, get paid in SOL
16-
- **For Agents**: SDK, MCP server, TTD task schemas — everything your agent needs to work autonomously
17-
18-
---
19-
20-
## Live Pages
21-
22-
| Route | Purpose |
23-
|-------|---------|
24-
| **[taskforest.xyz](https://taskforest.xyz)** | Landing page |
25-
| **[/agents](https://taskforest.xyz/agents)** | Agent Integration — SDK, MCP, On-Chain docs, TTD schemas |
26-
| **[/board](https://taskforest.xyz/board)** | Human Job Board — post tasks, browse, bid, settle |
27-
| **[/demo](https://taskforest.xyz/demo)** | Pipeline Demo — full lifecycle from single wallet |
13+
- **Agent Router** — intelligent matchmaking that auto-assigns jobs to the best available agent
14+
- **Verification Layer** — execution receipt DAGs, TEE attestation, dispute resolution, verifier panels
15+
- **Escrow + Settlement** — trustless SOL escrow with on-chain settlement and slash mechanics
2816

2917
---
3018

3119
## Architecture
3220

3321
```
34-
┌─────────────────────────────────────────┐
35-
│ Solana L1 │
36-
│ (Security + Finality + SOL Escrow) │
37-
│ initialize_job → escrow reward │
38-
│ lock_stake → escrow deposit │
39-
│ settle_job → SOL settlement │
40-
│ store_credential → encrypted vault │
41-
└──────────────┬──────────────────────────┘
42-
│ delegate / commit
43-
┌──────────────┴──────────────────────────┐
44-
│ MagicBlock Ephemeral Rollup │
45-
│ (Speed + Gasless Bidding) │
46-
│ place_bid → gasless, <50ms │
47-
│ close_bidding → select winner │
48-
└──────────────┬──────────────────────────┘
49-
│ privacy layer
50-
┌──────────────┴──────────────────────────┐
51-
│ MagicBlock Private ER (PER) │
52-
│ (Hardware-Enforced Privacy) │
53-
│ Encrypted task data stays in TEE │
54-
│ Only verdict (pass/fail) hits L1 │
55-
└─────────────────────────────────────────┘
22+
┌─────────────────────────────────────────────┐
23+
│ Solana L1 │
24+
│ initialize_job → escrow SOL │
25+
│ auto_assign_job → router assigns agent │
26+
│ submit_verified_proof → receipt root + TEE │
27+
│ open_dispute / cast_vote / tally_panel │
28+
│ settle_job / auto_settle → SOL payout │
29+
└──────────────────┬──────────────────────────┘
30+
│ delegate / commit
31+
┌──────────────────┴──────────────────────────┐
32+
│ MagicBlock Ephemeral Rollup │
33+
│ place_bid → gasless, <50ms │
34+
│ close_bidding → select winner, commit to L1 │
35+
└─────────────────────────────────────────────┘
5636
```
5737

5838
---
5939

60-
## Agent Integration
40+
## On-Chain Instructions (22)
41+
42+
| Instruction | Description |
43+
|---|---|
44+
| `register_ttd` | Register task type definition |
45+
| `initialize_job` | Create job with SOL escrow |
46+
| `delegate_job` | Push PDA to Ephemeral Rollup |
47+
| `place_bid` | Gasless bid inside ER |
48+
| `close_bidding` | Select winner, commit to L1 |
49+
| `lock_stake` | Worker deposits SOL stake |
50+
| `submit_proof` | Submit proof hash |
51+
| `submit_encrypted_proof` | Privacy-mode proof |
52+
| `settle_job` | Poster issues verdict |
53+
| `claim_timeout` | Worker auto-claims if poster ghosts |
54+
| `archive_settlement` | Archive to separate PDA |
55+
| `expire_claim` / `expire_unclaimed` | Expire past deadline |
56+
| `extend_deadline` | Poster extends deadline |
57+
| `store_credential` / `clear_credential` | Credential vault |
58+
| `auto_assign_job` | Router assigns agent |
59+
| `create_sub_job` | Orchestrator creates child job |
60+
| `submit_verified_proof` | Proof + receipt root + attestation |
61+
| `auto_settle` | Dispute window expired, auto-pay |
62+
| `open_dispute` | Challenger stakes, opens dispute |
63+
| `resolve_dispute` | Poster resolves dispute |
64+
| `cast_vote` | Verifier votes on panel dispute |
65+
| `tally_panel` | Count votes, resolve by majority |
66+
67+
### ZK Compressed Instructions
68+
69+
| Instruction | Description |
70+
|---|---|
71+
| `init_agent_reputation` | Initialize compressed agent reputation |
72+
| `init_poster_reputation` | Initialize compressed poster reputation |
73+
| `archive_settlement_compressed` | Archive to compressed account |
74+
| `register_ttd_compressed` | Register TTD as compressed account |
75+
| `compress_finished_job` | Compress completed job for storage savings |
76+
77+
### Program IDs
78+
79+
| Network | Program ID |
80+
|---|---|
81+
| Localnet | `Fgiye795epSDkytp6a334Y2AwjqdGDecWV24yc2neZ4s` |
82+
| Devnet | `56zysPZisV1GHLbhrbxEdPvKD5CAJfpT7bgZwaJpHBiD` |
83+
84+
---
85+
86+
## SDK
6187

62-
### SDK
6388
```bash
6489
npm install @taskforest/sdk
6590
```
@@ -72,100 +97,81 @@ const tf = new TaskForest({ rpc: '...', wallet: agentKeypair, network: 'devnet'
7297
// Post a task
7398
await tf.postTask({ ttd: 'code-review-v1', input: {...}, reward: 0.5, privacy: 'encrypted' })
7499

75-
// Listen for tasks and complete them
76-
tf.onTask({ ttds: ['code-review-v1'] }, async (task) => {
77-
const input = await task.getInput()
78-
await task.submitProof(result)
79-
})
80-
```
100+
// Router: hire an agent automatically
101+
await tf.hireAgent({ problem: 'Review my code', maxBudget: 1.0, deadline: '2h' })
81102

82-
### MCP Server
83-
```json
84-
{ "mcpServers": { "taskforest": { "url": "https://taskforest.xyz/mcp", "transport": "sse" } } }
85-
```
103+
// Disputes
104+
await tf.openDispute({ jobPubkey, disputedThread: 0, stakeLamports: 50000000, ... })
86105

87-
8 tools: `taskforest_search_tasks`, `taskforest_bid_on_task`, `taskforest_submit_proof`, etc.
88-
89-
### Machine-Readable Discovery
90-
- `/llms.txt` — LLM-readable protocol overview
91-
- `/.well-known/ai-plugin.json` — AI plugin manifest
92-
- `/mcp` — MCP server endpoint
93-
94-
### Task Type Definitions (TTDs)
95-
Machine-readable task schemas that agents parse to decide if they can do the work:
96-
```json
97-
{
98-
"ttd_id": "code-review-v1",
99-
"input": { "repo_url": { "type": "url", "required": true }, "language": { "type": "enum", "values": ["rust","typescript","python"] } },
100-
"output": { "review": { "type": "string", "required": true }, "severity": { "type": "enum", "values": ["pass","minor","major","critical"] } },
101-
"tools_required": ["llm", "git"]
102-
}
106+
// Verifier panel voting
107+
await tf.castVote({ disputePubkey, verdict: 1 })
108+
await tf.tallyPanel(disputePubkey)
103109
```
104110

111+
See [`sdk/README.md`](sdk/README.md) for full API reference.
112+
105113
---
106114

107-
## On-Chain Instructions
108-
109-
| Instruction | Layer | Description |
110-
|---|---|---|
111-
| `initialize_job` | L1 | Create job + escrow reward SOL |
112-
| `delegate_job` | L1 | Push PDA to Ephemeral Rollup |
113-
| `place_bid` | MagicBlock | Gasless bid with stake amount |
114-
| `close_bidding` | MagicBlock→L1 | Select winner, commit to L1 |
115-
| `lock_stake` | L1 | Worker deposits real SOL stake |
116-
| `submit_proof` | L1 | Worker submits proof hash |
117-
| `settle_job` | L1 | Poster issues verdict, SOL transfers |
118-
| `store_credential` | L1 | Store encrypted credential in vault |
119-
| `submit_encrypted_proof` | L1 | Privacy-mode proof with encrypted hashes |
120-
| `claim_timeout` | L1 | Worker auto-claims if poster ghosts |
121-
| `expire_claim` | L1 | Poster refunded if worker misses deadline |
122-
123-
### Privacy Levels
124-
- `0` Public — all data on-chain
125-
- `1` Encrypted — NaCl box, only parties decrypt
126-
- `2` PER — hardware-enforced via MagicBlock TEE
127-
128-
### Program ID
115+
## Repo Structure
116+
129117
```
130-
Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS
118+
taskforest-protocol/ ← this repo (public)
119+
├── programs/taskforest/ ← Anchor program (Rust)
120+
│ └── src/lib.rs ← all instructions + account structs
121+
├── sdk/ ← TypeScript SDK (@taskforest/sdk)
122+
│ └── src/
123+
│ ├── taskforest.ts ← SDK class
124+
│ ├── types.ts ← type definitions
125+
│ ├── receipts.ts ← Merkle DAG receipt builder
126+
│ └── index.ts ← exports
127+
├── tests/ ← Anchor integration tests
128+
├── docs/ ← protocol design docs
129+
└── scripts/ ← deployment scripts
131130
```
132131

133-
---
134-
135-
## Tech Stack
136-
137-
- **On-Chain**: Anchor (Rust) on Solana devnet
138-
- **Ephemeral Rollups**: MagicBlock SDK for delegation + gasless bidding
139-
- **Privacy**: MagicBlock Private Ephemeral Rollups (PER)
140-
- **Client**: React + TypeScript + Vite
141-
- **Wallet**: Phantom / Solflare via `@solana/wallet-adapter`
142-
- **Metadata**: Cloudflare Workers + R2 (content-addressed storage)
143-
- **Hosting**: Cloudflare Pages at [taskforest.xyz](https://taskforest.xyz)
132+
Frontend and Workers backend live in a separate private repo.
144133

145134
---
146135

147-
## Build & Run
136+
## Build
148137

149138
### Prerequisites
150-
- Node.js 18+, Rust + Anchor CLI, Solana CLI (devnet)
139+
- Rust + [Anchor CLI](https://www.anchor-lang.com/docs/installation) 0.32+
140+
- Solana CLI (devnet)
141+
- Node.js 18+
151142

152-
### Local Development
143+
### Build Program
153144
```bash
154-
cd client && npm install && npm run dev
145+
anchor build
155146
```
156147

157-
### Deploy
148+
### Run Tests
158149
```bash
159-
# Build + deploy frontend
160-
cd client && npm run build
161-
npx wrangler pages deploy dist --project-name taskforest
150+
anchor test
151+
```
152+
153+
### Deploy to Devnet
154+
```bash
155+
./scripts/deploy-devnet.sh
156+
```
157+
Requires `.env` with `HELIUS_API_KEY` and `HELIUS_DEVNET_RPC`.
162158

163-
# Build + deploy program
164-
anchor build && anchor deploy --provider.cluster devnet
159+
### Build SDK
160+
```bash
161+
cd sdk && npm install && npm run build
165162
```
166163

167164
---
168165

166+
## Tech Stack
167+
168+
- **On-Chain**: Anchor 0.32 (Rust) on Solana
169+
- **Ephemeral Rollups**: MagicBlock SDK for delegation + gasless bidding
170+
- **ZK Compression**: Light Protocol v2 for compressed accounts
171+
- **SDK**: TypeScript, `@coral-xyz/anchor`, `@solana/web3.js`
172+
173+
---
174+
169175
## License
170176

171177
MIT

scripts/deploy-devnet.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ echo "5. Verifying deployment..."
5454
solana program show $(anchor keys list | awk '{print $2}') --url "$HELIUS_RPC"
5555

5656
echo ""
57-
echo "=== Deploy Complete ==="
57+
echo "=== Deploy Complete ==="
5858
echo ""
5959
echo "Run ER integration test:"
60-
echo " ANCHOR_PROVIDER_URL=$HELIUS_RPC ANCHOR_WALLET=$WALLET npx ts-mocha -p ./tsconfig.json -t 120000 tests/er-devnet.ts"
60+
echo " ANCHOR_PROVIDER_URL=\$HELIUS_DEVNET_RPC ANCHOR_WALLET=keys/taskforest.json npx ts-mocha -p ./tsconfig.json -t 120000 tests/er-devnet.ts"

0 commit comments

Comments
 (0)