用途:把已有的、使用 viem 的 Next.js 网页应用改造成 World App 迷你应用,或在网页版与迷你应用之间共享代码。
主要步骤与能力:安装 MiniKit(npm install @worldcoin/minikit-js @worldcoin/minikit-react);对使用 MiniKit 的页面关闭 SSR,用 dynamic(..., { ssr: false }) 包裹,把页面逻辑移入组件;用 MiniKitProvider 包裹布局;在钱包连接处用 MiniKit.isInWorldApp() 判断环境,World App 内使用 getWorldAppProvider() 作为 EIP-1193 Provider,浏览器回退到 window.ethereum,chain 为 worldchain;发送交易时把 approve 与合约调用放进同一个 sendTransaction 捆绑执行;处理返回的 userOpHash 回执(用 useUserOperationReceipt 轮询);在开发者门户的 Permissions 中把 Permit2 代币与合约入口加入白名单,否则会报 invalid_contract。
必要用法要点:World App 每笔交易后会把代币授权重置为 0,因此单独 approve 后再 transferFrom 会失败;MiniKit.isInstalled() 在 install() 之前始终为 false,应改用 useMiniKit() 或 window.WorldApp;Permit2 金额为 uint160 需显式转换;eth_sendTransaction 返回 userOpHash,waitForTransactionReceipt 会超时;World App webview 无浏览器开发者工具,可加入 eruda 作为移动端控制台。
限制:仅面向 World App 迷你应用场景,需在 World App 环境内运行;交易白名单与权限需在开发者门户配置;其他平台、收费与价格信息暂未提供。