譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
歡迎來到學習Solidity系列的另一部分。在上一篇文章,我們討論了如何從智能合約中創建另一個智能合約。今天,我們將研究這種情況下的典型用例。
什么是工廠模式?
工廠模式的想法是擁有一個合約(工廠),該合約將承擔創建其他合約的任務。在基于類的編程中,此模式的主要動機來自單一職責原則(一個類不需要知道如何創建其他類的實例),并且該模式為構造函數提供了一種抽象。
UMLdiagramforfactorymethod
圖片來自Wikipedia.
數據:DeFi TVL約為430.77億美元,Lido位列第一:金色財經報道,據DefiLlama數據顯示,目前DeFi的TVL約為430.77億美元,其中,Lido約為150.02億美元,位列第一。其次是AAVE,約58億美元。第三是MakerDAO,約51億美元。[2023/7/30 16:06:53]
為什么要在Solidity中使用工廠模式?
在Solidity中,出于以下原因之一,你可能要使用工廠模式:
如果要創建同一合約的多個實例,并且正在尋找一種跟蹤它們并簡化管理的方法。```contractFactory{Childchildren;functioncreateChild(uintdata){Childchild=newChild(data);children
幣安:流動性挖礦服務將于7月10日升級,獎勵計算不受影響:7月6日消息,幣安發布公告稱,流動性挖礦服務將于7月10日升級,所有流動性挖礦服務升級期間均將受到影響,包括但不限于在交易挖礦上進行交易、在流動性挖礦上添加或贖回流動性及領取流動性池獎勵,但獎勵計算不受影響。[2023/7/6 22:22:16]
}contractChild{uintdata;constructor(uint_data){data=_data;}}*節省部署成本:你可以先部署工廠,之后在使用時再來部署其他合約。*提高合約安全性(請參閱本文).##如何與已部署的智能合約進行交互在深入探討如何實現工廠模式的細節之前,我想澄清一下我們與已部署的智能合約進行交互的方式。工廠模式是用來創建子合約的,并且我們可能希望調用它們的某些函數以更好地管理這些合約。調用部署的智能合約,需要做兩件事:1.合約的ABI(提供有關函數簽名的信息)。如果合約在同一個項目中。你可以使用import關鍵字將其導入。2.部署合約的地址。舉個例子:
彭博高級訴訟分析師將Grayscale的勝算從40%提高到70%:金色財經報道,彭博高級ETF分析師Eric Balchunas在社交媒體披露,我們的高級訴訟分析師在今天上午聽完Grayscale與SEC辯論后,將Grayscale公司的勝算從40%提高到70%。
金色此前報道,Grayscale與SEC之間的裁決可能需要等三到六個月的時間。[2023/3/8 12:48:24]
contractA{addressbAddress;constructor(addressb){bAddress=b;}functioncallHello()externalviewreturns(stringmemory){Bb=B(bAddress);//轉換地址為合約類型returnb
BurnBNB:BNB實時銷毀量為14.9萬枚,約合5595.03萬美元:金色財經報道,BurnBNB發布推特表示,BNB實時銷毀量為14.9萬枚,約合5595.03萬美元。
據悉,BNB的實時銷毀機制由BEP95提出,類似以太坊當前的EIP-1559銷毀機制。[2023/1/30 11:35:51]
}contractB{stringgreeting="helloworld";functionsayHello()externalviewreturns(stringmemory){returngreeting;}}
在Remix中,首先部署合約B,然后復制其地址,并在部署時將其提供給A的構造函數。現在你可以調用`callHello()`函數,你將獲得合約B的`sayHello()`函數的結果。##普通工廠模式在此模式下,我們創建具有創建子合約函數的工廠合約,并且可能還會添加其他函數來有效管理這些合約(例如,查找特定合約或禁用合約)。在create函數中,我們使用`new`關鍵字來部署子合約。
contractFactory{Childpublicchildren;uintdisabledCount;eventChildCreated(addresschildAddress,uintdata);functioncreateChild(uintdata)external{Childchild=newChild(data,children
functiongetChildren()externalviewreturns(Childmemory_children){_children=newChild(children
}}functiondisable(Childchild)external{children
}contractChild{uintdata;boolpublicisEnabled;uintpublicindex;constructor(uint_data,uint_index){data=_data;isEnabled=true;index=_index;}functiondisable()external{isEnabled=false;}}
```
本文來源于非小號媒體平臺:
登鏈社區
現已在非小號資訊平臺發布105篇作品,
非小號開放平臺歡迎幣圈作者入駐
入駐指南:
/apply_guide/
本文網址:
/news/9569964.html
免責聲明:
1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場
上一篇:
幣安為何推出第三條鏈?這對BNB意味著什么?
導:2021年加密貨幣的前景看起來很光明,因為推動其2020年采用的主要力量仍然強大。在比特幣破紀錄上漲的推動下,加密行業迎來了輝煌的2020年.
1900/1/1 0:00:00比特幣多頭又掀起了一輪風暴,2021到來之際,比特幣也用一波酣暢淋漓的大漲來迎接新的一年,并且告別了多災多難的2020,2020對于我們而言無疑是痛苦且不愿去回首的.
1900/1/1 0:00:00KrakenrecentlywarnedofthedeficienciesinaproposedU.S.governmentrulemaking.Today.
1900/1/1 0:00:00以太坊,昨晚經歷了巨大的價格動蕩,在890美元至1169美元之間出現了大量波動交易。雖然比特幣的市場支配地位為68.6%,與其他主要資產相比,其效率是無可匹敵的,盡管比特幣是一些真正強大的限制.
1900/1/1 0:00:00數字貨幣交易所是伴隨著比特幣等加密貨幣發展起來的交易場所,早期只是為加密貨幣持有者提供交易撮合服務的機構,后來隨著數字貨幣市場的持續性擴張,最終形成了專門的交易所.
1900/1/1 0:00:00尊敬的用戶: BiKi平臺即將上線FRIG(FRIGGA),并開放FRIG/ODIN交易對,具體時間如下:1、開放充值時間:已開放2、開放提現時間:1月5日18:003、開放交易時間:1月5日1.
1900/1/1 0:00:00