前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享Python以太坊虚拟机实现Py-

分享Python以太坊虚拟机实现Py-

作者头像
py3study
发布2020-01-06 18:32:29
8800
发布2020-01-06 18:32:29
举报
文章被收录于专栏:python3

Py-EVM是用Python编写的以太坊虚拟机的新实现。目前github上695个star,正在积极开发中,但正在通过以太坊/测试提供的测试套件快速推进。我们感谢有Vitalik和现有的PyEthereum代码,使得我们有的快速进步,因为许多设计决策都受到启发,甚至直接从PyEthereum代码库移植。

Py-EVM旨在最终成为EVM的事实Python实现,为公共和私有链提供广泛的用例。开发将侧重于创建具有良好定义的API的EVM,友好且易于理解的文档,可作为功能齐全的主网节点运行。

特别是Py-EVM目标旨在:

  • 提供是一种使用最广泛使用和理解的语言之一Python的EVM的示例实现。
  • 为客户提供低级API,以构建完整或轻量级节点。
  • 易于理解和修改。
  • 高度灵活地支持研究以及私有区块链等替代用例。

Trinity

虽然Py-EVM提供EVM的低级API,但它并不旨在直接实现完整节点或轻节点。

我们提供了一个基于Py-EVM的称为Trinity的完整节点的基本实现。

将来可能会有基于Py-EVM的替代客户端。

第1步:Alpha发布

该计划首先是适用于测试目的的MVP,alpha级发布。我们将寻找早期采用者,以提供有关我们的架构和API选择的反馈,以及一般反馈和错误发现。

开发

Py-EVM依赖于所有客户端的常见测试的子模块,因此你需要使用--recursive标记克隆repo。例如:

代码语言:javascript
复制
git clone --recursive git@github.com:ethereum/py-evm.git

Py-EVM需要Python 3。通常,保证干净的Python 3环境的最佳方法是使用virtualenv,例如:

代码语言:javascript
复制
# once:
$ virtualenv -p python3 venv

# each session:
$ . venv/bin/activate

然后通过以下方式安装所需的python包:

代码语言:javascript
复制
pip install -e .[dev]
运行测试

可以使用以下命令运行测试:

代码语言:javascript
复制
pytest

或者你可以安装tox来运行完整的测试套件。

Releasing

需要Pandoc才能将markdown README转换为正确的格式,以便在pypi上正确呈现。

对于类似Debian的系统:

代码语言:javascript
复制
apt install pandoc

在OSX上:

代码语言:javascript
复制
brew install pandoc

要发布新版本:

代码语言:javascript
复制
bumpversion $$VERSION_PART_TO_BUMP$$
git push && git push --tags
make release

去新建一个docker镜像:

代码语言:javascript
复制
make create-docker-image version=<version>

默认情况下,这将创建一个新镜像,其中有两个标记指向它:

  • ethereum/trinity:<version>:(显示版本)
  • ethereum/trinity:latest:(最新的,直到用未来的“最新”覆盖)

然后,推送到docker hub。

代码语言:javascript
复制
docker push ethereum/trinity:<version>
# the following may be left out if we were pushing a patch for an older version
docker push ethereum/trinity:latest

如何使用bumpversion

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

要在发布下一个版本,请使用bumpversion并指定要调整的部分,例如bumpversion minor或bumpversion devnum。

如果你处于beta版,则bumpversion stage阶段将切换为稳定版。

要在当前版本稳定时发出不稳定版本,请明确指定新版本,例如bumpversion --new-version 4.0.0-alpha.1 devnum

学习文档:Documentation hosted by ReadTheDocs

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Trinity
  • 开发
    • 运行测试
    • Releasing
    • 如何使用bumpversion
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档