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语言基础(四)的更多相关文章

  1. 区块链特辑——solidity语言基础(三)

    Solidity语法基础学习 五.映射类型: 映射型态 Mapping Type 映射钥匙Key → 真实资料 Value mapping(KeyType → ValueType) VariableN ...

  2. 区块链特辑——solidity语言基础(六)

    Solidity语法基础学习 十.实战项目(二): 1.实战准备: ERC20代币接口 ERC20 Token Interface接口 Interface IName {--} ·关键字:interf ...

  3. 区块链特辑——solidity语言基础(七)

    Solidity语法基础学习 十.实战项目(二): 3.项目实操: ERC20 代币实战 ①转账篇 总发行量函数 totalSupply() return(uint256) ·回传代币的发行总量 ·使 ...

  4. 比原链CTO James | Go语言成为区块链主流开发语言的四点理由

    11月24日,比原链CTO James参加了Go中国举办的Gopher Meetup杭州站活动,与来自阿里.网易的技术专家带来Kubernetes.区块链.日志采集.云原生等话题的分享.James向大 ...

  5. 区块链中的密码学(四)- Merkle树和SPV节点

    什么是Merkle Tree? Merkle Tree 的命名来自于美国密码学家Ralph C. Merkle ,关于他的个人资料:传送门https://en.wikipedia.org/wiki/R ...

  6. C语言基础四(敲打键盘、寻找资料,循环语句)请一个个字读,助于您的学会机率

    循环语句无非几种,常用的就有if()else()结构类型的,while(){}类型的,do(){}while(1);类型,switch()类型,for()类型. 而这章就将前面的所有知识全部汇总下运用 ...

  7. Solidity语言基础 和 Etherum ERC20合约基础

    1. 类型只能从第一次赋值中推断出来,因此以下代码中的循环是无限的,  小. for (var i = 0; i < 2000; i++) { ... } --- Solidity Types ...

  8. Go语言基础四:数组和指针

    GO语言中数组和指针 数组 Go语言提供了数组类型的数据结构. 数组是同一数据类型元素的集合.这里的数据类型可以是整型.字符串等任意原始的数据类型.数组中不允许混合不同类型的元素.(当然,如果是int ...

  9. python自动化--语言基础四模块、文件读写、异常

    模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...

  10. 001/Go语言构建区块链(mooc)

    1.区块链发展与现状 视频地址:https://www.imooc.com/video/17452 注意: 比特币与以太坊最大的区别在于: 以太坊引入了对图灵完美智能合约的支持,人们可以将任何业务逻辑 ...

随机推荐

  1. Solution -「PKUWC 2018」「洛谷 P5298」Minimax

    \(\mathscr{Description}\)   Link.   给定一棵二叉树,每片叶子有一个权值,所有权值互不相同.每个非叶结点 \(u\) 有一个概率 \(p_u\in(0,1)\),表示 ...

  2. JVM监控工具使用

    1. 描述 ​ 程序在开发过程中,有可能会发生CPU飙高.内存溢出等问题或系统在后期调优阶段,不可避免的要监控JVM情况,JDK自带的Jconsole监控工具,结合Tomcat使用非常方便,占用内存小 ...

  3. AQS源码深度剖析,大厂面试必看!

    AQS(AbstractQueuedSynchronizer)是Java众多锁以及并发工具的基础类,底层采用乐观锁,大量采用CAS操作保证其原子性,并且在并发冲突时,采用自旋方法重试.实现了轻量高效的 ...

  4. w3cschool-Hive 教程

    https://www.w3cschool.cn/hive_manual/ 一.简述 HiveQL是一种声明式语言,用户提交查询,而Hive会将其转换成MapReduce job,如下图.一般来说大部 ...

  5. w3cschool-微信小程序开发文档-指南

    https://www.w3cschool.cn/weixinapp/9wou1q8j.html https://www.w3cschool.cn/miniappbook/ 微信小程序 小程序简介 小 ...

  6. Vector不推荐使用的原因

    线程安全可以自己这么用:

  7. 3090 cuda环境配置杂记

    实验室新配了3090的电脑,cuda环境配置上出了些问题,百度很久才找到解决方法,因此记录下来. 主要参考:(6条消息) 服务器Linux环境配置cuda(非管理员)_@@Lynn的博客-CSDN博客 ...

  8. 小程序之按钮你不知道的v2

    <button type="primary">提交</button> <button type="primary" loading ...

  9. 引领行业数字变革,天翼云出席IDC年度盛典暨颁奖典礼!

    近日,2024 IDC中国年度盛典暨颁奖典礼在上海隆重开幕.天翼云出席大会数字工业行业峰会及金融行业峰会,分享了天翼云的智算布局及在行业数字化转型方面的技术探索和实践成果. 天翼云全面升级产品及生态矩 ...

  10. 开源接流:一个方法搞定3D地图双屏联动

    老大提需求:一份数据,在2D地图上可编辑,在3D地图上显示高度信息,关键是两个地图得支持视图同步,末了还来句"两天时间够了吧?"我饶了饶头,内心各种问候...,代码如何下手,特X的 ...