译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
欢迎阅读“跟我学Solidity”系列中的又一篇文章。在上一篇文章,我们看到了如何使用函数,并运用了到目前为止所学到的一切来构建一个多签名钱包。
在本文中,我们将看到如何从一个合约中创建另一个合约,以及如何定义抽象合约和接口。
合约创建
可以通过以太坊交易或在Solidity合约中使用new关键字创建合约,new关键字将部署该合约的新实例并返回合约地址。
通过Solidity文档中给出的示例,让我们仔细看看它是如何工作的。我将name变量设为public,以便我们可以读取到它的值,并且还会和createToken函数的返回值一起创建一个事件(关于事件,也会有其他的文章介绍):
//SPDX-License-Identifier:GPL-3
functionchangeName(bytes32newName)public{if(msg
functiontransfer(addressnewOwner)public{if(msg
}contractTokenCreator{eventTokenCreated(bytes32name,addresstokenAddress);functioncreateToken(bytes32name)publicreturns(OwnedTokentokenAddress){tokenAddress=newOwnedToken(name);emitTokenCreated(name,address(tokenAddress));}functionchangeName(OwnedTokentokenAddress,bytes32name)public{tokenAddress
functionisTokenTransferOK(addresscurrentOwner,addressnewOwner)publicpurereturns(boolok){returnkeccak256(abi
}
BTC
;
安全团队:检测到一个伪造的1inch正在索赔代币:金色财经报道,CertiK发推表示,检测到一个伪造的1inch正在索赔代币,目前代币已分发到多个地址。CertiK 提醒用户unibonus[.]org 是一个钓鱼网站,请勿与此URL交互。[2022/11/28 21:07:41]
返回命令行终端,输入truffleconsole以启动Truffle控制台,你可以在控制台中编译和部署合约:
Typing‘truffleconsole’intheterminaltolaunchtheTruffleconsole.
使用compile命令编译合约,使用migrate命令部署合约。
我们现在要做的是检索已部署的TokenCreator的实例。然后,进行两次调用createToken函数,并保存每个新创建合约的地址。
Bytyping‘tokenCreator
...}
抽象合约
如果合约中的至少一个函数没有实现,则合约需要标记为abstract。即使实现了所有函数,合约也可能被标记为abstract。
抽象合约通过使用关键字abstract来完成,未实现的函数应具有关键字virtual以表示允许多态
abstractcontractA{functionf()publicpurevirtual;}
抽象合约是直接实例化,即使它实现了所有函数。它们可以用作定义特定行为的基础合约用来给其他合约继承。实现函数应用override关键字修饰。
广东多家文博单位在“5·18国际博物馆日”发布21款数字藏品:金色财经报道,据中新社消息,广东多家文博单位在5月18日发布21款数字藏品,计划发行总量约6
abstractcontractBisA{functionf()publicpureoverride{//functionbody}}
如果派生合约未实现所有未实现的函数,则也需要将其标记为abstract。
接口
接口类似于抽象合约,但是不能实现任何函数。还有其他限制:
它们不能从其他合约继承,但是可以从其他接口继承
所有声明的函数必须是外部的
他们不能声明构造函数
他们不能声明状态变量
使用关键字interface声明接口。
interfaceA{functionf()externalpure;}
接口中声明的所有函数都是隐式的virtual。
结论
本文就是这样。本文参考文档,在接下来的文章中,我们将深入研究智能合约开发。欢迎关注。
本翻译由CellNetwork赞助支持。
来源:https://medium.com/better-programming/learn-solidity-smart-contract-creation-and-inheritance-8424adac3570
参考资料
登链翻译计划:https://github.com/lbc-team/Pioneer
翻译小组:https://learnblockchain.cn/people/412
Tiny熊:https://learnblockchain.cn/people/15
上一篇文章:https://learnblockchain.cn/article/1817
代码:https://gist.github.com/wissalHaji/50af2ffc141fdf8ed6f598c1f516e3f1#file-token-sol
Tuffle框架:https://learnblockchain.cn/docs/truffle/
快速入门指南:https://learnblockchain.cn/docs/truffle/quickstart.html
Ganache:https://www.trufflesuite.com/ganache
本专栏:https://learnblockchain.cn/column/1
这里:https://learnblockchain.cn/docs/web3.js/
文档:https://learnblockchain.cn/docs/solidity/contracts.html#index-1
CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain
本文来源于非小号媒体平台:
登链社区
现已在非小号资讯平台发布105篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/9566627.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
币安为何推出第三条链?这对BNB意味着什么?
标签:KENTOKENTOKETOKGenesis Universe TokenSalo TokenPublish Tokenimtoken官网正版app
资讯简评 2020年12月31日08:30左右,BTC价格再度创下新高,达到29300USDT。Coingecko数据显示,此时BTC市值达到5438亿美元。这也是比特币市值首次超过巴菲特旗下的伯克希尔市值。可谓历史性时刻.
1900/1/1 0:00:00尊敬的用户,TNT团队和美国证券交易委员会达成和解协议,永久停止了TNT智能合约,导致TNT无法转移。因此交易所无法为用户提供提现服务。根据和解协议,TNT持有人有权申请索赔.
1900/1/1 0:00:00尊敬的ZT用户: ZT将于今日开启“参与XRP,瓜分1万USDT”的活动。活动期间内。用户参与XRP充值、XRP/USDT、XRP/ETH、XRP/BTC,以及XRP杠杆代币:XRPBEAR、XRPBULL交易的用户均有机会参与瓜分1.
1900/1/1 0:00:002020年最后一天,大事还在不断发生。早上8点左右BTC市值首次超过伯克希尔;10点左右,广汽蔚来宣布接受比特币支付.
1900/1/1 0:00:00本公众号的文章只做研究、学习和交流使用,不具有任何的操作指导意义!币圈唯一每天坚持视频分析行情的公众号!需要看视频分析的.
1900/1/1 0:00:00本文作者为NewBloc策略分析师Barry,5年外汇黄金市场交易经历。授权金色财经首发。2021年新的周末,比特币仍在突飞猛涨.
1900/1/1 0:00:00