Solidity之基础数据类型

287 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

前言

Solidity语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有一些不同。

学习Solidity首先得学会remix工具的使用,这是一个在线ide,能够帮助我们很好的开发与部署智能合约,并且测试。地址 remix.ethereum.org/#optimize=f…

编写solidity

创建文件

image.png 如图选中contract文件,点击创建文件按钮,输入文件名即可创建出一个.sol结尾的文件,这是solidity文件,用来编写智能合约。

合约声明

pragma solidity 0.8.7; 文件的第一行 声明solidity 版本,这是需要注意版本的区别,如这一句表示使用solidity0.8.7版本,

pragma solidity ^0.8.7;在前面加上^符号,表示使用的是大于等于0.8.7的版本都可以。

pragma solidity >=0.8.7 < 0.9.0;表示大于等于0.8.7小于0.9.0版本。

需要注意的是 在第一行还应加入代码协议 SPDX-License-Identifier: GPL-3.0,GPL(GNU GENERAL PUBLIC LICENSE)是一种开源协议,来源于自由软件联盟GNU,GPL/LGPL侧重于代码及衍生代码的开源与免费使用。

solidity语句需要在结束加一个;分号

contract SimpleStorage {
   
}

contract 是solidity的关键字,表示定义一个合约。

数据类型

boolean ,uint/int ,address,bytes

boolean 表示布尔值,有true和false uint/int表示无符号整数,如uint8表示8个字节的数字,unit256表示256个字节的数字,int则表示整数,int8-int256则同理。

address 地址类型,这个类型比较特殊,它存储一个 20 字节的值(以太坊地址的大小),并且地址类型也有成员变量,并作为所有合约的基础。 它包括以下变量:

**balance**:地址上的余额

**transfer**:向地址上发送以太币

**send**:transfer的低级实现。如果执行失败,当前合约不会终止,但会返回false。

**bytes** 字节型,string也是一种bytes,注意的是不能bytes64,最大允许bytes32。

在solidity中,如果不给变量赋值,那么uint类型默认是0;布尔类型是false。

// SPDX-License-Identifier: GPL-3.0

pragma solidity 0.8.7;//0.8.12

contract SimpleStorage {

    uint256 favouriteNumber;
    bool hasFavouriteNumber = true;
    bytes32 name="cat";
    int number= -7;
    address myAdd=0xE661cCd899c90d1FbD970F7397634038f20F2eC4;
    string favourite="four";

}

如图可编译通过。

image.png

总结

本文主要介绍了合约文件的创建和一个简单合约的书写,包括了基础数据类型的定义和使用,这是开发智能合约的基础和前提。