# 🧩 HMP Container Specification (v1.2-draft) > Π”Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» являСтся `Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΎΠΉ` для [пятой вСрсии ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° HMP](HMP-0005.md) ## 1. НазначСниС Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ описываСт ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ **ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° HMP**, примСняСмый для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈ хранСния всСх Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ сСти HyperCortex Mesh Protocol. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ слуТат стандартной ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ для сообщСний, Ρ†Π΅Π»Π΅ΠΉ, Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… сущностСй. Единая структура ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° обСспСчиваСт: * ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ; * Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ Π±Π΅Π· измСнСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°; * Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ криптографичСской подписи ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности; * нСзависимоС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ смысловых Π±Π»ΠΎΠΊΠΎΠ². --- ## 2. ΠžΠ±Ρ‰Π°Ρ структура ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ```json { "hmp_container": { "version": "1.2", "class": "goal" | "reputation" | "knowledge_node" | "ethics_case" | "protocol_goal" | ..., "class_version": "1.0", "class_id": "goal-v1.0", "container_did": "did:hmp:container:abc123", "schema": "https://mesh.hypercortex.ai/schemas/container-v1.json", "sender_did": "did:hmp:agent123", "public_key": "BASE58(...)", "recipient": ["did:hmp:agent456", "did:hmp:agent789"], "broadcast": false, "tags": ["research", "collaboration"], "timestamp": "2025-10-10T15:32:00Z", "ttl": "2025-11-10T00:00:00Z", "sig_algo": "ed25519", "signature": "BASE64URL(...)", "compression": "zstd", "payload_type": "json", "payload_hash": "sha256:abcd...", "payload": { /* Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ зависит ΠΎΡ‚ class */ }, "related": { "previous_version": "did:hmp:container:abc122", "in_reply_to": "did:hmp:container:msg-77", "see_also": ["did:hmp:container:ctx-31", "did:hmp:container:goal-953"] }, "relations": [ { "type": "depends_on", "target": "did:hmp:container:goal-953" } ], "magnet_uri": "magnet:?xt=urn:sha256:abcd1234..." } } ``` --- ## 3. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля | ПолС | Π’ΠΈΠΏ | НазначСниС | | --------------- | -------- | ------------------------------------------------------------------------------------------------- | | `version` | string | ВСрсия спСцификации ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° | | `class` | string | Π’ΠΈΠΏ содСрТимого (`goal`, `reputation`, `knowledge_node`, `ethics_case`, `protocol_goal` ΠΈ Ρ‚.ΠΏ.) | | `class_version` | string | ВСрсия ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса | | `class_id` | string | Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ класса (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ формируСтся ΠΊΠ°ΠΊ `_v`) | | `container_did` | string | DID самого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `did:hmp:container:abc123`) | | `schema` | string | Бсылка Π½Π° JSON Schema, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ валидируСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ | | `sender_did` | string | DID-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ отправитСля | | `timestamp` | datetime | ВрСмя создания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° | | `payload_hash` | string | Π₯эш распакованной ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ | | `sig_algo` | string | Алгоритм Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ `ed25519`) | | `signature` | string | Цифровая подпись ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° | | `payload_type` | string | Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (`json`, `binary`, `mixed`) | | `payload` | object | ОсновноС содСрТимоС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° | --- ## 4. ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ поля | ПолС | Π’ΠΈΠΏ | ОписаниС | | -------------------------- | ------------- | ---------------------------------------------------------------------------- | | `recipient` | array(string) | Один ΠΈΠ»ΠΈ нСсколько DID-адрСсатов | | `broadcast` | bool | Π€Π»Π°Π³ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ рассылки (Ссли `true`, ΠΏΠΎΠ»Π΅ `recipient` игнорируСтся) | | `tags` | array(string) | ВСматичСскиС Ρ‚Π΅Π³ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° | | `ttl` | datetime | Π‘Ρ€ΠΎΠΊ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π΅ пСрСдаётся послС истСчСния) | | `public_key` | string | ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ отправитСля, Ссли Π½Π΅Ρ‚ глобальной привязки ΠΊ DID | | `compression` | string | Алгоритм сТатия ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (`zstd`, `gzip`) | | `magnet_uri` | string | Magnet-ссылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠΈΠ»ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° | | `related.previous_version` | string | Бсылка Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° | | `related.in_reply_to` | string | ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π½ ΠΎΡ‚Π²Π΅Ρ‚ | | `related.see_also` | array(string) | Бписок связанных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ контСкста | | `relations` | array(object) | БСмантичСскиС связи Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ€ `{ "type": "...", "target": "..." }` | --- ## 5. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (`payload`) ПолСзная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° содСрТит ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’ΠΈΠΏ ΠΈ структура зависят ΠΎΡ‚ поля `class`. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ описания ΠΏΠΎΠ»Π΅ΠΉ: ``` - key: имя поля type: Ρ‚ΠΈΠΏ значСния (JSON | TXT | BOOL | INT | FLOAT | ARRAY) description: ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ required: true/false value: ΠΏΡ€ΠΈΠΌΠ΅Ρ€ значСния ``` **ΠŸΡ€ΠΈΠΌΠ΅Ρ€:** ``` - key: "title" type: "TXT" required: true description: "НазваниС Ρ†Π΅Π»ΠΈ" value: "Improve local agent discovery" - key: "priority" type: "FLOAT" required: false description: "Π’Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ" value: 0.82 - key: "dependencies" type: "JSON" required: false description: "Бписок зависимостСй Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ" value: ["goal-953", "goal-960"] ``` --- ## 6. Подпись ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° 1. ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ΡΡ **вСсь JSON-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ `hmp_container`**, ΠΊΡ€ΠΎΠΌΠ΅ поля `signature`. 2. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ed25519. 3. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ поля `public_key` ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подписи ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π±Π΅Π· обращСния ΠΊ глобальной Π±Π°Π·Π΅ DID. 4. АгСнт, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, обязан ΡΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ с извСстными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ DID-ΡƒΠ·Π»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρƒ ΠΊΠ»ΡŽΡ‡Π°. * Если Π°Π³Π΅Π½Ρ‚ Π½Π΅ Π·Π½Π°Π΅Ρ‚ отправитСля β€” ΠΎΠ½ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ опрос сосСдних ΡƒΠ·Π»ΠΎΠ² ΠΎ соотвСтствии `sender_did β†’ public_key`. --- ## 7. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ (`compression`) 1. ПолС `compression` ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сТатия ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. 2. Π‘ΠΆΠ°Ρ‚ΠΈΠ΅ выполняСтся **Π΄ΠΎ вычислСния `payload_hash` ΠΈ подписи**. 3. Для Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° полСзная Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ распакована, Π·Π°Ρ‚Π΅ΠΌ вычисляСтся Ρ…ΡΡˆ ΠΈ свСряСтся с `payload_hash`. --- ## 8. ВСрификация ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. 2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ `timestamp` (Π½Π΅ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ). 3. Если ΡƒΠΊΠ°Π·Π°Π½ΠΎ `ttl` β€” ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ считаСтся Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎ истСчСнии этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. 4. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ…ΡΡˆ: Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ `sha256(payload)` ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с `payload_hash`. 5. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ подпись ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Ed25519 (Ссли ΠΈΠ½ΠΎΠ΅ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² `sig_algo`). 6. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ схСмы (`class` Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ извСстным Ρ‚ΠΈΠΏΠΎΠΌ). * Для совмСстимости: Ссли Π°Π³Π΅Π½Ρ‚ Π½Π΅ распознаёт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ `class`, Π½ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π²Π°Π»ΠΈΠ΄Π΅Π½ ΠΏΠΎ [Π±Π°Π·ΠΎΠ²ΠΎΠΉ схСмС](https://github.com/kagvi13/HMP/tree/main/docs/schemas/container-v1.2.json), ΠΎΠ½ обязан ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Ρ€Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (Ρ€Π΅ΠΆΠΈΠΌ **store & forward**). 8. РСкомСндуСтся пСриодичСски ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π³Π΄Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Π½ ΠΊΠ°ΠΊ `previous_version` β€” для обнаруТСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ. 9. ΠŸΡ€ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… вСрсий β€” Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ считаСтся Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² (консСнсус Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ DHT). --- ## 9. ВСрсионированиС ΠΈ ΠΏΡ€Π΅Π΅ΠΌΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ связь ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»Π΅ `related.previous_version`. Для прСдотвращСния Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΉ: * ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ признаётся Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ссли подпись совпадаСт с DID ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π°Π²Ρ‚ΠΎΡ€Π°; * ΠΏΡ€ΠΈ расхоТдСнии подписи β€” трСбуСтся ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ β‰₯ β…” Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² сСти; * Π°Π³Π΅Π½Ρ‚Ρ‹ обязаны Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ хотя Π±Ρ‹ ΠΎΠ΄Π½Ρƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ для совмСстимости. --- ## 10. TTL ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ПолС `ttl` ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ-Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сообщСний DISCOVERY). Если `ttl` отсутствуСт β€” ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ считаСтся Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π΄ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΠΎΠΉ вСрсии (ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· `previous_version`). --- ## 11. Π Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ * Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ, Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ… с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. * ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΡΡ‚Π°Ρ€ΡˆΠΈΡ… вСрсий Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌΠΈ ΡƒΠ·Π»Π°ΠΌΠΈ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ младшиС. * ΠŸΡ€ΠΈ появлСнии Π½ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² классов (`class`) ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ зарСгистрированы Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ рССстрС схСм (`/schemas/container-types/`). * Для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… **спСцификации ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ²**, рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСфикс `protocol_`, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, `protocol_goal`, `protocol_reputation`, `protocol_mesh_handshake` ΠΈ Ρ‚.ΠΏ.). Π­Ρ‚ΠΎ позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ **описания ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ²** ΠΎΡ‚ **ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎ этим ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ**, ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΡ… Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π² рССстрС схСм. ---