译文出自:登链翻译计划
译者:翻译小组
校对:Tiny熊
欢迎阅读“跟我学Solidity”系列中的又一篇文章。在上一篇文章,我们看到了如何使用函数,并运用了到目前为止所学到的一切来构建一个多签名钱包。
在本文中,我们将看到如何从一个合约中创建另一个合约,以及如何定义抽象合约和接口。
合约创建
可以通过以太坊交易或在Solidity合约中使用new关键字创建合约,new关键字将部署该合约的新实例并返回合约地址。
通过Solidity文档中给出的示例,让我们仔细看看它是如何工作的。我将name变量设为public,以便我们可以读取到它的值,并且还会和createToken函数的返回值一起创建一个事件(关于事件,也会有其他的文章介绍):
//SPDX-License-Identifier:GPL-3
functionchangeName(bytes32newName)public{if(msg
ChatGPT推出自定义指令功能:金色财经报道,OpenAI表示,他们正在推出定制指令功能,以便客户更好地控制ChatGPT的回应方式。设定客户的偏好,ChatGPT将会记住并在所有未来的对话中考虑这些偏好。从今天开始,该功能将在Plus计划中作为测试版提供。[2023/7/21 11:07:56]
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
美SEC主席:6月13日是提交修改“交易所”定义评论的最后一天:金色财经报道,美国证券交易委员会主席Gary Gensler在社交媒体发文提醒,当地时间6月13日是对该机构修改两项议题评论的最后截止日,用户可以就“扩展和更新监管系统合规性和完整性”、以及“修改交易法规则3b-16下交易所定义”两个议题提交评论。[2023/6/14 21:34:58]
functionisTokenTransferOK(addresscurrentOwner,addressnewOwner)publicpurereturns(boolok){returnkeccak256(abi
}
代码
这次,我们使用Tuffle框架来辅助开发,可以参考快速入门指南进行项目设置。
首先,我们将创建一个新项目并通过执行以下命令对其进行初始化:
>mkdirtoken>cdtoken>truffleinit
与Vitalik Buterin相关的地址向0x9e92开头地址转入3500枚以太坊:5月10日消息,据Lookonchain监测,与Vitalik Buterin相关的0xD04d开头地址向0x9e92开头地址转入3500枚以太坊,Vitalik Buterin从2022年12月30日至今已向0x9e92开头地址转入17800枚以太坊,价值约3300万美元。[2023/5/11 14:55:48]
打开项目,并更新truffle-config
;
返回命令行终端,输入truffleconsole以启动Truffle控制台,你可以在控制台中编译和部署合约:
Typing‘truffleconsole’intheterminaltolaunchtheTruffleconsole.
使用compile命令编译合约,使用migrate命令部署合约。
我们现在要做的是检索已部署的TokenCreator的实例。然后,进行两次调用createToken函数,并保存每个新创建合约的地址。
Sui 将地址长度从 20 字节增加到 32 字节:3月30日消息,Layer1 区块链 Sui Network 发布 0.29.0 版本更新,其中包括将 Sui 地址长度从 20 字节增加到 32 字节。[2023/3/30 13:34:50]
Bytyping‘tokenCreator
...}
抽象合约
如果合约中的至少一个函数没有实现,则合约需要标记为abstract。即使实现了所有函数,合约也可能被标记为abstract。
抽象合约通过使用关键字abstract来完成,未实现的函数应具有关键字virtual以表示允许多态
abstractcontractA{functionf()publicpurevirtual;}
抽象合约是直接实例化,即使它实现了所有函数。它们可以用作定义特定行为的基础合约用来给其他合约继承。实现函数应用override关键字修饰。
美SEC主席:Kraken案件应该让加密行业警觉:金色财经报道,美国证券交易委员会(SEC)主席Gary Gensler周五在CNBC节目中表示,该机构昨天针对加密货币交易所Kraken采取的行动应该让加密行业警觉。他说,像Kraken这样的公司可以提供投资合同,但他们必须进行全面、公平和真实的披露。这真的应该让这个市场上的每个参与者都注意到,无论你称之为借贷、盈利、收益率,是否提供所谓的年收益率,其他平台应该注意到这一点并寻求合规。
金色财经此前报道,SEC与Kraken交易所就其质押计划相关指控达成和解, Kraken关闭美国质押服务,并支付3000万美元罚款。[2023/2/11 12:00:09]
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意味着什么?
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。