WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

  • 本文介绍了Solidity中的库合约(Library),以ERC721引用的String库为例,讲解其作用和使用方法。库合约主要用于提升代码复用性和减少gas费用,特点包括不能有状态变量、不能被继承或接收以太币。

  • String库合约功能是将uint256转换为字符串,提供toString()和toHexString()两个核心函数,演示了如何通过using for指令或直接调用库函数名称来使用这些功能。

  • 文章通过实际代码示例展示两种调用方法,并验证了将数字170转换为16进制字符串"0xaa"的正确性。

  • 最后总结了常用库合约场景:String处理地址转换、Address判断合约地址、Create2安全操作和Arrays数组工具,建议开发者直接使用现有成熟库而非重复造轮子。

(全文重点突出库合约的实用价值及调用方式,适合Solidity开发者快速理解核心概念)

总结

原文:《Solidity 极简入门: 17. 库合约 站在巨人的肩膀上》

我最近在重新学 solidity,巩固一下细节,也写一个「Solidity 极简入门」,供小白们使用(编程大佬可以另找教程),每周更新 1-3 讲。

所有代码和教程开源在 github:github.com/AmazingAng/WTFSolidity

这一讲,我们用 ERC721 的引用的库合约 String 为例介绍 solidity 中的库合约(library),并总结了常用的库函数。

库函数

库函数是一种特殊的合约,主要是为了提升 solidity 代码的复用性和减少 gas fee 而存在。库合约一般都是一些好用的函数合集(库函数),由大神或者项目方创作,咱们站在巨人的肩膀上,会用就行了。

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

库合约:站在巨人的肩膀上

他和普通合约主要有以下几点不同:

不能存在状态变量不能够继承或被继承

不能接收以太币

不可以被销毁

String 库合约

String 库合约是将 uint256 类型转换为相应的 string 类型的代码库,样例代码如下:

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

他主要包含两个函数,toString() 将 uint256 转为 string,toHexString() 将 uint256 转换为 16 进制,在转换为 string。

如何使用库合约

我们用 String 库函数的 toHexString() 来演示两种使用库合约中函数的办法。

1. 利用 using for 指令:

指令using A for B;可用于附加库函数(从库A)到任何类型(B)。添加完指令后,库 A 中的函数会自动添加为 B 类型变量的成员,可以直接调用。注意:在调用的时候,这个变量会被当作第一个参数传递给函数:

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

2. 通过库合约名称调用库函数:

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

我们部署合约并输入 170 测试一下,两种方法均能返回正确的 16 进制 string「0xaa」。证明我们调用库函数成功!

WTF Solidity极简入门第十七讲:库合约 站在巨人的肩膀上

成功调用库函数

总结

这一讲,我们用 ERC721 的引用的库函数 String 为例介绍 solidity 中的库函数(Library)。99% 的开发者都不需要自己去写库合约,会用大神写的就可以了。我们只需要知道什么情况该用什么库合约。常用的有:

String:将 uint256 转换为 String

Address:判断某个地址是否为合约地址

Create2:更安全的使用 Create2 EVM opcode

Arrays:跟数组相关的库函数

推特:@0xAA_Science

社区:Discord微信群官网 wtf.academy

所有代码和教程开源在github: github.com/AmazingAng/WTFSolidity

分享至:

作者:0xAA

本文为PANews入驻专栏作者的观点,不代表PANews立场,不承担法律责任。

文章及观点也不构成投资意见

图片来源:0xAA如有侵权,请联系作者删除。

关注PANews官方账号,一起穿越牛熊
推荐阅读
1小时前
4小时前
6小时前
2025-12-13 09:23
2025-12-13 07:30
2025-12-13 05:30

热门文章

行业要闻
市场热点
精选读物

精选专题

App内阅读