用于erc190包的python抽象。

eth-pm的Python项目详细描述


  • 分析并验证包
  • 给定一个web3实例,提供对契约工厂类的访问
  • 给定一个web3实例提供对所有已部署契约的访问 Web3连接到的链的实例。
  • 验证包字节码是否与编译输出匹配。
  • 验证部署的字节码是否与编译输出匹配
  • 访问包依赖项
  • 构造新包

web3

Package对象的功能与Contract类非常相似 由web3提供。而不是实例化提供的基类 通过ethpm,您将使用classmethod,它将生成 为给定包新建Package类。

OwnedPackage=BasePackage.factory('/path/to/owned-v1.0.0.json')

然后,可以用任何^{tt3}实例化OwnedPackage$ 维护

owned_package=OwnedPackage(web3)

一个Package类只能直接从解析的 包json。它也可以用包的uri或 使用Package.from_file(path)指向包的本地文件系统路径。

承包工厂

合同工厂应该可以从package类访问,但是 还必须提供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_bytecodeTrue>>>math.is_bytecode_linkedFalse>>>linked_math=math.link_bytecode({'MathLib':'0x1234...'})>>>linked_math.is_bytecode_linkedTrue
Note: the actual format of the link data is not clear since library names aren’t a one-size-fits all solution. We need the ability to specify specific link references in the code.

部署的合同

部署的合同仅可从包实例中获得。这个 包实例将根据 web3已连接到。

访问部署是通过属性访问完成的

package.deployed_contracts.Greeter

IPF

我们需要一个可插入的后端系统来访问ipfs。内置的 默认使用infura的应该足够了 地面。

优先级较低但重要的是确保用户可以配置 连接到他们自己的ipfs节点。

验证内容

Package类应该验证以下所有内容

  • 包json与EthPM V2清单规范匹配
  • 包含的字节码与编译输出匹配
  • 部署的字节码与编译输出匹配

依赖关系

Package类应该提供对完全依赖树的访问

>>>owned_package.build_dependencies['zeppelin']<ZeppelinPackage>

测试策略

  • 从磁盘加载和验证包。
  • 访问包数据。
  • 进入合同工厂。

ethpm规范

  • EthPM-Spec被引用 在本回购协议中作为子模块。**
  • 如果克隆此存储库,则应运行此命令来获取 子模块的内容
git submodule init

注册表uri

从注册表中查找包的uri应遵循以下内容 格式。(根据注册合同标准的变化 通过EIP流程)

scheme://authority/package-name?version=x.x.x
  • uri必须是字符串类型
  • schemeercxxx
  • 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$$

如何提升版本

此repo的版本格式为 稳定,{major}.{minor}.{patch}-{stage}.{devnum}表示不稳定 (stage可以是alpha或beta)。

若要在行中发布下一个版本,请指定要凹凸的部分,如 make release bump=minormake release bump=devnum

如果您是beta版本,make release bump=stage将切换到 马厩

若要在当前版本稳定时发布不稳定版本,请指定 新版本显式地 make release bump="--new-version4.0.0-alpha.1 devnum"

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

推荐PyPI第三方库


热门话题
java Eclipse内存分析器(MAT):不显示当前正在运行的进程   java Apache Velocity:转义字符不能作为关联数组键用于PHP   不截断零的java格式十进制输出   在另一个类文件中调用时返回空值的java getter   java集合获取连接   java解析json使用Gson登录系统应用程序强制关闭   java DelferredResult带有两个请求的ajax请求   java可降低功耗,同时应使用无线   java BoxLayout无法共享错误?   java如何使用计时器制作闹钟   java使用OAuth2保护RESTWeb服务:一般原则   java在一个jframe上显示多个图像和按钮