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

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.xdnf.cn/news/18692.html

相关文章:

  • MATLAB实现CNN-GRU-Attention时序和空间特征结合-融合注意力机制混合神经网络模型的风速预测
  • AI Agent全栈开发流程推荐(全栈开发步骤)
  • Kubernetes v1.34 前瞻:资源管理、安全与可观测性的全面进化
  • 【和春笋一起学C++】(三十五)类的使用实例
  • 1.Spring Boot:超越配置地狱,重塑Java开发体验
  • 逆光场景识别率↑76%!陌讯多模态融合算法在手机拍照识别的落地实践​
  • centos安装jenkins
  • 校园跑腿小程序源码 | 跑腿便利店小程序 含搭建教程
  • bun + vite7 的结合,孕育的 Robot Admin 【靓仔出道】(十八)
  • 目标检测数据集 第005期-基于yolo标注格式的PCB组件检测数据集(含免费分享)
  • JavaScript数据结构详解
  • 智元精灵GO1 agibot数据转换Lerobot通用格式数据脚本
  • [创业之路-567]:数字技术、数字产品、数字资产、数字货币、数字企业、数字经济、数字世界、数字人生、数字智能、数字生命
  • 大模型知识--Function Calls
  • element-plus穿梭框transfer的调整
  • 【实习总结】快速上手Git:关键命令整理
  • AI版权保护破局内容行业痛点:侵权识别效率升89%+维权周期缩至45天,区块链存证成关键
  • vue中 computed vs methods
  • unity热更新总结
  • Linux的线程概念与控制
  • CTFshow系列——命令执行web49-52
  • 基于深度学习的眼疾识别系统:从血细胞分类到病理性近视检测
  • 计算机网络:聊天室(UDP)
  • 用户和组笔记
  • 大数据毕业设计选题推荐-基于大数据的北京市医保药品数据分析系统-Spark-Hadoop-Bigdata
  • 基于角色的访问控制(RBAC)研究与Go语言实现
  • 商超客流密度统计误差率↓35%!陌讯多模态融合算法在零售智慧运营的实战解析
  • 美股期权历史市场数据波动特性分析
  • power query自定义查询函数(中午休息一小时
  • 基于Spark的热门旅游景点数据分析系统的设计-django+spider