智能合约编写之Solidity运行原理

2020 年 4 月 11 日

智能合约编写之Solidity运行原理

引 言

作为一门面向智能合约的语言,Solidity 与其他经典语言既有差异也有相似之处。

一方面,服务于区块链的属性使其与其他语言存在差异。例如,合约的部署与调用均要经过区块链网络确认;执行成本需要被严格控制,以防止恶意代码消耗节点资源。

另一方面,身为编程语言,Solidity 的实现并未脱离经典语言,比如 Solidity 中包含类似栈、堆的设计,采用栈式虚拟机来进行字节码处理。

本系列前几篇文章介绍了如何开发 Solidity 程序,为了让读者知其然更知其所以然,本文将进一步介绍 Solidity 的内部运行原理,聚焦于 Solidity 程序的生命周期和 EVM 工作机制。

Solidity 的生命周期

与其他语言一样,Solidity 的代码生命周期离不开编译、部署、执行、销毁这四个阶段。下图整理展现了 Solidity 程序的完整生命周期:

经编译后,Solidity 文件会生成字节码。这是一种类似 jvm 字节码的代码。部署时,字节码与构造参数会被构建成交易,这笔交易会被打包到区块中,经由网络共识过程,最后在各区块链节点上构建合约,并将合约地址返还用户。

当用户准备调用该合约上的函数时,调用请求同样也会经历交易、区块、共识的过程,最终在各节点上由 EVM 虚拟机来执行。

原文链接:【 https://www.infoq.cn/article/sZhX9ujD6Bqq3UhkO4Hk 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2020 年 4 月 11 日 11:02 1552

评论

发布
暂无评论
发现更多内容

英特尔神经拟态芯片Loihi大显身手 帮助轮椅上的儿童实现独立生活

飞天鱼2017

开源,轻松实现RTC与SIP互通

anyRTC开发者

WebRTC 编码 SIP 源码解析

35岁大厂程序员被劝退!老板说:没年轻人有冲劲!真有内味了吗?

程序员生活志

程序员 职场

区块链的想象,解决贫富差距

CECBC区块链专委会

区块链 货币 股市

没有一个冬天不会过去!疫情当下,企业“逆势而上”必选“上云”跑道

华为云开发者社区

云计算 新基建 华为云 企业上云 云服务器

网页游戏

小端taro

INT类型知多少

Simon

MySQL

第11周总结

娄江国

CHAR与VARCHAR详解

Simon

MySQL

【Kafka】消费者客户端小结(java)

guoguo 👻

可能是首个支持部署 Deno 前后端应用的部署工具

binggg

taro GitHub 前端 deno Node

linux入门系列10--firewalld防火墙管理

黑马腾云

Linux centos 防火墙 linux运维 linux防火墙

终极学习法,你能学会任何东西--程序员的学习之路

盛安德软件

Devops与敏捷二者能否结合?

陈琦

DevOps Scrum 敏捷开发

linux入门系列9--用户管理及文件权限控制

黑马腾云

Linux centos centos7 linux运维 linux用户权限

内容审核平台助力猫爪构建健康安全的社交环境

百度大脑

人工智能 百度 百度大脑 内容审核

英伟达收购ARM:双赢还是灾难?

脑极体

学习笔记

Qx

学习笔记

linux入门系列8--shell编程入门

黑马腾云

Linux centos Shell linux命令 linux编程

JVM原理与实战

东哥

​JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!​

xcbeyond

Java 新特性 JDK1.8 Optional

物联网SIM卡和SIM卡真的不是一回事

华为云开发者社区

人工智能 物联网 华为云 传感器 SIM卡

企业信息化怎么构建?

代码制造者

大数据 低代码 企业信息化 零代码 编程开发

学习python(嵩天老师的课)

Geek_2a27b0

linux入门系列7--管道符、重定向、环境变量

黑马腾云

Linux centos 运维 linux命令 管道符

要老婆吗? AR一键生成的那种

程序员生活志

一位男程序员的英语学习之路

盛安德软件

非IT行业大企程序员讲述MIS系统开发案例

Learun

敏捷开发 企业信息化 企业管理 .net core 「Java 25周年」

区块链技术助力甘肃建食安信息追溯平台 为食品安全“立规矩”

CECBC区块链专委会

食品追溯 食品安全

第11周作业

娄江国

全票通过!易观开源项目DolphinScheduler进入Apache孵化器

易观大数据

智能合约编写之Solidity运行原理-InfoQ