solc二进制的Python封装
项目描述
Python封装的solc Solidity编译器。
依赖
此库需要solc可执行文件存在。
虽然此库可能与其他版本一起工作,但只支持和支持测试版本 >=0.4.2。
快速入门
安装
pip install py-solc
开发
克隆存储库,然后运行
pip install -e . -r requirements-dev.txt
运行测试
您可以使用以下方式运行测试
py.test tests
或者您可以使用tox安装并运行完整的测试套件。
发布
Pandoc是必需的,用于将markdown README转换为正确的格式,以便在pypi上正确渲染。
对于类似Debian的系统
apt install pandoc
或者在OSX上
brew install pandoc
发布新版本
bumpversion $$VERSION_PART_TO_BUMP$$
git push && git push --tags
make release
如何使用bumpversion
本仓库的版本格式为稳定版:{major}.{minor}.{patch},和不稳定版:{major}.{minor}.{patch}-{stage}.{devnum}(其中 stage 可以为 alpha 或 beta)。
要发布下一个版本,请使用 bumpversion 并指定要升级的部分,例如 bumpversion minor 或 bumpversion devnum。
如果你处于测试版,bumpversion stage 将切换到稳定版。
当当前版本为稳定版时,发布不稳定版本需要显式指定新版本,例如 bumpversion --new-version 4.0.0-alpha.1 devnum
标准 JSON 编译
使用 solc.compile_standard 函数来利用 [standard-json] 编译功能。
>>> from solc import compile_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 编译
>>> from solc import compile_source, compile_files, link_code
>>> 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',
},
},
}
>>> unlinked_code = "606060405260768060106000396000f3606060405260e060020a6000350463e7f09e058114601a575b005b60187f0c55699c00000000000000000000000000000000000000000000000000000000606090815273__TestA_________________________________90630c55699c906064906000906004818660325a03f41560025750505056"
>>> link_code(unlinked_code, {'TestA': '0xd3cda913deb6f67967b99d67acdfa1712c293601'})
... "606060405260768060106000396000f3606060405260e060020a6000350463e7f09e058114601a575b005b60187f0c55699c00000000000000000000000000000000000000000000000000000000606090815273d3cda913deb6f67967b99d67acdfa1712c29360190630c55699c906064906000906004818660325a03f41560025750505056"
设置 solc 二进制文件的路径
您可以使用环境变量 SOLC_BINARY 来设置 solc 二进制文件的路径。
安装 solc 二进制文件
此功能是实验性的,可能会进行破坏性更改。
以下版本的 solc 可以使用 py-solc 在所列平台上安装。
v0.4.1 (linux)
v0.4.2 (linux)
v0.4.6 (linux)
v0.4.7 (linux)
v0.4.8 (linux/osx)
v0.4.9 (linux)
v0.4.11 (linux/osx)
v0.4.12 (linux/osx)
v0.4.13 (linux/osx)
v0.4.14 (linux/osx)
v0.4.15 (linux/osx)
v0.4.16 (linux/osx)
v0.4.17 (linux/osx)
v0.4.18 (linux/osx)
v0.4.19 (linux/osx)
v0.4.20 (linux/osx)
v0.4.21 (linux/osx)
v0.4.22 (linux/osx)
v0.4.23 (linux/osx)
v0.4.24 (linux/osx)
v0.4.25 (linux/osx)
可以通过命令行进行安装
$ python -m solc.install v0.4.25
或者使用 python 的 install_solc 函数。
>>> from solc import install_solc
>>> install_solc('v0.4.25')
安装的二进制文件可以在您的家目录下找到。v0.4.25 二进制文件位于 $HOME/.py-solc/solc-v0.4.25/bin/solc。较旧的 Linux 安装还需要您设置环境变量 LD_LIBRARY_PATH=$HOME/.py-solc/solc-v0.4.25/bin
导入路径重映射
solc 提供路径别名功能,允许您拥有更多可重用的项目配置。
您可以像这样使用它
from solc import compile_source, compile_files, link_code compile_files([source_file_path], import_remappings=["zeppeling=/my-zeppelin-checkout-folder"])
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
py-solc-3.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 82095bdac661072f48cf2daf8a96bdb625674330d92b225be26043e8d3ef8c9a |
|
MD5 | ed3f190b2a7d335db2845a0359d051a3 |
|
BLAKE2b-256 | 538d5451ff817206a1ba234ac2f33e0e9cbe1f88aa3eff2966e9d9e1a70d7e42 |
py_solc-3.2.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9ec0bc36ef22a9b0f5642e7846999c4485fa2fa562a61897aeb0a4ca53d60153 |
|
MD5 | 9a23571d559eb1f4a905bf3912fafc1f |
|
BLAKE2b-256 | 4774d36abca3f36ccdcd04976c50f83502c870623e5beb4a4ec96c7bad4bb9e8 |