栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用Python(Web3.py)编译智能合约中的版本问题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Python(Web3.py)编译智能合约中的版本问题

报错如下:

> command: `solc --combined-json abi,asm,ast,bin,bin-runtime,clone-bin,devdoc,interface,opcodes,userdoc /home/u0/goproject/bin/cross-channel/smart-contract-v0.5.0/HashedTimelock.sol`
> return code: `1`
> stderr:

> stdout:
Invalid option to --combined-json: clone-bin

首先说明,通过国内外的博客论坛得出的结论是以上问题出自solc与py-solc的版本不兼容。

之前用Web3.py的compile_files()编译过智能合约,当时智能合约的solidity版本是pragma solidity ^0.4.22,py-solc的版本是3.2.0
该组合并不会发生什么问题(实际solc版本应略大于0.4.22才能编译)。

产生问题是因为最近写了个pragma solidity ^0.5.0版本的智能合约,因此本机solc升级到了0.5.1(如何升级solc可参考Ubuntu如何安装任意版本的solc)
在solc=0.5.1,py-solc=3.2.0的情况下报最开始的错误,原因即solc>0.5.0版本与py-solc有些语句不兼容。

国内外论坛有两个解决思路:
1.降低solc或提高py-solc版本,即改回solc=0.4+版本
注意:提高py-solc版本并没有什么作用,目前github提供了py-solc4.0,试了并没用,而且感觉与solc的兼容更差,因此我觉得无论是solc==0.4+还是0.5+都用py-solc=3.2.0即可。

2.删除py-solc关键字段clone-bin

两种方法都可行,因为我不想重新改智能合约版本(语法差异太大),因此选择第二种。
main.py找到方式也很简单,一是根据目录,二也可以用编辑器(e.g. pycharm)Ctrl+鼠标左键

PS:查此类英文报错问题,国内用必应>百度哇,查询结果十万八千里哇同志们。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/998223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号