ERC190包的Python抽象。
项目描述
解析和验证包
给定一个web3实例,提供对合约工厂类的访问
给定一个web3实例,提供对连接到的链上所有已部署合约实例的访问。
验证包的字节码与编译输出匹配。
验证已部署的字节码与编译输出匹配
访问包的依赖项
构建新的包
Web3
该Package对象将类似于由web3提供的Contract类。您将使用一个classmethod来生成针对特定包的新Package类,而不是实例化由ethpm提供的基类。
OwnedPackage = BasePackage.factory('/path/to/owned-v1.0.0.json')
然后,可以使用任何web3实例来实例化OwnedPackage。
owned_package = OwnedPackage(web3)
包类只能从解析后的包JSON直接构造。您也可以使用 Package.from_file(path) 通过包的URI或包在本地文件系统中的路径来初始化。
合约工厂
合约工厂应该可以从包类中访问,但您还必须提供一个web3实例。
Owned = OwnedPackage.get_contract_factory(web3, 'owned')
从包实例中,它们也可以作为属性访问。
Owned = owned_package.contract_factories.owned
当合约使用库时,合约工厂将具有未链接的字节码。ethpm包附带了自己子类的 web3.contract.Contract,它有一些与字节码链接相关的额外方法和属性。
>>> math = owned_package.contract_factories.math
>>> math.has_linkable_bytecode
True
>>> math.is_bytecode_linked
False
>>> linked_math = math.link_bytecode({'MathLib': '0x1234...'})
>>> linked_math.is_bytecode_linked
True
注意:由于库名称不是一刀切的解决方案,因此实际链接数据的格式尚不清楚。我们需要在代码中指定特定的链接引用。
已部署的合约
已部署的合约只能从包实例中访问。包实例将根据web3连接的链过滤 deployments。
通过属性访问来访问部署。
package.deployed_contracts.Greeter
IPFS
我们需要一个可插拔的后端系统来访问IPFS。一个内置的默认后端,默认使用infura,应该足以开始。
虽然优先级较低但很重要的一点是,确保用户可以配置连接到他们自己的IPFS节点。
验证事项
Package 类应该验证以下所有事项。
包JSON与EthPM V2 Manifest规范匹配
包含的字节码与编译输出匹配
部署的字节码与编译输出匹配
依赖项
Package 类应提供访问完整依赖项树的功能。
>>> owned_package.build_dependencies['zeppelin']
<ZeppelinPackage>
测试策略
从磁盘加载和验证包。
访问包数据。
访问合约工厂。
EthPM-Spec
EthPM-Spec 在此仓库中作为子模块引用。
如果您克隆此仓库,应该运行此命令以获取子模块的内容
git submodule init
注册表URI
从注册表中查找包的URI应遵循以下格式。(根据注册表合约标准的EIP进程可能会更改)
scheme://authority/package-name?version=x.x.x
URI必须是字符串类型
scheme: ercxxx
authority: 必须是有效的ENS域名或指向注册表合约的有效校验和地址。
package-name: 必须符合 EthPM-Spec 中指定的包名称。
version: URI转义版本字符串,应该 符合 semver 版本编号规范。
例如 ercxxx://packages.zeppelinos.eth/owned?version=1.0.0
发布设置
对于类似Debian的系统
apt install pandoc
要发布新版本
make release bump=$$VERSION_PART_TO_BUMP$$
如何bumpversion
此仓库的版本格式为稳定版本的 {major}.{minor}.{patch},以及不稳定版本(stage 可以是alpha或beta)的 {major}.{minor}.{patch}-{stage}.{devnum}。
要发布下一个版本,指定要提升的部分,例如 make release bump=minor 或 make release bump=devnum。
如果您处于beta版本,则 make release bump=stage 将切换到稳定版本。
当当前版本稳定时发布不稳定版本,请明确指定新版本,例如 make release bump="--new-version 4.0.0-alpha.1 devnum"
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码发行版
构建发行版
eth-pm-0.1.0a23.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4cdbf0c2dfc9a0d7aa9348e5ac4b8aad6ccdded8c560056b556d0b39cff087de |
|
MD5 | ea8b41b73e436d4f4e276b4b6a23db11 |
|
BLAKE2b-256 | cb18d92dc1fe819430dc6b1395db55ddaaf2316b0c288cc2d9ec9c42079d5cfe |
eth_pm-0.1.0a23-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4ca2fdc40c3812c7421f3dec8bffafaadee53622e2fafdd0f6225745e65830f4 |
|
MD5 | fea9c5e0ec377b137d2c744283e5df79 |
|
BLAKE2b-256 | e5be4479ae9bec1fc02b829b9f273ac1facccb1f732f03098017f44c3c72e75e |