solidity[4]-pure与view剖析

pure与view代码例子

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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呢??
    其实很简单,因为作为一个全节点来说,会同步保存所有的信息,保存在本地中。
    那么我们要查看区块链上的资源,同样可以直接在一个全节点之上查询数据即可。
    我不需要全世界的节点都知道。都去同时的处理这笔事务。我也不需要将调用这笔函数的信息记录在区块链上。
    所以view仍然不消耗gas。
  • 本文链接: https://dreamerjonson.com/2018/11/09/solidity-4/
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!

郑建勋(jonson)区块链工程师 & Web工程师

灾难总是接踵而至,这正是世间的常理。你以为只要哭诉一下,就会有谁来救你吗?如果失败了,就只能说明我不过是如此程度的男人。

solidity[4]-pure与view剖析相关推荐

  1. Oracle public view,【易错概念】以太坊Solidity函数的external/internal,public/private,view/pure/payable区别...

    1. 函数类型:内部(internal)函数和外部(external)函数 函数类型是一种表示函数的类型.可以将一个函数赋值给另一个函数类型的变量,也可以将一个函数作为参数进行传递,还能在函数调用中返 ...

  2. Solidity constant view pure关键字的区别

    在Solidity中constant.view.pure三个函数修饰词的作用是告诉编译器,函数不改变/不读取状态变量,这样函数执行就可以不消耗gas了(是完全不消耗!) constant view p ...

  3. Android一步一步剖析+实现仿支付宝手势密码自定义View

    最近项目需求:要求在项目中添加手势密码和指纹验证,恰巧最近在苦练自定义View,于是参考了网上轮子和自己的理解,实现了如下的效果. 国际惯例:Without pic you say a JB(奖杯). ...

  4. 以太坊Solidity函数的external/internal,public/private区别

    2019独角兽企业重金招聘Python工程师标准>>> 1 函数类型内部(internal)函数和外部(external)函数 函数类型是一种表示函数的类型.可以将一个函数赋值给另一 ...

  5. solidity智能合约开发简介

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

  6. 【Solidity】3.类型 - 深入理解Solidity

    索引 [Solidity]1.一个Solidity源文件的布局 [Solidity]2.合约的结构体 [Solidity]3.类型 [Solidity]4.单位和全局可变量 [Solidity]5.表 ...

  7. 区块链教程(三):Solidity编程基础

    注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 区块连教程(一):前置知识-linux补充 区块链教程(二):基础概念介绍 区块链教程(三):Solidity编程基础 区块链教程(四):搭建私链 ...

  8. Solidity学习笔记

    学习视频来源: 基于以太坊的智能合约开发教程[Solidity] 读取数据不需要消耗燃料费Gas,修改数据需要消耗燃料费. pragma solidity ^0.4.0;contract Hellow ...

  9. 以太坊环境以及Solidity学习笔记

    一.以太坊环境搭建 以太坊 私有链搭建 Geth+Mist钱包 以太坊 链私有链环境搭建(windows) S1:下载安装Geth.Mist客户端 S2:初始化创世纪节点 定义一个配置文件genesi ...

  10. Solidity的函数类型以及可见性分析(类比Java)

    函数类型 函数也是一种类型(值类型),它是函数的调用方式.函数类型可以被赋值吗,作为参数和返回结果.函数可以分为两类:内部函数(Internal)和外部函数(External). 内部函数Intern ...

最新文章

  1. c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc
  2. vscode 新建cpp文件_Visual Studio Code (vscode)编译C++
  3. 社会工程学[Social Engineering]
  4. Sereja and Brackets CodeForces - 380C (树状数组+离线)
  5. 2021年母婴行业洞察报告
  6. [转]游戏UI与flash 组件开发
  7. 【英语学习】【Level 08】U02 Movie Time L4 From the page to the big screen
  8. Addressable系统的加载资源API总结
  9. Windows 安装 Redis 教程
  10. angularjs学习第四天笔记(第一篇:简单的表单验证)
  11. 四位共阳极数码管显示函数_初学者,求助!!设计一个4位LED数码管动态扫描显示电路,用...
  12. 计算机辅助设计排版,计算机辅助设计
  13. 诺基亚如何利用计算机上网,诺基亚E63的WIFI上网功能全教程
  14. 如何提取微信公众号内视频 (高清 无水印)
  15. java实现NC数据等值线等值面可视化
  16. 光纤交换机与普通交换机的区别
  17. JavaScript思维导图
  18. Python解决图文验证码登录识别(1)
  19. HTTP洪水Gong击网站-演示
  20. android 自动亮屏解锁,android锁屏唤醒并解锁屏幕

热门文章

  1. Beta-VAE论文阅读笔记
  2. 锁定计算机和睡眠有什么区别,电脑win7休眠和睡眠有什么区别?
  3. ThingJS 开发使用感悟
  4. wword中如何在方框(□)中打钩(√)
  5. mysql replace into 异常1365 - Division by 0
  6. ubuntu18.04安装dash-to-dock出错的问题
  7. polkit启动失败_zabbix4.4 启动失败分析
  8. phpstorm如何找回删除的文件
  9. 线性代数拾遗(4)—— 非齐次线性方程组通解的结构
  10. 层次分析法(AHP)模型的应用案例