问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

以太坊虚拟机(EVM)是什么?

发布网友 发布时间:2022-04-27 06:36

我来回答

2个回答

懂视网 时间:2022-05-10 18:36

本篇文章给大家带来的内容是关于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

    热心网友 时间:2022-05-10 15:44

    以太坊是一个可编程的区块链。与比特币不同,以太坊并没有给用户提供一组预定义的操作(比如比特币交易),而是允许用户创建他们自己的操作,这些操作可以任意复杂。这样,以太坊成为了多种不同类型去中心化区块链的平台,包括但是不限于密码学货币。

     EVM为以太坊虚拟机。以太坊底层通过EVM模块支持智能合约的执行和调用,调用时根据合约的地址获取到代码,生成具体的执行环境,然后将代码载入到EVM虚拟机中运行。通常目前开发智能合约的高级语言为Solidity,在利用solidity实现智能合约逻辑后,通过编译器编译成元数据(字节码)最后发布到以坊上。

    EVM架构概述

    EVM本质上是一个堆栈机器,它最直接的的功能是执行智能合约,根据官方给出的设计原理,EVM的主要的设计目标为如下几点:

    针对以上几点通过对EVM源代码的阅读来了解其具体的设计思想和工程实用性。

    EVM存储系统机器位宽

           EVM机器位宽为256位,即32个字节,256位机器字宽不同于我们经常见到主流的64位的机器字宽,这就标明EVM设计上将考虑一套自己的关于操作,数据,逻辑控制的指令编码。目前主流的处理器原生的支持的计算数据类型有:8bits整数,16bits整数,32bits整数,64bits整数。一般情况下宽字节的计算将更加的快一些,因为它可能包含更多的指令被一次性加载到pc寄存器中,同时伴有内存访问次数的减少。目前在X86的架构中8bits的计算并不是完全的支持(除法和乘法),但基本的数*算大概在几个时钟周期内就能完成,也就是说主流的字节宽度基本上处理器能够原生的支持,那为什么EVM要采用256位的字宽。主要从以下两个方面考虑:

    时间上主要体现在执行的效率上,我们以两个整型数相加来对比具体的操作时间消耗。32bits相加的X86


    的汇编代码

        mov eax, dword [9876ABCD] //将地址9876ABCD中的32位数据放入eax数据寄存器

        add eax, dword [1234DCBA] //将1234DCBA地址指向32位数和eax相加,结果保存在eax中

    64bits相加的X86汇编代码

        mov rax, qword [123456789ABCDEF1] //将地址指向的64位数据放入64位寄存器

        add rax, qword [1020304050607080] //计算相加的结果并将结果放入到64位寄存器中

    链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 怎样要求对方净身出户 ? 什么是以太坊系统? 怎样才能严格要求自己 以太坊到底是什么? 怎样严格要求孩子? 什么是以太坊(Ethereum)?imToken支持符合ERC20代币 以太坊是什么 以太坊是什么东西? 爱奇艺FUP和爱奇艺VIP有什么区别?我开通FUP为什么VIP会员不能看?_百度... 激情奥运,阳光校园的资料 《激情奥运 阳光校园》题目 小学生标语化300字演讲稿 1020plus vs P1008 这两个打印机买哪个好。。。 HP laserjet p1008打印机一次最多能打印多少张? hp1008打印机好用不? 激情奥运 阳光校园 演讲稿片段 惠普p1008打印机无法打印! 以出彩中牟阳光校园为主题写一篇演讲稿 如何添加打印机HP LaserJet P1008? 激情奥运,阳光校园.演讲稿! 大学生应该怎么要求自己? 怎么在windows下启动以太坊java客户端ethereumj 怎样才能严格要求自己呢 如何严格要求学生 我该怎么样要求,制定自己的做人标准。 怎样要求孩子才是最好的教育 怎样严格要求自己 怎样的要求,是严要求?怎样的标准,是高标准? 怎样才能严格要求自己的言行举止· iphone6微信扫不了相册里的二维码 华为P40不能识别自己手机中的图片二维码 牛肉能不能经常吃吗? 12岁少年牛肉可以每天吃吗 求议论文素材事例(关于国家、民族的) 多吃牛肉有什么好处,什么坏处 求一篇关于爱国主义的议论文 关于为国家做出贡献的人议论文800字 关于国家大事的作文300字 关于利于国者爱之害于国者恶之的作文600字? 关于国家大事的作文