织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

技术分析闪电贷中智能合约执行原理(2)

时间:2021-03-24 16:30来源:未知 作者:admin 点击:
智能合约中是如何调用另一个智能合约的 在智能合约中,我们调用另一个合约的代码,最终会被编译成一个叫作 CALL 的 EVM 虚拟机指令,它的基础 gas 费用

智能合约中是如何调用另一个智能合约的

在智能合约中,我们调用另一个合约的代码,最终会被编译成一个叫作 CALL 的 EVM 虚拟机指令,它的基础 gas 费用 是 40 gas,实际产生的矿工费根据另一个合约执行的指令来计费。

技术分析闪电贷中智能合约执行原理

查看 opCall 这个方法的实现,发现,调用另一个智能合约与当前智能合约同样都是通过 EVM 虚拟机的 Call 方法完成的。

技术分析闪电贷中智能合约执行原理

因此,我们可以发现,其实智能合约的执行,以及智能合约之间的调用,都是在矿工的客户端执行的,并没有进行跨客户端与网络调用,交易失败也是在矿工的客户端进行回滚,因此闪电贷攻击才可以如此快的在一笔交易中完成所有的操作。

智能合约某一步执行失败会怎么样

StateDB 提供了两个方法,分别是 Snapshot 与 RevertToSnapshot,一个用于对 StateDB 进行快照,另一个用于恢复快照。在执行交易前,StateDB 会调用 Snapshot 方法进行快照,如果交易执行到某一步发现错误,则会调用 RevertToSnapshot 进行回滚。因此闪电贷攻击可以实现如果在任何一步出现错误,就当从来没有从借贷平台借过一样,所有状态回滚到交易执行之前,当然交易失败时消耗的矿工费还是得出。

技术分析闪电贷中智能合约执行原理

总结

闪电贷之所以能够在一笔交易中完成各种虚拟资产的交易,实际上都是通过调用去中心化交易所和各种去中心化借贷平台的智能合约来完成的,这些调用只需要在矿工客户端本地即可完成。这笔交易会在收到交易广播的所有具备打包资格的以太坊客户端中执行,谁先执行完成,并打包到下一个区块中,谁就能赢得这笔矿工费。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容