Skip to content
Merged
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
11 changes: 4 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,9 @@ its own history; what is recorded here from now on is the protocol.

## [Unreleased]

### Changed

- **The mainnet preflight accepts a fee cap between the current gas price and twice the base fee.** It used to require `maxFeePerGas` of at least twice the base fee plus the priority fee, so the balance had to cover the whole deployment at that price even when the current price was far lower. Now it fails only when the cap is below the current price, and reports a warning when the cap is below the conservative value, because a creation may then wait for the price to fall. The deployment script and the approved release bundle are unchanged.
## [0.7] - 2026-09-25

## [0.7] - 2026-09-24 — pre-release

**The 0.7 line, redesigned before its first deployment, and still not deployed.** The registry published as the 0.7 pre-release is replaced by a core that records registration facts and nothing else, plus nine satellites; the current ABI generation is `0.7-redesign-8`. There is no mainnet deployment and no contract address. No independent audit covers `0.7-redesign-8`: the sealed audit package describes `0.7-redesign-6` and certifies neither later generation. The project owner approved the `0.7-redesign-8` release bundle on 2026-09-24 (`sha256:7392c821…a414d7`). This version will be dated on the day of its Polygon mainnet deployment.
**The 0.7 line, redesigned before its first deployment and deployed on Polygon mainnet on 2026-09-25.** The registry published as the 0.7 pre-release is replaced by a core that records registration facts and nothing else, plus nine satellites; the ABI generation is `0.7-redesign-8`. It was deployed from the release bundle the project owner approved on 2026-09-24 (`sha256:7392c821…a414d7`), and the generation `odp-0.7-redesign-8-polygon-20260925` was approved on the day of deployment; the registry is [`0x3281492981DCD492cc2F7c17398134e1D3B5CA1F`](https://polygonscan.com/address/0x3281492981DCD492cc2F7c17398134e1D3B5CA1F), and all ten addresses are in [`SPEC.md` §7](SPEC.md). No independent audit covers `0.7-redesign-8`: the sealed audit package describes `0.7-redesign-6` and certifies neither later generation.

### Added

Expand All @@ -41,6 +37,7 @@ its own history; what is recorded here from now on is the protocol.

### Changed

- **The mainnet preflight accepts a fee cap between the current gas price and twice the base fee.** It used to require `maxFeePerGas` of at least twice the base fee plus the priority fee, so the balance had to cover the whole deployment at that price even when the current price was far lower. Now it fails only when the cap is below the current price, and reports a warning when the cap is below the conservative value, because a creation may then wait for the price to fall. The deployment script and the approved release bundle are unchanged.
- **Every issuer must publish its profile ID, and the multisig month warning has a number.** Publishing the profile ID and the full wallet address on a channel the issuer controls was a recommendation; it is now required of every issuer, and organizations (`B`, `P`, `M`) must also serve `/.well-known/odp.json` ([`SPEC.md` §3](SPEC.md)). The registry cannot enforce it, so an unpublished profile is simply unidentified. A client warns when a Safe mint or proof proposal is created less than 24 hours before the end of the UTC month (CA-5.8). The example deployment spend policy again carries a 25 % margin over the measured `0.7-redesign-8` deployment gas: 3 500 000 for the core and 1 780 000 for the statement journal.

- **Contract-wallet issuers can prove their wallet, and the identity file names its format and wallet.** The off-chain creator wallet proof now accepts ERC-1271 `isValidSignature` for issuers registered to a Safe or another contract wallet, with the block of the check recorded ([`SPEC.md` §11](SPEC.md)). `/.well-known/odp.json` carries `"odp": 1` and an optional full `wallet` per profile, matching the [ODP Profile Directory format](https://github.com/object-digital-passport/odp-profile-directory); a listed wallet that differs from the registry does not count. Edition master seeds MAY also be backed up on paper as SLIP-39 shares next to the `.odpsecret` file (CA-7.7), and large print runs SHOULD use an ISO 14298 printer (CA-7.8). The ESPR article references in §18.0 were checked against the Official Journal text.
Expand Down Expand Up @@ -93,7 +90,7 @@ its own history; what is recorded here from now on is the protocol.
- **The 0.7 registry was audited before it could ship, and every finding is backed by a test.** The audit made 36 findings, 4 of them critical: `tx.origin` substitution behind the extension router; a unit-key signature that did not cover the card; a governance-named `editionUnits` address that could mint under any profile and remove any passport's revocation remedy; and a relations satellite that, by simply lying, granted mint-agent and publishing rights. Each finding has an executable proof of concept. All four critical findings were closed by removing the code that contained them, and the rest were answered by satellite, specification and client work. Reports and evidence are under `review/`.
- **A usage-safety review of how people will actually hold keys, print labels and hand objects over.** Each of its 19 items has a decision recorded in `review/usage-safety-abi6/CLOSURE.md`, including the 2026-09-24 revision, and the decisions are normative in SPEC §22. None of this is implemented or accepted in a client application yet.
- **A logic recheck of `0.7-redesign-7` (2026-09-24) found no defect in the contracts** and matched them against SPEC §2–§8, §13 and §20. Its main operational finding, the UTC month boundary for multisignature proposals, is now a client rule (CA-5.8–5.10). Two lower findings remain notes for client work: pending affiliation requests never expire, and self-declared `P`/`M` profiles have no issuance limit. Slither was not run on the redesigned contracts.
- **What is not covered yet:** no independent audit of `0.7-redesign-8`; the sealed audit package describes `0.7-redesign-6` only; the `0.7-redesign-8` release bundle is approved, but nothing has been deployed.
- **What is not covered yet:** no independent audit of `0.7-redesign-8`; the sealed audit package describes `0.7-redesign-6` only; the contracts are deployed and their source code is not yet verified on Polygonscan.

## [0.7-preview] - 2026-08-22 — pre-release

Expand Down
2 changes: 1 addition & 1 deletion ODP_07_ABI6_DOCUMENTATION_DELTA.md
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ physical `dataHash` `0x4dafcd…975e` → `0xcecd76bc…10d7`, mixed `0xc23a77
| §22.19, CA-19.1–19.11 | Копия делается только при решении опубликовать фото; превью именно копии перед публикацией; копия в `.odpass`; публикация `.odpass` без копии; IPFS-адрес из хеша (CIDv1, raw, sha2-256, один блок ≤ 1 МиБ); несколько адресов в `ODPHosting`; несколько шлюзов и проверка по хешу; загрузка после подтверждения mint; три способа оплаты (бесплатный лимит, POL из кошелька пользователя, спонсор) без продаж и секретов в приложении; приватность. |
| §22.20, CA-20.1–20.6 | Кошелёк только через WalletConnect; спонсор газа в 0.7 только пополняет адрес POL; «Запросить POL» на адрес приёма спонсора с подписью `personal_sign`; запасной путь через меню «Поделиться»; что видит спонсор; relayer отложен. |
| §22.5, CA-5.8–5.10; §22.6, CA-6.6 | Граница UTC-месяца для Safe-предложений mint и `submitProof`: предупреждение, статус «неисполнимо» (Safe 1.4.1, `GS013`, nonce не расходуется), отклоняющая транзакция с тем же nonce, переподготовка с тем же `operationId`; риск не успеть к 24-часовому окну отзыва. Основание — `review/logic-recheck-abi7/REPORT.ru.md`, п. 2. |
| §7, §21.2 | Amoy не используется (решение владельца 2026-09-24). Deployment не выполнялся, адресов нет. Бандлы ABI6 и ABI7 текущие исходники не описывают. |
| §7, §21.2 | Amoy не используется (решение владельца 2026-09-24). Поколение развёрнуто в Polygon mainnet 2026-09-25 и утверждено; адреса в §7 и `chain/generations.json`. Бандлы ABI6 и ABI7 текущие исходники не описывают. |

`ODPHosting.sol` проверен на совместимость с несколькими адресами в одном поле: контракт ограничивает только
длину (`EC(138)` при > 512 байт) и строку не разбирает, так что список через пробел допустим без изменения кода.
Expand Down
10 changes: 5 additions & 5 deletions ODP_07_APP_CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
6. QR бывает двух видов: `odp://<id>` и ссылка издателя `https://…?odp=<id>` со строгим разбором.
7. Перед пятью необратимыми действиями обязательны отдельные экраны-предупреждения.
8. Для мультиподписи учитывается граница UTC-месяца.
9. Сеть — только Polygon mainnet (137). Deployment не выполнен, адресов нет.
9. Сеть — только Polygon mainnet (137). Поколение `odp-0.7-redesign-8-polygon-20260925` развёрнуто 2026-09-25 и утверждено; адреса — SPEC §7 и `chain/generations.json`.

Всё, что было в [ODP_07_APP_HANDOFF.md](ODP_07_APP_HANDOFF.md) для `0.7-redesign-7` (прямой выпуск с
`operationId`, удалённый stop профиля, окна отзыва 72/24 часа, фиксация печати, журнал утверждений,
Expand Down Expand Up @@ -63,14 +63,14 @@

**Состояние на 2026-09-24.** Вся линия 0.7 слита в `main` спецификации (PR #158, коммит `cf3213d`) и выпущена
пред-релизом `v0.7`. Бандл ABI `0.7-redesign-8` утверждён владельцем (`sha256:7392c821…a414d7`,
`review/v07-abi8-release/`). Деплоя в Polygon mainnet ещё нет, адресов нет. Номера требований ниже сверены с `SPEC.md`:
`review/v07-abi8-release/`). **Развёрнуто в Polygon mainnet 2026-09-25**, реестр `0x3281492981DCD492cc2F7c17398134e1D3B5CA1F`, все 10 адресов и хеши runtime — `chain/generations.json` и SPEC §7. Номера требований ниже сверены с `SPEC.md`:
хранение фото — §22.19 (CA-19.1–19.11), кошелёк и спонсор — §22.20 (CA-20.1–20.6), граница месяца для Safe —
CA-5.8–5.10 и CA-6.6, предупреждения — §22.18 (CA-18.1–18.7). Русский перевод SPEC — `docs/ru/SPEC.md`.
Исследования, на которые ссылается документ, лежат в `review/research-0.7/`.

### Что блокирует релиз

1. Нет утверждённого deployment `redesign-8` на Polygon 137. Пока его нет, `CreatorRegistryPolicy.approvedDeployment` остаётся `nil`, и запись в сеть невозможна. Это правильно.
1. Поколение `redesign-8` развёрнуто и утверждено (2026-09-25), но приложение его ещё не знает: `CreatorRegistryPolicy.approvedDeployment` = `nil`. Включать запись в сеть только после пунктов 2–8, иначе приложение будет выпускать паспорта со старым кодировщиком.
2. Кодировщики и декодеры приложения не соответствуют ABI (раздел 1).
3. Журнал выпуска без `operationId` (раздел 2).
4. Нет экранов-предупреждений CA-18 (раздел 8).
Expand Down Expand Up @@ -480,13 +480,13 @@ Mock `.well-known`: совпадение, поддомен, look-alike доме
**Требование.** SPEC §7, §22.12, CA-12.1–12.4.

1. Встроить одно поколение: chainId 137, реестр и все спутники. Принимать только его.
2. Deployment ещё не выполнен, адресов нет. `CreatorRegistryPolicy.approvedDeployment` остаётся `nil`, пока нет утверждённого поколения `redesign-8` с адресами в `chain/generations.json`.
2. Поколение развёрнуто и утверждено (`chain/generations.json`, запись `approvedGenerations[0]`). `CreatorRegistryPolicy.approvedDeployment` нужно заполнить из этой записи — реестр, все спутники, хеши runtime, блоки — и принимать только её (CA-12.1). Адреса 0.6 и старой 0.7 не подставлять.
3. Не подставлять адрес 0.6 из `ODPChain.contract` (`0x012aC639…`) и старые адреса 0.7.
4. Адреса из архива, QR или ссылки только сравниваются со встроенными. Чужая сеть или реестр — «не паспорт ODP / не проверено».

**Где в коде.** `CreatorRegistryPolicy.swift`, `swift-core/Sources/ODPCore/Chain/ODPChain.swift`, `WalletConnectSender` в `TransactionSender.swift` (по умолчанию берёт `ODPChain.contract`).

**Как проверить.** Без `approvedDeployment` регистрация, выпуск и публикация честно пишут «Реестр ODP 0.7 ещё не подключён». Тест с фиктивным поколением на локальном узле проходит весь путь.
**Как проверить.** Значения в `approvedDeployment` побайтно совпадают с `chain/generations.json`. Без него регистрация, выпуск и публикация честно пишут «Реестр ODP 0.7 ещё не подключён». Тест с фиктивным поколением на локальном узле проходит весь путь, затем один ручной выпуск на mainnet тестовым профилем владельца.

---

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
> Current ABI is `0.7-redesign-8`: [post-audit-package delta](ODP_07_ABI6_DOCUMENTATION_DELTA.md) (Russian), [documentation index](docs/README.md), [glossary](docs/GLOSSARY.md). The sealed audit handoff describes the earlier `0.7-redesign-6` and does not certify this ABI; the owner approved the `0.7-redesign-8` [release bundle](review/v07-abi8-release/README.md) on 2026-09-24. Target: Polygon mainnet (137); Amoy is not used and nothing is deployed. Current authorization prohibits wallet connection, external-network access, deployment and publication.
> Current ABI is `0.7-redesign-8`: [post-audit-package delta](ODP_07_ABI6_DOCUMENTATION_DELTA.md) (Russian), [documentation index](docs/README.md), [glossary](docs/GLOSSARY.md). The sealed audit handoff describes the earlier `0.7-redesign-6` and does not certify this ABI; the owner approved the `0.7-redesign-8` [release bundle](review/v07-abi8-release/README.md) on 2026-09-24. Polygon mainnet (137): deployed on Polygon mainnet on 2026-09-25 (registry `0x3281492981DCD492cc2F7c17398134e1D3B5CA1F`, all addresses in SPEC §7). Amoy is not used. Current authorization prohibits wallet connection, external-network access, deployment and publication.

# Object Digital Passport

Expand Down
2 changes: 1 addition & 1 deletion README.ru.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
> Текущая ABI — `0.7-redesign-8`: [дельта после аудиторского пакета](ODP_07_ABI6_DOCUMENTATION_DELTA.md), [индекс](docs/ru/README-docs.md), [глоссарий](docs/ru/GLOSSARY.md). Запечатанный пакет описывает прежнюю `0.7-redesign-6` и эту ABI не подтверждает; [release-бандл](review/v07-abi8-release/README.md) `0.7-redesign-8` владелец утвердил 2026-09-24. Цель — Polygon mainnet (137), Amoy не используется, ничего не развёрнуто. Сейчас запрещены подключение кошелька, внешняя сеть, deployment и публикация.
> Текущая ABI — `0.7-redesign-8`: [дельта после аудиторского пакета](ODP_07_ABI6_DOCUMENTATION_DELTA.md), [индекс](docs/ru/README-docs.md), [глоссарий](docs/ru/GLOSSARY.md). Запечатанный пакет описывает прежнюю `0.7-redesign-6` и эту ABI не подтверждает; [release-бандл](review/v07-abi8-release/README.md) `0.7-redesign-8` владелец утвердил 2026-09-24. Polygon mainnet (137): развёрнуто в Polygon mainnet 2026-09-25 (реестр `0x3281492981DCD492cc2F7c17398134e1D3B5CA1F`, все адреса — SPEC §7). Amoy не используется. Сейчас запрещены подключение кошелька, внешняя сеть, deployment и публикация.

# Object Digital Passport

Expand Down
Loading
Loading