前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分析关于Hash哈希游戏竞猜项目系统开发(逻辑讲解)

分析关于Hash哈希游戏竞猜项目系统开发(逻辑讲解)

原创
作者头像
vx-ccy981112
发布2022-06-24 16:34:21
7951
发布2022-06-24 16:34:21
举报
文章被收录于专栏:区块链哈希区块链哈希

本文将打开一系列有关在Solidity中进行数值运算的文章。讨论的第一个主题是:数值。

介绍

以太坊是一个可编程的区块链,可以通过将可执行代码(称为智能合约)发布到区块链本身来扩展其功能。以太坊与第一代区块链的区别在于,新功能要求修改客户端软件,升级节点以及对整个区块链进行分叉。

智能合约是链上发布的一段可执行代码,具有分配给它的唯一区块链地址。智能合约控制属于其地址的所有资产,并且在与其他智能合约进行交互时可以代表该地址进行操作。每个智能合约都有永久性存储,用于在调用之间保留智能合约的状态。

Solidity是在以太坊以及其他使用以太坊虚拟机(EVM)的其他区块链平台上进行智能合约开发的主要编程语言。

编程始终与数值有关,区块链始终与金融有关,而金融自古以来就与数学有关(或者数学与金融有关)。作为以太坊区块链的主要编程语言,Solidity必须做好数学。

在本系列中,我们讨论了Solidity如何进行数值运算以及开发人员如何在Solidity中进行数值运算的各个方面。讨论的第一个主题是:数值。

在solidity中的数值类型

与主流编程语言相比,Solidity有很多数值类型:即5,248。是的,根据文档,有32个有符号整数,32个无符号整数,2592个有符号定点和2592个无符号定点类型。JavaScript只有两种数值类型。Python 2以前有四个,但是在Python 3中删除了“ long”类型,所以现在只有三个。Java有7个,而C ++有14个。

有这么多的数值类型,Solidity应该为每个人提供合适的类型,对吗?没那么快。让我们再仔细看看这些数值类型。

我们将从以下问题开始:

为什么我们需要多种数值类型?

纯数学中没有数值类型。一个数可以是整数或非整数、有理或无理、正数或负数、实数或虚数等,但这些只是性质,这个数可以有也可以没有,单个数可以同时有几个这样的性质。

许多高级编程语言都有单一的数字类型。在2019年引入BigInt之前,JavaScript只有“number”。

除非做核心的底层工作,否则开发人员实际上并不需要多个数值类型,他们只需要具有任意范围和精度的纯数字。然而,硬件本身并不支持这些数值,而且在软件上进行模拟有点昂贵。

这就是为什么低层编程语言和高性能语言通常有多个数值类型,如有signed/unsigned、8/16/32/64/128 bits、整数/浮点等。这些类型在硬件上是本机支持的,广泛应用于文件格式、网络协议等,因此低层代码从中受益。

但是出于性能原因,这些类型通常继承基础CPU指令的所有怪异语义,例如静默上溢和下溢,非对称范围、二进制分数、字节排序问题等,这使它们在高级业务逻辑代码中感到痛苦。直截了当的用法通常显得不安全,并且安全的用法通常变得麻烦且难以理解。

所以,下一个问题是:

为什么Solidity有这么多数值类型?

EVM本机支持两种数据类型:256位字和8位字节。堆栈元素,存储键和值,指令和内存指针,时间戳,余额,事务和块哈希,地址等均为256位字。内存,字节码,调用数据和返回数据由字节组成。大多数EVM操作码都处理单词,包括所有数值运算。一些数值运算将单词视为有符号整数,而某些数值运算则将单词视为无符号整数,而其他运算则不管参数是否在无符号上签名,都以相同的方式工作。

因此,EVM本机支持两种数值类型:带符号的256位整数和无符号的256位整数。这些类型在Solidity中分别称为int和uint。

除了这两种类型(及其别名int256和uint256)以外,Solidity还具有62个整数类型int 和uint ,其中可以是8到248之间的8的任意倍数,即8、16… ,248。在EVM级别上,所有这些类型都由相同的256 bits支持,但是每个操作的结果都被截断为N bits。当需要特定的位宽时,它们在特定情况下可能很有用,但是对于一般计算而言,这些类型的int和uint的功能和效率都较低(在每次操作后都被截断不是免费的)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档