Skip to content
Closed
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
5 changes: 2 additions & 3 deletions Developer/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@ git checkout develop

# Install dependencies and set up dincli in editable mode
pip install -e .

# See full setup guide
/Developer/DEVELOPMENT_SETUP.md
```

See the full [development setup guide](DEVELOPMENT_SETUP.md).

Create a feature branch, commit your changes, and open a pull request to `develop`.

Every PR is reviewed and merged by someone other than its author. [MAINTAINING.md](MAINTAINING.md) describes how review, merging, and issue/task closure work.
Expand Down
7 changes: 6 additions & 1 deletion Developer/GOOD_FIRST_ISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ Welcome to InfiniteZero Network DevNet. This is a live, open experiment in build

This document is your entry point for beginner-friendly contributions across federated learning, privacy-preserving systems, blockchain coordination, and developer tooling. Each detailed issue lives in `Developer/issues/`.

> [!NOTE]
> For the current list of beginner-friendly tasks, see the [good first issue label](https://github.com/InfiniteZeroFoundation/DevNet/issues?q=is%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22). This page gives background on two longer-running areas.

---

## What We're Building
Expand Down Expand Up @@ -40,7 +43,9 @@ Core components:

## Open Issues

### 0. Starter Task: Differential Privacy & Responsible AI Review
### 0. Starter Task: Differential Privacy & Responsible AI Review (completed)

**Status:** ✅ Completed in [PR #89](https://github.com/InfiniteZeroFoundation/DevNet/pull/89). The review is at [dp-mechanism-review.md](../Documentation/technical/audits/dp-mechanism-review.md); follow-up work is in the issues it links to.

**Difficulty:** Beginner (review/analysis, not implementation)
**Area:** Privacy-Preserving Federated Learning / AI Governance
Expand Down
2 changes: 1 addition & 1 deletion Developer/design/whitepaper-summary.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# DIN White Paper — Summary & Implementation Mapping

> **Source:** [Decentralized Intelligence Network (DIN)](https://github.com/InfiniteZeroFoundation/White-Paper/blob/main/Decentralized%20Intelligence%20Network%20(DIN).pdf.zip), Abraham Nash (23 pp., zip published Jun 2026).
> **Source:** [Decentralized Intelligence Network (DIN)](https://github.com/InfiniteZeroFoundation/White-Paper/blob/main/Decentralized%20Intelligence%20Network%20%28DIN%29.pdf), Abraham Nash (23 pp., published Jun 2026).
> **Purpose of this document:** working summary of the white paper for aligning ROADMAP.md, `Documentation/`, and `issues/` with the canonical protocol design. Section references (§) are to the white paper.

---
Expand Down
6 changes: 3 additions & 3 deletions Documentation/public/cli-reference.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# DIN CLI — Common Reference

The DIN CLI (`dincli`) is the primary command-line interface for interacting with the Decentralized Intelligence Network. It supports all participant roles: Clients, Auditors, Model Owners, Aggregators, and DAO administrators.
The DIN CLI (`dincli`) is the primary command-line interface for interacting with the Decentralized Intelligence Network. It supports all participant roles: Clients, Auditors, Model Owners, Aggregators, and the DIN-Representative.

---

Expand All @@ -10,7 +10,7 @@ These flags can be prepended to any command:

| Option | Description |
|---|---|
| `--network <network>` | Override the default network (`local`, `sepolia_devnet`, `sepolia_op_devnet`, `mainnet`) |
| `--network <network>` | Override the default network (`local`, `sepolia_op_devnet`) |
| `--help` | Display help for any command |

**Check CLI version:**
Expand All @@ -35,7 +35,7 @@ The `system` command group manages configuration, wallet connections, and genera
dincli system init
```

**Set the default network:** (`local`, `sepolia_devnet`, `sepolia_op_devnet`, `mainnet`)
**Set the default network:** (`local`, `sepolia_op_devnet`)

```bash
dincli system configure-network --network <network>
Expand Down
11 changes: 7 additions & 4 deletions Documentation/public/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
> Hit an error or get stuck anywhere in this guide? Post it in the
> [DevNet 2.0 pre-launch discussion](https://github.com/InfiniteZeroFoundation/DevNet/discussions/102).

> [!IMPORTANT]
> This guide follows the code on the `develop` branch, which is preparing DevNet 2.0. The live network today runs DevNet 1.0, which doesn't have the commit and reveal steps described below. This guide will be updated when DevNet 2.0 launches.

Welcome to the onboarding guide for **Model_0** on the Infinite Zero Network.

Planning a different model or dataset? Read [What can I train on DIN?](what-can-be-trained.md) to understand the tested reference, custom-service path, and practical limits.
Expand Down Expand Up @@ -59,7 +62,7 @@ It means:
# Current Status

* ✅ Global Iteration 1 completed
* 🔄 Global Iteration 2 in progress
* ⏸️ Global Iteration 2 stopped at registration; the next rounds will run on DevNet 2.0

---

Expand Down Expand Up @@ -89,13 +92,13 @@ Ethereum acts as the source of truth for:

### Core guarantee

The system is **fully verifiable end-to-end**:
The system is designed to be verifiable end to end:

- Ethereum enforces correctness, coordination, and finality
- IPFS ensures reproducible and distributed data availability
- Off-chain compute enables scalable ML execution

> 💡 Trust is shifted from participants to cryptographic and economic enforcement.
> 💡 The aim is to shift trust from participants to cryptographic and economic enforcement. The economic layer is still being built; see "Current Devnet Scope" below.

# 📦 Data Availability Layer (IPFS via Filebase)

Expand Down Expand Up @@ -187,7 +190,7 @@ Economic and reward distribution mechanisms are still under active development a
* Coordination
* Community support

https://t.me/+I4Tl7foCVwwwM2Vk
https://t.me/+h46VS3AnO384ZGI8

### Signal

Expand Down
8 changes: 4 additions & 4 deletions Documentation/public/manifest.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ For example:
```

> [!NOTE]
> If the manifest file is absent when the genesis setup (`dincli task model-owner create-genesis`) runs, it is automatically created with default values from the default manifest CID (`bafybeibbhrefnamky7vmgcrhfx4ptxb3bdemh5dtnvwfkpualoganvnuve`).
> If the manifest file is missing, `dincli model-owner model create-genesis-model` stops and asks you to run `dincli model-owner task cache-default-artifacts` first, which downloads the default manifest into your task folder.

---

Expand All @@ -39,7 +39,7 @@ For example:

| Field | Required | Description |
|---|---|---|
| `Genesis_Model_CID` | Yes | IPFS CID of the genesis model. Set after running `dincli model-owner model create-genesis` |
| `Genesis_Model_CID` | Yes | IPFS CID of the genesis model. Set after running `dincli model-owner model create-genesis-model` |
| `DINTaskCoordinator_Contract` | Yes | Address of the deployed TaskCoordinator contract |
| `DINTaskAuditor_Contract` | Yes | Address of the deployed TaskAuditor contract |
| `dp` | No | Nested Differential Privacy configuration block used by services at runtime |
Expand Down Expand Up @@ -118,8 +118,8 @@ Please find the example/template manifest file at [cache_model_0/manifest.json](

## Updating the Manifest

Once the model is registered and assigned a model ID, the manifest file should be updated with the `Model ID` field and re-uploaded to IPFS. The following dincli command can be used to update the model CID in the DINModelRegistry contract:
Once the model is registered and assigned a model ID, the manifest file should be updated with the `Model ID` field and re-uploaded to IPFS. To change the manifest recorded in the DINModelRegistry contract, submit a manifest update request. The DIN-Representative then reviews and approves it:

```bash
dincli task model-owner update-manifest <model_id> [--modelCID <model_cid>] [--manifestpath <manifest_path>]
dincli task model-owner update-manifest-request <model_id> [--manifestCID <manifest_cid>] [--manifestpath <manifest_path>]
```
2 changes: 1 addition & 1 deletion Documentation/public/roles/clients.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Clients contribute to the DIN network by training local models on their own data
> | Placeholder | Description | Example |
> |---|---|---|
> | `<CACHE_DIR>` | The DIN CLI cache directory | `~/.cache/dincli` |
> | `<network>` | The active network name | `local`, `sepolia_devnet`, `sepolia_op_devnet`, `mainnet` |
> | `<network>` | The active network name | `local`, `sepolia_op_devnet` |
> | `<model_id>` | The ID of the model you are participating in | `0` |
> | `<account_address>` | Your Ethereum wallet address | `0xAbC...123` |
>
Expand Down
35 changes: 18 additions & 17 deletions Documentation/public/roles/model-owner.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ dincli model-owner add-slasher --taskAuditor [--contract <task_coordinator_addre

### Protocol Fees

The DIN protocol charges fees to submit model registration and manifest update requests. Fees are held by the registry contract and can only be withdrawn by the DAO admin.
The DIN protocol charges fees to submit model registration and manifest update requests. Fees are held by the registry contract and can only be withdrawn by the DIN-Representative.

Fees apply regardless of whether the request is approved or rejected (spam protection).

Expand All @@ -57,7 +57,7 @@ Fees apply regardless of whether the request is approved or rejected (spam prote
View current fees:

```bash
dincli system get-fees
dincli system get-registry-fee
```

---
Expand All @@ -83,40 +83,41 @@ Model registration is a **two-step process**. The Model Owner submits a request;
Submit your model to the registry. Requires the registration fee (see [Protocol Fees](#protocol-fees) above).

```bash
# TODO
dincli model-owner registry request-registration \
--manifest <path_to_manifest_cid_bytes32> \
--task-coordinator <coordinator_address> \
--task-auditor <auditor_address> \
[--open-source]
dincli task model-owner register-request \
[--taskCoordinator <coordinator_address>] \
[--taskAuditor <auditor_address>] \
[--manifestCID <manifest_cid> | --manifestpath <path_to_manifest.json>] \
[--isOpenSource]
```

If you leave out the options, `dincli` uses the contract addresses in your `.env` file and uploads the manifest from your task folder. Add `--isOpenSource` for an open-source model.

On success you receive a **`requestId`**. Track it to monitor approval status.

### Step 2 — Wait for DAO Approval
### Step 2 — Wait for Approval

The DIN-Representative reviews your request and calls `approveModel(requestId)`. You will receive a **`modelId`** once approved.

Check the status of your request:

```bash
# TODO
dincli model-owner registry show-request <requestId>
dincli task model-owner show-registration-request <requestId>
```

To list all your requests, run `dincli task model-owner my-requests`.

> [!IMPORTANT]
> The coordinator and auditor contracts must remain registered slashers and still be owned by your address at the time the DAO approves. If either condition changes, the approval will revert and you must submit a new request.
> The coordinator and auditor contracts must remain registered slashers and still be owned by your address at the time the DIN-Representative approves. If either condition changes, the approval will revert and you must submit a new request.

### Updating a Manifest

Manifest updates also follow a request/approval flow. The model must not be disabled.

```bash
# TODO
dincli model-owner registry request-manifest-update <model_id> --manifest <new_manifest_cid_bytes32>
dincli task model-owner update-manifest-request <model_id> [--manifestCID <manifest_cid> | --manifestpath <path_to_manifest.json>]
```

The DAO reviews the request and calls `approveManifestUpdate(requestId)` to apply it.
The DIN-Representative reviews the request and calls `approveManifestUpdate(requestId)` to apply it.

---

Expand All @@ -131,7 +132,7 @@ Uploads the genesis model to IPFS.
> **Prerequisite** — `<NETWORK>_DINTaskCoordinator_Contract_Address` must be set in your `.env` file.

```bash
dincli model-owner model create-genesis
dincli model-owner model create-genesis-model
```

### Submit Genesis Model
Expand All @@ -143,7 +144,7 @@ Registers the genesis model on-chain.
> `<project_root>/tasks/<network>/task_<coordinator_address>/dataset/test/test_dataset.pt`

```bash
dincli model-owner model submit-genesis [--taskCoordinator <address>] [--ipfs-hash <hash>] [--score <score>]
dincli model-owner model submit-genesis-model [--taskCoordinator <address>] [--ipfs-hash <hash>] [--score <score>]
```

| Option | Required | Description |
Expand Down
8 changes: 4 additions & 4 deletions Documentation/public/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,16 +70,16 @@ Creates the required `config` and `cache` directories and generates an empty con
# Disable demo mode to use your own wallet and private keys
dincli system configure-demo --mode no

# Set the default network [local | sepolia_devnet | sepolia_op_devnet | mainnet]
# Set the default network [local | sepolia_op_devnet]
dincli system configure-network --network sepolia_op_devnet

> [!NOTE]
> Use `sepolia_op_devnet` for devnet. Testnet and Mainnet support will be rolled out in a future release.

# Set the log level [debug | info | warning | error | critical]
dincli system configure-logging --level info
```

> [!NOTE]
> Use `sepolia_op_devnet` for devnet. Testnet and Mainnet support will be rolled out in a future release.


## 5. Environment Variables (`.env`)

Expand Down
2 changes: 1 addition & 1 deletion Documentation/public/workflows/din-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

In this guide we will describe the workflow of the DIN Protocol.

DIN-Representative (later DIN-DAO) is an entity that is authorized to perform certain actions on behalf of the DIN Protocol.
DIN-Representative is an entity that is authorized to perform certain actions on behalf of the DIN Protocol.

DIN-Representative has deployed the following DIN Protocol contracts on Sepolia-Optimism testnet as part of DIN-devnet:

Expand Down
16 changes: 8 additions & 8 deletions Documentation/public/workflows/model-workflow.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ In this guide we will describe the workflow of the DIN Protocol for a model.
In Model Workflow there are 5 main entities:

1. Model-Owner
2. DIN-Representative (later DIN-DAO)
2. DIN-Representative
3. Auditors
4. Aggregators
5. Clients (Model-Trainees)
Expand Down Expand Up @@ -175,15 +175,15 @@ Model Owner creates and submits the genesis model to the TaskCoordinator contrac
The following dincli command is used to create the genesis model:

```bash
dincli model-owner model create-genesis
dincli model-owner model create-genesis-model
```

> make sure that the manifest.json file is present at `<root_dir>/tasks/sepolia_op_devnet/<task_coordinator_contract_address>/manifest.json` before running the above command. The above dincli command will use `getGenesisModelIpfs` in `modelowner.py` service to create the genesis model and upload it to IPFS and store the IPFS CID in the .env file as `SEPOLIA_OP_DEVNET_<TASK_COORDINATOR_CONTRACT_ADDRESS>_GENESIS_MODEL_IPFS_HASH`. Please note that dincli can automatically fetch the service from IPFS using the coressponding entry for `getGenesisModelIpfs` in the manifest.json file.

The model owner can submit the genesis model to the TaskCoordinator contract using the following dincli command:

```bash
dincli model-owner model submit-genesis
dincli model-owner model submit-genesis-model
```

> make sure that the appropriate test dataset for the model is available at `<root_dir>/tasks/sepolia_op_devnet/<task_coordinator_contract_address>/dataset/test/test_dataset.pt` before running the above command. The test dataset will be used to evaluate the genesis model and calculate the score. This score will set the threshold range for the final eligibility of local models.
Expand All @@ -192,18 +192,18 @@ dincli model-owner model submit-genesis

## 8. Register Model - Model Owner

Model Owner updates the manisfest file at`<root_dir>/tasks/sepolia_op_devnet/<task_coordinator_contract_address>/manifest.json`, specially the `Genesis_Model_CID`, `DINTaskCoordinator_Contract`, and `DINTaskAuditor_Contract` fields with the IPFS CID of the genesis model, DINTaskCoordinator contract address and DINTaskAuditor contract address respectively.
Model Owner updates the manifest file at `<root_dir>/tasks/sepolia_op_devnet/<task_coordinator_contract_address>/manifest.json`, especially the `Genesis_Model_CID`, `DINTaskCoordinator_Contract`, and `DINTaskAuditor_Contract` fields with the IPFS CID of the genesis model, DINTaskCoordinator contract address and DINTaskAuditor contract address respectively.

Model Owner then register the model with the DIN Protocolat DINModelRegistry contract using the following dincli command:
The Model Owner then submits a registration request to the DINModelRegistry contract with the following command (add `--isOpenSource` for an open-source model). The DIN-Representative reviews and approves it:

```bash
dincli task model-owner register --isOpenSource [true/false]
dincli task model-owner register-request [--isOpenSource]
```

Once the model is registered, the model is assigned a model ID. The manifest file may be updated with the model id field `Model ID` and uploaded to IPFS again. Other fields in manifest file can also be updated as per requirement. The following dincli command can be used to update the model CID in DINModelRegistry contract:
Once the model is registered, the model is assigned a model ID. The manifest file may be updated with the model id field `Model ID` and uploaded to IPFS again. Other fields in manifest file can also be updated as per requirement. To change the manifest recorded in the DINModelRegistry contract, submit a manifest update request, which the DIN-Representative then approves:

```bash
dincli task model-owner update-manifest <model_id> [--modelCID <model_cid>] [--manifestpath <manifest_path>]
dincli task model-owner update-manifest-request <model_id> [--manifestCID <manifest_cid>] [--manifestpath <manifest_path>]
```

## 9. Start Global Iteration (GI) - Model Owner
Expand Down
Loading