智能合約開發實戰(19) - factory pattern 工廠模式

閱讀時間約 1 分鐘
factory pattern 工廠模式簡單的說就是負責創建一系列相同品質的智能合約為什麼說是相同品質呢?因為有相同的模版,所以做出來的智能合約品質也會相同,我知道看到這裡可能還是有人會覺得霧煞煞的,沒關係,我們用下面的實作來說明就會比較清楚了:
在上程式碼之前先說明一下為什麼需要在 Solidity 中使用工廠模式有以下三種原因:
  • 如果您想創建同一個合約的多個實例,並且您正在尋找一種方法來跟踪它們並使它們的管理更容易。
  • 部署時節省氣體:您可以僅部署工廠,稍後使用它來部署其他合約。
  • 提高合約安全性。
接下來我們就來實作一下,我們用車來說明,這樣大家應該會比較了解一點,直接上程式碼:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
//汽車模版
contract Car {
  string public model;
  address public owner;
  uint public cost;
  constructor(string memory _model, address _owner) payable {
    model = _model;
    owner = _owner;
    cost = msg.value;
  }
}
//汽車工廠
contract CarFactory {
  Car[] public cars;// 記錄汽車
  // function create(string memory _model) public {
  //     Car car = new Car(_model, address(this));
  //     cars.push(car);
  // }
  function createWithMoney(string memory _model) public payable {
    //必須有足夠的乙太幣才行
    require(msg.value >=1 ether, "Not enough money");
    //創建一台車
    Car car = new Car{value: msg.value}(_model, address(this));
    cars.push(car);//記錄所有創建的車
  }
}
上面是一個簡單的範例,說明的是建立一個汽車的模版,正常來說我如果要創建不同汽車合約,我必須要寫很多個smart contract,這時候就需要有一個模版來幫我們快速的創建這些汽車合約,然後CarFactory就是我們的汽車工廠,裡面就能引用Car(汽車模版)來幫我們創建很多的汽車,而不需要寫一個一個的合約,另外有一個優點是:方便管理這些創建出來的子合約,由於子合約是統一由汽車工廠創造的,當然也就方便我們查找特定的合約或是禁用該合約囉,當然相關在創建時的檢查當然也是少不了的,以上就是一個簡單針對工廠模式的說明,謝謝。
有什麼想要了解或是不清楚的部份,歡迎留言和我分享。
如果喜歡我的文章歡迎追隨,按愛心,我每週都會上新文章。
為什麼會看到廣告
18會員
38內容數
目前加密貨幣的市場上幣種非常的多 讓你看得眼花撩亂了嗎? 可以藉由這一系列的加密貨幣分析 能夠幫忙您了解每一個加密貨幣它的價值所在 每一集都會介紹一種幣 是一個很實用的專題,歡迎大家訂閱~
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
Thumbnail
avatar
黑貓老師
2024-06-29
鏈上智能合約互動0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
avatar
laurahsu.roc
2024-06-12
人工智能和智能合約:解釋未來金融的重要性在數字化時代,金融行業正經歷戲劇性的變化。區塊鍊和人工智能(AI)等新興技術正在改變我們對金融交易和智能合約的看法。本文將深入探討人工智能和智能合約的角色,以及它們如何重新定義未來金融的重要性。 智能合約的基本概念和功能 1.什麼是智能合約?智能合約是一種合約,它們在區塊鏈上運行,自動執行和實施
Thumbnail
avatar
AI導遊|傑森王
2023-09-15
OKX AA 智能合約錢包是什麼?OKX AA 智能合約錢包結合了外部帳戶( EOA )和合約帳戶(CA)的優點,提供更高的安全性、方便性與效率,為區塊鏈錢包創建更多可能,降低新手的學習門檻。 OKX AA
Thumbnail
avatar
Grneade Lab
2023-08-26
【💎 開發智能合約 - 密碼學系列】雜湊(Hash)的背後究竟怎麼「湊」的呢? Bucket(桶):雜湊表儲存資料的位置,每一個位置具有唯一識別索引。 Slot(槽): 每一個Bucket裡面都會存放不同的資料,而假設一筆資料由兩個欄位組成,每一個欄位就是一個Slot(槽)。 Hash Function(雜湊演算法):計算出雜湊值的一套數學公式,諸如: MD5、SHA…
Thumbnail
avatar
阿Han
2023-07-27
【開發智能合約 - 密碼學系列】零知識證明Ep.1 - 益智又有趣的機制什麼是零知識證明(Zero-knowledge proof) 是一種密碼學的概念,用於在不揭示具體信息的情況下,證明某個主張的正確性。它允許一方(稱為證明者)向另一方(稱為驗證者)證明某個陳述的真實性,而無需透露任何關於陳述的具體細節..., 這根本文字天書啊,底下讓我們用白話文來說一下唄! 「我必
Thumbnail
avatar
阿Han
2023-06-30
智能合約web3(3)-認識web3程式Step1:config2~3行的部分 打開public->config資料夾內的config.json 在前面的時候大家應該都有mint自己的nft並且可以在Opensea看到 所以我們現在要去Opensea找到我們NFT的合約跟token位置 https://testnets.opensea.i
Thumbnail
avatar
Gouzi5 | ASC
2022-11-03
【端午企劃】NFT 的鑄造&銷毀是怎麼一回事 | 智能合約開發計劃 #9這篇會是端午節 NFT 系列的最後一篇文,同時也是這個系列中最核心的部分,我們終於要來實際鑄造產生 NFT,並在 OpenSea 上看看結果了,有興趣的話就繼續看下去吧。
Thumbnail
avatar
ITechNote 科技隨筆
2022-06-09
【端午企劃】簡易開發 NFT 專案的三步驟 | 智能合約開發計劃 #8開發 NFT 專案無非三個步驟:寫程式 → 編譯程式碼 → 發佈智能合約,除了這三個步驟以外,我們還將介紹如何使用 OpenZeppelin 做為專案開發的根基,想要打造車子不再需要從輪子開始造起了,大幅增加開發專案的效率。
Thumbnail
avatar
ITechNote 科技隨筆
2022-06-03
【端午企劃】原來 NFT 也有客製化的規格標準 | 智能合約開發計劃 #7介紹 NFT 的 Metadata、JSON 格式是甚麼,如何去客製化我們的 NFT,它的規格標準怎麼透過 Metadata 來設定的,目前最大的 NFT 二級市場 OpenSea 又提供哪些 Metadata 可以使用。
Thumbnail
avatar
ITechNote 科技隨筆
2022-05-26
【端午企劃】我的第一張去中心化圖片! | 智能合約開發計劃 #6在這裡,我們會分析為甚麼發行 NFT 會需要利用 IPFS 來做, IPFS 是甚麼?以及實際操作如何使用 Pinata 的服務將想要上傳的檔案放到 IPFS 網路上。從這裡出發,開始擁有第一張去中心化圖片吧!
Thumbnail
avatar
ITechNote 科技隨筆
2022-05-18