Solidity语言学习——(二)

Solidity 介绍 智能合约(Smart contract )是一种旨在以信息化方式传播验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。简单地说,智能合约可以理解为一个自执行的协议。智能合约可以自动处理协议的履行、管理、以及支付。 阅读详情

布尔类型

 

跟其他语言一样,取值范围为:ture与false

 

Address类型

 

  1. 代表以太坊的地址,长度为20个字节,160位 ,uint160是所有地址都可以用的类型

话不多说,直接上案例:


contract addr {
    
    address  addr=0x8cC758f5a41bdF6Ab749944c737F86e6a4B4070B;
    function getsenderaddr()view returns(address){
        return msg.sender;
    }
    
}

 

 

注意account账户

 

得到得地址为account地址。

好了,言归正传。。。。

Address类型用脚丫子想想就知道它并不支持四则运算。但是呢,它支持比较 ,还有一些它支持的属性。

话不多说,还是案例:

contract addr {
    
    
    function getsenderaddr()view returns(address){
        return msg.sender;
    }
    
    
    address  addr=0x8cC758f5a41bdF6Ab749944c737F86e6a4B4070B;
    function compare() view returns(bool){
        return addr>msg.sender;
        
    }
    
}

 

结果为false,我猜,身为读者的你,肯定会想为什么为false。

那么我来告诉你。这是两个地址的比较

address  addr       =0x8cC758f5a41bdF6Ab749944c737F86e6a4B4070B;
address  addrcurrnt =0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;

 它的原理为除了开头的0x,它会先比较8与C,16进制都知道C代表着12,肯定比8大,所以结果为false。如果第一个都是c它会比较后边的,以此类推。

好了,言归正传。。

Address 拥有自己的成员,比如,balance 余额。

  function getbalance() view returns(uint){
        
        return addrcurrnt.balance ;
    }

 

这就是它的balance余额。

Address还有自己的方法,send()是转账时调用的。向某个地址发送货币。

send有个递归深度,不能超过1024。gas(手续费)不够的话会send失败!

 

contract addr {
    
    
    function getsenderaddr()view returns(address){
        return msg.sender;
    }
    
    
    address  addr=0x8cC758f5a41bdF6Ab749944c737F86e6a4B4070B;
    address addrcurrnt=0xCA35b7d915458EF540aDe6068dFe2F44E8fa733c;
    function compare() view returns(bool){
        return addr>msg.sender;
    }
    
    
    function getbalance() view returns(uint){
        
        return addrcurrnt.balance ;
    }
    
    
    function chongzhi()payable returns(bool){
        
        return address(this).send(msg.value);
    }
    
}

 

 

可以看到vlaue充值成功。但是返回值为false,你知道为什么吗?

 

在solidity中没有单精度,双精度类型。

定长字节数组

 

表现形式:bytes,从bytes[1]开始到bytes[32],步长为1.bytes默认表示bytes[1],

而且bytes支持比较,和逻辑运算。

声明,初始化请看下面案例:

 

contract bytesdemo{
    
    bytes1 a=0x8c;
    bytes3 b=0xc3c18c;
    
    function compare() view returns(bool){
        return a>b;
    }
    
}

逻辑运算 

contract bytesdemo{
    
    bytes1 a=0x8c;
    bytes3 b=0xc3c18c;
    
    function compare() view returns(bool){
        return a>b;
    }
    
    bytes1 c = 0xaa;
    function and() view returns(bytes1){
        return a & c; 
    }
    
}

 

定长数组也有自己的属性

length

    function getlength()view returns(uint){
        
        return a.length;
    }

 

bytes的长度在其定义好后并不能使用length去修改。否则会报错。

string字符串

string可以说是一个特殊的不定长的数组

如果读者学过c语言的话,你就会知道C语言中字符串得长度在其末尾会有个结尾符,但solidity中字符串没有结尾符,字符串有多少位,其长度就是多少位。

做个小案例吧,这样直观一些。

contract stringdemo{
    string name ="wek";
    function getlength()view returns(uint){
        return bytes(name).length;
    
    }
}

 

细心得读者可以发现返回值位uint类型,其默认的位数位256。

案例中也包含着类型转换。由string类型转换位bytes类型。

转换位bytes类型后,就可以获取string数据的长度,也可以获取指定下标的元素值,也可以改变指定下标的元素值。

contract bytestostring{
    string name="wek";
    
    function stb() view returns(bytes){
        return bytes(name);
    }
    bytes bt=stb();
    
    function bts()view returns(string){
        bytes memory newbt = new bytes(bt.length);
        for (uint8 index = 0;index<bt.length;index++){
            newbt[index]=bt[index];
        }
        return string(newbt);
        
    }
}

如果将bytes直接转的话会出错,所以需要开辟新内存,并new一个bytes然后再string(bytes)。

 

 

 

用Remix部署Solidity合约     Remix是一个用于开发和部署Solidity合约的线上IDE,该IDE含有各个版本的Solidity,当一个工程有多个Solidity版本时,就需要使用Remix来进行分开编译和部署。 1、安装相关的编译与部署插件 1.1)安装Solidity编译插件     点击Remix左侧页边栏里的两脚插头图标,进入Remix的搜索栏,输入solidity关键字,按[Active]依次激活如下插件     SOLIDITY COMPILER     SOLIDITY STATIC ANALYSYS     阅读详情

相关推荐

什么是Solidity?

Solidity 是一种用于编写智能合约的高级编程语言,主要用于以太坊区块链平台。它由以太坊基金会的 Gavin Wood 等人设计和开发,支持面向对象、面向协议和函数式编程范式。Solidity 的语法类似于 JavaScript 和 C++,但也有着自己独特的特征,如可变性、可见性和事件等。Solidity 编写的智能合约可以在以太坊虚拟机(EVM)上运行,实现分布式应用(DApps)的开发和部署。solidity是以太坊虚拟机EVM智能合约语言是链上项目必备技能,听说学会了可以帮助你挣钱+找对象!

weixin_74169116的博客 1765

JavaMail 简单发送邮件

javaMail简单的发送邮件,从163邮箱发送到qq邮箱;包含163邮箱的设置

yifeiboss的博客 525

solidity编程

简介简介Solidity是⼀种⽤于编写以太坊虚拟机(EVM)智能合约的编程语⾔。我认为掌握Solidity是参与链上项⽬的必备技能:区块链项⽬⼤部分是开源的,如果你能读懂代码,就可以规避很多亏钱项⽬。Solidity具有两个特点:1.基于对象:学会Solidity之后,可以助你在区块链领域找到好⼯作,挣钱找对象。2.⾼级:不会Solidity,在币圈会显得很low进去之后会有四个选项,选择第三个第⼀个程序文件后缀名为.sol第1。

[ 「今でもあなたは私の光。」❤️如今你依旧是我的光。 4074

Solidity学习::(13)类型转换

类型转换 类型转换,是一个十分重要,常用的手段 一、隐式转换 隐式转换,就是当一个运算符能支持不同类型,编译器会隐式的尝试将一个操作数的类型,转为另一个操作数的类型,赋值同理。 条件是:值类型间的互相转换只要不丢失信息,语义可通则可转换。              就是说,uint8可转换到uint16、uint32、、、等,但不能反过来              同样的,无符号...

dieju8330的博客 4224

Solidity教程:初学Solidity

这篇关于Solidity教程的博客展示了很多Solidity特性。本教程假定你对以太坊虚拟机和编程有一定的了解。 以太坊,“世界计算机”提供了一个非常强大的全球共享基础设施,使用名为Solidity的编程语言构建去中心化应用程序。 让我们开始我们的Solidity教程,介绍Solidity。 什么是Solidity? 以太坊Solidity是一种面向智能合约的高级语言,其语法与JavaScript...

mongo_node的专栏 3579

【0基础】学习solidity开发智能合约-初识solidity

solidity入门课程,初识solidity

外柏叁布道者 6872

Solidity基础入门讲解

Solidity的语言类型: 静态类型的语言:编译前变量类型需要先确定 变量可以分为: 值类型:赋值或者传参时总是进行值拷贝 引用类型:传递的是地址 整型: 和其他语言类型,可以用int关键字声明: 有符号整数:int8,int16,int32,……int255, 无符号整数:uint8,uint16,uint32,……uint255, 跟在关键字后的数字表示多少字节,表示数...

Lin的博客 4631

以太坊solidity字符串拼接实现

以太坊开发智能合约时,在solidity中拼接字符串的实现思路和代码。

Solidity语言详解

Solidity语言学习学习总结 关于solidity语言我们从三个方面来学习,分别从 文件结构 数据类型 错误处理(独特) 我们在学习一门新语言的时候,通常从基础语法到函数,再到文件、结构体进行学习,最后深入到框架。以上三个点是solidity语言区别于其他语言的三个显著点,所以提出来着重讲。 这是solidity官方文档:https://learnblockchain.cn/docs/solidity/installing-solidity.html#remix 一、合约文件剖析 1.1一个合约文件

令狐_JackieHao的博客 3万+

STM32CubeMX+FreeRTOS+CAN总线+传感器实战:多任务系统与通信融合开发详解

本文详细介绍了基于STM32CubeMX和FreeRTOS的CAN总线与光电传感器融合开发实战。通过多任务系统设计,实现传感器数据采集与CAN通信的协同工作,提供完整的配置例程和调试技巧,适用于工业控制与机器人感知等应用场景。

n2o3p4的博客 734

用PyTorch复现经典:手把手教你用Double DQN训练AI玩转打砖块(附完整代码与调参心得)

本文详细介绍了如何使用PyTorch实现Double DQN算法,训练AI智能体玩转经典雅达利游戏Breakout(打砖块)。从环境配置、帧预处理到网络架构设计和经验回放机制,全面解析了强化学习在游戏AI中的应用。文章还提供了关键调参技巧和实战优化方案,帮助开发者快速掌握Double DQN的核心实现与性能优化方法。

weixin_30596165的博客 229

solidity教程:solidity语言入门

这篇关于Solidity教程的博客展示了很多Solidity特性。本教程假定你对以太坊虚拟机和编程有一定的了解。 以太坊,“世界计算机”提供了一个非常强大的全球共享基础设施,使用名为Solidity的编程语言构建去中心化应用程序。 让我们开始我们的Solidity教程,介绍Solidity。 什么是Solidity? 以太坊Solidity是一种面向智能合约的高级语言,其语法与JavaSc...

rejames的博客 2万+

【寄存器模型】二、前门访问与后门访问

1.后门访问可以更好的完成前门访问能够完成的事情:后门访问不消耗仿真时间,且消耗的运行时间也远小于前门访问的运行时间。 2.后门访问可以完成前门访问不能完成的事:对于某些特定的场景,如网络通信系统中的一些只读计数器,当要验证计数器进位归零的场景时,前门访问无法完成写寄存器操作,只能通过消耗仿真时间来使计数器到达特定的计数值。而后门访问可以直接对只读寄存器赋一个初值......

carrotbanana的博客 9657

Solidity基础二

Solidity的条件语句、Solidity的循环语句、Solidity的函数、函数进阶-修改器、函数进阶-构造器

尽欢的博客 1550

【测开求职】面试题:操作系统 吐血整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。涵盖考研范围内的所有知识内容,读者可以先查看上面的链接走一遍操作系统的整体框架结构。其中,重点难点以及易混淆的知识点,笔者用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。另外操作系统在校招中有非常明显的重点,一般情况下只会考察进程管理,内存管理,和设备管理,且这三者考察频率依次递减,文件管理基本不会考察。

vector的博客 7908

基于lstm+gru+transformer的电池寿命预测健康状态预测-完整数据代码

基于lstm+gru+transformer的电池寿命预测健康状态预测-完整数据代码

881

VSCode集成prettier-plugin-solidity:打造高效Solidity开发环境

prettier-plugin-solidity是一款专为Solidity代码设计的Prettier插件,能够自动格式化Solidity代码,帮助开发者保持一致的代码风格,提升开发效率。本文将详细介绍如何在VSCode中集成prettier-plugin-solidity,打造高效的Solidity开发环境。 ## 准备工作:安装必要的VSCode扩展 在开始集成prettier-plugin

gitblog_00277的博客 882

MIPI CPHY学习笔记02:TX物理层一致性测试项解析(HS信令模式)第一部分

在手机、平板等移动设备中,MIPI C-PHY是连接相机、显示屏等高速外设的“数据高速公路”。高速(HS)信令模式就是这条公路的“快车道”,专门用于传输高清图像、视频等大容量数据,既要保证传输速率,又要维持信号稳定。物理层一致性测试是对这条“快车道”的全面质检,确保高速传输下数据不卡顿、不失真。今天我们聚焦MIPI C-PHY TX(发射端)的Group 2 HS信令测试,用通俗语言拆解22个核心测试项(含2个过时项),看懂高速信号的合格标准。

一只豌豆象的博客 288

prettier-plugin-solidity配置教程:自定义你的Solidity代码风格

prettier-plugin-solidity是一款专为Solidity代码设计的Prettier插件,能够帮助开发者自动格式化Solidity代码,保持代码风格的一致性。本教程将详细介绍如何配置prettier-plugin-solidity,让你轻松自定义Solidity代码风格。 ## 一、安装prettier-plugin-solidity 要使用prettier-plugin-so

gitblog_00342的博客 651

AVDepthData、LiDAR 深度数据与人像模式全解析:iOS 真实景深图采集与处理实战

在 iOS 高端影像系统中,真实景深信息的采集与利用已成为区分旗舰设备与基础设备的重要能力。Apple 自 iPhone 7 Plus 引入双摄虚化以来,逐步发展出基于 AVDepthData、TrueDepth 与 LiDAR 的多维深度感知技术,并开放接口供开发者获取高精度深度图,构建背景虚化、人像分割、3D 重建等多种功能。本文将深入解析 AVDepthData 的结构与使用方式,系统讲解 LiDAR 采集架构、人像模式的景深融合逻辑,以及如何在实际项目中采集、预览并处理深度图数据,实现具备工程可用性

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1863

YOLOv8改进:在C2F模块中引入RepGhost Bottleneck模块

C2F类是YOLOv8中的C2F模块的实现,它包含一个RepGhostBottleneck模块、一个卷积层和一个批归一化层。通过在C2F模块中引入RepGhost Bottleneck模块,我们可以在保持计算效率的同时提升模型的表达能力。这是因为RepGhost Bottleneck模块通过引入重复的卷积核来扩展模型的感受野,从而增加了模型对不同尺度目标的感知能力。RepGhost Bottleneck是一种用于卷积神经网络的改进模块,它可以在保持计算效率的同时提升模型的表达能力。希望以上内容对你有帮助!

IlgCrystal的博客 1306

Solidity【简介】

Solidity概述、Solidity语言核心特性、Solidity开发工具Remix、智能合约学习游戏、什么是以太坊、以太坊虚拟机EVM

尽欢的博客 1714

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Solidity语言学习(10) —— Solidity汇编(Solidity Assembly)

solidity定义一个组件语言,这个语言可以在没有Solidity下使用。该组件语言也能在Solidity源代码中被用作“在线组件”。我们从这样使用在线组件以及怎样区分其与脱机组件开始介绍,然后接下来介绍详细介绍组件。 在线组件(Inline Assembly) 为了更多的细粒度控制,尤其是通过写库来提升语言,在一个接近虚拟即的语言中插入包含在线组件的Solidity指令是完全可能的。因为E...

weixin_42595515的博客 5041

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Solidity 从入门到实战(二)

Solidity 从入门到实战(二) 注意:本专栏主要来自于https://www.bilibili.com/video/BV1St411a7Pk?p=11&spm_id_from=pageDriver的学习笔记以及https://blog.youkuaiyun.com/weixin_45067603/article/details/105751748 数组的相关操作 一维可变数组 结论: 1.可变数组在定义的时候必须初始化,否则,编译会报错 2.支持直接使用.length查看数组长度,也支持对数组长度做

qq_38716929的博客 2733

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Solidity

编写智能合约绕不过去的一个坑就是要学一种新的编程语言,这就是号称智能合约编程语言的 Solidity本次学习的版本为0.8.0Solidity官方中文学习文档Solidity 中文文档 — Solidity中文文档 — 登链社区 (learnblockchain.cn)Solidity学习教程Solidity 教程 - 编程宝库 (codebaoku.com)目录一、Solidity概述二、Solidity语言核心特性三、Solidity开发工具Remix四、以太坊是什么五、以太坊虚拟机EVM。

qq_62397022的博客 910

Solidity01 Solidity极简入门

Solidity极简入门

J_Lee 1450
上一篇: solidity语言学习——(一)
下一篇: Solidity语言学习——(三)
The_Reader
博客等级 码龄10年 74粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值