SuperAPI AI 工具集

somnia-reactivity

前端与建站

查看项目

更新于 10-16 05:54

技能介绍

用途:该技能是 Somnia Reactivity 的深度参考,帮助开发者用链下(TypeScript/WebSocket)与链上(Solidity handler)两种方式构建响应式 dApp。当合约发出事件时,验证者会检测事件、打包事件及同区块高度的相关合约状态,并将负载推送给订阅者;链上处理器的执行发生在后续区块,而状态读取取自事件所在区块以保持一致快照。

网络:目前仅 Somnia 测试网可用。链 ID 50312,HTTP RPC 为 https://api.infra.testnet.somnia.network,WebSocket 为 wss://api.infra.testnet.somnia.network,浏览器为 https://shannon-explorer.somnia.network,原生代币 STT(18 位小数),水龙头为 https://testnet.somnia.network,链上订阅最低余额 32 STT。

主要能力与用法:链下订阅通过 WebSocket 实时接收事件与状态,安装 npm i @somnia-chain/reactivity viem,使用 SDK 的 subscribe 方法,参数包括 ethCalls、onData、onError、eventContractSources、topicOverrides、onlyPushChanges、context;高频创建订阅可用会话账户(npm i @somnia-chain/viem-session-account)。链上订阅需合约继承 SomniaEventHandler 并重写 _onEvent,通过 TypeScript SDK 的 createSoliditySubscription 或链上预编译 0x0100 的 subscribe/unsubscribe/getSubscriptionInfo 管理,SubscriptionData 含 eventTopics、origin、caller、emitter、handlerContractAddress、handlerFunctionSelector、priorityFeePerGas、maxFeePerGas、gasLimit、isGuaranteed、isCoalesced 等字段。

限制:链下订阅随 WebSocket 连接生命周期结束而自动清理,订阅 ID 不持久;Somnia 的 gas 模型与以太坊不同,冷存储读取约为 476 倍、LOG 约 13 倍昂贵,处理器逻辑应保持精简,避免发出与自身订阅过滤匹配的事件以防无限循环。其余细节资料未完整提供。