pure与view代码例子

如下的一段solidity智能合约中,只要有了pure与view修饰符的函数,那么调用函数就不会消耗gas。
而没有pure与view修饰的函数,如下面的change就会消耗gas。

12345678910111213141516171819
pragma solidity ^0.4.23;contract HelloWorld{    string public name = "jonson";

    function getName() public view returns(string){        return name;    }

    function changeName(string _name) public{        name = _name;

    }

    function testPure(uint a,uint b) public pure returns(uint){        return a+b;

    }}

pure与view使用场景

  • view: 可以自由调用,因为它只是“查看”区块链的状态而不改变它

  • pure: 也可以自由调用,既不读取也不写入区块链

pure与view原理

  • pure:不读取更不修改区块上的变量,使用本机的CPU资源计算我们的函数。所以不消耗任何的资源这是很容易的理解的。

  • view: 但是view既然要读取区块链上的值,为什么也不用消耗gas呢?

转载于:https://blog.51cto.com/13784902/2320193

solidity智能合约[4]-pure与view剖析相关推荐

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

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

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

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

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

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

  4. Solidity 智能合约入门

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

  5. 基于以太坊的次高价盲拍solidity智能合约(二)

    基于以太坊的次高价盲拍solidity智能合约(二) 4.揭标 5.第三方仲裁人终结拍卖 4.揭标 揭标的过程应该是本智能合约中最复杂且具有灵魂的关键步骤. 当每个发起过竞标的用户,利用该标的隐式价格 ...

  6. 【区块链实战】Solidity 智能合约如何给账户充值

    目录 一.实战场景 二.知识点 智能合约 智能合约函数 智能合约充值 payable 关键字 智能合约部署地址 智能合约的运行 合约 this 对象 三.菜鸟实战 四.运行结果 一.实战场景 Soli ...

  7. 蚂蚁区块链第12课 如何使用命令行编译工具solcjs编译Solidity智能合约?

    1,摘要 蚂蚁区块链合约平台支持 Solidity 智能合约,针对合约源代码的编译,可以直接通过蚂蚁区块链 Cloud IDE 合约开发环境进行合约编译.部署.测试和调试. 本文介绍由蚂蚁区块链平台提 ...

  8. solidity智能合约implicit conversion异常

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

  9. solidity智能合约中tx.origin的正确使用场景

    简介 tx.origin是Solidity的一个全局变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址.在智能合约中使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击. 但针对tx. ...

  10. web3j用于solidity智能合约maven插件

    web3j maven插件用于基于solidity智能合约文件创建java类. 用法 插件的基本配置将从src/main/resources获取solidity文件,并将java类生成到src/mai ...

最新文章

  1. js变量以及其作用域详解
  2. RONG出创新—2019年度春季学期“医工结合系列研讨会”圆满落幕
  3. Spring @Autowired和@Resource
  4. XAML特殊字符 (转)
  5. 每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒?
  6. 下拉列表左右选择案例
  7. 欠采样(undersampling)和过采样(oversampling)会对模型带来怎样的影响
  8. 四十七、Tableau地理可视化
  9. 浅谈OCR之Tesseract
  10. 使用 VMware + win10 + vs2019 从零搭建双机内核调试环境
  11. jquery获取select中的option的text值
  12. nodejs安装失败
  13. 股票中买1、买2、买3和卖1、卖2、卖3
  14. 英特尔立 Flag:年末一定彻底解决“芯片门”Bug!
  15. python自动化办公入门书籍-Python如此神奇,让繁琐工作自动化 (文中含Python基础)...
  16. spark配置IntelliJ开发环境详解
  17. Hibernate 二级缓存和查询缓存
  18. 杭电oj部分新手入门题目全解(1089-1096)
  19. R语言基础—学习笔记 lecture01
  20. 为什么爱因斯坦反对《自然辨证法》

热门文章

  1. 基于MT5的沪深股票回测二 导入历史数据
  2. ENVI/ArcGIS根据坐标位置提取影像DN值(批量)
  3. 利用GDAL根据栅格影像DN值实现颜色渲染
  4. postgreSQL 中raise notice用法
  5. 编译疑问: Warning: Backslash and Newline separated by space
  6. Linux 读书笔记 一
  7. J - MaratonIME goes to the japanese restaurant (again)
  8. 全面详解互联网企业开放API的 “守护神”
  9. 计算机前沿技术讲座心得体会
  10. DEV C++ 关于自动缺省源设置问题