支持0.5.x的solc二进制文件的python包装器

py-solc-x的Python项目详细描述


Pypi StatusBuild StatusCoverage Status

带有^{tt2}的solcsolidity编译器周围的python包装器$ 支持。

py-solc分叉。

依赖关系

py-solc-x允许使用多个版本的solc并安装它们 根据需要。您必须拥有所有必需的solc dependencies 为使其正常工作而安装。

支持的版本

py-solc-x可以安装以下solc版本:

  • Linux和Windows:^{TT3}$
  • OSX:^{TT4}$

0.4.x如果版本是installed via brew,则可以在OSX上使用,但不能是 直接由py-solc-x安装。

快速启动

安装

pip install py-solc-x

安装solc可执行文件

第一次导入py-solc-x时,它将自动检查 系统上已安装的solc版本。如果没有找到,你必须 通过solcx.install_solc

手动安装
>>>fromsolcximportinstall_solc>>>install_solc('v0.4.25')

或通过命令行:

$ python -m solcx.install v0.4.25

py-solc-x默认为最新安装的版本集 主动的。要检查或修改活动版本:

>>>fromsolcximportget_solc_version,set_solc_version>>>get_solc_version()Version('0.5.7+commit.6da8b019.Linux.gpp')>>>set_solc_version('v0.4.25')>>>

还可以基于pragma version字符串设置版本。这个 将使用最高兼容版本:

>>>fromsolcximportset_solc_version_pragma>>>set_solc_version_pragma('^0.4.20 || >0.5.5 <0.7.0')Usingsolcversion0.5.8>>>set_solc_version_pragma('^0.4.20 || >0.5.5 <0.7.0',check_new=True)Usingsolcversion0.5.8Newercompatiblesolcversionexists:0.5.10

查看可用和已安装的版本:

>>>fromsolcximportget_installed_solc_versions,get_available_solc_versions>>>get_installed_solc_versions()['v0.4.25','v0.5.3']>>>get_available_solc_versions()['v0.5.10','v0.5.9','v0.5.8','v0.5.7','v0.5.6','v0.5.5','v0.5.4','v0.5.3','v0.5.2','v0.5.1','v0.5.0','v0.4.25','v0.4.24','v0.4.23','v0.4.22','v0.4.21','v0.4.20','v0.4.19','v0.4.18','v0.4.17','v0.4.16','v0.4.15','v0.4.14','v0.4.13','v0.4.12','v0.4.11']

安装基于pragma版本的最高兼容版本 字符串:

>>>fromsolcximportinstall_solc_pragma>>>install_solc_pragma('^0.4.20 || >0.5.5 <0.7.0')

标准JSON编译

使用solcx.compile_standard函数来使用 standard-json 编译功能。

>>>fromsolcximportcompile_standard>>>compile_standard({...'language':'Solidity',...'sources':{'Foo.sol':'content':"...."},...}){'contracts':{...},'sources':{...},'errors':{...},}>>>compile_standard({...'language':'Solidity',...'sources':{'Foo.sol':{'urls':["/path/to/my/sources/Foo.sol"]}},...},allow_paths="/path/to/my/sources"){'contracts':{...},'sources':{...},'errors':{...},}

传统的组合json编译

>>>fromsolcximportcompile_source,compile_files>>>compile_source("contract Foo { function Foo() {} }"){'Foo':{'abi':[{'inputs':[],'type':'constructor'}],'code':'0x60606040525b5b600a8060126000396000f360606040526008565b00','code_runtime':'0x60606040526008565b00','source':None,'meta':{'compilerVersion':'0.3.5-9da08ac3','language':'Solidity','languageVersion':'0',},},}>>>compile_files(["/path/to/Foo.sol","/path/to/Bar.sol"]){'Foo':{'abi':[{'inputs':[],'type':'constructor'}],'code':'0x60606040525b5b600a8060126000396000f360606040526008565b00','code_runtime':'0x60606040526008565b00','source':None,'meta':{'compilerVersion':'0.3.5-9da08ac3','language':'Solidity','languageVersion':'0',},},'Bar':{'abi':[{'inputs':[],'type':'constructor'}],'code':'0x60606040525b5b600a8060126000396000f360606040526008565b00','code_runtime':'0x60606040526008565b00','source':None,'meta':{'compilerVersion':'0.3.5-9da08ac3','language':'Solidity','languageVersion':'0',},},}

未链接的库

>>>fromsolcximportlink_code>>>unlinked_bytecode="606060405260768060106000396000f3606060405260e060020a6000350463e7f09e058114601a575b005b60187f0c55699c00000000000000000000000000000000000000000000000000000000606090815273__TestA_________________________________90630c55699c906064906000906004818660325a03f41560025750505056">>>link_code(unlinked_bytecode,{'TestA':'0xd3cda913deb6f67967b99d67acdfa1712c293601'})..."606060405260768060106000396000f3606060405260e060020a6000350463e7f09e058114601a575b005b60187f0c55699c00000000000000000000000000000000000000000000000000000000606090815273d3cda913deb6f67967b99d67acdfa1712c29360190630c55699c906064906000906004818660325a03f41560025750505056"

导入路径重新映射

solc提供路径别名,允许您拥有更多可重用的项目 配置。

您可以这样使用:

>>>fromsolcximportcompile_files>>>compile_files([source_file_path],import_remappings=["zeppeling=/my-zeppelin-checkout-folder"])

More information about solc import aliasing

开发

这个项目最近由 py-solc应该是 被认为是测试版。评论、问题、批评和请求 欢迎。

测试

py-solc-x在带有solc版本的linux和windows上进行测试 >=0.4.11

运行测试套件:

$ pytest tests/

许可证

这个项目是根据MIT license授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Ionic 2本机插件安装失败   从行号和列号获取字符偏移量的现有Java库?   java Android Studio:从本地目录加载文件以进行测试   java何时会抛出CloneNotSupportedException?   java Windows 8扭曲了我的TrayIcon   java无法将DTO注入spring存储库   java中的子类引用对象   java Hibernate在多对多关联的两侧增加版本   java如何修复我的应用程序?   java TileEntity无法正确保存NBT   启用HTTP/2的java Jetty存在关闭等待socket问题   数据库从java连接到数据库问题   java Bukkit字符串读取不正确