solidity 之函数篇

函数可见性(Function Visibility)

Solidity 中主要有 4 种可见性的关键字

  • Public:公有函数
  • Private:私有函数,只有定义该函数的合约本生能够调用,衍生合约或者外部无法调用
  • Internal:内部函数,只有定义该函数的合约本生和衍生合约能够调用。
  • External:外部函数,只有外部合约或者地址能够调用。合约则无法调用。

其中需要特别注意的是只有 public 和 external 函数可以加上 payable 特性,而 internal 和 private 函数就不行。

View vs Pure ?

函数也能够接受不同的关键词。solidity 的编译器中也提到了这些信息。下面是关于这 2 个关键词的介绍。

  • View : view 函数可以读取合约中存储的信息,但是不能够改变合约存储的信息。所以它们是理想的 getters。view 函数在执行的时候不需要消耗 gas。但是,有一些需要注意的事项。如果 view 函数在外部调用,它是不需要消耗任何的 gas 的。如果 view 函数被合约内部调用的另一个非 view 函数中调用,它还是会消耗一些 gas。那是因为别的函数在链上创建了交易,这项交易需要被网络上的其它节点进行验证。

  • Pure : pure 函数既不能读取也不能修改合约中存储的信息。大部分情况下,pure 函数用作计算,就像执行数学或者密码学操作的时候。

payable function

当 payable 关键词加到函数上的时候,这个函数可以发送也可以接收 Ethers。但是如果像一个没有 payable 关键词的函数发送 Ethers 的时候,这个函数会自动拒绝发送的 Ethers。

Fallback funtion

在 solidity 中 allback 函数的创建主要有 2 个目的:

  • 货币管理:以一种更有意义的方式进行货币的接收和分配。
  • 错误处理:如果一个用户调用了合约中根本不存在的函数?所以 fallback 函数能够以更加优雅的方式处理这种情况。

一个默认的 fallback 函数可以以下面的方式进行定义。这里的 pubic 和 payable 关键词表示合约可以接收 ether。

function() public payable {}

github仓库

https://github.com/coffiasd/solidity-learn

solidity之函数篇相关推荐

  1. PHP函数篇之掌握ord()与chr()函数应用

    ord()函数把字符转换为十进制数字,chr()函数把十进制数字转化为字符,在二进制,八进制,十进制与十六进制之间充当桥梁的作用 中文字符编码研究系列第三期,PHP函数篇掌握ord()与 chr()函 ...

  2. Python函数篇(5)-装饰器及实例讲解

    1.装饰器的概念   装饰器本质上就是一个函数,主要是为其他的函数添加附加的功能,装饰器的原则有以下两个: 装饰器不能修改被修饰函数的源代码 装饰器不能修改被修改函数的调用方式   装饰器可以简单的理 ...

  3. circle后面是什么意思 python_python小课堂16 - 函数篇

    前言 函数篇 ------ 说起函数,大家高中应该都学过类似的概念,函数指一个量随着另一个量的变化而变化,而在编程中,函数的概念则不尽相同.举个例子,比如打过dota的同学都知道,在dota中通过sh ...

  4. html5 判断分享,好程序员HTML5大前端分享之函数篇

    好程序员HTML5大前端分享之函数篇,将代码编写在函数中,就可以避免在非必要情况下调用该代码,也就是说我们可以让一段代码在特定情况下再去执行. function 关键字:该关键字表示要声明一个函数. ...

  5. SQL server 数据库 (函数篇 2)

    函数 上篇:函数篇1 聚合函数 sum() 求和,将指定字段中的数据累加求和,只能对数字型字段进行统计. avg() 求平均值,统计指定字段中的平均数值. max() 最大值,统计指定字段中的最大数值 ...

  6. cstring::replace不区分大小写_Excel VBA之函数篇-3.11订单号千奇百怪,如何按照结构区分来源...

    前景提要 随着经济水平的不断的提高,现在很多的外资企业都已经来到中国开厂和中国公司打交道做生意了,而很多国内公司为了适应各种不同的市场,也是开发了各种不同的业务,这些业务很多都是通过订单号的形式存在于 ...

  7. 测试Unity中常用代码的运行所需时间:循环和函数篇 #性能测试 # for,foreach,while循环 #委托事件

    C# 循环和函数篇 〇.前言 系统自带计时器 -System.Diagnostics.StopWatch- 的使用 一.循环类型测试 1. for 循环测试 (1). 前后置自增自减测试 (2). 与 ...

  8. 初设大蟒蛇之Python函数篇

    初设大蟒蛇之Python函数篇 1.内嵌函数: 内嵌函数,顾名思义,就是在一个已经定义的函数内部再定义一个函数,如下简单的内嵌函数: #!/usr/bin/env python def func_ou ...

  9. MySQL零基础从入门到精通(函数篇)

    MySQL零基础从入门到精通(函数篇) 在MySQL中,为了提高代码重用性和隐藏实现细节,MySQL提供了很多函数.函数可以理解为别人封装好的模板代码. 分类 聚合函数 数学函数 字符串函数 日期函数 ...

最新文章

  1. 2021年春季学期-信号与系统-第二次作业参考答案-第七小题
  2. Android Studio检测内存泄露和性能
  3. 复旦大学肖仰华教授:知识图谱落地的基本原则与最佳实践
  4. 薅羊毛丨5个平价好物,终于终于终于打折了!
  5. zookeeper的安装与配置(单机和集群)
  6. PS抠图神器: KnockOut 2.0安装汉化和使用教程
  7. gradle for androidstudio 各版本下载地址
  8. android程序安装空间不足,AndroidStudio提示磁盘空间不足
  9. webview是什么东西_做性能优化前需要考虑什么?
  10. pt-archiver数据归档
  11. PyTorch学习基础知识二
  12. linux加静态路由命令,LINUX添加静态路由
  13. H5+JS+CSS3 实现圣诞情缘--学习心得2
  14. 扫地机器人扫水泥地板有用吗_拖地机器人好用吗—拖地机器人的优点介绍
  15. 面试题 猜颜色球游戏
  16. 重装战姬服务器正在维护,《重装战姬》4月23日更新维护公告
  17. Matlab动画模拟分子布朗运动的示例
  18. 冰天雪地摄影技巧创意色彩指南
  19. JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写
  20. 谈谈 Spring 中的 NoSuchBeanDefinitionException

热门文章

  1. Android之打开系统的网络设置
  2. 【人工智能】Embodied AI : 人工智能的下一步,已经卷到了机器人了
  3. 部署https后浏览器提示不安全,不出现绿色小锁?
  4. Hadoop系列 (九):Sqoop详细介绍
  5. 设置成品物料可以进行货物移动,不可进行生产工单的创建!
  6. CentOS7部署安装CloudStack4.11.0成功添加第一个主机
  7. 实验五 备份与恢复数据库
  8. 红帽8 搭建yum仓
  9. 无法更新计算机启动系统配置文件,由于启动计算机出现页面配置问题,无法更新计算机的启动配置...
  10. 关于苹果实习生的工资,你怎么看?