016:Solidity语法|《ETH原理与智能合约开发》笔记

2018-08-21  本文已影响55人  吉祥在成长

待字闺中开发了一门区块链方面的课程:《深入浅出ETH原理与智能合约开发》,马良老师讲授。此简书文集记录我的学习笔记。

课程共8节课。其中,前四课讲ETH原理,后四课讲智能合约。
第五课分为三部分:

  1. Dapp用例
  2. 合约结构
  3. Solidity语法

这篇文章是第五课第三部分的学习笔记:Solidity语法 。


这节课主要讲解了以太坊编程语言 Solidity 简介和语法基础。

1、Solidity 简介

1.1 Solidity 历史

1.2 Solidity 技术特性

1、Solidity 语法基础

这节课只从整体上介绍一下基础的语法,具体细节需要在实践中探索。

Solidity 语法(1)

2.1 数据类型

2.2 引用类型与映射

Dynamic Array,动态数据,声明时并不会特定地标明这个数据有多长,一般还附有一个属性,就是长度。通过改变长度,来改变整个动态数组的大小。
在动态数组之上,有一个衍生的类型是字节数组(Bytes),它也是一个可变长的数组,是以原始字节存储的内容。
在动态数组基础之上,还有另外一个数据类型,字符串(String),将字符以UTF-8格式编码后存储在字节数组上,它的长度信息在这里不可用。

其中,Bytes包括bytes1,bytes2,bytes3,……,bytes32。byte是bytes1的别名。bytes32,32个字节,正好是256位,以太坊虚拟机中一个栈的长度。

类似于C语言中的结构体

(key, value) 键值对,可以嵌套,value的值也可以是一个映射。

time :时间
block :块相关的内容
msg :消息相关的内容
tx :交易相关的内容
contract :合约相关的内容
address :地址相关,如balance, transfer, send, call
Exception Handler :异常处理。require(检查外部), assert(检查内部),检查出失败则回滚;revert(直接回滚)。

Solidity 语法(2)

2.3 表达式/控制结构

Solidity 的控制语句和其它编程语言类似,如if / else, while / do / for, break / continue, return 等。但是,它没有switch, goto 。可以return 多个返回值。合约可以多继承。这部分在实践中掌握。

2.4 函数

函数是一大块重要的内容。这里介绍两部分内容,访问控制标识符和各类修饰符。

访问控制标识符有四种,分别是public, private, external, internal,具体作用如上图。

各类修饰符有pure, view, payable, indexed,还可以用modifier自定义修饰符。后面通过实例介绍。

3、智能合约例子

最后通过Remix自带的一个例子,可以复习巩固前面的内容。

这个例子在《区块链原理、设计与应用》(杨保华、陈昌 编著)中也有。
电子版:例子

(注,课程中老师讲的例子较早一些,链接中的例子有所更新。)

在旧例子中,可在Remix中进行的实践有:

  1. 创建投票;
  2. 赋予投票权;
  3. 委托投票权;
  4. 进行投票;
  5. 查询获胜提案。

(截图略)


总结一下,这节课主要讲解了以太坊编程语言 Solidity 简介和语法基础,并提供了一个智能合约的例子。
两个例子中还有一些没弄明白的地方。。。


不足之处,请批评指正。

上一篇 下一篇

猜你喜欢

热点阅读