Solidity语言教程
文章平均质量分 92
Solidity语言是开发智能合约最广泛的语言
秋天的春
编程哪里是什么艺术!只不过是把简单的思维方式赋予给了计算机。
展开
-
智能合约语言 Solidity 教程系列1 - 类型介绍
类型 Solidity是一种静态类型语言,意味着每个变量(本地或状态变量)需要在编译时指定变量的类型(或至少可以推倒出类型)。Solidity提供了一些基本类型可以用来组合成复杂类型。 Solidity类型分为两类: 值类型(Value Type) - 变量在赋值或传参时,总是进行值拷贝。 引用类型(Reference Types) 值类型(Value Type) 值类型包含: 布尔类...原创 2018-07-18 10:26:01 · 296 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列2 - 地址类型介绍
地址类型(Address) 地址类型address是一个值类型, 地址: 20字节(一个以太坊地址的长度),地址类型也有成员,地址是所有合约的基础 支持的运算符: <=, <, ==, !=, >= 和 > 注意:从0.5.0开始,合约不再继承自地址类型,但仍然可以显式转换为地址。 地址类型的成员 balance 属性及transfer() 函数 ...原创 2018-07-18 10:27:28 · 406 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列3 - 函数类型
函数类型(Function Types) 函数也是一种类型,且属于值类型。 可以将一个函数赋值给一个函数类型的变量。还可以将一个函数作为参数进行传递。也可以在函数调用中返回一个函数。 函数类型有两类:内部(internal)和外部(external)函数 内部(internal)函数只能在当前合约内被调用(在当前的代码块内,包括内部库函数,和继承的函数中)。外部(external)函数由地址和...原创 2018-07-18 10:30:08 · 285 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列4 - 数据存储位置分析
数据位置(Data location) 在系列第一篇,我们提到 Solidity 类型分为两类:值类型(Value Type) 及 引用类型(Reference Types), 前面我们已经介绍完了值类型,接下来会介绍引用类型。 引用类型是一个复杂类型,占用的空间通常超过256位, 拷贝时开销很大,因此我们需要考虑将它们存储在什么位置,是memory(内存中,数据不是永久存在)还是storag...原创 2018-07-18 10:34:22 · 259 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列5 - 数组介绍
数组(Arrays) 数组可以声明时指定长度,也可以是动态变长。对storage存储的数组来说,元素类型可以是任意的,类型可以是数组,映射类型,结构体等。但对于memory的数组来说。如果作为public函数的参数,它不能是映射类型的数组,只能是支持ABI的类型。 一个元素类型为T,固定长度为k的数组,可以声明为T[k],而一个动态大小(变长)的数组则声明为T[]。 还可以声明一个多维数组,如...原创 2018-07-18 10:35:37 · 211 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列6 - 结构体与映射
结构体(Structs) Solidity提供struct来定义自定义类型,自定义的类型是引用类型。 我们看看下面的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ...原创 2018-07-18 10:44:10 · 298 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列7 - 以太单位及时间单位
货币单位(Ether Units) 一个数字常量(字面量)后面跟随一个后缀wei, finney,szabo或ether,这个后缀就是货币单位。不同的单位可以转换。不含任何后缀的默认单位是wei。 不同的以太币单位转换关系如下: 1 ether == 10^3 finney == 1000 finney 1 ether == 10^6 szabo 1 ether == 10^18 wei ...原创 2018-07-18 10:45:42 · 254 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列8 - Solidity API
Solidity API Solidity API 主要表现为Solidity 内置的特殊的变量及函数,他们存在于全局命名空间里,主要分为以下几类: 有关区块和交易的属性 有关错误处理 有关数学及加密功能 地址相关 合约相关 下面详细讲解下 区块和交易的属性(Block And Transaction Properties) 用来提供一些区块链当前的信息。 block.block...原创 2018-07-18 11:03:38 · 291 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列9 - 错误处理
什么是错误处理 错误处理是指在程序发生错误时的处理方式,Solidity处理错误和我们常见的语言不一样,Solidity是通过回退状态的方式来处理错误。发生异常时会撤消当前调用(及其所有子调用)所改变的状态,同时给调用者返回一个错误标识。注意捕捉异常是不可能的,因此没有try … catch…。 为什么Solidity处理错误要这样设计呢? 我们可以把区块链理解为是全球共享的分布式事务性数据库...原创 2018-07-18 11:18:13 · 333 阅读 · 0 评论 -
智能合约语言 Solidity 教程系列10 - 完全理解函数修改器
函数修改器(Function Modifiers) 函数修改器(Modifiers)可以用来改变一个函数的行为。比如用于在函数执行前检查某种前置条件。 如果熟悉Python的同学,会发现函数修改器的作用和Python的装饰器很相似。 修改器是一种可被继承合约属性,同时还可被继承的合约重写(override)。下面我们来看一段示例代码: pragma solidity ^0.4...原创 2018-07-19 09:34:44 · 243 阅读 · 0 评论 -
智能合约最佳实践 之 Solidity 编码规范
每一门语言都有其相应的编码规范, Solidity 也一样, 下面官方推荐的规范及我的总结,供大家参考,希望可以帮助大家写出更好规范的智能合约。 命名规范 避免使用 小写的l,大写的I,大写的O 应该避免在命名中单独出现,因为很容易产生混淆。 合约、库、事件、枚举及结构体命名 合约、库、事件及结构体命名应该使用单词首字母大写的方式,这个方式也称为:帕斯卡命名法或大驼峰式命名法,...原创 2018-07-19 09:43:20 · 223 阅读 · 0 评论