Chialisp执行brun命令报unrecognized arguments错误排查
报错原因说明
这个报错和Chialisp合约代码逻辑、编译结果正确性无关,是Windows CMD环境下的命令行参数解析错误导致的:
- 报错字面意思是命令行传入了brun无法识别的多余参数。你输入的编译后CLVM代码本身包含
"CREATE_COIN"、"Bad password"两处内层双引号,在Windows CMD中直接用双引号包裹整段代码时,解析器遇到第一个内层双引号就会判定当前字符串已经结束,后面的所有内容会被拆分成零散的独立参数传给brun,最终触发参数不识别的报错。 - 切换单引号无效是因为Windows CMD原生不支持单引号作为字符串包裹符,单引号会被当成普通字符处理,达不到字符串边界标记的作用。
- 你写的密码锁合约逻辑、
run命令输出的编译后低层CLVM代码、传入的四元组参数顺序和格式都是正确的,不存在编译环节错误。
可行解决方法
优先选最省事的方案,完全避开长字符串引号嵌套问题:
- 直接把源码文件路径作为第一个参数传给brun,不需要手动复制粘贴
run命令输出的编译结果,brun本身支持直接读取、执行.clsp源码文件,执行命令如下:
brun passwordprotect.clsp "(0x9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 test 0xa11ce 1000)"
如果确实需要直接传入编译后的CLVM代码字符串,可以选以下任意一种方式:
- 切换到PowerShell执行命令,PowerShell支持单引号作为字符串边界,用单引号包裹整段CLVM代码即可正常解析
- 继续使用CMD的话,把CLVM代码里所有内层双引号用
\"转义后,再用双引号包裹整段代码传入
内容的提问来源于stack exchange,提问作者julian bechtold
相关产品推荐
相关产品推荐

