SuperAPI AI 工具集

vara-eth-solidity-integrator

编程与开发

查看项目

更新于 10-15 21:50

技能介绍

用途:当任务涉及 Solidity 代码通过生成的 Solidity ABI 接口与已有的 Vara.eth 程序交互时使用本技能。Rust/Sails 合约编写属于 vara-eth-contract-writer;程序上传、创建、充值、初始化及 TypeScript/CLI 交互属于 vara-eth-app-builder。

核心模型:Solidity 对 Vara.eth 的调用为异步。生成的 ABI 调用返回 bytes32 messageId,仅表示消息已提交,不代表 Vara.eth 执行已最终确定;最终结果通过生成的 success 回调或 onErrorReply(...) 返回。

必需模式:每个状态变更调用都要保存 messageId -> 操作上下文(用户、本地 id、金额、操作类型、预期回复或收款目标);用 msg.sender == address(VARA_ETH_PROGRAM) 校验回调;回调被接受时恰好删除一次待处理状态;未知 messageId 视为错误;为已请求、已确认、失败的异步操作发出事件;当用户可并发提交多个操作时,不要用单个 pending[user] 建模。

资金与所有权:需明确各值类型由谁持有。Solidity 向 Vara.eth payable 方法发送原生价值时,Vara.eth 程序看到的调用者是 Solidity 合约,除非程序被专门设计为从 payload 接受原始用户。常见安全划分:Solidity 合约持有 ETH 或 ERC20;Vara.eth 程序存储工作流、校验、评分等状态;Solidity 仅在可信 Vara.eth 回调后释放、退款、记账、铸造或解锁。可执行余额与 ETH 价值分离,启用 ABI 的 Vara.eth 程序仍需足够的 wVARA 可执行余额用于初始化和消息处理。

回调设计:成功回调应完成本地状态转换(标记确认、释放托管资金、记入可领取余额、更新份额、存储返回结果、解除用户操作阻塞);错误回调标记失败或可重试,除非价值确实返回 Solidity 合约或有独立退款储备,否则不要承诺退款。优先拉取式提取或有界直接转账;若回调直接转账,先更新本地状态再转账,失败则 revert。

生成 ABI 表面:从 Sails IDL 生成 Solidity ABI 接口,以生成名称为准。常见形式:service method 为 <service>.<method>(...),ABI 函数为 <service><Method>(bool callReply, ...),回调为 replyOn_<service><Method>(bytes32 messageId, ...)。写适配器前先检查生成的 Solidity 文件,尤其是方法名、回调名、payable 标记与整数/地址映射。

集成形态:托管或市场(Solidity 持资金,Vara.eth 确认工作流状态)、奖励池、游戏或排行榜、意图适配器、访问或铸造门控。../../examples/escrow 仅作回调关联与价值分离的具体参考,除非需求本身是托管,不要照搬其业务模型。

审查清单:确认所有生成 ABI 名称与当前 IDL 输出一致;每个异步调用保存唯一 messageId 上下文;回调发送者限制为可信 ABI/Mirror 合约;未知或重复回调不能完成操作;本地用户记账不假设 Vara.eth 能看到原始 EVM 用户;分别描述 ETH 价值、wVARA 可执行余额与 Vara.eth 原生价值;错误回调有明确重试、失败或退款策略;示例说明哪些部分已验证、哪些需针对启用的在线程序部署验证。