Python编写的以太坊虚拟机的新实现Py-EVM
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。例如:
git clone --recursive git@github.com:ethereum/py-evm.git
Py-EVM需要Python 3。通常,保证干净的Python 3环境的最佳方法是使用virtualenv,例如:
# once: $ virtualenv -p python3 venv # each session: $ . venv/bin/activate
然后通过以下方式安装所需的python包:
pip install -e .[dev]
运行测试
可以使用以下命令运行测试:
pytest
或者你可以安装tox
来运行完整的测试套件。
Releasing
需要Pandoc才能将markdown README转换为正确的格式,以便在pypi上正确呈现。
对于类似Debian的系统:
apt install pandoc
在OSX上:
brew install pandoc
要发布新版本:
bumpversion $$VERSION_PART_TO_BUMP$$ git push && git push --tags make release
去新建一个docker镜像:
make create-docker-image version=<version>
默认情况下,这将创建一个新镜像,其中有两个标记指向它:
ethereum/trinity:<version>
:(显示版本)ethereum/trinity:latest
:(最新的,直到用未来的“最新”覆盖)
然后,推送到docker hub。
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
======================================================================
分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:
python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
这里是原文

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)
GenerativeAdversarialNetwork 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development in deep learning…The most important one, in my opinion, is adversarial training (also called GAN for Generative Adversarial Networks). This, and the variations that are now being proposed is the most interesting idea in the last 10 years in ML, in my opinion.”–Yann LeCun 那么我们就看看GAN究竟是怎么回事吧: 如上图所示,GAN包含两个互相对抗的网络:G(Generator)和D(Discriminator)。正如它的名字所暗示的那样,它们的功能分...
- 下一篇
Android JNI开发系列(十二) JNI局部引用、全局引用和弱全局引用
JNI 局部引用、全局引用和弱全局引用 在JNI规范中定义了三种引用:局部引用(Local Reference)、全局引用(Global Reference)、弱全局引用(Weak Global Reference)。区别如下: 局部引用 通过NewLocalRef和各种JNI接口创建(FindClass、NewObject、GetObjectClass和NewCharArray等)。会阻止GC回收所引用的对象,不在本地函数中跨函数使用,不能跨线前使用。函数返回后局部引用所引用的对象会被JVM自动释放,或调用DeleteLocalRef释放。(*env)->DeleteLocalRef(env,local_ref) jclass str = (*env)->FindClass(env, "java/lang/String"); jcharArray charArray = (*env)->NewCharArray(env, len); jstring str_obj = (*env)->NewObject(env, cls_string, cid_string,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- 2048小游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程