Solidity極簡入門|第十七講:庫合約 站在巨人的肩膀上
BlockBeats 律動財經 2022-08-03 15:30
我最近在重新學 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:跟數組相關的庫函數
暢行幣圈交易全攻略,專家駐群實戰交流
▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群)
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!
- 加入鉅亨買幣LINE官方帳號索取免費課程
- 掌握全球財經資訊點我下載APP
文章標籤
上一篇
下一篇