You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不部署至测试网/主网的情况下于Chainweaver中测试合约

问题根因

Chainweaver内置Pact REPL默认启动空白沙箱环境,不会自动加载主网/测试网的预部署核心模块。coin、kip.poly-fungible-v2都属于链上预置生态合约,未提前加载到本地REPL环境时,就会触发cannot resolve coin.transfer、Module not found类报错。

本地无部署测试配置步骤
  • 提前准备目标模块及依赖的Pact源码
    本地先整理好所有需要调用的外部模块源码,版本和你目标测试网络的线上部署版本完全对齐:
    • 加载coin模块前,需先准备其依赖的fungible-v2、fungible-xchain-v1、gas-payer-v1、ns模块源码
    • 加载kip.poly-fungible-v2模块前,需先准备其依赖的fungible-v2、kip.token-policy-v2模块源码
  • 编写REPL环境初始化脚本
    在你的测试合约工作目录下,新建init-local.repl初始化文件,严格按照「依赖优先、上层模块在后」的顺序编写加载指令,示例:
    ;; 加载核心通用依赖
    (load "fungible-v2.pact")
    (load "fungible-xchain-v1.pact")
    (load "gas-payer-v1.pact")
    (load "ns.pact")
    ;; 加载coin模块
    (load "coin.pact")
    ;; 加载KIP协议相关模块
    (load "kip.token-policy-v2.pact")
    (load "kip.poly-fungible-v2.pact")
    
    脚本中所有.pact文件的路径要和你本地源码存放路径匹配,同目录下直接写文件名即可。
  • 启动REPL后先加载初始化环境
    打开Chainweaver的REPL面板,切换到本地测试工作目录,首先执行初始化脚本:
    (load "init-local.repl")
    
    执行后控制台无报错、输出各模块加载成功提示,即代表外部模块已经部署到本地临时沙箱中。
  • 执行本地测试逻辑
    初始化完成后即可直接在REPL中调用coin.transfer、kip.poly-fungible-v2的所有公开接口,全程无需连接测试网/主网,所有逻辑在本地沙箱闭环运行。
常见注意事项
  • 严格遵守加载顺序:Pact加载模块时会校验依赖项,必须先加载所有底层依赖,再加载上层业务模块,否则会触发依赖不存在报错
  • 版本对齐:不要使用未正式上线的开发版合约源码做本地测试,避免出现本地测试结果和链上实际运行逻辑不一致的问题
  • REPL环境无持久化:每次重启Chainweaver、重置REPL状态后,之前加载的模块都会被清空,需要重新执行一次初始化脚本
  • 链上交互模拟:涉及区块高度、时间、交易签名、手续费扣除等链上逻辑,可以通过REPL内置的env-系列指令模拟,不需要连接真实网络即可覆盖全测试场景

内容的提问来源于stack exchange,提问作者Ilario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:24:28