diff --git a/Developer/CONTRIBUTING.md b/Developer/CONTRIBUTING.md index b92e17c1..aa34ded0 100644 --- a/Developer/CONTRIBUTING.md +++ b/Developer/CONTRIBUTING.md @@ -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. diff --git a/Developer/GOOD_FIRST_ISSUES.md b/Developer/GOOD_FIRST_ISSUES.md index d2e8d910..b2cbcf8c 100644 --- a/Developer/GOOD_FIRST_ISSUES.md +++ b/Developer/GOOD_FIRST_ISSUES.md @@ -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 @@ -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 diff --git a/Developer/design/whitepaper-summary.md b/Developer/design/whitepaper-summary.md index 94c440cc..e6a60e08 100644 --- a/Developer/design/whitepaper-summary.md +++ b/Developer/design/whitepaper-summary.md @@ -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. --- diff --git a/Documentation/public/cli-reference.md b/Documentation/public/cli-reference.md index 38124189..bfe94a69 100644 --- a/Documentation/public/cli-reference.md +++ b/Documentation/public/cli-reference.md @@ -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. --- @@ -10,7 +10,7 @@ These flags can be prepended to any command: | Option | Description | |---|---| -| `--network ` | Override the default network (`local`, `sepolia_devnet`, `sepolia_op_devnet`, `mainnet`) | +| `--network ` | Override the default network (`local`, `sepolia_op_devnet`) | | `--help` | Display help for any command | **Check CLI version:** @@ -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 diff --git a/Documentation/public/getting-started.md b/Documentation/public/getting-started.md index acc9abc5..bc4a15a6 100644 --- a/Documentation/public/getting-started.md +++ b/Documentation/public/getting-started.md @@ -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. @@ -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 --- @@ -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) @@ -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 diff --git a/Documentation/public/manifest.md b/Documentation/public/manifest.md index 83f62f13..be81b9f5 100644 --- a/Documentation/public/manifest.md +++ b/Documentation/public/manifest.md @@ -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. --- @@ -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 | @@ -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 [--modelCID ] [--manifestpath ] +dincli task model-owner update-manifest-request [--manifestCID ] [--manifestpath ] ``` diff --git a/Documentation/public/roles/clients.md b/Documentation/public/roles/clients.md index 181f04aa..f2805fbf 100644 --- a/Documentation/public/roles/clients.md +++ b/Documentation/public/roles/clients.md @@ -16,7 +16,7 @@ Clients contribute to the DIN network by training local models on their own data > | Placeholder | Description | Example | > |---|---|---| > | `` | The DIN CLI cache directory | `~/.cache/dincli` | -> | `` | The active network name | `local`, `sepolia_devnet`, `sepolia_op_devnet`, `mainnet` | +> | `` | The active network name | `local`, `sepolia_op_devnet` | > | `` | The ID of the model you are participating in | `0` | > | `` | Your Ethereum wallet address | `0xAbC...123` | > diff --git a/Documentation/public/roles/model-owner.md b/Documentation/public/roles/model-owner.md index 1110d593..b1e2789f 100644 --- a/Documentation/public/roles/model-owner.md +++ b/Documentation/public/roles/model-owner.md @@ -45,7 +45,7 @@ dincli model-owner add-slasher --taskAuditor [--contract \ - --task-coordinator \ - --task-auditor \ - [--open-source] +dincli task model-owner register-request \ + [--taskCoordinator ] \ + [--taskAuditor ] \ + [--manifestCID | --manifestpath ] \ + [--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 +dincli task model-owner show-registration-request ``` +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 --manifest +dincli task model-owner update-manifest-request [--manifestCID | --manifestpath ] ``` -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. --- @@ -131,7 +132,7 @@ Uploads the genesis model to IPFS. > **Prerequisite** — `_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 @@ -143,7 +144,7 @@ Registers the genesis model on-chain. > `/tasks//task_/dataset/test/test_dataset.pt` ```bash -dincli model-owner model submit-genesis [--taskCoordinator
] [--ipfs-hash ] [--score ] +dincli model-owner model submit-genesis-model [--taskCoordinator
] [--ipfs-hash ] [--score ] ``` | Option | Required | Description | diff --git a/Documentation/public/setup.md b/Documentation/public/setup.md index 0faaa54a..9e95969b 100644 --- a/Documentation/public/setup.md +++ b/Documentation/public/setup.md @@ -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`) diff --git a/Documentation/public/workflows/din-workflow.md b/Documentation/public/workflows/din-workflow.md index 375ee6ed..e0128237 100644 --- a/Documentation/public/workflows/din-workflow.md +++ b/Documentation/public/workflows/din-workflow.md @@ -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: diff --git a/Documentation/public/workflows/model-workflow.md b/Documentation/public/workflows/model-workflow.md index affdd3c0..2a454c2c 100644 --- a/Documentation/public/workflows/model-workflow.md +++ b/Documentation/public/workflows/model-workflow.md @@ -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) @@ -175,7 +175,7 @@ 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 `/tasks/sepolia_op_devnet//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__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. @@ -183,7 +183,7 @@ dincli model-owner model create-genesis 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 `/tasks/sepolia_op_devnet//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. @@ -192,18 +192,18 @@ dincli model-owner model submit-genesis ## 8. Register Model - Model Owner -Model Owner updates the manisfest file at`/tasks/sepolia_op_devnet//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 `/tasks/sepolia_op_devnet//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 [--modelCID ] [--manifestpath ] +dincli task model-owner update-manifest-request [--manifestCID ] [--manifestpath ] ``` ## 9. Start Global Iteration (GI) - Model Owner