宇宙链 宇宙链
Ctrl+D收藏宇宙链

跟我学 Solidity :合约的创建和继承

作者:

时间:1900/1/1 0:00:00

译文出自:登链翻译计划

译者:翻译小组

校对: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
CoinW为用户提供申请TNT官方补偿中英文对照表的说明

尊敬的用户,TNT团队和美国证券交易委员会达成和解协议,永久停止了TNT智能合约,导致TNT无法转移。因此交易所无法为用户提供提现服务。根据和解协议,TNT持有人有权申请索赔.

1900/1/1 0:00:00
关于ZT开启“参与XRP,瓜分1万USDT”活动的公告

尊敬的ZT用户: ZT将于今日开启“参与XRP,瓜分1万USDT”的活动。活动期间内。用户参与XRP充值、XRP/USDT、XRP/ETH、XRP/BTC,以及XRP杠杆代币:XRPBEAR、XRPBULL交易的用户均有机会参与瓜分1.

1900/1/1 0:00:00
金色前哨|广汽蔚来宣布支持BTC支付 但仅存活2小时

2020年最后一天,大事还在不断发生。早上8点左右BTC市值首次超过伯克希尔;10点左右,广汽蔚来宣布接受比特币支付.

1900/1/1 0:00:00
健康牛市 继续持币! 院长说币行情分析(1/4)

本公众号的文章只做研究、学习和交流使用,不具有任何的操作指导意义!币圈唯一每天坚持视频分析行情的公众号!需要看视频分析的.

1900/1/1 0:00:00
首发 | 解析造就比特币牛市的两大重要因素

本文作者为NewBloc策略分析师Barry,5年外汇黄金市场交易经历。授权金色财经首发。2021年新的周末,比特币仍在突飞猛涨.

1900/1/1 0:00:00