Web3 智能合约: Solidity 基础数据类型

admin 2025年1月6日08:43:29评论6 views字数 1556阅读5分11秒阅读模式

Web3 智能合约: Solidity 基础数据类型

基本的变量

Solidity 主要用到的类型和使用方法其他编程语言大差不差,例如bool,string,int,uint,struct 等等,还要其他很多的类型,具体的各种细节可以看官方的文档,这里记录一下刚开始学习自己认为需要记录的地方:

uint

uint类型中还包含uint8, uint16.....uint32.....uint256 (关键字 uint8 到 uint256 ,以 8 位为步长递增。 uint 是 uint256别名),int类型同理。
使用uint类型应当注意类型的选择,因为选择不当的话,智能合约在处理数据的时候,可能会产生额外的gas消耗。例如在struct中,如果有多个uint类型,应当尽可能的选择小的uint类型,并把他们放在一起,Solidity会把他们打包在一起,节省内存空间,如果是单个uint类型,尽量使用uint256。

address类型

address类型顾名思义就是地址,这是一种特殊类型,长度20个字节,40个16进制字符,用来表示以太坊地址:
address publicaddr=0x5B38Da6a701c568545dCfcB03FcB875f56beddC4;

映射类型

映射类型关键字为:mapping
映射类型使用语法 mapping(KeyType KeyName? => ValueType ValueName?)
有点像c#中的字典或者hash表,总之这个类型就是建立一对一的映射。

mapping(address => uint) public ethCount;
//可以定义某个地址有多少个eth
ethCount[msg.sender] = 1000;
//msg.sender 是调用合约的发送方地址。
//这里将 1000 存储为 msg.sender 对应的值

定长与变长字节数组

字节数组一般用于处理原始二进制数据。

  • • 定长字节:bytes1, bytes2, bytes3, ..., bytes32 代表从1到32的字节序列,数字代表了数组的固定长度,超出就会发生越界错误。
  • • 变长字节数组:bytes或者byte[]
bytes public data;
byte[] public data;

bytes 与 byte[] 的区别

特性
bytes
byte[]
存储布局
紧凑,节省存储
每个字节单独存储
操作效率
较低
使用场景
动态字节数据
很少使用
可扩展性
支持 .push()
支持 .push()

string字符串类型

用法和其他编程语言中的大差不差,solidity 中的string其实也是一种变长字节数组,不过和c语言中的不同处,这里没有结束符,几个字符长度就是几。 string可以转换为变长字节数组:bytes16 samevar = "helloworld"

杂项

所有的 Solidity 源码都必须冠以 "version pragma" — 标明 Solidity 编译器的版本: (以避免将来新的编译器可能破坏你的代码)

  • • pragma solidity 0.4.19

你可以在版本号前加^符合,意思是编译器兼容大版本内所有的版本。

pragma solidity ^0.4.1 - 编译器版本可以是从0.4.1~0.5.0

推荐阅读:

部署属于自己的EDR对抗环境
让数字x60杀软核晶失效的自适应模式
对抗杀软的父进程检测
银狐木马:杀死核晶状态下的x60

更多干货文章工具等资源,欢迎加入下方交流圈👇:

这是一个纯粹,开放,前沿的技术交流社区,成员主要有互联网大厂安全部门任职的成员,乙方红队专家,以及正在学习入门的小白等,社区涉及的领域知识包括但不限于渗透,免杀开发,红蓝对抗,安全建设,考试认证,岗位招聘等等方面,还可以结识很多志同道合的朋友,提升自己的技术栈,开阔视野,提升眼界👇👇👇

Web3 智能合约: Solidity 基础数据类型
Web3 智能合约: Solidity 基础数据类型

欢迎加入交流圈

扫码获取更多精彩

Web3 智能合约: Solidity 基础数据类型
Web3 智能合约: Solidity 基础数据类型
Web3 智能合约: Solidity 基础数据类型

原文始发于微信公众号(黑晶):Web3 智能合约: Solidity 基础数据类型

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月6日08:43:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Web3 智能合约: Solidity 基础数据类型https://cn-sec.com/archives/3591971.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息