版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深入理解Solidity函数/CATALOGUE目录010203函数基础概念函数修饰器特殊函数040506函数重载转账函数加密与编码函数函数基础概念01PART””定义语法参数与返回值函数参数声明类似普通变量,未使用参数可省略名称。引用类型参数需添加位置声明。返回值可有多个,可通过returns关键字指定类型和变量名,也可在函数体中使用return语句返回数据。02Solidity中定义函数使用关键字function,需指定函数名、参数列表、函数修饰符及返回值列表。函数修饰符包括可见性与可变性等。例如functionadd(uinta,uintb)privatepurereturns(uint)定义了一个私有纯函数,用于计算两个数的和。01函数定义内部调用是在合约内对函数调用,外部调用是在合约外调用或通过this实现。内部调用直接使用函数名,外部调用需通过合约实例或this关键字。内部调用与外部调用Solidity支持类json形式传参,将参数名作为键,参数值作为值,参数顺序可调整,但参数名不需加引号。类json形式传参函数调用函数修饰器02PART修饰器定义函数修饰器用于声明函数的某些特性,可减少代码冗余。定义修饰器使用modifier关键字,语法为modifier修饰器名{条件体_;},其中_是占位符,用于插入函数体。修饰器分类不带参数的修饰器如onlyOwner,用于限制函数调用者权限。带参数的修饰器如checkValue,用于检查函数参数是否满足特定条件。函数修饰器概念使用修饰器时,在函数定义的参数列表后添加修饰器名称。修饰器与函数可见性及可变性修饰符的位置无先后顺序要求。使用方法例如functionchangeOwner(addressnewOwner)publiconlyOwner,只有合约的owner才能调用该函数修改owner。使用案例修饰器的使用特殊函数03PART构造函数是合约部署时自动运行的函数,用于初始化合约状态变量。每个合约最多只能有一个构造函数,其名字为constructor,不能有function关键字,可见性必须是public或internal。构造函数概念02构造函数可以带参数或不带参数。带参数的构造函数在部署合约时,需在部署按钮右侧的输入框中输入参数值。构造函数参数01构造函数自毁函数概念自毁函数用于销毁区块链上部署的智能合约。执行自毁函数后,合约账户中的余额会发送给指定的地址,合约中的状态和功能访问会失效。自毁函数使用自毁函数有固定的名称selfdestruct和一个用于接收合约余额的账户地址参数。例如selfdestruct(owner)将合约余额转账给owner并销毁合约。自毁函数函数重载04PARTSolidity中函数重载是指在一个合约中,允许定义多个具有相同名称但参数列表不同的函数。参数列表包括参数类型、个数或顺序必须不同。01重载定义函数重载常用于实现功能类似的函数,使用相同的函数名,既减少了代码的复杂性,也提高了程序的可读性。02重载意义函数重载概念调用匹配在调用重载函数时,编译器会把输入的实际参数和函数参数的变量类型做匹配。如果出现多个匹配的重载函数,则会报错,需要明确指明是调用的哪个函数。匹配案例例如functionf(uint8a)和functionf(uinta)是重载函数,调用f(10)会报错,因为存在多个匹配函数,需使用f(uint(10))显式转换参数类型来指明调用的函数。函数重载使用转账函数05PART转账定义转账是指向指定账户发送一定数量的以太,通过智能合约可以实现不同账户之间的转账操作。接收方如果是合约账户时,需要有payable类型的函数方可接收此转账。转账费用每笔交易都收取一定数量的Gas,目的是限制执行交易所需要的工作量和为交易支付的手续费。转账概念receive()函数是合约默认用来接收转账的函数,合约中最多只能有一个receive()函数,其定义语法为receive()externalpayable{函数体},函数体中不能有修改状态变量等消耗较多Gas的语句。receive()函数fallback()函数在receive()函数不存在时,会被调用来接收以太。其声明语法为fallback()externalpayable{函数体},如果转账时msg.data不为空则调用fallback()函数。fallback()函数0201接收以太的函数send方法send方法发送以太的语法是接收地址.send(以太数),该函数返回转账是否成功的布尔量,转账出错不会抛出异常,且费用消耗限制为不能超过2300个Gas。transfer方法transfer方法的语法是接收地址.transfer(以太数),转账出错时会抛出异常,并且在本次交易中的修改都会回滚,因此transfer相比send使用起来更安全,同样也有最多2300个Gas消耗的限制。call方法call方法的语法是接收地址.call{value:以太数}(附加数据),该函数有两个返回值,第一个返回值为布尔类型,代表转账是否成功;第二个返回值为bytes类型,是接收方返回的消息数据。该方法没有Gas限制。010203发送以太的函数加密与编码函数06PART01Solidity中的加密函数使用了哈希算法,可以对输入的任意长度的内容进行加密,生成固定长度的加密数据。常用加密函数包括keccak256、sha256、ripemd160等。哈希算法02加密函数常用于数据验证,将需要验证的数据进行加密计算,将结果与正确数据的加密结果进行比较,从而判断两个数据是否一致。加密应用加密函数在Solidity中,编码是指将数据结构转换为字节流,以便在区块链上进行存储和传输。所有数据传输和操作都依赖于ABI编码规则。编码概念Solidity提供了abi.encode、abi.encodePacked、abi.encodeWithSignature、abi.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泉州经贸职业技术学院《当代世界经济与政治》2025-2026学年期末试卷
- 福州英华职业学院《临床医学概论》2025-2026学年期末试卷
- 碳排放交易员安全文化模拟考核试卷含答案
- 记号笔制造工变更管理水平考核试卷含答案
- 肠衣加工工安全生产规范知识考核试卷含答案
- 广播电视线务员安全生产意识竞赛考核试卷含答案
- 道路客运站务员达标测试考核试卷含答案
- Unit 1 What are your class rules (Period 2)教学设计2025-2026学年人教PEP版四年级下册英语
- XX市生态守护行动-共建绿色生态城市
- 临床颅内动脉瘤护理
- 第一次月考测试卷(试卷)2025-2026学年五年级英语下册辽师大版三起(含答案)
- 2026年消费维权竞赛试题及答案
- 2025年广东深圳市中考英语试卷真题及答案详解(精校打印版)
- 校医院内部财务管理制度
- 2026年兰考三农职业学院单招职业适应性测试题库附答案详解(黄金题型)
- 2025四川泸州市古蔺县考试选任聘副科级领导干部14人备考题库附答案
- 山东省2026届高三12月大联考数学试题(含答案)
- 水晶产品采购合同范本
- 2025年家庭智能健身器材开发可行性研究报告
- 携程培训课件
- 第7课《我们爱分享》(名师课件)
评论
0/150
提交评论