当前位置: 首页 > news >正文

Solidity学习笔记

以太坊

共识协议有

  • pow(工作量证明)
  • pos(权益证明)

结点类型有

  • 普通节点:备份区块链数据
  • 矿工:创建区块链

加密算法使用的是ECC(椭圆曲线加密算法)
通信协议使用的是Whisper
存储平台使用的是Swarm
geth是以太坊,whipster和swarm节点的一个实现

solidity流程

Solidity代码
Solidity编译器
字节码
部署在EVM上执行

文件组成

Solidity文件,扩展名为.sol,由4个结构组成

  • 预编译指令
  • 注释
  • 导入
  • 合约/库/接口

使用下面指令指定编译器版本

pragma Solidity <version number>

注释形式有

  • 单行注释 :用双斜线表示//
  • 多行注释 :用/*和*/表示
  • 以太坊自然规范:即三个斜杠///表示单行注释,多行注释用/**表示注释开始,*/表示注释结束

导入其它合约使用

import "otherContract"

合约使用关键字contract,库使用关键字library,接口使用关键字interface

合约

合约结构包含

  • 状态变量
  • 结构定义:使用struct
  • 修改器定义:使用关键字modifier,修改器与函数绑定。修改器中的下划线_表示执行目标函数。payable是由Solidity提供的修改器,当应用于函数时允许函数接受以太币
  • 事件声明:使用关键字event来定义
  • 枚举定义
  • 函数定义:函数支持的限定符有external, payable(k只能接受以太币), view(常量函数别名),pure(既不能读取也不能写入,不能访问状态变量)

状态变量修饰符有

  • internal:在没有显示指定情况下,默认是internal
  • private
  • public
  • constant

数据类型支持的有

  • bool
  • uint/int:从8位到256位,没有指定位数时,表示的是256位
  • bytes
  • address
  • mapping
  • enum
  • struct
  • string

数据类型

值类型有

  • bool
  • uint/int
  • address
  • byte:是bytes1的别名,字节类型还支持1-32,即bytes1-bytes32
  • enum

引用类型有

  • 数组:有固定数组和动态数组,比如固定数组为int[5] age,动态数组int[] age。动态数组可以使用内联初始化或者使用new运算符初始化,内联形式为int[] age = [1, 2,3],new初始化形式为int[] age = new int[](5)。solidity中有特殊数组类型,即字节数组bytes和字符串数组string
  • 结构
  • 字符串
  • 映射

数据存储位置

存储位置支持有

  • 存储
  • 内存
  • 调用数据
  • 堆栈

字面量

字符串字面量用单引号或者双引号
十六进制字面量以前缀hex作为关键字,如hex "1A2B3F"

http://www.dtcms.com/a/348042.html

相关文章:

  • ZKmall模块商城的推荐数据体系:从多维度采集到高效存储的实践
  • 用 Bright Data MCP Server 构建实时数据驱动的 AI 情报系统:从市场调研到技术追踪的自动化实战
  • 青少年软件编程(python五级)等级考试试卷-客观题(2024年6月)
  • 数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_数据的维护
  • Adobe CS6所有系列绿色免安装版,Photoshop 6 Adobe Illustrator CS6 等绿色版
  • Spring创建的方式
  • 使用 Frida 运行时检测 Android 应用的真实权限状态 (App Ops)
  • 第4章栈和队列:顺序队——基本结构
  • Java 基础学习总结(211)—— Apache Commons ValidationUtils:让参数校验从 “体力活“ 变 “优雅事“
  • Vue状态管理工具pinia的使用以及Vue组件通讯
  • 一个byte表示多个bool属性的功能
  • 高并发AI服务部署方案:vLLM、TGI、FastChat性能压测报告
  • CSS 进阶用法
  • Read View是实现MVCC的三大前提之一,那么它是在什么时候建立的
  • frida安装配置及其使用方法
  • 一个奇怪的问题-Python会替代Java吗?技术语言之争的真相-优雅草卓伊凡
  • Java 大视界 -- Java 大数据在智能交通智能公交系统中的乘客流量预测与车辆调度优化
  • 程序里的依赖和中间件的依赖冲突,怎么解决
  • Docling:一个基于AI驱动的免费文档解析工具
  • Python性能优化实战(二):让循环跑得比博尔特还快
  • [身份验证脚手架] 应用布局如何构建
  • 初学python的我开始Leetcode题-16
  • CTFshow系列——命令执行web49-52
  • assert使用方法
  • Redis 高可用开发指南
  • 力扣594:最和谐子序列
  • 客流特征识别误报率↓76%!陌讯多模态时序融合算法在智慧零售的实战解析
  • Tesla智能座舱域控制器(MCU)的系统化梳理
  • 【网络运维】Shell 脚本编程:if 条件语句
  • 【40页PPT】数字工厂一体化运营管控平台解决方案(附下载方式)