Ink Once, Exist Forever
完全去中心化,无后端参与,相关角色:前端 + 智能合约 + 索引查询 + 存储。 基于Optimism(solidity) + Arweave(Irys) + Subsquid + SvelteKit
此项目基本都是AI开发完成的,上面包含了最细的完整项目开发细节,逐步尝试即可复现你的dapp
amberink/
├── contracts/ # Foundry 智能合约
├── frontend/ # SvelteKit
├── squid/ # Subsquid 链上索引
├── learn/ # 学习教程
├── .gitmodules # 统一管理所有 submodules(如 foundry 的 lib/)- 文章即NFT:每个文章对应一个NFT,用户可收藏文章
- 内容存储:文章一次付费,永久存储在Arweave上。
- 数据索引:使用SubSquid去中心化索引,查询文章列表等
标准:ERC-1155和ERC-2981(二手交易版税) 特性:可升级、支持打赏&NFT、版权、易读签名、文章编辑、用户资料更新 采用 ERC-4337 账户抽象实现去中心化代付,结合 Session Keys 实现无感交互体验。 核心功能:
- publish: 发布文章(支持原创/转载标记、收藏价格、版税)
- evaluate: 评价文章(点赞/踩/打赏)、评论、关注
- collect: 收藏文章NFT
- editArticle: 编辑文章元数据(标题、摘要、分类)
- updateUserProfile: 更新用户资料(昵称、头像、简介) 所有操作支持 Session Key 无感交互(无需每次 MetaMask 签名)
只索引“关系”和“状态”,不索引文章全文。文章的标题、摘要等 Metadata 由前端获取 Arweave Hash 后在客户端(或 SSR 层)懒加载,或者由 Indexer 的 Worker 异步获取。 为了简化 MVP,我们采用前端懒加载策略,Indexer 只存 Hash。 用 Subsquid 的 Archive(block history ingestion)做可靠回溯,用 Processor 做高吞吐低延迟的事件->实体映射,且把对 Arweave 的 fetch 作为异步任务(避免阻塞事件处理)。
使用Arweave永久存储文章内容 基于Irys作为数据上传获取链;(官方AR.IO的Turbo是中心化的)
Web3交互:viem + @wagmi/core 钱包连接UI:@reown/appkit 数据查询:@urql/svelte 其他:prettier,eslint,tailwindcss,vitest,playwright,@inlang/paraglide-sveltekit
- 支持多标签索引(类别,话题,地区等)
- 支持markdown编辑器cherry-markdown
- 接入去中心化身份DID
- 使用ID加载的页面如:编辑,用户,需要骨架屏