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