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

译文出自:登链翻译计划

译者:翻译小组

校对:Tiny熊

欢迎阅读“跟我学Solidity”系列中的又一篇文章。在上一篇文章,我们看到了如何使用函数,并运用了到目前为止所学到的一切来构建一个多签名钱包。

在本文中,我们将看到如何从一个合约中创建另一个合约,以及如何定义抽象合约和接口。

合约创建

可以通过以太坊交易或在Solidity合约中使用new关键字创建合约,new关键字将部署该合约的新实例并返回合约地址。

通过Solidity文档中给出的示例,让我们仔细看看它是如何工作的。我将name变量设为public,以便我们可以读取到它的值,并且还会和createToken函数的返回值一起创建一个事件(关于事件,也会有其他的文章介绍):

//SPDX-License-Identifier:GPL-3

functionchangeName(bytes32newName)public{if(msg

霍比特HBTC、Bobcat、Easylinkin三方达成战略合作:霍比特HBTC官方消息,与Helium达成战略合作并支持Helium在中国及东南亚地区的去中心化物联网的建设与发展后,霍比特HBTC正式宣布与Bobcat及Easylinkin达成战略合作。

Easylinkin、Bobcat作为Helium官方推荐合作商,将与霍比特HBTC联合发起HNT矿机——Bobcat Miner 300的大中华区首发销售。

Bobcat(山猫)是专为全球Decentralized Network用户而生的物联网服务商。Bobcat团队拥有丰富的Helium HNT获取经验与矿机技术经验。

Easylinkin是一家LoRaWAN 网关制造商,拥有200多项与LPWAN相关的专利,其网关和解决方案已部署在中国和海外100多个城市。

霍比特HBTC为币核集团旗下100%持币者共享的金融服务平台,可为广大用户提供币币、合约、杠杆、期权等多项加密资产业务,并涵盖了平台系统服务-HBTC白标券商、跨链公链-HBTC Chain以及优质项目投资机构-HBTC Labs。[2021/2/3 18:46:42]

functiontransfer(addressnewOwner)public{if(msg

霍比特交易所联合首发上线FAR:据霍比特HBTC官方公告,霍比特HBTC将于12月23日11:00(UTC+8)联合首发上线FAR(Farmland Protocol),并开通FAR/USDT交易对。同时,霍比特HBTC“持仓HBC,7折认购FAR”活动已于12月22日15:00-18:00(UTC+8)正式开启。

Farmland Protocol是采用权益证明机制(POS)共识的跨链DeFi平台,一个帮助各公链资产持有者参与DeFi借贷、交易、挖矿的协议组。Farmland集成了当前最流行的跨链协议,并在此基础上开发了新型跨链协议和社区治理模型,用以生成farmBTC,farmEOS等跨链资产。

详情见原文详情链接。[2020/12/22 16:07:45]

}contractTokenCreator{eventTokenCreated(bytes32name,addresstokenAddress);functioncreateToken(bytes32name)publicreturns(OwnedTokentokenAddress){tokenAddress=newOwnedToken(name);emitTokenCreated(name,address(tokenAddress));}functionchangeName(OwnedTokentokenAddress,bytes32name)public{tokenAddress

霍比特交易所以3.2285USDT价格完成今日HBC回购:据霍比特交易所官方公告,在全新的通证模型规则下,霍比特交易所每日以10倍PE定价从二级市场上回购HBC。今日10倍PE回购价格为3.2285USDT,5倍PE回购价格为1.6142USDT,回购收入为20,724USDT,其中10%的市价回购额为2,072.4USDT。

HBC是霍比特交易所推出的全新通证模型的平台币。霍比特交易所创新地推出了10倍PE定价回购模型和霍比特队长激励模型,此外还启动了“众筹流动性即上币”方案,重新定义交易所上币模式。[2020/8/10]

functionisTokenTransferOK(addresscurrentOwner,addressnewOwner)publicpurereturns(boolok){returnkeccak256(abi

}

代码

这次,我们使用Tuffle框架来辅助开发,可以参考快速入门指南进行项目设置。

霍比特交易所运营VP 王亚瑟:霍比特队长奖励累计达520万:7月27日,霍比特交易所运营VP王亚瑟应邀参加了由谜渡举办的“刀锋对话”线上AMA,在谈及近期霍比特庞大的空投体量是否会受到二级市场抛压时,王亚瑟称,截至目前霍比特交易所空投累计已达到约520万,而由于霍比特交易所“100%收入每日回购+全新的10倍PE定价回购模型”,以及霍比特队长对于手中HBC的支配自由度的存在,HBC完全不用惧怕抛压。

霍比特交易所是100%持币者共享的交易平台,推出全新的10倍PE定价回购模型及霍比特队长激励模型,并推出平台资产透明和交易数据可信机制。霍比特交易所由火币、OKEx等56家资本共同投资,主营币币、合约、期权等业务,平台上主流币及合约交易拥有优秀流动性和深度。[2020/7/27]

首先,我们将创建一个新项目并通过执行以下命令对其进行初始化:

>mkdirtoken>cdtoken>truffleinit

打开项目,并更新truffle-config

;

返回命令行终端,输入truffleconsole以启动Truffle控制台,你可以在控制台中编译和部署合约:

Typing‘truffleconsole’intheterminaltolaunchtheTruffleconsole.

使用compile命令编译合约,使用migrate命令部署合约。

我们现在要做的是检索已部署的TokenCreator的实例。然后,进行两次调用createToken函数,并保存每个新创建合约的地址。

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意味着什么?

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:15ms0-4:252ms