📖 技术文档

DAIX.fun「带饭」· 自由软件世界 · 重新定义软件分发

合约地址 · ABI · 收益分配 · 购买流程 · APP 清单 · 安全说明

🏗️ 技术架构

DAIX.fun 是一套去中心化应用分发平台,基于 Polygon 主网构建

🖥️ 技术栈

Blockchain
Polygon 主网 (Chain ID: 137)
0x89
Smart Contracts
Solidity 0.8.25
Hardhat + TypeScript
Frontend
HTML/CSS/JS + ethers.js v6.17
JsonRpcProvider (只读)
Payment
USDC (ERC-20)
6 decimals

📜 合约地址

所有合约已部署至 Polygon 主网,可在 Polygonscan 上源文件验证


📱 已注册 APP 清单

链上已注册的 9 款应用,全部状态正常

🏪
VIP迎宾
com.storeguard.vipreception
198 USDC
智能识别 VIP 客户,自动推送迎宾语,提升门店服务体验
🔍
走失守护
com.guardianfind.missingperson
99 USDC
人脸识别寻人,帮助走失人员快速回家
🛡️
商铺防损
com.lossguard.shopsecurity
128 USDC
智能行为分析,实时预警可疑行为,降低商铺损耗
刷脸考勤
com.attendanceguard.clock
298 USDC
人脸识别考勤,杜绝代打卡,自动生成考勤报表
📊
客流统计
com.visitorcount.analysis
198 USDC
精准客流分析,热力图展示,助力商业决策
高尔夫测距
com.golfranger.distancemeter
168 USDC
视觉测距,精准到码,提升高尔夫球技
🏥
跌倒守护
com.falldetect.guardian
268 USDC
姿态检测跌倒,自动报警通知家属,守护老人安全
👴
长者守护
com.elderguard.care
268 USDC
全方位老人看护,跌倒检测+异常行为+语音求助
📸
单点抓拍
com.localguard.pedestriancapture
128 USDC
指定区域行人抓拍,特征提取+比对,安防利器

🔧 合约函数

核心合约的关键接口函数及说明

DeveloperRegistry

函数参数说明
register(name, metadataURI)注册为创作者
updateProfile(name, metadataURI)更新创作者资料
isRegistered(address) → bool查询地址是否已注册
developerCount() → uint256获取创作者总数
getAllDevelopers() → address[]获取所有创作者地址列表
getDeveloper(address) → Developer获取创作者详细信息

AppRegistry

函数参数说明
registerApp(name, pkg, desc, apkURI, iconURI, price, trialDays, version)注册新应用(需先注册为创作者)
updateApp(appId, version, apkURI, price)更新应用信息(版本/APK/价格)
deactivateApp(appId)下架应用(仅开发者)
nextAppId() → uint256下一个应用 ID(总数 = nextAppId-1)
apps(uint256 appId) → App按 ID 查询应用详情
getApp(uint256 appId) → App获取应用完整信息
getActiveApps() → App[]获取所有活跃应用列表
getDeveloperApps(address) → uint256[]获取某开发者的所有 APP ID

LicenseNFT (ERC-721)

函数参数说明
mintLicense(appId, agent)购买应用数字凭证,自动分账,铸造NFT
batchMint(appId, quantity)批量购买(代理商专用),一次购买多个许可证
activateLicense(tokenId, deviceFingerprint)激活 NFT 凭证(绑定设备指纹)
transferFrom(from, to, tokenId)转让 NFT 给其他地址
licenses(tokenId) → License查询 NFT 凭证详情
totalSupply() → uint256已发行的 NFT 总数
balanceOf(address) → uint256查询地址持有的 NFT 数量
ownerOf(tokenId) → address查询 NFT 持有者
tokenOfOwnerByIndex(address, index) → uint256查询地址持有的第 N 个 NFT 的 ID

PromoterRegistry

函数参数说明
register(name, referralCode)注册为推广者(推广码全局唯一)
updateName(newName)更新推广者名称
isPromoter(address) → bool查询地址是否已注册推广者
getByCode(code) → address通过推广码获取推广者地址
getPromoter(address) → Promoter获取推广者详细信息
promoterCount() → uint256获取推广者总数

LicenseQuery(只读查询)

函数参数说明
verifyLicense(user, appId) → (bool, tokenId)验证用户是否持有某 APP 的许可证
getUserLicenses(user) → (tokenIds[], appIds[])获取用户持有的所有许可证
getAppByPackageName(packageName) → (appId, found)通过包名查询 APP ID
getAppsByDeveloper(dev) → appIds[]获取某开发者的所有 APP

USDC (ERC-20)

函数参数说明
approve(spender, amount)授权 LicenseNFT 合约消耗 USDC
allowance(owner, spender) → uint256查询授权额度
balanceOf(address) → uint256查询 USDC 余额
transfer(to, amount)转账 USDC
transferFrom(from, to, amount)合约内部转账(由 LicenseNFT 调用)

💎 收益分配机制

智能合约在每次购买时自动分账,实时到账,完全透明可验证

📊 分配比例

👨‍💻 创作者
60%
60%
📣 推广者
25%
25%
🌐 生态基金
10%
10%
⚡ 网络结算
5%
5%

💡 无推广者时的分配

如果购买时没有推广者(直接购买),推广者 25% 归入创作者,即创作者获得 85%

代码实现

uint256 public constant DEV_SHARE = 6000;      // 60% 创作者
uint256 public constant AGENT_SHARE = 2500;    // 25% 推广者
uint256 public constant PLATFORM_SHARE = 1000; // 10% 生态基金
uint256 public constant GAS_SHARE = 500;       // 5%  网络结算

// 分账逻辑
uint256 devAmount = (price * DEV_SHARE) / 10000;
uint256 agentAmount = (agent != address(0)) ? (price * AGENT_SHARE) / 10000 : 0;
uint256 platformAmount = (price * PLATFORM_SHARE) / 10000;
uint256 gasAmount = (price * GAS_SHARE) / 10000;
uint256 devTotal = devAmount + agentAmount;  // 无推广者时归开发者

usdc.transfer(app.developer, devTotal);
usdc.transfer(platformWallet, platformAmount);
usdc.transfer(gasWallet, gasAmount);
if (agent != address(0)) usdc.transfer(agent, agentAmount);

🛒 购买流程

从钱包连接到获得 NFT 数字凭证,全程链上操作

1
🔗 连接钱包

浏览器安装 MetaMask,选择 Polygon 网络,点击「连接钱包」

2
📱 选择应用

浏览应用商店,点击心仪应用的「获取数字凭证」按钮

3
✅ 授权 USDC

钱包弹出授权交易,允许 LicenseNFT 合约使用对应金额的 USDC

4
🔑 铸造 NFT

第二笔交易 mintLicense,智能合约自动分账,NFT 即时到账

交易步骤详解

// Step 1: 授权 USDC
usdc.approve(LicenseNFT, price);
// → 用户钱包确认

// Step 2: 铸造数字凭证
licenseNFT.mintLicense(appId, agentAddress);
// → 自动分账:创作者 60% | 推广者 25% | 生态 10% | 网络 5%
// → 铸造 ERC-721 NFT 到用户钱包

浏览器端只读查询

无需钱包也可浏览应用列表和链上统计数据:

// 只读 Provider
const provider = new ethers.JsonRpcProvider('https://polygon-bor-rpc.publicnode.com');

// 查询应用列表
const apps = await appRegistry.getActiveApps();

// 查询统计数据
const count = await appRegistry.nextAppId();
const devs = await devRegistry.developerCount();

🛡️ 安全特性

无后端、无中心化服务器、无资金托管

✅ 无需信任

收益分配在智能合约中自动执行,不存在平台拖欠或抽成

✅ 开源可验证

所有合约代码可在 Polygonscan 查看,前端纯静态无后端

✅ NFT 标准化

基于 OpenZeppelin ERC-721 标准,Ownable 权限控制

✅ 全额上链

从注册、发布到购买,所有数据永久记录在 Polygon 链上


🚀 快速起步

1 分钟了解如何开始使用 DAIX.fun

👤 作为用户

  1. 安装 MetaMask 浏览器钱包
  2. 向钱包充值 Polygon 主网 USDC 和少量 POL(作为 Gas 费)
  3. 打开 DAIX.fun
  4. 浏览应用,点击「获取数字凭证」完成购买
  5. 在「我的数字凭证」中查看和管理持有的 NFT 凭证

👨‍💻 作为创作者

  1. 连接钱包,进入「创作者中心」
  2. 注册创作者身份(仅需名称,链上永久有效)
  3. 发布应用(填写名称、包名、价格等信息)
  4. 选择 APK 文件,自动上传至 IPFS 去中心化存储
  5. APK 的 IPFS CID 写入链上 apkURI 字段,永久可追溯
  6. 用户购买后自动获得 60% 收益分成
📦 IPFS 去中心化存储
APK 文件通过 Pinata API 上传至 IPFS 网络,获得唯一 CID。
下载链接从链上 apkURI 字段读取,解析为 IPFS 公共网关 URL。
创作者无需自建服务器,APP 文件全球可访问、抗审查。

📣 作为推广者

  1. 连接钱包,进入「推广者中心」
  2. 注册推广者身份(设置名称和唯一推广码)
  3. 生成推广链接:https://daix.fun/?agent=你的钱包地址
  4. 用户通过你的链接购买,你自动获得 25% 佣金

📚 相关文档

完整的开发者和用户文档体系