区块链7-智能合约编程语言-solidity

Solidity语言详解

1.文件结构

2.数据结构

3.错误处理

 

11.参数

12.控制结构

13.可见性

14.函数

 

1.1合约文件结构

1.1.1版权申明

1.1.2import

1.1.3合约 

1.1.3.1状态变量 

1.1.3.2函数

1.1.3.3结构类型

1.1.3.4事件

1.1.3.5函数修改器

1.1.4代码注释

 

语言类型

动态:运行时确定某个变量类型  egg:javascript

静态:声明的时候,编译的时候,指定变量类型或者至少编译时推导出类型,常见的有c,c++,java

solidity静态

值类型 重点booleans integers string address

引用类型

 

布尔类型

取值 true/false

运算符! && || == !=

 

 

整型

int/unit

关键字unit8到unit256(以8步进)

运算符

-比较运算符

-位运算符&,|,^,~

算术运算

 

常量(字面量) 

有理数和整型常量

字符串常量

十六进制常量

地址常量

 

地址类型

address:表示一个账户地址(20字节)

成员 属性:balance余额 函数:transfer()用于转移以太币

地址常量

地址合法性检查

 

引用类型

数据位置 memory内存,storage永久

数组

-T[k]:元素类型为T,固定长度为k的数组

-T[]:数组类型为T,长度动态调整

-bytes string:是一种特殊的数组

-string 可转为bytes,bytes类似byte[]

数组成员:属性:length 函数:push()

 

结构体

struct

映射(Mappings)

mapping(address=>uint)  public balances;

 

全局变量和函数

-有关区块和交易!

msg.sender(address)获取交易发送者地址

msg.value(uint)当前交易所附带的以太币,单位是位

block.coinbase(address)当前块的地址

block.difficulty(uint)当前块的难度

block.number(uint)当前区块的块号

block.timestamp(uint)当前块时间戳

now(uint)当前区块的时间戳,实际上是timestamp的别名

tx.gasprice(uint)当前交易的价格

-有关错误处理!

什么是错误处理 指在程序发生错误时的处理方式

处理方式 回退状态 assert (通常检查函数内部的错误,消耗所有提供的gas,egg:下标越界,整数/0,assert方法调用参数时false,是assert类型异常)。require(检查输入的变量或者合约的状态变量是否满足条件,通常时外部                                 合约的条件,不会消耗提供的gas

你可能感兴趣的:(区块链,比特币)