Solidity学习笔记(WTF:1-2)

  • Shino
  • 更新于 2024-03-10 21:43
  • 阅读 1548

个人学习solidity笔记分享和学习心得

初见

Solidity是以太坊虚拟机智能合约的语言 开发工具:Remix

1.Hello web3

Solidity 源代码程序结构:{

line1:

注释(代码所用软件许可(license))由//开头,不会被程序运行; 如果没有许可程序可以运行,但会有编译警告。 ex: image.png

line2:

声明源文件所用solidity版本

line3-?:

合约内容 ex: image.png 语法结构类似c++中的类(class) } 编写完之后需要编译和部署,remix可以模拟部署编写的智能合约。 Remix中文设定:左下方设置处可调节语言为简体中文(编写方便一点)

image.png

2.数值类型

布尔型(可参考c++中的bool型)

布尔值有两种:true&false 运算同c++中bool:{

  • ! (逻辑非)
  • && (逻辑与, "and" )
  • || (逻辑或, "or" )
  • == (等于)
  • != (不等于)} ex:
    bool public _bool  = true ;
    bool public _bool1 = !_bool; //取非(_boo1为false)
    bool public _bool2 = _bool && _bool1; //(_bool2为false)
    bool public _bool3 = _bool || _bool1; //或(_bool3为true)
    bool public _bool4 = _bool == _bool1; //相等(_bool4为false)
    bool public _bool5 = _bool != _bool1; //不相等(_bool5为true)

其中&&和||遵循短路运算符 f(x)&&g(x)当f(x)和g(x)均为true时逻辑算式结果为true; 而f(x)||g(x)f(x)和g(x)只要有一方为true该算式结果为true;

整型

int:整数(包括负数) uint:正整数 uint256:256位正整数 常用运算符类似c++{

  • 比较运算符(返回布尔值): <=, <, ==, !=, >=, >
  • 算数运算符: +, -, 一元运算 -, +, *, /, %(取余),**(幂) }

    地址类型

    地址(adress)储存一个20字节的数值(以太坊地址的大小),一般以0x开头,在remix 中调试需要交易哈希地址

image.png 地址类型也有成员变量 地址有普通地址和payable修饰的地址,其中payable地址多了send和transfer两个成员 其中若send执行失败不影响合约的进行,balance和transfer用于查询余额和安全转账。

定长字节数组

字节数组bytes分两种,一种定长(byte, bytes8, bytes32),另一种不定长。定长的属于数值类型,不定长的是引用类型。 定长bytes可以存一些数据,消耗gas比较少。

<!--StartFragment-->

    // 固定长度的字节数组
    bytes32 public _byte32 = "MiniSolidity"; 
    bytes1 public _byte = _byte32[0]; 

MiniSolidity变量以字节的方式存储进变量_byte32,转换成16进制为:0x4d696e69536f6c69646974790000000000000000000000000000000000000000

_byte变量存储_byte32的第一个字节,为0x4d

题目:bytes4类型具有几个16进制位?(8个)

枚举

枚举(enum)用于为uint的分配名称,使程序易于维护和阅读。 可与uint相互转换。

enum ActionSet { Buy, Hold, Sell }\
// 创建enum变量 action\
ActionSet action = ActionSet.Buy;

学习心得

在有一定c++的基础上学习,比较轻松,对于智能合约编程有了初步的认识。

学习内容来自:wtf.academy

点赞 1
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

1 条评论

请先 登录 后评论
Shino
Shino
0x5F50...D652
江湖只有他的大名,没有他的介绍。