Solidity基本语法

1、预编译指令

指定当前文件编译器版本

语法:pragma Solidity <<^版本号>>;

版本号:主版本号和次版本号

脱字符号:^,指定主版本中的最新次版本

2、注释

单行注释://

多行注释:/* */

以太坊自然规范:单行:///

                            多行:/** */

3、导入

import语句

导入其他Solidity文件,方便在当前Solidity文件和代码访问其代码

语法:import '<<文件名>>.sol';

/   从其他目录和文件中分离

.   引用当前目录

..  引用父目录

4、合约

组成:

4.1、状态变量:

定义:由矿工永久存储在区块链/以太坊账本中。

           在合约中,没有在任何函数内声明的变量。

限定符: 内部变量:internal,当前合约、继承合约;

                私有状态变量:private,当前合约;

                公状态变量:public,所有合约;

                常量状态变量:constant,值不可变,声明时必须赋初值。

数据类型:值类型:bool、uint/int、bytes、address、enum

                  引用类型:mapping、struct、bytes/String

4.2、结构定义:

用户自定义的复合数据类型。

语法:struct <<结构名>>{

<<数据类型1>> <<变量名1>>;

<<数据类型2>> <<变量名2>>;

....

}

4.3、修改器定义:

改变执行代码行为的结构。

与函数关联,改变关联函数行为;执行目标函数之前,执行的函数。

语法:声明:

           modifier <<修改器名>>{ 

                        //逻辑代码

                        _ 表示执行目标函数

          }

           关联:

         function <<函数名>>(<<入参1>>,<<入参2>>,..) <<修改器名>> returns(<<出参1>>,<<出参2>>,..)

        {

                 //逻辑代码

        }

4.4、事件声明:

通过EVM的日志工具,向调用应用程序通知合约的当前状态;应用程序使用他们执行相关逻辑。

语法:event <<事件名>>(<<入参1>>,<<入参2>>,...);

4.5、枚举定义:

声明用户自定义的数据类型;

包含:一个枚举列表、一组自定义常量

语法:enum <<枚举名>> {<<常量1>>,<<常量2>>,...}

          

4.6、函数定义:

调用或触发合约中的某个函数时,会导致创建一个交易;

按需调用的一个代码单元。

语法:

        function <<函数名>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符1 限定符2 ...>> returns(<<出参1>>,<<出参2>>,...){

                //逻辑代码块

        }

限定符: internal,当前合约、继承合约;

               private,当前合约;

               public,所有合约;

                external,其他合约;

                constant或view,区块链状态不可变,读取和返回当前状态变量。

                pure,不访问当前状态和交易变量。

                payable,只接收调用者的以太币。

                constant或view,区块链状态不可变,读取和返回当前状态变量。

5、库

没有存储,不能够直接访问其中的函数,公共功能

语法:声明:library <<库名>>{}

          引用: using <<库名>> for <<类型名>>

                     <<类型名>>  <<类型变量名>>;

                     <<类型变量名>>.<<函数名>> (<<入参1>>,<<入参2>>,...) ;

6、接口

只包含函数声明;

纯抽象合约。

语法:声明:

        interface <<接口名>>{

                        function <<函数名1>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符>> returns(<<出参1>>,<<出参2>>,...);

                        function <<函数名2>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符>> returns(<<出参1>>,<<出参2>>,...);

         }

继承:

        contract <<合约名>> is <<接口名>>{

                        function <<函数名1>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符>> returns(<<出参1>>,<<出参2>>,...);

                        function <<函数名2>> (<<入参1>>,<<入参2>>,...) <<修改器名>> <<限定符>> returns(<<出参1>>,<<出参2>>,...);

        }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值