一、知识概览

view和pure的使用方法:view是只有输入没有输出,pure是单纯的输入和输出。调用这两种函数时,均不消耗燃料。而对内存的状态进行改变时,需要消耗燃料。因此我们称view和pure是节约gas的利器。
        public是权限的标识符,如果不加说明,编译时默认是public,但是会警告甚至是错误(版本不同)。权限的标识符体现出封装的特点,类似于C++,但是也有不同,solidity的权限标识符包括四种--public(任何人都可以调用该函数,包括DApp的使用者),private(只有合约本身可以调用该函数(在另一个函数中)),internal(只有这份合同以及由此产生的所有合同才能称之为合同),external(只有外部可以调用该函数,而合约内部不能调用)

二、例证

下面我们通过一个例子来更好的理解

pragma solidity ^0.4.0;    //0.4.0是版本号,不用过于纠结contract HelloWorld{        //创建名为HelloWorld的合约 string Myname="Ba_Xijie";    //我的名字//第一个函数,使用viewfunction getName()public view returns(string){return Myname;}//第二个函数,对内存进行改变function changeName(string _newName)public{Myname=_newName;    //将_newName赋值给Myname}function pureTest(string _name) pure public returns(string){return _name;    //直接返回}
}

编译通过,没有问题的哈

三、运行结果与分析

下面Deploy一下~

1.getName函数

首先点击getName即调用该函数,显示出了我的名字,这个“0”的意思是这个函数可以有多个返回值,虽然这里只有一个string类型的返回值。

通过多次调用这个函数,会发现燃料没有重复消耗,维持在一个值:

2.changeName函数

输入一个字符串(注意英文输入引号),点击调用changName函数,

查看gas值,变了

多次调用函数gas都会被消耗。

3.pureTest函数

同样的一波操作,调用pureTest函数

输出值为“希希”,多次调用,gas值并没有重复消耗。

【solidity智能合约基础】节约gas的利器--view和pure相关推荐

  1. 【链块技术36期】智能合约基础语言(一)——Solidity概述和开发工具的使用

    原文链接:区块链技术语言:Solidity(一):概述和开发工具的使用 一.目录 ☛Solidity的概述 ☛Solidity开发工具remix的使用 ☛Solidity本地开发工具remix安装 二 ...

  2. solidity智能合约开发简介

    1.solodity简介 Solidity语言是一种以太坊智能合约高级编程语言,运行在以太坊(Ethereum)虚拟机(EVM)之上. Solidity语言是一种语法类似JavaScript的高级编程 ...

  3. Solidity智能合约库:区块链工程师的随身工具箱

    编者荐语: Solidity使用起来不如其他语言那般丝滑顺畅?安全事故难以避免?社区迎来适用于FISCO BCOS的Solidity智能合约库,轻松破解合约的各种小难题,让合约开发更加快速高效.省时省 ...

  4. 微众银行Solidity智能合约库:区块链工程师的随身工具箱

    区块链技术在经历了十余年的发展后,渐呈"燎原之势",不断在各行业落地生根.但同时,从技术的角度看,区块链应用开发仍然有着较高的门槛,存在不少痛点.为了提升应用开发各环节的用户体验, ...

  5. 区块链智能合约Coursera(第一周)智能合约基础

    课程链接 https://www.coursera.org/learn/smarter-contracts/home/week/1 这是区块链专项课程的第二门课 智能合约 Smart Contract ...

  6. Solidity 智能合约入门

    Solidity 智能合约入门 存储合约示例 将一个数据放置在链上 // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.16 &l ...

  7. 微众银行《Solidity智能合约库》区块链工程师的随身工具箱之初体验相当的nice

    文章目录 一.智能合约库简介 二.痛点及解决方式 痛点一:计算可能溢出 痛点二:转换不够便捷 痛点三:数组操作不够丰富 痛点四:不提供字符串内置操作 痛点五:高级数据结构不完备 总结 一.智能合约库简 ...

  8. 以太坊solidity智能合约-生成随机数

    Solidity随机数生成 在以太坊的只能合约中,没有提供像其他面向对象编程一样的生成随机数的工具类或方法.其实,所谓的随机数也是伪随机的,没有哪一种语言能够真正的生成随机数. 对于solidity来 ...

  9. solidity智能合约implicit conversion异常

    问题场景 在使用^0.5.10版本的solidity时,如果使用this关键字会出现以下问题. 代码: require(tokenContract.balanceOf(this) >= _num ...

最新文章

  1. Linux-LNMP(静态元素不记录日志和过期时间,防盗链,解析php,代理,支持ssl)
  2. archlinux 安装 Windows 字体
  3. ML:分类预测问题中评价指标(ER/混淆矩阵P-R-F1/ROC-AUC/RP/mAP)简介、使用方法、代码实现、案例应用之详细攻略
  4. 百度视频携手神策数据 为用户精准推送短视频内容
  5. 3.6 mkpasswd命令
  6. 分享在MVC3.0中使用jQuery DataTable 插件
  7. CodeForces - 1316B String Modification(找规律)
  8. TCP协议通讯流程(三次握手及四次挥手)
  9. 10个经典的爆炸化学反应,个个都是你惹不起的“暴脾气”
  10. crontab——Linux 下的定时任务
  11. 编程基础(动态内存的分配)
  12. Twaver-HTML5基础学习(11)形状节点(ShapeNode)
  13. 破解电视盒 运营商送的,各种型号。通用 TTL 破解电视盒,更新华为悦盒
  14. 财商大电影——10部可以锻炼财商思维…
  15. 拓扑优化丨99行拓扑优化详细解释(OC优化准则)
  16. 电脑蓝屏代码:nvlddmkm.sys的处理方法
  17. 三、box 盒子模型
  18. MongoDB 3.0 用户创建
  19. Mission Planner中级应用(APM或PIX飞控)4——无人机APM飞控硬件故障简单维修(上)
  20. Android 蓝牙Hid开发

热门文章

  1. 通过C语言解决简易的计算时间差问题
  2. 安全防御——防火墙一
  3. java graphicsenvironment_如何确定GraphicsEnvironment是否存在
  4. 联邦学习安全之攻防简介
  5. 临沂国际商品交易中心老师带单正规吗?
  6. iOS中通过UIColor生成UIImage
  7. 双非本科字节跳动Android面试题分享,学习路线+知识点梳理
  8. 放大你的格局,你的人生将不可思议
  9. 品牌推广别再迷茫,通过这7个步骤,品牌推广成倍增长
  10. 需求管理计划和范围管理计划的区别