区块链特辑——solidity语言基础(四)
Solidity语法基础学习
七、事件:
事件 Event
·日志(log),是用来快速索引并查询过往资料的手段。
·而solidity是透过“事件”在区块链上写下日志,使用者或由触发的事件所产生的日志,会被写在“执行该交易的区块中”,现在是永久存储。
Indexed & Non-Indexed
·而在以太坊,有两种不同型态的事件可以使用:
·Index 索引的
·Non-Indexed 非索引的
·他们的差异在于“有没有被放过Topics栏位”
·“Topics”有四格bytes32的空格
·Topics[0]→
·keccak(
事件名称+”(”+
事件参数.map(canonical_type_of).join(“.”)+
)
)
·Topics[1~3]则是用来存放Indexed事件参数
Topics的好处
·由于Indexed的资料会放在Topics的资料空间中,因此使用者可以直接监听Topics的栏位,快速找到自己想找的资料。
·而Non-Indexed的资料则会全部被打包成以ABI编码格式的连续资料,存放在data资料栏位中。
·当然Non-Indexed的资料需要先decode才再能查询
宣告语法
event EVENT_NAME(……);
·关键词:event
·宣告一个事件,()内存放的是参数。
·参数名称不一定要填:
·( uint , int , string )
·( uint A , int B , string S )
使用事件
emit EVENT_NAME(……);
·关键字:emit
·触发事件:后面填入对应的参数
放入Topics的索引
event E(type index, ... );
·关键字:indexed
·由于Topics只有三格空间,因此不论事件的参数有多少,最多只能有三个indexed标记的参数。
·若为reference type型态,则会被keccak()处理以后才会被放入。
Example:收发代币事件检测
·新增功能:
·建立合约时触发Create(address,value)的事件。
·透过receive收钱时,触发Rceive(address,value)的事件。
·提领时,触发Withdraw(address,value)的事件。
八、运算:
运算符
Operator
·如同数学上,四则运算有加减乘除
·在solidity里面,不同的型态就有对应的运算符
布尔值
Bool
·!(逻辑非),true <> false
·&&(逻辑与),A且B
·||(逻辑或),A或B
·==(相等),A等价于B
·!=(不等),A不等价于B
·||与&&有短路求值的规则:
·A||B,其中A若为true,则||后面会直接被跳过不判断。
·A&&B,其中A若为false,则&&后面会直接被跳过不判断。
整数
int,unit
·数值比较:
·<=(小于等于)、<(小于)
·==(等于)、!=(不等于)
·>=(大于等于)、>(大于)
·算术运算符:
·+,-,*,/,%(取模数),**(次方)
整数
int,unit
·位元运算符:
·&(AND位元与)
·|(OR位元或)
·^(XOR位元互斥或)
·~(NOT位元非)
& | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
| | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 1 |
^ | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 0 |
~ | 0 | 1 |
1 | 0 |
整数
int,unit
·移位运算符
·<<(左位移),A<<N等价于A**(2**N)
·>>(右位移),A>>N等价于A/(2**N)
·3(二进制)→011
区块链特辑——solidity语言基础(四)的更多相关文章
- 区块链特辑——solidity语言基础(三)
Solidity语法基础学习 五.映射类型: 映射型态 Mapping Type 映射钥匙Key → 真实资料 Value mapping(KeyType → ValueType) VariableN ...
- 区块链特辑——solidity语言基础(六)
Solidity语法基础学习 十.实战项目(二): 1.实战准备: ERC20代币接口 ERC20 Token Interface接口 Interface IName {--} ·关键字:interf ...
- 区块链特辑——solidity语言基础(七)
Solidity语法基础学习 十.实战项目(二): 3.项目实操: ERC20 代币实战 ①转账篇 总发行量函数 totalSupply() return(uint256) ·回传代币的发行总量 ·使 ...
- 比原链CTO James | Go语言成为区块链主流开发语言的四点理由
11月24日,比原链CTO James参加了Go中国举办的Gopher Meetup杭州站活动,与来自阿里.网易的技术专家带来Kubernetes.区块链.日志采集.云原生等话题的分享.James向大 ...
- 区块链中的密码学(四)- Merkle树和SPV节点
什么是Merkle Tree? Merkle Tree 的命名来自于美国密码学家Ralph C. Merkle ,关于他的个人资料:传送门https://en.wikipedia.org/wiki/R ...
- C语言基础四(敲打键盘、寻找资料,循环语句)请一个个字读,助于您的学会机率
循环语句无非几种,常用的就有if()else()结构类型的,while(){}类型的,do(){}while(1);类型,switch()类型,for()类型. 而这章就将前面的所有知识全部汇总下运用 ...
- Solidity语言基础 和 Etherum ERC20合约基础
1. 类型只能从第一次赋值中推断出来,因此以下代码中的循环是无限的, 小. for (var i = 0; i < 2000; i++) { ... } --- Solidity Types ...
- Go语言基础四:数组和指针
GO语言中数组和指针 数组 Go语言提供了数组类型的数据结构. 数组是同一数据类型元素的集合.这里的数据类型可以是整型.字符串等任意原始的数据类型.数组中不允许混合不同类型的元素.(当然,如果是int ...
- python自动化--语言基础四模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
- 001/Go语言构建区块链(mooc)
1.区块链发展与现状 视频地址:https://www.imooc.com/video/17452 注意: 比特币与以太坊最大的区别在于: 以太坊引入了对图灵完美智能合约的支持,人们可以将任何业务逻辑 ...
随机推荐
- 1. C++快速入门--变量和基本类型, 类别
文章使用obsidian编写, 双链部分可能失效 1 基本内置类型 1.1 算术类型 算术类型介绍 bool 类型 字符类型 整数类型 实数浮点.虚数浮点和 复数浮点 参看如下表 带符号和无符号类型的 ...
- 基于sass tailwindcss的传统页面开发脚手架
这是一个基于sass和tailwindcss的快速开发传统多页面的npm脚手架. package.json { "name": "sass-tailwindcss-sta ...
- 搭建gitlab私有仓库
1.下载gitlab 首先在 /etc/yum.repos.d/目录下配置gitlab下载镜像源. # 进入目录 /etc/yum.repos.d/ cd /etc/yum.repos.d/ # 创建 ...
- 教你实现GPUImage【OpenGL渲染原理】
一.前言 本篇主要讲解GPUImage底层是如何渲染的,GPUImage底层使用的是OPENGL,操控GPU来实现屏幕展示 由于网上OpenGL实战资料特别少,官方文档对一些方法也是解释不清楚,避免广 ...
- 利用JavaScript自定义事件完成组件间的数据通信
我们知道,在JavaScript中,原生DOM事件在开发中是很有用的(与用户交互的重要方式),但是操作原生DOM事件其实有两大缺点:性能低.依赖于浏览器(NodeJs.小程序等不可用).那么这个时候, ...
- Nodejs 实现一个CRC16校验
近日在开发一个数据平台,据说nodejs比较适合DIRT类型的程序,所以也搞了一把,虽然接收.转发及其报文解析等功能顺利的实现了,但是由于某些报文涉及到应答,故而需要CRC校验,也算是一个小坑吧,故而 ...
- NAT原理:概念、使用场景、转发流程及规则
本文分享自天翼云开发者社区<NAT原理:概念.使用场景.转发流程及规则>,作者:x****n 网络地址转换(NAT)是一种在计算机网络中将一个网络的IP地址转换为另一个网络的IP地址的技术 ...
- CDN与云计算技术的结合:专业视角下的深度融合
本文分享自天翼云开发者社区<CDN与云计算技术的结合:专业视角下的深度融合>,作者:大利 随着信息技术的不断发展,内容分发网络(CDN)与云计算技术作为两种重要的互联网基础设施,其结合已成 ...
- 深入剖析Base64加解密中遇到的坑点
前言 最近开发过程中遇到了关于使用base64加密传输遇到的神奇问题.需求就是用户的id在链接上露出时需要加密处理,于是后端把下发的用户id改成了base64加密处理后下发了,前端只需要把加密后的用户 ...
- 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异 数据库统计信息的作用 在数据库系统中,查询优化在决定应用程序性能方面起着至关重要的作用. 高效的查询依赖于最新的数 ...