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

3月25日,BSN第二次开发者大赛正式启动,本次大赛以“编写基于多种底层框架的智能合约”为主题,开发者可基于FISCO BCOS等主流底层框架,结合业务场景设计、开发并部署智能合约。

为了让大家更好上手智能合约开发,区块链服务网络发展联盟与FISCO BCOS开源社区共同推出“7个课时速成智能合约全能型开发”系列教程,助力开发者学习并熟悉合约开发,轻松应对此次大赛并拔得头筹。

6164e97904dff5e38a3409dafe993699.png

系列专题 | 超话区块链之智能合约专场

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

作者:储雨知

aa383e7dc08484ad55880679c45237bc.png

引 言

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

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

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

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

Solidity的生命周期

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

d5a5e0242678e6261254b6b0582758cb.png

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

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

下面是一个示例程序,我们通过remix探索它的生命周期。

cfe881947da31a186136bc3daf65778d.png

编译

源代码编译完后,可以通过ByteCode按钮得到它的二进制:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值