译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
欢迎来到学习Solidity系列的另一部分。在上一篇文章,我们讨论了如何从智能合约中创建另一个智能合约。今天,我们将研究这种情况下的典型用例。
什么是工厂模式?
工厂模式的想法是拥有一个合约(工厂),该合约将承担创建其他合约的任务。在基于类的编程中,此模式的主要动机来自单一职责原则(一个类不需要知道如何创建其他类的实例),并且该模式为构造函数提供了一种抽象。
UMLdiagramforfactorymethod
图片来自Wikipedia.
为什么要在Solidity中使用工厂模式?
派盾:持有超4000万枚HT的巨鲸地址向Huobi转入66,511枚HT:12月21日消息,据派盾PeckShield预警监测,持有约4168万枚HT的0x0511开头地址向Huobi转入66,511枚HT,价值约36万美元。[2022/12/21 21:58:51]
在Solidity中,出于以下原因之一,你可能要使用工厂模式:
如果要创建同一合约的多个实例,并且正在寻找一种跟踪它们并简化管理的方法。```contractFactory{Childchildren;functioncreateChild(uintdata){Childchild=newChild(data);children
}contractChild{uintdata;constructor(uint_data){data=_data;}}*节省部署成本:你可以先部署工厂,之后在使用时再来部署其他合约。*提高合约安全性(请参阅本文).##如何与已部署的智能合约进行交互在深入探讨如何实现工厂模式的细节之前,我想澄清一下我们与已部署的智能合约进行交互的方式。工厂模式是用来创建子合约的,并且我们可能希望调用它们的某些函数以更好地管理这些合约。调用部署的智能合约,需要做两件事:1.合约的ABI(提供有关函数签名的信息)。如果合约在同一个项目中。你可以使用import关键字将其导入。2.部署合约的地址。举个例子:
1000枚BTC从未知钱包转入Binance:金色财经报道,据Whale Alert监测,1000枚BTC于今日从未知钱包转入Binance,价值约20,592,748美元。[2022/11/4 12:18:12]
contractA{addressbAddress;constructor(addressb){bAddress=b;}functioncallHello()externalviewreturns(stringmemory){Bb=B(bAddress);//转换地址为合约类型returnb
}contractB{stringgreeting="helloworld";functionsayHello()externalviewreturns(stringmemory){returngreeting;}}
OrBit Markets完成460万美元天使轮融资,Matrixport领投:8月1日消息,加密期权和结构性产品的机构流动性提供商OrBit Markets完成460万美元天使轮融资,Matrixport领投,Brevan Howard digital、New Form Capital、Maven 11和Westridge Markets参与本轮超额认购。这笔资金将用于加速公司专有技术的开发,同时使其能够扩大业务范围。
据悉,OrBit总部位于新加坡,为CeFi、DeFi 和TradFi的机构提供服务,为用户提供数字资产投资和对冲解决方案。(businesswire)[2022/8/1 2:50:55]
在Remix中,首先部署合约B,然后复制其地址,并在部署时将其提供给A的构造函数。现在你可以调用`callHello()`函数,你将获得合约B的`sayHello()`函数的结果。##普通工厂模式在此模式下,我们创建具有创建子合约函数的工厂合约,并且可能还会添加其他函数来有效管理这些合约(例如,查找特定合约或禁用合约)。在create函数中,我们使用`new`关键字来部署子合约。
美国5月非农就业人数增加39万人,失业率为3
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意味着什么?
本公众号的文章只做研究、学习和交流使用,不具有任何的操作指导意义!?币圈唯一每天坚持视频分析行情的公众号!需要看视频行情分析的.
1900/1/1 0:00:00两周前,几乎没有投资者预计比特币(BTC)的价格会上涨到超过2万美元。实际上,大多数人预测到2022年年中或2023年年末,比特币的价格最多达到3万美元.
1900/1/1 0:00:00尊敬的LBank用户: LBank将于2021年1月5日15:00(UTC8)上线BCC、BCS.
1900/1/1 0:00:00近日,数字人民币已经进行了第二次公开测试。目前我国的央行数字货币不断推进,甚至走在了全球前列,而数字人民币作为法定货币,又是国家金融基础设施,其在金融安全、国家安全方面肯定不容忽视.
1900/1/1 0:00:00一家大麻交易商在被爱尔兰犯罪资产局没收之后,没收了价值约300万美元的比特币。然而,该局仍然无法获得更多的属于他的6000比特币,按当前价格价值约2亿美元.
1900/1/1 0:00:00经过一个月愉悦刺激的亢奋鏖战,Gate.io直播间王者荣耀大赛第二季“英雄请留步”已圆满结束。这一赛季,我们在夏至直播间以及小暑直播间里,见到的许多感动的时刻,所谓单丝不成线,独木不成林!团队的配合在各个战队的决战中发挥得淋漓尽致;在.
1900/1/1 0:00:00