支持0.5.x的solc二进制文件的python包装器
py-solc-x的Python项目详细描述
带有^{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"])
开发
这个项目最近由 py-solc应该是 被认为是测试版。评论、问题、批评和请求 欢迎。
测试
py-solc-x在带有solc版本的linux和windows上进行测试 >=0.4.11。
运行测试套件:
$ pytest tests/
许可证
这个项目是根据MIT license授权的。