千家信息网

Solidity是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"Solidity是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Solidity是什么"吧!什么是SoliditySolidity是
千家信息网最后更新 2026年11月02日Solidity是什么

本篇内容主要讲解"Solidity是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Solidity是什么"吧!


什么是Solidity

Solidity是一种类似Javascript的高级语言。它被设计成以编译的方式生成以太坊虚拟机的代码

一个简单的例子

contract SimpleStorage {    uint storedData;    function set(uint x) {        storedData = x;    }    function get() constant returns (uint retVal) {        return storedData;    }}

这是一段最简单的Solidity合约,声明了一个变量storedData,以及一个set一个get两个方法去进行读写。Solidity中访问变量不需要this关键字

合约的结构

Solidity的合约的定义与面向对象语言的类的定义有些相似。每个合约包括了状态变量,函数,函数修饰符,事件,结构类型和枚举类型,且合约也能从其他合约那里继承。

  • 状态变量是在合约存储器中永久存储的值

  • 函数是合约中可执行单位的代码

  • 函数修饰符可以在声明中补充函数的语义

  • 事件是和evm日志设施的方便接口

  • 结构类型是一组用户定义的变量

  • 枚举是用来创建一个特定值的集合类型

类型

Solidity是一种静态语言,也就是说每个变量在编译的时候必须要定义类型。Solidity还支持通过组合提供的几种简单类型构建复杂类型。

布尔类型

与其他语言一样布尔类型的值就是真或假,支持的操作符有!,&&,||,==,!=

整型

整型分int以及uint,其中支持长度为8-256,步长为8,即存在uint8,uint16....uint256 另外int = int256 uint=uint8 支持的操作符有<=,>=,==,<,>,!=,&,|,^,~,+,-,*,/,%,**,+=,-=

地址

地址即Ethereum地址,也可以拥有成员,长度为20字节,是所有合约的base 支持的操作符 <=,>=,>,<,==,!= 十六进制字符串凡是通过地址合法性验证就会被认为是地址。需要注意的是39到41位长的没有通过地址合法性验证 的会得到一个警告,但会被视为普通的有理数字面量 地址的成员有balance以及send,即账户余额以及发送 如果想要获得当前合约的balance可以直接通过this.balance来获取,因为对于合约来说,地址代表的就是合约本身,合约对象默认继承自地址对象 地址有一个send方法用来向某个地址发送货币(货币单位为wei),需要注意的是:

  • 调用递归的深度不能超过1024

  • 如果gas不够,执行会失败

  • 执行该操作需要判断是否成功

字节数组

bytes1...bytes32,允许值以1为步长递增,byte默认表示byte1 支持的操作符<=,<,>=,>,==,!=,&,|,^,~以及序号访问 字节数组存在一个成员变量length,表示这个字节数组的长度,且只读

小数

小数还未被完全支持,可以被定义但不能被引用或传递 小数分为fixed以及ufixed,有符号小数与无符号小数 支持操作符<=,<,>=,>,==,!=,+,-,*,/,%,+=,-+等操作符

十六进制字面量

由hex关键字打头,后面紧跟单引号或双引号字符串,内部会被表示成二进制流 由于一个字节为8位,因此一个hex是由两个[0-9a-f]字符组成的 hex可以隐式转为bytes

函数类型

可以将一个函数赋值给一个变量,一个函数类型的变量,还可以将函数作为参数进行传递,也可以在函数调用中返回一个函数。该类型分为两类:internal以及extrnal internal只能在当前合约的上下文环境意外的地方执行 external包括地址与函数方法签名两部分,可作为外部函数调用的参数或有外部函数返回 完整的函数定义:

默认函数为internal如果没有返回值则必须省略returnsfunction (){internal|external}[constant][payable][returns ()]
数组

数组声明时可以是变长的也可以指定长度,对于storage数组来说元素类型可以是任意的,而对于memory数组来说,如果函数对外可见,那么函数参数不能是映射类型,只能支持ABI类型 声明多维数组时,solidity的长度声明与其他语言是相反的,例如我声明一个长度为5的二维数组,每个元素是变长数组,那么我的声明应是uint[][5] x 类型为数组的状态变量可以标记public类型,从而让Solidity来构造一个访问器 变长数组可以通过修改length来调整数组长度

注意

在eth中调用方法进行写操作时使用sendTransaction来请求,且需要在参数中写入操作账户以及gas,读操作使用call,并且执行完写操作之后需要进行一次挖矿将数据保存。

contract.funcName.sendTransaction(args...,{from:eth.accounts[0],gas:200000})

到此,相信大家对"Solidity是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

函数 类型 合约 数组 地址 变量 支持 长度 操作符 字节 小数 方法 语言 参数 字符 对象 成员 状态 结构 合法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 哈尔滨大商圈互联网科技有限公司 科技互联网龙头 A股互联网金融科技公司 工业互联网科技新基建 智能科技公司是互联网公司吗 科技服务与互联网 善班互联网科技有限公司 电子科技大学互联网 甘肃拓世互联网科技有限公司 中国最先进互联网科技公司 互联网为啥属于高科技 昭通互联网科技选哪家 华中科技大学互联网的牛人 黑科技 体验场景 互联网大会 易租星互联网科技有限公司 第三届互联网大会安防黑科技 杭州融税互联网科技有限公司 恒生科技指数 中概互联网 科技发展第三阶段互联网时代 互联网科技巨头监管 互联网科技行业发展 深圳天众互联网科技公司 互联网科技博主是什么意思 中国科技创新与世界互联网大会 河南住房之家互联网科技 互联网行业科技股 美国互联网科技实力 山东子淼互联网科技有限公司 绵阳真晨互联网科技有限公司
0