Solidity 中 transfer、send、call的区别
相同点 :
都可以在合约之间相互转账,send和call都有返回值。需要在代码中判断返回值。
- addr.transfer(1 ether)、addr.send(1 ether)、addr.call.value(1 ether)的接收方都是addr。
- 如果使用addr.transfer(1 ether)、addr.send(1 ether),addr合约中必须增加fallback回退函数!
- 如果使用addr.call.value(1 ether),那么被调用的方法必须添加payable修饰符,否则转账失败!
不同点:
1. transfer
- 如果异常会转账失败,抛出异常(等价于require(send()))(合约地址转账)
- 有gas限制,最大2300
- 函数原型:<address payable>.transfer(uint256 amount)
2. send
- 如果异常会转账失败,仅会返回false,不会终止执行(合约地址转账)
- 有gas限制,最大2300
- 函数原型:<address payable>.send(uint256 amount) returns (bool)
3. call
- 如果异常会转账失败,仅会返回false,不会终止执行(调用合约的方法并转账)
- 没有gas限制
- <address>.call(bytes memory) returns (bool, bytes memory)
多建议使用call 。因为随着 eip 的升级,底层的操作gas会发生变化,可能会导致之前安全的代码不在安全。
Solidity 中 transfer、send、call的区别相关推荐
- Android Handler中post方法与send方法的区别及使用
目录 概述 Handler使用sendMessage方法 Handler使用post方法 post方法与send方法的区别 全部代码 效果图 后记 概述 Handler机制是Android中线程通信的 ...
- 已知bug列表——Solidity中文文档(12)
写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第十二部分<已知bug列表>,特发布出来邀请solidity爱好者.开发者 ...
- 风格指南——Solidity中文文档(10)
写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第十部分<风格指南>,特发布出来邀请solidity爱好者.开发者做公开的 ...
- 网络编程中BIO和NIO的区别
网络编程中BIO和NIO的区别 先上结论 BIO中,每个请求因为要阻塞直到结果返回,所以比较好的解决是每个请求都需要一个线程来处理,但是线程又是他的制约条件. NIO中,每个请求进来都会绑定到一个ch ...
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别
Response.Redirect(),Server.Transfer(),Server.Execute()的区别 1.Response.Redirect(): Response.Redirect方法 ...
- python中的return和print的区别_python中return和print的区别(详细)
Huskiesir python最近正在研究.今天,我面临一个问题,那就是,返回和印刷的区别.双方都能输出结果.的区别是什么?闲话少说,看下面的例子.# Code1: def break_words( ...
- 浅谈HTTP中Get与Post的区别_转
可参考:HTTP请求中POST与GET的区别 Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个UR ...
- 【网摘】 浅谈HTTP中GET与POST的区别
文章出处:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html 浅谈HTTP中Get与Post的区别 Http定义了与服务器交互的不 ...
- 一起谈.NET技术,asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别...
Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一个页面: Response.Redirect("WebForm ...
最新文章
- java使用Crawler4j开发爬虫
- subprocess中执行git命令报告no such file or directory一例
- C#委托、事件学习之(一)——委托事件描述
- canoco5冗余分析步骤_打造高性能的大数据分析平台
- 【答阿里寒冬面试题】呵呵,大神的面试题就是好!
- cesium3dtiles位置改变
- spring mvc 总体概况
- 在计算机回收站中可以恢复,电脑回收站删除了怎么恢复吗
- 30天自制操作系统之叠加处理
- deepinu盘制作工具_用U盘装系统,试试这款多系统启动盘制作工具!
- 智能文档比对小程序,支持扫描件比对、PDF比对,Word比对,合同比对、公文比对,限时免费使用
- Vue 下载文件需要token设置
- Linux Shell基础教程
- req.getParameterValues 输出前端乱码
- excel锁定单元格不能修改_Excel如何锁定部分区域不被编辑,1分钟就学会
- 淘宝客搜索链接组成详解
- scikit-learn中的OneHotEncoder用法
- Secondary NameNode:究竟是什么?
- 保险与赌博的差异,航延险是赌博吗?
- redisTemplate乱码问题
热门文章
- 9.0系统登录 服务器,游戏工作室来袭!魔兽9.0经济系统与服务器负荷再次面临考验...
- 记Java如何获取MAC地址
- 使用 java-client 连接k8s
- c语言数据结构大作业,数据结构大作业——树(和广义表)
- 数据库设计规范-通用版
- 大聪明教你学Java设计模式 | 第九篇:桥接模式
- 自托管视频共享平台Clipable
- 很高兴认识大家。新人请多担待
- 【Android界面实现】使用Canvas对象实现“刮刮乐”效果
- 保研北京大学计算机研究生的同学,本科都是哪些大学?