Solidity 函数原型与循环语句详解(2023版)

Solidity 基础数据类型详解(2023版) 1.1 整形整数有助于将数字存储在合约中。Solidity 提供以下两种类型的整数:有符号的整数:带符号的整数可以同时具有负值和正值。无符号整数:无符号整数只能保持正值和零。除正值和零值以外,它们也可以保持负值。对于每种类型,Solidity 都有多种类型的整数。Solidity 提供了 uint8 类型来表示8位无符号整数,并且以8的倍数表示,直到达到256。总之,可以声明32个不同的具有8的倍数的无符号整数,例如 uint8、uint16、unit24、uint256 位。 阅读详情

函数的定义

function func_name(paramlist...) modifiers returns (returnlist...)
  • function是函数声明的关键字;
  • func_name自定义函数名称,与我们习惯的函数命名规范没有区别;
  • paramlist参数列表,可以0或多个参数,格式是:参数类型 参数名称;
  • modifiers函数的修饰符,非常关键;
  • returns返回值关键字,看到s应该能想到可以返回多个值;
  • returnlist返回值类型列表;

函数的可见性

函数的可见性有四种:

  • Private(私有):函数只能在所定义的智能合约内部调用,也就是只有该合约可以调用。
  • Internal(内部):可以在所定义智能合约内部调用该函数,也可以从继承合约中调用该函数。
  • External(外部):内部不能访问只能从智能合约外部调用。
  • Public(公开):可以从任何地方调用 (最宽松)。对于公共状态变量,会生成自动getter函数。
     

函数状态可变性

  • view:用view声明的函数只能读取状态,而不能修改状态。
  • pure:用pure声明的函数既不能读取也不能修改状态。
  • payable:用payable声明的函数可以接受发送给合约的以太币,如果未指定,该函数将自动拒绝所有发送给它的以太币。
  • constant:合约不修改状态变量,和view一样(函数中基本不使用了)

函数修饰符modifiy

支持自定义修饰符号modifier

Solidity 接口与继承详解(2023版) 接口(interface):如果我们合约需要和区块链上其他合约会话,则需定义interface。外部合约使用函数可直接读取其中数据。也就是说interface是用于定义合约接口,无需实现接口内定义的函数。 阅读详情

相关推荐

Solidity library库的使用详解(2023版)

库是智能合约的精简版。就像智能合约一样,我们可以在其他合约中使用库的函数。但与智能合约不同的是,库不能有任何状态变量,它们也不能继承其他合约。这个库的目的很简单,这些库位于区块链上,包含可以被其他合约使用的代码。library用于定义合约库;库合约可以被其他合约引用并使用其提供的方法;参考库:http://github.com/OpenZeppelin/openzeppelin-contracts(OpenZeppelin Contracts 是一个用于安全智能合约开发的库。

NatureOrigin的博客 1211

官方统计2023年收入最高的编程语言:Solidity学习入门指南:看这一篇就够了 前置工作的方法全部在这里

Solidity:Solidity是一种面向合约的高级编程语言,主要用于编写区块链网络上的智能合约。在2023年的薪资排行榜中,Solidity以平均年薪18.8万美元(约合137万元人民币)的高薪位列第一 测试币领取 这里是常见水龙头的整理 打开网站 翻译一下 然后输入对应的账户 直接就能领取

终于等到你啦~欢迎来到我的知识空间 这里是苏泽的成神之路 2万+

Solidity 值传递和引用传递详解(2023版)

如果一个变量是值类型,那么当把它的值传给另一个变量时,是复制值,对新变量的操作不会影响原来的变量;如果该变量是引用类型,那么当它传值给另一个变量时,则是把该值的地址复制给新的变量。布尔类型(bool)、整型(int)、地址类型(address)、定长字节数组(bytes)、枚举类型(enums)、函数类型(function);如果一个变量是引用类型,给它赋值时可以是值,也可以是引用,这决定于该变量是Storage类型还是Memory类型。如果一个变量是值类型,给它赋值时永远是值传递!

NatureOrigin的博客 618

Solidity abstract关键字的使用详解(2023版)

用于定义抽象合约,供其他合约继承使用抽象合约将合约的定义与其实现脱钩,从而提供了更好的可拓展性;简化了诸如Template方法的模式,并消除了代码重复;如果未实现合约中的至少一项功能,则需要将合约标记为抽象;即使实现了所有功能,合约也可以被标记为抽象的;抽象合约不能实例化;如果合约继承自抽象合约,并且没有通过覆盖实现所有未实现的功能,则也需要将其标记为抽象;抽象合同不能覆盖未实现的函数;

NatureOrigin的博客 424

Solidity 合约调试和event事件(2023版)

目前主流的定义:事件是以太坊虚拟机(EVM)日志基础设施提供的一个便利接口。当被发送事件(调用)时,会触发参数存储到交易的日志中(一种区块链上的特殊数据结构)。这些日志与合约的地址关联,并记录到区块链中。换句话来说区块链是打包一系列交易的区块组成的链条,每一个交易“收据”会包含0到多个日志记录,日志代表着智能合约所触发的事件。event相当于solidity的日志存储成本上来说,event比storage更便宜event可以被客户端程序订阅使用emit触发event事件。

NatureOrigin的博客 794

Solidity智能合约基础案例——智能银行实现(2023版)

【代码】Solidity智能合约基础案例——智能银行实现。

NatureOrigin的博客 1371

Solidity 引用类型(数组,结构,映射)详解(2023版)

数组是数据类型,但更具体地说,它们是依赖于其他数据类型的数据结构。数组是指相同类型的数值组。数组有助于将这些值存储在一起,并简化迭代、排序和搜索该组中元素或子元素的过程。Solidity 提供了丰富的数组结构,可以满足不同的需求。

NatureOrigin的博客 696

Solidity 函数选择器和接口ID详解(2023版)

标准定义:一个函数调用数据的前 4 字节,指定了要调用的函数。这就是某个函数签名的 Keccak 哈希的前 4 字节(高位在左的大端序) (译注:这里的“高位在左的大端序“,指最高位字节存储在最低位地址上的一种串行化编码方式,即高位字节在左)。这种签名被定义为基础原型的规范表达,基础原型即是函数名称加上由括号括起来的参数类型列表,参数类型间由一个逗号分隔开,且没有空格。对函数进行哈希运算,得到的哈希值前4位,也可以使用selector来获取;

NatureOrigin的博客 730

智能合约审计AI版:Solidity检测云端工作站

你可以通过修改description: "检查代币转账是否收取不合理手续费"pattern: |// 检测value减少操作是否合理# 典型手续费模式AI审计效率高:相比纯人工审计,速度提升10倍以上覆盖全面:同时检查30+种常见漏洞类型解释清晰:不仅指出问题,还提供修复方案开箱即用:无需复杂配置,一键部署即可使用持续进化:模型会随着新漏洞发现不断更新现在你就可以上传你的合约代码,体验AI辅助审计的强大能力。

BloodstoneHawk77的博客 736

Solidity 充值,提现及转账操作(2023版)

【代码】Solidity 充值,提现及转账操作(2023版)

NatureOrigin的博客 1287

Solidity 内建对象详解(2023版)

内建对象可以分为两个,分别为block和msg;

NatureOrigin的博客 350

Solidity fallback函数和receive函数详解(2023版)

通过这两个特殊函数,我们就可以实现外部转账的功能,比如从metamask账户转账到该合约中。

NatureOrigin的博客 739

Solidity 智能合约基础案例——抢红包(2023版)

user:销毁时指定的受益人,如果涉及到资金问题,需要使用payable进行转换。这里有个需要注意的销毁合约的方法。

NatureOrigin的博客 870

Solidity 合约安全,常见漏洞 (上篇)

上面列出的问题是智能合约被黑的主要途径,但还有很多其他的根本原因,可以串联成重大问题,下面记录了这些问题。然而,正如传统的软件工程有常见的漏洞主题,如 SQL 注入、缓冲区超限和跨网站脚本,智能合约中也有反复出现的。尽管重入可能是最知名的智能合约漏洞,但它只占发生的黑客的一小部分。该合约有一个用心良苦的机制,以防止合约的所有者退出,直到所有付款超过荷兰拍卖价格的退款被给予。这似乎是一个简单的错误,但忘记对谁可以调用一个敏感函数(如提取以太币或改变所有权)进行限制,这种情况经常发生,令人惊讶。

heike_Ch的博客 916

Solidity 以太坊智能合约标准-ERC20(2023版)

这里的name(),symbol(),decimals()(精度)都是可选项而不是必选项;可以看到ERC20由5个function函数和2个event构成;我们需要将这些函数正之后的继承中全部实现;

NatureOrigin的博客 758

Solidity 以太坊智能合约标准-ERC165(2023版)

ERC是Ethereum Request for Comments(以太坊征求意见提案)的缩写,代表以太坊已正式化的提案,它是由EIP(Ethereum Improvement Proposals以太坊升级提案)经过以太坊开发团队各种审议和测试后通过的一种提案,即对有用提案进行标准化,从而实现对开发者提供模版帮助以及标准限制。而其后的20\721\1155则代表提案号,ERC-20则代表第20号提案,其它提案号亦然。换句话来说,讨论一个项目, 一开始会用 EIP 提出建议, 结果与细节会定义在 ERC。

NatureOrigin的博客 457

基于FISCO BCOS 部署可升级的 Solidity存证智能合约

本文介绍了基于FISCOBCOS平台的可升级Solidity存证智能合约实现方案。采用透明代理模式,包含逻辑合约、代理合约和管理合约三部分,支持业务逻辑升级而不影响存储数据。详细阐述了合约架构设计、Solidity代码实现、Go SDK交互流程以及完整的部署升级步骤。方案具有数据持久性、版本兼容性和生产就绪等特点,提供了权限控制、输入验证等安全机制,并包含监控管理工具。该实现为企业级区块链存证应用提供了可靠的基础架构,支持后续功能扩展和定制化开发。

分享AI、区块链技术及应用,未来已来 1512

蜻蜓fm爬虫python

本文介绍了一个用于下载蜻蜓FM音频书籍的Python脚本实现。该脚本主要功能包括:1)通过账号密码登录获取认证信息;2)从目标书籍主页提取版本信息;3)获取书籍节目总数和分页信息;4)生成节目下载链接(使用HMAC-MD5加密算法生成请求签名);5)下载音频文件并保存。脚本采用多种反爬措施:设置User-Agent模拟浏览器行为、使用动态时间戳、HMAC-MD5签名验证等,有效规避简单的反爬机制。整个流程包括登录认证、获取书籍信息、生成下载链接和保存音频文件四个步骤,实现自动化批量下载功能。

野猫炫的博客 910
上一篇: Solidity 内建对象详解(2023版)
下一篇: Solidity 充值,提现及转账操作(2023版)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值