solidity[4]-pure与view剖析
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剖析相关推荐
- Oracle public view,【易错概念】以太坊Solidity函数的external/internal,public/private,view/pure/payable区别...
1. 函数类型:内部(internal)函数和外部(external)函数 函数类型是一种表示函数的类型.可以将一个函数赋值给另一个函数类型的变量,也可以将一个函数作为参数进行传递,还能在函数调用中返 ...
- Solidity constant view pure关键字的区别
在Solidity中constant.view.pure三个函数修饰词的作用是告诉编译器,函数不改变/不读取状态变量,这样函数执行就可以不消耗gas了(是完全不消耗!) constant view p ...
- Android一步一步剖析+实现仿支付宝手势密码自定义View
最近项目需求:要求在项目中添加手势密码和指纹验证,恰巧最近在苦练自定义View,于是参考了网上轮子和自己的理解,实现了如下的效果. 国际惯例:Without pic you say a JB(奖杯). ...
- 以太坊Solidity函数的external/internal,public/private区别
2019独角兽企业重金招聘Python工程师标准>>> 1 函数类型内部(internal)函数和外部(external)函数 函数类型是一种表示函数的类型.可以将一个函数赋值给另一 ...
- solidity智能合约开发简介
1.solodity简介 Solidity语言是一种以太坊智能合约高级编程语言,运行在以太坊(Ethereum)虚拟机(EVM)之上. Solidity语言是一种语法类似JavaScript的高级编程 ...
- 【Solidity】3.类型 - 深入理解Solidity
索引 [Solidity]1.一个Solidity源文件的布局 [Solidity]2.合约的结构体 [Solidity]3.类型 [Solidity]4.单位和全局可变量 [Solidity]5.表 ...
- 区块链教程(三):Solidity编程基础
注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 区块连教程(一):前置知识-linux补充 区块链教程(二):基础概念介绍 区块链教程(三):Solidity编程基础 区块链教程(四):搭建私链 ...
- Solidity学习笔记
学习视频来源: 基于以太坊的智能合约开发教程[Solidity] 读取数据不需要消耗燃料费Gas,修改数据需要消耗燃料费. pragma solidity ^0.4.0;contract Hellow ...
- 以太坊环境以及Solidity学习笔记
一.以太坊环境搭建 以太坊 私有链搭建 Geth+Mist钱包 以太坊 链私有链环境搭建(windows) S1:下载安装Geth.Mist客户端 S2:初始化创世纪节点 定义一个配置文件genesi ...
- Solidity的函数类型以及可见性分析(类比Java)
函数类型 函数也是一种类型(值类型),它是函数的调用方式.函数类型可以被赋值吗,作为参数和返回结果.函数可以分为两类:内部函数(Internal)和外部函数(External). 内部函数Intern ...
最新文章
- c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc
- vscode 新建cpp文件_Visual Studio Code (vscode)编译C++
- 社会工程学[Social Engineering]
- Sereja and Brackets CodeForces - 380C (树状数组+离线)
- 2021年母婴行业洞察报告
- [转]游戏UI与flash 组件开发
- 【英语学习】【Level 08】U02 Movie Time L4 From the page to the big screen
- Addressable系统的加载资源API总结
- Windows 安装 Redis 教程
- angularjs学习第四天笔记(第一篇:简单的表单验证)
- 四位共阳极数码管显示函数_初学者,求助!!设计一个4位LED数码管动态扫描显示电路,用...
- 计算机辅助设计排版,计算机辅助设计
- 诺基亚如何利用计算机上网,诺基亚E63的WIFI上网功能全教程
- 如何提取微信公众号内视频 (高清 无水印)
- java实现NC数据等值线等值面可视化
- 光纤交换机与普通交换机的区别
- JavaScript思维导图
- Python解决图文验证码登录识别(1)
- HTTP洪水Gong击网站-演示
- android 自动亮屏解锁,android锁屏唤醒并解锁屏幕