文章
视频
讲堂
百科图谱
线下集训
更多
问答
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
视频
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
EthereumEngineeringGroup
文章
专栏
问答
视频
课程
集市作品
活动
招聘
TA的视频
TA的合集
EVM:从Solidity到字节码、内存和存储
在本次以太坊工程小组的会议中,David和Peter讨论了以太坊虚拟机(EVM)及其与Solidity编程语言的关系,重点介绍了EVM的工作原理、代码执行、存储、堆栈和内存等方面。 **核心内容概括:** 1. **EVM与Solidity的关系**:Solidity是用于编写以太坊智能合约的主要语言,EVM则是执行这些合约的环境。Solidity代码经过编译后生成字节码和ABI(应用程序二进制接口),后者定义了合约的功能和参数。 2. **以太坊交易结构**:交易包含nonce、gas价格、gas限制、接收地址、转账金额和数据字段。合约部署时,接收地址为空,数据字段包含初始化代码。 **关键论据与信息:** 1. **EVM的存储结构**:EVM是基于堆栈的处理器,使用堆栈、内存、存储和代码等多种数据存储方式。堆栈用于临时存储,内存用于事务期间的临时数据存储,存储则是持久化的数据存储。 2. **合约部署与函数调用**:合约的初始化代码在部署时执行,设置合约的初始状态。函数调用通过ABI进行,EVM根据函数选择器和参数执行相应的操作。 3. **存储优化**:合理布局存储变量可以减少gas费用,尤其是在多个变量共享同一存储位置时。对于动态数组和映射,EVM使用KCAK256哈希来确定存储位置。 4. **错误处理与日志**:EVM支持多种错误处理机制,包括revert、assert和require等。日志是EVM的写入输出区域,用于记录事件。 会议还提到了一些未来的讨论主题,包括代码的梅克尔化、跨合约调用的效率、异常处理等。与会者被鼓励提出更多的讨论话题,以便在未来的会议中深入探讨。
24
0
0
2天前
EthereumEngineeringGroup
关注
贡献值: 5
学分: 10
江湖只有他的大名,没有他的介绍。
0 关注
1 粉丝
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
提醒
检测到你当前登录的账号还未绑定手机号
请绑定后再发布
去绑定
×
编辑封面图
封面预览
取消
确认