OPC KnoVaultOPC KnoVault 是一个运行在 Monad testnet 上的 OPC 知识合约交易平台。项目面向 AI 时代的一人公司和独立知识生产者,让他们可以把报告、模板、方法论、数据包等 Knowledge Asset 包装成可订阅、可版本化、可上链留痕的 Knowledge Contract。平台支持用户用 MetaMask 部署市场合约、上传知识合约、发布版本,并在合约广场使用真实 testnet MON 完成订阅交易。项目概述OPC KnoVault 解决的问题是:个人 OPC 的知识资产很难被可信地发现、比较、订阅和追踪。传统内容平台无法证明交易和版本记录,普通自由职业平台又偏向人工撮合和一次性交付。本项目把 Monad 作为可信交易与 Trust Event 记录层:链上记录知识合约登记、版本发布、订阅支付、反馈、托管释放和退款事件。链下保存完整内容正文、预览、搜索、展示和后续 indexer 数据。买家通过 MetaMask 发起真实 Monad testnet 交易,而不是本地模拟购买。主要功能合约广场:展示链上登记的 Knowledge Contract。上传合约:调用 registerAsset 登记知识合约,并调用 publishVersion 发布有效版本。真实订阅交易:调用 subscribe(assetId),通过 MetaMask 支付 Monad testnet MON。我的合约:查看当前钱包上传的合约和订阅记录。链上账本:同步合约事件,展示交易回执。MetaMask 部署:无需 Foundry,前端可直接用 MetaMask 部署 OPCTrustMarket。Indexer-ready:提供 Envio HyperIndex 模板,用于生产环境完整历史事件同步。技术栈Frontend:Next.js, React, RainbowKit, Wagmi, viemSmart Contract:Solidity, EVM-compatible Monad testnetContract Artifact:solc npm package 生成前端部署 bytecodeTesting:Node.js test runnerIndexer:Envio HyperIndex-ready config and handlersWallet:MetaMask / injected EIP-1193 provider项目结构contracts/ Solidity 市场合约docs/ 产品文档、Demo 文档、提交材料indexer/ Envio indexer 模板scripts/ 合约 artifact 和部署辅助脚本src/domain/ 可测试领域核心tests/ 行为测试web/ Next.js 前端安装与运行1. 安装依赖npm install2. 生成前端合约部署 artifactnpm run artifact:contract3. 启动开发服务器npm run dev4. 验证项目npm testnpm run typechecknpm run buildMonad Testnet 配置Chain ID: 10143RPC: https://testnet-rpc.monad.xyz/Symbol: MONExplorer: https://testnet.monadexplorer.com/前端提供“添加 Monad testnet”按钮,会向 MetaMask 发起 wallet_addEthereumChain 请求。环境变量复制示例文件:cp web/.env.example web/.env.local可选配置:NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=NEXT_PUBLIC_OPC_TRUST_MARKET_ADDRESS=NEXT_PUBLIC_OPC_MARKET_ADDRESS=NEXT_PUBLIC_INDEXER_GRAPHQL_URL=说明:NEXT_PUBLIC_OPC_TRUST_MARKET_ADDRESS:当前前端使用的 OPCTrustMarket 合约地址。NEXT_PUBLIC_OPC_MARKET_ADDRESS:兼容远端旧版 Foundry 合约配置。NEXT_PUBLIC_INDEXER_GRAPHQL_URL:Envio indexer GraphQL endpoint。如果不配置合约地址,页面会允许用 MetaMask 直接部署市场合约,并把地址保存到浏览器 localStorage 的 opcTrustMarketAddress。演示账号本项目不内置演示账号,也不托管私钥。演示时请使用自己的 MetaMask 钱包,并确保钱包中有 Monad testnet MON。推荐演示准备:MetaMask 安装并解锁。钱包切换到 Monad testnet。钱包中有少量 testnet MON。浏览器允许当前站点连接 MetaMask。真实交易演示流程点击右上角“直连 MetaMask”。切换到 Monad testnet。如果页面提示没有市场合约,点击“部署市场合约”,并在 MetaMask 确认部署交易。部署成功后,页面会保存市场合约地址。进入“上传合约”。填写 OPC 名称、价格、标题、摘要、预览、正文和内容 URI。点击“上传并发布到链上”。MetaMask 会确认两笔交易:registerAsset 和 publishVersion。回到“合约广场”,点击“同步”。选择刚发布的链上合约,点击“立即订阅”。MetaMask 确认 subscribe(assetId),并支付 testnet MON。交易确认后,可在“我的合约”和“链上账本”查看记录。部署方式前端部署项目是标准 Next.js 应用,可部署到 Vercel、Netlify 或其他 Node.js/Next.js 托管平台。部署前建议执行:npm run artifact:contractnpm run build生产环境建议配置:NEXT_PUBLIC_OPC_TRUST_MARKET_ADDRESS=0x...NEXT_PUBLIC_INDEXER_GRAPHQL_URL=https://...合约部署当前 demo 支持两种方式:前端 MetaMask 部署:打开页面后点击“部署市场合约”,由当前 MetaMask 钱包签名部署。脚本部署:使用 scripts/deploy-opc-trust-market.mjs,通过 viem 和本地加密测试钱包部署。另有远端合并带来的 Foundry 合约资料位于:contracts/src/OPCMarket.solcontracts/script/DeployOPCMarket.s.solcontracts/test/OPCMarket.t.sol重要说明当前交易发生在 Monad testnet,不是主网交易。当前版本默认 openPublishing = true,任何钱包都可以登记知识合约,避免 demo 被审核流程阻塞。只有已经登记且发布版本的链上资产才能订阅。内容正文当前存储在前端 metadata/data URI 中,生产环境应换成 IPFS、Arweave 或后端存储,并只在链上记录 hash/URI。Monad RPC 的 eth_getLogs 单次查询限制为 100 block。前端已限制最近 100 block 并做分片查询;更完整的历史同步应部署 indexer/。常见问题页面说不能上传或不能交易先点击“直连 MetaMask”,确认顶部状态:钱包不是“未连接”网络是 10143交易合约不是“未配置”如果没有市场合约,先点击“部署市场合约”。扣了 MON,但合约广场没显示交易可能成功了,但事件同步没读回来。处理方式:点击“同步”。确认交易发生在最近 100 block 内。如果仍未显示,使用交易哈希在 explorer 查看事件,或部署 indexer/ 做完整历史同步。eth_getLogs is limited to a 100 range这是 Monad RPC 限制。当前前端已按 100 block 范围查询。生产环境建议使用 Envio indexer。Foundry 安装失败本项目不依赖 Foundry 完成 demo 部署。前端使用 solc 生成 bytecode,并用 MetaMask 直接部署合约。Indexerindexer/ 包含 Envio HyperIndex-ready 文件。合约部署并验证后,可以按 indexer/README.md 初始化/部署。生产环境建议:用 Envio 同步所有历史事件。前端配置 NEXT_PUBLIC_INDEXER_GRAPHQL_URL。合约广场和我的合约优先走 GraphQL,而不是直接扫 RPC logs。合约核心方法OPCTrustMarket 的核心方法:registerAsset(assetType, productionMode, priceWei, metadataUri)publishVersion(assetId, contentHash, uri)subscribe(assetId) payablereleaseMyEscrow(subscriptionId)refundFirstTerm(subscriptionId)submitStructuredFeedback(assetId, score)许可证当前仓库尚未添加 LICENSE 文件。默认保留所有权利。若需要开源发布,请补充明确许可证,例如 MIT、Apache-2.0 或 GPL。