美文网首页
智能合约(三、四)

智能合约(三、四)

作者: Mr丶易客 | 来源:发表于2018-11-21 21:25 被阅读83次

    智能合约(三)

    一、错误处理

        Ø assert 类型异常:内部错误

        Ø require 类型异常: 外部错误

        Ø revert  类型异常:终止并还原状态

       注意:异常函数的参数为false时抛出异常

    二、函数修饰器

        Ø 使用形式:关键字:modifier

    need-to-insert-img

    Ø 多函数修改器

    顺序执行,执行到_ 就跳到第二个参数的函数体 再执行 遇到 _ 就再跳到第三个参数的函数体,执行后再退回去,,,类似递归。

    Ø 重写

    n 即继承关键字is

    n 使用形式:

    need-to-insert-img

    注意:覆盖的函数名、类型、参数、都一样,与C++一致

    三、Solidity编码规范

    Ø 合约、库、事件及结构体命名应该使用单词首字母大写的方式,

    Ø 函数、参数、变量及修饰器应该使用首单词小写后面单词大写的方式,

    Ø 缩进:4个空格

    Ø 函数之间有空行,函数左括号和定义在一行

    Ø 编写函数顺序:a.构造函数   b.回退函数(如果有)

    c.外部函数(external)  d.公有函数(public) 

     e.内部函数(internal)   f.私有函数(private)

    Ø 区分事件与函数

    n 事件可以加前缀并全大写

    Ø 常量:全大写及下划线分割的方式

    四、事件Event的使用

    Ø 关键字:event  与 emit

    Ø 使用与监听

    need-to-insert-img

    need-to-insert-img

    五、函数高级部分

    注意:在构造函数内,不能使用this调用函数

    Info()函数 :

    feed.info.value(10).gas(310000)(); // 附加以太币及gas来调⽤info

    callFeed()

    Call() ,callcode() , delegatecall()

    call() 函数:想一个合约发送消息,参数可以是任意类型的,并把参数打包成32字节

    call指定函数:第一个参数如果是4个字节,会认为是签名的序号值,

    如果只是想传个参数值,应避免参数为4个字节。

    Call()返回值结果:bool类型

    智能合约(四)

    一、solidity继承

    1:使用关键字is表示继承

    2:访问属性:继承不可访问父合约的私有函数,构造函数不可以继承

    3:支持多继承,可以存在相同的函数,变量以及事件,按照最远原则进行继承

    4:继承之后的重写要求函数名称,参数,返回值,访问属性完全相同

    5:可以显式调用父合约的构造函数,有两种方式

    6:通过两种方式显式调用父合约的方法,合约名称. func() super. func()

    7:支持棱形继承,按照最远原则处理 

    多继承是最远的向上继承,如1, 2, 3, 4,  4=>3 , 3=>2 , 2=>1 ,

    Super:当前合约的上一层合约即所继承的合约

    二、接口interface

    抽象合约:只声明不实现即没有函数体

    接口类似于抽象合约,但它们不能实现任何功能。还有其他限制:

    • 无法继承其他合约或接口。

    • 无法定义构造函数。

    • 无法定义变量。

    • 无法定义结构体。

    • 无法定义枚举。

    接口可以像继承合约一样继承,但是需要实现接口内的所有方法

    三、库的使用 library

    • 无状态变量(state variables)。

    • 不能继承或被继承

    • 不能接收以太币

    • 不能销毁一个库

    1、Using 的使用

    指令using A for B;用来把库函数(从库A)关联到类型B。这些函数将会把调用函数的实例作为第一个参数 即

    Ø Using+库名+for+函数的第一个参数类型

    Ø Using+库名+for+ * (代表任意类型)

    注意:当库有多个函数时,就会用到第二种方法应注意参数类型是否对应,即使不对应也会被关联。

    相关文章

      网友评论

          本文标题:智能合约(三、四)

          本文链接:https://www.haomeiwen.com/subject/ljyhqqtx.html