header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

Solidity極簡入門|第十七講:庫合約 站在巨人的肩膀上

閱讀本文需 6 分鐘
本文用ERC721的引用的庫函數String爲例介紹solidity中的庫函數。
原文標題:《 Solidity 極簡入門: 17. 庫合約 站在巨人的肩膀上 》
原文作者:0xAA  


我最近在重新學 solidity,鞏固一下細節,也寫一個「Solidity 極簡入門」,供小白們使用(編程大佬可以另找教程),每週更新 1-3 講。


所有代碼和教程開源在 github:github.com/AmazingAng/WTFSolidity


這一講,我們用 ERC721 的引用的庫合約 String 爲例介紹 solidity 中的庫合約(library),並總結了常用的庫函數。


庫函數


庫函數是一種特殊的合約,主要是爲了提升 solidity 代碼的複用性和減少 gas fee 而存在。庫合約一般都是一些好用的函數合集(庫函數),由大神或者項目方創作,咱們站在巨人的肩膀上,會用就行了。


  庫合約:站在巨人的肩膀上


他和普通合約主要有以下幾點不同:


不能存在狀態變量不能夠繼承或被繼承

不能接收以太幣

不可以被銷燬 


String 庫合約


String 庫合約是將 uint256 類型轉換爲相應的 string 類型的代碼庫,樣例代碼如下:  



他主要包含兩個函數,toString() 將 uint256 轉爲 string,toHexString() 將 uint256 轉換爲 16 進制,在轉換爲 string。


如何使用庫合約


我們用 String 庫函數的 toHexString() 來演示兩種使用庫合約中函數的辦法。


1. 利用 using for 指令:


指令 using A for B; 可用於附加庫函數(從庫 A)到任何類型(B)。添加完指令後,庫 A 中的函數會自動添加爲 B 類型變量的成員,可以直接調用。注意:在調用的時候,這個變量會被當作第一個參數傳遞給函數:



2. 通過庫合約名稱調用庫函數:



我們部署合約並輸入 170 測試一下,兩種方法均能返回正確的 16 進制 string 「0xaa」。證明我們調用庫函數成功!   


  成功調用庫函數

總結


這一講,我們用 ERC721 的引用的庫函數 String 爲例介紹 solidity 中的庫函數(Library)。99% 的開發者都不需要自己去寫庫合約,會用大神寫的就可以了。我們只需要知道什麼情況該用什麼庫合約。常用的有:


String:將 uint256 轉換爲 String

Address:判斷某個地址是否爲合約地址

Create2:更安全的使用 Create2 EVM opcode

Arrays:跟數組相關的庫函數  


原文鏈接


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交