【问题反馈】【上链管理】开源文档中的简单例程交易失败
【问题分类】
- bug
- 智能合约相关
- 长安链合约IDE
【问题描述】(请对问题进行描述,方便定位问题)
在chainmaker管理平台中按照快速引导生成了一条链,在Linux虚拟机上运行(虚拟机内核及版本信息:4.15.0-142-generic/16.04.1-Ubuntu/x86_64),运行正常,下载快速引导中的“DockerGo:contract_fact.7z”实例合约可以成功部署、上链、交易,功能正确。
但在开源文档:《3. 通过SmartIDE编写Go智能合约》中main.go(https://docs.chainmaker.org.cn/instructions/%E4%BD%BF%E7%94%A8SmartIDE%E7%BC%96%E5%86%99Go%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6.html)
复制代码到在线IDE中,构建正常(但不能修改和保存,会提示gosrc or gopath or gomod can not be edited,这是另外一个bug),IDE中调用getAge和saveAge都正常,可以存储和查询,并且编译也正常,但是把合约部署到链上后,成功部署、上链,但是交易失败。
上图,前三个失败的是自行编写的程序,后一个成功的是示例合约。
想问一下,这种情况为什么会交易失败,因为在IDE中的测试都是可以用的?附件是main.go文件和IDE自己生成的mod和sum文件。go.mod
以下是我自己测试的思路: 链上调用失败 官方直接给的编译好的智能合约可以正常运行:说明 区块链及其上的虚拟机(Docker_Go)运行正常 合约部署功能正常 合约调用途径正常 进一步排查 代码本身问题 IDE编译器问题 。。。
【相关日志文件】(如果有报错日志请贴图,或者上传附件)
TestCMorg4-cmtestnode4/log/system.log:2025-07-23 16:03:16.718 [ERROR] [Core] @test_link_0724 scheduler/scheduler.go:697 failed to run vm for tx id:1a86c6d4445e45ab988eaa003d70f11019297d5e46f54a4e89877e82301c1d91,contractName:age_1, tx result:code:CONTRACT_FAIL contract_result:<code:1 message:"runtime panic" gas_used:100 > , error:runtime panic
【系统信息】(请填写系统信息,方便定位问题)
- chainmaker-go version * : [v2.1.4](笔误,实际版本为)[v2.3.4]
- OS & version * : 16.04.1-Ubuntu
- docker镜像 version: chainmakerofficial/chainmaker-vm-engine v2.3.4
- 合约IDE version: v2.3.0+