Publish capsules: anyone can run a marketplace, ElastOS-signed ones are trusted by default
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Start by reading related issues #500 and #281, then inspect the existing elastos publishing and model catalog flows mentioned in the issue. The issue leaves the capsule identity hash unresolved and describes changes across packaging, signing, catalogs, trust, hosting, updates, withdrawal, templates, and documentation. Done means completing the end-to-end acceptance scenarios listed in the issue, including publishing and installing a capsule from another Home.
由索引模型根据 Issue 内容生成。
描述
Problem
A developer can make and sign a capsule, but elastos publish only stores it on their own Home (#500), and Marketplace trusts only the ElastOS release. Nobody outside the release can offer a game, a document, media or an app to other Homes.
Direction (Anders, 3 Nov 2026)
Everyone can create their own marketplace. Marketplaces signed by ElastOS are trusted by default.
Model
- Package: a capsule folder becomes one bundle named by its hash. Which hash form becomes the identity is settled here, after the reproducibility tests.
- Sign: the publisher signs a record outside the bundle: "this hash is my capsule X, version Y", with their own DID key. Several publishers or reviewers can vouch for the same hash.
- A marketplace is a signed catalog: a list of records with size, description and icon, signed by whoever runs that marketplace, carrying its name bound to its DID. It uses the same shape as the model catalog, so there is one catalog format.
- Trust: every Home trusts the ElastOS catalogs by default. Any other marketplace is added only by the owner, with approval in Inbox that shows its name, DID and where the link came from. Marketplace labels each item with who signed it and whether that marketplace is trusted by ElastOS. The ElastOS catalog can list marketplaces it vouches for. The owner can remove any added marketplace.
- Names belong to their publisher (publisher plus name), so two publishers can ship apps with the same name. A game names its player by hash or through a trusted catalog.
- Hosting: bytes come over Carrier from any Home that holds them and announces it, as model packages do (#281). The catalog says whether an item is held only by its publisher or replicated.
- Updates are new records from the same publisher with a higher version. The Home offers them, asks again in Inbox when permissions or the player change, and never replaces bytes silently.
- Withdrawal: a publisher can withdraw a record, and an ElastOS block list stops a harmful hash in every marketplace. A Home refuses to launch a withdrawn or blocked hash and tells the owner.
- Tools: the
elastoscommand works without a repository checkout:pack,sign(DID record),catalog add|withdraw|publish, plus templates (a game for the GBA Emulator, a document or media item, a web app shown in Home) and a guide. These replace the current manifest signature, rawtrusted_keys, theelastos.component/v1scaffold and the old templates.
Done means
- Someone outside the release packs, signs and publishes a free content capsule (a game for the GBA Emulator) into their own marketplace from a fresh install, following the guide.
- Another Home adds that marketplace (Inbox approval shows name, DID and source), sees the item labelled as not trusted by ElastOS, gets it, opens it, and removes the marketplace again.
- An item in the ElastOS catalog shows as trusted and installs with no extra approval step beyond Get.
- Same name from two publishers: both install, neither replaces the other.
- Update with changed permissions asks again; withdrawal and the ElastOS block list stop a launch with a clear message.
- The item is fetched from a holder other than the publisher while the publisher's Home is offline.
- Old signing paths and templates removed; docs updated.
Out of scope
Paid items (licences, protected media #388, paid services) and apps from other publishers that run code (they wait for confined workers, #471, #173).
Related
#333 (Get and Remove for release items, 2.1.0), #465, #274, #213, #281, #500, #285, #171, #192 (closed; its naming, update and revocation Done means are carried here).
- 主要语言
- Rust
- 星标
- 6
- 派生
- 2
- 平均合并
- 1 天 3 小时
- 30 天内合并 PR
- 42
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
elastos/elastos-runtime 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
elastos/elastos-runtime#563 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
elastos/elastos-runtime#508 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
elastos/elastos-runtime#436 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
elastos/elastos-runtime#427 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
elastos/elastos-runtime#405 ·
维护者通常 1 天内回复
查看 elastos/elastos-runtime 的全部 Issue
相似的 Issue
-
Unit tests use deprecated constant (part 2)可能已有人在做 @servo-highfive 今天认领。 未关闭E-less-complex
难度 1/5 1 小时以内 新手友好度 84/100
维护者通常 1 天内回复
-
bug good first issue help wanted linux macos testing
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 1 天内回复
-
area: app type: test
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 1 天内回复
-
bug priority: medium
难度 2/5 1-3 小时 新手友好度 78/100
storytold/photocraft#12706 · 1 条评论 ·
维护者通常 1 天内回复
-
bug priority-low to-agent
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复