智能合約開發實戰(16) - Import

更新 發佈閱讀 6 分鐘

我們從上一篇知道了可以從B合約調用A合約的方法,這一篇來講一個更為常用的調用方法:Import,Import在很多程式語言裡面都有,用處是可以調用其他的程式片段,因為如果程式都寫在一起,那麼一支程式裡面就會過於龐大,而且也沒辦法共用,為了增加使用性,會把常用的方法抽取出來,等需要用的地方再Import進去使用就好,這樣可以大量的簡單化程式碼,程式不是寫的愈龐大就愈好,應該是愈簡單、愈單純讓人一眼就能理解愈好,因為程式往往最後不是開發的那個人在維護的,所以寫得愈讓人能簡單理解愈能減少維護的時間和成本,因為時間就是金錢也是成本。

下面我們就來講解Import該怎麼使用及可以調用外部在GitHub上面寫好的合約,比如說OpenZeppelin的ERC20合約,這些合約會比自己開發的ERC20合約來的安全一點,因為是公開的,有經過市場上面的認證,有漏洞早就被挖出來修正了。

直接上程式碼:

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.13;

import "./CallFromContract.sol";

contract ImportContract{
  ContractA public A;

  //Call A的第一種型式
  function callSetX(uint _x) public {
    A.setX(_x);
  }
  
  //Call A的第二種型式
  function callSetXFromAddress(uint _x) public {
    A.setX(_x);
  }

  //調用合約A的設定X和傳送ETH幣
  function callSetXandSendEther(uint _x) public payable {
    A.setXandSendEther{value: msg.value}(_x);
  }
}

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
  // constructor() ERC20("cryptoljia", "JIA") {
    
  // }

  //初始化 ERC20必須給name和symbol
  constructor(string memory name, string memory symbol) ERC20(name, symbol) {
    
  }

  //重寫ERC20的decimals
  function decimals() public pure override returns (uint8) {
    return 9;
  }
}

從程式碼可以看出ImportContract我們照著上一篇的參考,把Contract B的寫法搬到ImportContract裡面,可以看到因為有Import,所以就不需要Contract A的address就可以調用了。

vocus|新世代的創作平台

另外我們也可以調用外部的合約,最常用的是OpenZeppelin的相關ERC合約,程式碼裡面我們引用了ERC20的合約,路徑在這:https://github.com/OpenZeppelin/openzeppelin-contracts,進到"/contracts/token"裡面就可以找而很多ERC的合約了,Import進來你的合約內就可以引用了,程式碼內是引用了ERC20合約,也就是乙太幣的合約,我重寫了ERC20的decimals,把原本18位改為9位,各位也可以試著override ERC20裡面的其他方法。

OpenZeppelin還蠻常會用到的,因為上面有寫好的ERC合約範本,用這種公開的範本會比自己創建的來的安全,OpenZeppelin後面我們也會再看到,這部份有空再做介紹,這邊只要會引用就可以了。

ImportContract的部份各位就可以自己Deploy上去玩看看,我這邊就不再貼上來了,只是要注意的是:MyToken在Deploy時,記得要給NAMESYMBOL

vocus|新世代的創作平台
vocus|新世代的創作平台

由於MyToken我們引用了ERC20合約,所以MyToken也就是一個ERC20的合約了,這部份各位可以玩看看,以上就是Import的介紹,有什麼錯誤的地方也歡迎留言跟我說,謝謝。

有什麼想要了解或是不清楚的部份,歡迎留言和我分享。
如果喜歡我的文章歡迎追隨,按愛心,我每週都會上新文章。

留言
avatar-img
宅D嘉的開發人生
22會員
58內容數
加密貨幣很有趣,遊戲開發也很有趣,AI也有點意思,身為一個跨多領域的軟體工程師,喜歡研究新鮮的事物,歡迎來到我的世界,一起坐上這艘開往未來探索新奇的列車。
宅D嘉的開發人生的其他內容
2025/03/28
    每個程式開發的開始都是從Hello World開始的,當然我也不免淑的來個Hello World。
2025/03/28
    每個程式開發的開始都是從Hello World開始的,當然我也不免淑的來個Hello World。
2025/03/22
 Cocos Creator 2D實戰(一) 環境設定 第二步先做環境設定:環境設定、VS Code 正常來說跟著做就可以完成環境設定了,由於是開發2D,所以右上角先選擇2.4版(目前最高版本)會比較好,比較不容易錯亂,畢竟3.x和2.x的差異很大。
Thumbnail
2025/03/22
 Cocos Creator 2D實戰(一) 環境設定 第二步先做環境設定:環境設定、VS Code 正常來說跟著做就可以完成環境設定了,由於是開發2D,所以右上角先選擇2.4版(目前最高版本)會比較好,比較不容易錯亂,畢竟3.x和2.x的差異很大。
Thumbnail
2025/03/21
Cocos Creator 實戰     Cocos Creator是個用來開發2D或是3D遊戲的整合開發環境(IDE),程式語言是使用Javascript或TypeScript,Unity是用C#,但如果是Cocos Creator 3D的話是只能用TypeScript,所以建議還是用TypeS
Thumbnail
2025/03/21
Cocos Creator 實戰     Cocos Creator是個用來開發2D或是3D遊戲的整合開發環境(IDE),程式語言是使用Javascript或TypeScript,Unity是用C#,但如果是Cocos Creator 3D的話是只能用TypeScript,所以建議還是用TypeS
Thumbnail
看更多
你可能也想看
Thumbnail
前言 本篇要用 Token-2022 和 solana cli 來鑄造一個新的代幣叫做TYC。 如前篇所述,Token-2022 與 Spl Token 是不同的 Program,所以在呼叫的時候要特別註明以示明區別。 Token-2022 Program ID 地址: TokenzQdBNb
Thumbnail
前言 本篇要用 Token-2022 和 solana cli 來鑄造一個新的代幣叫做TYC。 如前篇所述,Token-2022 與 Spl Token 是不同的 Program,所以在呼叫的時候要特別註明以示明區別。 Token-2022 Program ID 地址: TokenzQdBNb
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
为了编写智能合约,开发人员往往需要选择一种适合的编程语言,目前市场上有几种常用的智能合约编程语言,比如Solidity、Vyper、Michelson等,那么具体智能合约常用语言有哪些,让我们一起来看看吧 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续
Thumbnail
为了编写智能合约,开发人员往往需要选择一种适合的编程语言,目前市场上有几种常用的智能合约编程语言,比如Solidity、Vyper、Michelson等,那么具体智能合约常用语言有哪些,让我们一起来看看吧 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续
Thumbnail
这篇文章主要介绍了以太坊科普:理解ERC-20 token合约的相关资料,希望这篇关于理解ERC-20 token合约的文章,能够帮助各位朋友对以太坊有个更加深入的了解。 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣 🔑 专属邀请码: R8
Thumbnail
这篇文章主要介绍了以太坊科普:理解ERC-20 token合约的相关资料,希望这篇关于理解ERC-20 token合约的文章,能够帮助各位朋友对以太坊有个更加深入的了解。 🚀 币安 - 全球最大加密货币交易所 💥 独家优惠 💥 💰 注册即享 20% 手续费返佣 🔑 专属邀请码: R8
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News