当前位置:网站首页>【solidity智能合约基础】节约gas的利器--view和pure
【solidity智能合约基础】节约gas的利器--view和pure
2022-08-02 14:14:00 【super阿真】
一、知识概览
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"; //我的名字
//第一个函数,使用view
function 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值并没有重复消耗。
边栏推荐
猜你喜欢
随机推荐
你的站点可能还没有准备好用于Site KitSite Kit 无法访问 WordPress REST API。请确保其已在您的站点上启用。
Oauth2.0 自定义响应值以及异常处理
audio console无法连接到RPC服务
仿真结果的格式&定制
C#高级教程
2021-03-12
光波导应用中的真实光栅效应
C#实现简单的计算器
分布式一致性协议-Raft
三方对接接口数据安全问题
光栅区域衍射级数和效率的规范
图解MESI(缓存一致性协议)
Unity-编辑器扩展(Editor)
golang-reflect-method-callback
基类和派生类的关系【继承】/多态和虚函数/【继承和多态】抽象类和简单工厂
第二十六章:二维数组
px和em和rem的区别
第三十一章:二叉树的概念与性质
win10无法识别蓝牙麦克风
tpproxy-tcp透明代理