Files
dao-os-docs/zh/ecosystem/app_bazaar.html
2025-06-11 05:35:32 +00:00

260 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE HTML>
<html lang="en" class="light sidebar-visible" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>应用集市 - 大道 (Dao OS) 文档</title>
<!-- Custom HTML head -->
<meta name="description" content="大道Dao OS官方文档你的赛博生命操作系统。">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../css/variables.css">
<link rel="stylesheet" href="../css/general.css">
<link rel="stylesheet" href="../css/chrome.css">
<link rel="stylesheet" href="../css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" id="highlight-css" href="../highlight.css">
<link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
<link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">
<!-- Custom theme stylesheets -->
<!-- Provide site root and default themes to javascript -->
<script>
const path_to_root = "../";
const default_light_theme = "light";
const default_dark_theme = "navy";
</script>
<!-- Start loading toc.js asap -->
<script src="../toc.js"></script>
</head>
<body>
<div id="mdbook-help-container">
<div id="mdbook-help-popup">
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
<div>
<p>Press <kbd></kbd> or <kbd></kbd> to navigate between chapters</p>
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
<p>Press <kbd>?</kbd> to show this help</p>
<p>Press <kbd>Esc</kbd> to hide this help</p>
</div>
</div>
</div>
<div id="body-container">
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
let theme = localStorage.getItem('mdbook-theme');
let sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
let theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
const html = document.documentElement;
html.classList.remove('light')
html.classList.add(theme);
html.classList.add("js");
</script>
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
let sidebar = null;
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
}
sidebar_toggle.checked = sidebar === 'visible';
html.classList.remove('sidebar-visible');
html.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<!-- populated by js -->
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
<noscript>
<iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
</noscript>
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
</div>
</nav>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</label>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">大道 (Dao OS) 文档</h1>
<div class="right-buttons">
<a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
<a href="https://nest.doylee.cn/Dao-OS/dao-os-docs" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="应用集市"><a class="header" href="#应用集市">应用集市</a></h1>
<p>大道 (Dao OS) 没有一个传统的、中心化的“应用商店”。“商店”意味着一个单一的所有者,他扮演着守门人的角色,审批、拒绝并对应用征税。这与我们的核心哲学背道而驰。</p>
<p>取而代之的是,我们构建了一套开放协议,来创造一个去中心化的**“应用集市 (Application Bazaar)”**——这是一个充满活力的、开放的、坚韧的思想与工具市场,在这里,用户拥有主权,开发者拥有自由。</p>
<p>这个集市建立在四大支柱之上:发现、信任、分发和商业化。</p>
<h2 id="1-发现-discovery联邦式策展"><a class="header" href="#1-发现-discovery联邦式策展">1. 发现 (Discovery):联邦式策展</a></h2>
<p>在一个没有中央索引的世界里,用户如何找到应用?答案是:通过一个由受信任者组成的策展网络。</p>
<ul>
<li><strong>开发者发布</strong>: 开发者无需“提交”他的应用以供审批。他只需将其应用的**“清单 (Manifest)”**(一个包含所有元数据的 <code>manifest.toml</code> 文件)发布到一个像 <strong>IPFS</strong> 这样的P2P存储网络上。然后他可以在公共频道上“广播”这个清单的地址。</li>
<li><strong>策展人的角色</strong>: 任何人——一个科技媒体、一个受信任的开发者社区、一个KOL或者“大道基金会”自己——都可以运行一个“策展”服务。这些策展人抓取网络上的新清单并根据自己的标准创建主题性的**“策展列表”**例如“十大生产力应用”、“最优美的UI设计”</li>
<li><strong>用户体验</strong>: 在用户的<code>器化身</code>他可以像订阅RSS一样订阅多个他信任的“策展列表”。他的“集市”或“发现”标签页就变成了这些信任源的个性化聚合视图。</li>
</ul>
<p>这个模型用一个丰富的、多维度的、用户策划的发现体验,取代了单一的、有偏见的“应用商店”榜单。</p>
<h2 id="2-信任与安全可验证的信誉"><a class="header" href="#2-信任与安全可验证的信誉">2. 信任与安全:可验证的信誉</a></h2>
<p>用户如何信任一个来自随意列表的应用?他们不必盲目信任。整个集市都直接构建于我们的**“社区信誉与自动化验证”体系**之上。</p>
<p>每一个应用列表,无论来自哪个策展人,都必须展示其**“信任仪表盘”**,提供透明、多维度的信号:</p>
<ol>
<li><strong>自动化验证</strong>: 来自 <code>dao-verify</code> 工具的、不可篡改的、关于安全漏洞和API合规性的“体检报告”。</li>
<li><strong>社区背书</strong>: 一个清晰的列表显示了哪些有信誉的DID为这个应用进行了密码学“签名背书”。</li>
<li><strong>策展人信誉</strong>: 推荐这个应用的策展人自身的信誉,也是一个信任信号。</li>
</ol>
<p>最终是否“注册”一个应用的决定权,永远掌握在用户手中,并有这些透明、可验证的数据作为依据。</p>
<h2 id="3-分发-distribution抗审查与直接分发"><a class="header" href="#3-分发-distribution抗审查与直接分发">3. 分发 (Distribution):抗审查与直接分发</a></h2>
<p>当用户决定安装一个应用时,这个过程是直接且去中心化的。</p>
<ul>
<li>应用的清单中,包含了其软件包(<code>.wasm</code>服务模块和Web UI包<strong>IPFS</strong> 上的<strong>内容哈希CID</strong></li>
<li>用户的<code>元单元</code>使用这个哈希直接从P2P网络获取文件。</li>
<li>这确保了没有任何中心服务器可以阻止一个应用的分发。只要数据存在于P2P网络的某个角落它就是可访问的。</li>
</ul>
<h2 id="4-商业化-monetization主权的与点对点的"><a class="header" href="#4-商业化-monetization主权的与点对点的">4. 商业化 (Monetization):主权的与点对点的</a></h2>
<p>我们消除了30%的“平台税”。我们的价值交换模型是直接从用户到开发者。</p>
<ul>
<li>应用的清单可以声明其商业模式(如一次性购买价格、订阅链接)。</li>
<li>当用户发起购买时,<code>元单元</code>会触发我们的**“价值交换服务接口”**。</li>
<li>这将促成一次<strong>点对点P2P交易</strong>,使用用户选择的外部支付协议,将价值直接从用户的钱包,发送到开发者在清单中指定的地址。</li>
</ul>
<p>“大道”在此过程中,扮演的是交易的促成者和公证人,而非抽成的中间商。</p>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="../specifications/tech_overview.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="../project/roadmap.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="../specifications/tech_overview.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="../project/roadmap.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<script>
window.playground_copyable = true;
</script>
<script src="../elasticlunr.min.js"></script>
<script src="../mark.min.js"></script>
<script src="../searcher.js"></script>
<script src="../clipboard.min.js"></script>
<script src="../highlight.js"></script>
<script src="../book.js"></script>
<!-- Custom JS scripts -->
</div>
</body>
</html>