玩以太坊链上项目的必备技能(单位以及全局变量-Solidity之旅七)

news2024/11/29 7:57:37

以太币单位(Ether)

甭管是虚拟货币还是现实中的“稳定币”,他们都有各自的货币单位。当然咯,作为以太坊区块链上交易的虚拟货币以太坊也是有属于自己的那一套货币单位的。

而目前以太币(Ether)主要分为这三个:weigwei以及ether。或许您之前还见过 finneyszabo,但这两个早在solidity 0.7.0就被删除了,而gwei却是solidity 0.6.11新添加的!

使用起来很容易,便是在数字后边跟上这些以太币单位,当然,数字与以太币单位之间需要空格隔开的,这一点想必您应该是清楚的吧!

若没加以太币单位,那么它缺省为wei

assert(1 wei == 1);
assert(1 gwei == 1e9);
assert(1 ether == 1e18);

关于assert的用法,我们后续会讲到,可以理解为断言,用于判断表达式是否为true,反之则抛出错误!

时间单位

说到时间单位,您肯定会想到生活中的时(hour)分(minute)秒(second)以及天(day)周(week)

Solidity 时间单位有:secondsminuteshoursdaysweeksseconds是时间的缺省单位。

早期版本(solidity 0.5.0 之前但不包括)还有一个years用来表示的时间,由于闰年的缘故,便废除了。

  • 1 == 1 seconds
  • 1 minutes == 60 seconds
  • 1 hours == 60 minutes
  • 1 days == 24 hours
  • 1 weeks == 7 days
uint today = 今天的时间戳;
uint tomorrow = today + 1 days;

特殊变量(全局变量)

它们是 Solidity 在全局命名空间 预设的一些变量和函数,用于获取区块链信息和一些通用的工具函数。

区块和交易属性

  • blockhash(uint blockNumber) returns (bytes32):指定区块的区块哈希 —— 仅可用于最新的 256 个区块且不包括当前区块,否则返回 0 。
  • block.basefee (uint): 当前区块的基础费用
  • block.chainid (uint): 当前链 id
  • block.coinbase ( address ): 挖出当前区块的矿工地址
  • block.difficulty ( uint ): 当前区块难度
  • block.gaslimit ( uint ): 当前区块 gas 限额
  • block.number ( uint ): 当前区块号
  • block.timestamp ( uint): 自 unix epoch 起始当前区块以秒计的时间戳
  • gasleft() returns (uint256) :剩余的 gas
  • msg.data ( bytes ): 完整的 calldata
  • msg.sender ( address ): 消息发送者(当前调用)
  • msg.sig ( bytes4 ): calldata 的前 4 字节(也就是函数标识符)
  • msg.value ( uint ): 随消息发送的 wei 的数量
  • tx.gasprice (uint): 交易的 gas 价格
  • tx.origin ( address ): 交易发起者(完全的调用链)

不要依赖 block.timestampblockhash 产生随机数,除非你明确知道自己做的用意。

时间戳和区块哈希在一定程度上都可能受到挖矿矿工影响。例如,挖矿社区中的恶意矿工可以用某个给定的哈希来运行赌场合约的 payout 函数,而如果他们没收到钱,还可以用一个不同的哈希重新尝试。

当前区块的时间戳必须严格大于最后一个区块的时间戳,但这里能确保也需要它是在权威链上的两个连续区块。

在 Solidity 0.7.0, now ( block.timestamp 的别名) 被移除了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python批量下载apache文件服务器文件

此脚本用于下载apache文件服务器中制定某个文件夹下所有文件与文件夹。 包含下载单个文件的方法、拼接url递归下载的方法、参数解析。 1 下载文件 功能点: 文件下载 以追加写的方式打开一个新文件,按照块大小写入文件 with open(filepath, wb) as fi…

Kafka实战 - 03 Kafka生产者:将X平台的告警和事件数据接入到S平台

文章目录1. 项目背景2. 依赖和配置3. 生产者配置 KafkaConfiguration4. 同步数据Topic枚举 SyncDataTopicEnum5. 请求体 DataSyncQo6. 同步数据控制层 AppSyncDataController7. 同步数据业务层 XdrDataSyncServiceImpl1. 项目背景 资产可能会遭受各种网络攻击,安全…

[附源码]Python计算机毕业设计SSM基于JAVA语言的宠物寄养管理(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

1,4-丁炔二醇BYD物料中含有大量铜离子、二氧化硅等杂质怎么办?

1,4-丁炔二醇BYD(but-2-yne-1,4-diol)是一种重要的中间体化工原料,广泛应用于生产丁二醇及其下游产品、维生素B6的主要原料,还可以用于镀镍的增亮剂、防腐抑制剂等领域。 1,4-丁二醇(BDO)是一种…

[附源码]Python计算机毕业设计SSM基于web的社团管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

免费开源的图片修复工具Lama Cleaner

什么是 Lama Cleaner ? Lama Cleaner 是由 SOTA AI 模型提供支持的图像修复工具。可以从图片中移除任何不需要的物体、缺陷和人,或者擦除并替换(powered by stable diffusion)图片上的任何东西。 看看官方提供的视频,应…

图片怎么转换成PDF格式?这两种方法都可以实现转换

怎么把图片转换成PDF格式呢?大家在日常中也会经常使用到图片,不管是出门游玩还是办公学习,图片都会给我们带来极大的便利。但是一旦图片的数量多了起来,我们又不能删除,那么这些图片的存放就是一个关键的问题&#xff…

[附源码]计算机毕业设计的小说阅读系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

“数据湖存储”冠军杯足球赛开幕,腾讯云存储出征!

“数据湖存储”冠军杯是数据湖领域内的世界级赛事,随着云上“数据湖存储”产品理念的逐步普及,今年的比赛也获得了国内外众多球迷的关注。腾讯云以COS、GooseFS、GooseFSx、元数据加速器、COS加速器等球员组成的球队一路披荆斩棘,成为最闪耀的…

化工集团公司安全风险智能化管控平台

加快数字化发展,大力推进信息化、工业化融合,是国家新时代、新阶段作出的重要决策部署,是化工集团公司打造世界领先企业的必由之路。要充分认识加快数字化发展的重要性紧迫性。要锚定集团公司数字化转型升级的总目标,坚持顶层设计…

Java 开发如何通过 IoT 边缘 ModuleSDK 进行协议转换

操作场景 使用 ModuleSDK 开发插件应用,接入其他协议设备(如 HTTP 请求数据),将其他协议的数据转化为 MQTT 协议 JSON 数据上报到 IoTDA。 代码解析 项目结构如下 ModbusDriver 代码解析 片段一 通过 DriverClient.createFromEnv…

[附源码]Nodejs计算机毕业设计基于Web课堂签到管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

web开发框可以为提升办公效率赋能吗?

提升办公效率可以引用专业的web开发框架,值得一提的是,随着数字化时代的到来,要想做好数据管理,低代码开发平台功不可没,在做好数据管理的过程中发挥了重要的应用价值。研发低代码开发平台,流辰信息一直都以…

从BI到ABI,守正创新的思迈特软件持续推进国产BI产业创新

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业近年来,国内外数字化转型加速渗透,企业客户已不再满足“用上”数据,能否“用好”数据、提升管理效率成为企业数字化转型的核心诉求。在提升企业管理效率的工具中,商业智能&…

Linux C编程一站式学习笔记1

Linux C编程一站式学习笔记 chap1程序的基本概念 打算重学计算机,重学C语言 这本书的前言写的真好 实在是惭愧… 文章目录Linux C编程一站式学习笔记 chap1程序的基本概念一.程序和编程语言1.什么是程序2.程序由指令组成3.编程语言编译执行过程解释执行过程本节总结…

力扣(LeetCode)1697. 检查边长度限制的路径是否存在(C++)

并查集离线查询 由于评测系统对 vectorvectorvector 的排序可能较慢&#xff0c;使用结构体保存 vectorvectorvector &#xff0c;接下来的查询和边集就对结构体操作。 结构体的属性 aaa 点 、 bbb 点 、ccc 长度、 ddd 顺序。重载 <<< &#xff0c;排序时按照 ccc …

ssm+Vue计算机毕业设计校园图书漂流系统(程序+LW文档)

ssmVue计算机毕业设计校园图书漂流系统&#xff08;程序LW文档&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

C++基础篇之什么是 数据结构

&#x1f4d2;博客主页&#xff1a; ​​开心档博客主页​​ &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由开心档原创&#xff01; &#x1f4c6;51CTO首发时间&#xff1a;&#x1f334;2022年12月12日&#x1f334; ✉…

12.1、后渗透测试--提权

meterpreter提权方式&#xff1a; getsystem自动提权bypassuac提权migrate1、getsystem自动提权 meterpreter > getsystemgetsystem工作原理&#xff1a;getsystem创建一个新的Windows服务&#xff0c;设置为SYSTEM运行&#xff0c;当它启动时连接到一个命名管道。getsystem…

Java 线程池详解

线程池&#xff08;thread pool&#xff09;&#xff1a;一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;对线程统一管理。 使用线程池的优势 提高效率&#xff0c;创建好一定数量的线程放在池中&am…