译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
欢迎阅读“跟我学Solidity”系列中的又一篇文章。在上一篇文章,我们看到了如何使用函数,并运用了到目前为止所学到的一切来构建一个多签名钱包。
在本文中,我们将看到如何从一个合约中创建另一个合约,以及如何定义抽象合约和接口。
合约创建
可以通过以太坊交易或在Solidity合约中使用new关键字创建合约,new关键字将部署该合约的新实例并返回合约地址。
通过Solidity文档中给出的示例,让我们仔细看看它是如何工作的。我将name变量设为public,以便我们可以读取到它的值,并且还会和createToken函数的返回值一起创建一个事件(关于事件,也会有其他的文章介绍):
//SPDX-License-Identifier:GPL-3
functionchangeName(bytes32newName)public{if(msg
Web3沉浸式社交应用VUZ完成2000万美元B轮融资:10月13日消息,迪拜Web3沉浸式社交应用VUZ宣布完成2000万美元B轮融资,Caruso Ventures、Vision VC Fund、e&capital、DFDF (Dubai Future District Fund))、WIN(Webit Investment Network)、SRMG、Elbert Capital和Yasta Partners、Faith Capital、Panthera Capital等参投,迄今融资总金额已超3000万美元。
VUZ通过提供沉浸式内容来弥合物理世界和虚拟世界之间的差距,目前已登陆iOS和Android应用商店。[2022/10/14 14:27:00]
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
观点:比特币“跌跌不休” 下看20000美元一线:6月迄今,比特币已跌掉约10%。Oanda高级市场分析师Edward Moya称,由于美国监管方面的担忧日益加剧,这一全球最大加密货币正“危险地逼近30000美元”,如果失守这一关口,大规模动量抛盘可能涌现。Evercore技术策略师Rich Ross和Tallbacken Capital Advisors的Michael Purves均警示,如果比特币从当前水平进一步下跌,可能会下看20000美元区域。[2021/6/9 23:23:43]
functionisTokenTransferOK(addresscurrentOwner,addressnewOwner)publicpurereturns(boolok){returnkeccak256(abi
}
代码
这次,我们使用Tuffle框架来辅助开发,可以参考快速入门指南进行项目设置。
首先,我们将创建一个新项目并通过执行以下命令对其进行初始化:
BTC跌破22000美元关口 日内跌幅为7.85%:火币全球站数据显示,BTC短线下跌,跌破22000美元关口,现报21999.01美元,日内跌幅达到7.85%,行情波动较大,请做好风险控制。[2020/12/21 16:00:33]
>mkdirtoken>cdtoken>truffleinit
打开项目,并更新truffle-config
;
返回命令行终端,输入truffleconsole以启动Truffle控制台,你可以在控制台中编译和部署合约:
Typing‘truffleconsole’intheterminaltolaunchtheTruffleconsole.
使用compile命令编译合约,使用migrate命令部署合约。
我们现在要做的是检索已部署的TokenCreator的实例。然后,进行两次调用createToken函数,并保存每个新创建合约的地址。
8200为强弱分水岭 未明确上破前勿轻言见底:据OKEx季度合约数据显示,本周以来BTC季度合约价格一直处在8200美元下方区域呈弱势盘整格局运行,虽然在7600一线出现止跌迹象,但反弹力度非常有限。OKEx分析师Charles认为,当前市场中期走势依然处在非常明确的空头趋势之中,包括BTC、ETH、EOS在内的一众主流币种反弹高点呈现出不断下移态势,而且每次反弹成交量始终难以放大。与此同时国际金融市场动荡,虽然与币市直接关系不大,但也会一定程度引发市场担忧情绪,现在言底为时尚早。建议后期可以重点关注8200美元附近,该价位可看做中短期走势强弱分水岭,即价格在其上则为强,价格在其下则为弱。不过虽然目前还属于下跌趋势,但由于近期绝对跌幅较大,市场中的主动性卖出力量大幅降低。再加之7000-7600是前期密集成交区,短时间直接有效跌穿概率较小,币价于低位震荡格局运行概率偏大,此走势类型切忌追涨杀跌。BTC日内阻力关注7800,支撑关注7400。[2020/3/12]
Bytyping‘tokenCreator
...}
抽象合约
如果合约中的至少一个函数没有实现,则合约需要标记为abstract。即使实现了所有函数,合约也可能被标记为abstract。
抽象合约通过使用关键字abstract来完成,未实现的函数应具有关键字virtual以表示允许多态
abstractcontractA{functionf()publicpurevirtual;}
抽象合约是直接实例化,即使它实现了所有函数。它们可以用作定义特定行为的基础合约用来给其他合约继承。实现函数应用override关键字修饰。
abstractcontractA{functionf()publicpurevirtual;}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意味着什么?
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。