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

译文出自:登链翻译计划

译者:翻译小组

校对:Tiny熊

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

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

合约创建

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

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

//SPDX-License-Identifier:GPL-3

functionchangeName(bytes32newName)public{if(msg

特拉维夫证券交易所宣布与Fireblocks建立数字资产联盟:金色财经报道,以色列特拉维夫证券交易所(TASE)宣布与Fireblocks就数字资产建立重大基础设施合作伙伴关系。TASE表示,它计划“提供全面的创新且安全的数字资产产品和服务”。

两个月前,TASE表示已与财政部成功完成了政府债券发行试验。概念验证涉及五家当地银行以及法国巴黎银行和摩根大通等六家知名全球银行。Fireblocks是合作伙伴之一。

它还表达了对其他数字资产的兴趣,包括加密货币、实用代币和NFT。随后,今年2月,该公司进行了一次磋商,探讨规则变更,以允许持牌证券经纪人涉足加密货币领域。[2023/8/3 16:16:28]

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

数据聚合器Otherside Wiki发布库存工具更新:6月26日消息,Yuga Labs元宇宙项目Otherside旗下数据聚合器Otherside Wiki发推称,推出库存工具更新,新功能包括快速市场数据访问、交易指标快速显示、合约资产视图、钱包详细信息等。同时,Otherside Wiki目前正在尝试引入基于NFT地板价的损益(PnL)功能,预计很快将发布解决方案。[2023/6/26 22:00:13]

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

}

代码

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

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

>mkdirtoken>cdtoken>truffleinit

第一共和银行跌幅扩大至46%,再度停牌:金色财经报道,第一共和银行(FRC.N)跌幅扩大至46%,再度停牌,报12.41美元。[2023/3/21 13:15:34]

打开项目,并更新truffle-config

;

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

Typing‘truffleconsole’intheterminaltolaunchtheTruffleconsole.

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

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

Bytyping‘tokenCreator

...}

抽象合约

DeFi策略协议Ammalgam宣布完成75万美元Pre-seed轮融资:2月27日消息,DeFi策略协议Ammalgam宣布于2022年第三季度完成75万美元Pre-seed轮融资,Synthetix创始人KainWarwick、Compound创始人RobertLeshner、Anton、Sergej、Mikhail、TarunChitra、SantiagoRSantos、BodhiVentures、BootNode、MarinVentures、KevinZhou、Factor、ZealCapital等参投。据悉,Ammalgam通过将借贷和交易合并到一个协议中来释放更多的DeFi功能。这种组合构成了收益来源,同时提高了资本效率并为做市商解锁了无限策略。[2023/2/27 12:31:03]

如果合约中的至少一个函数没有实现,则合约需要标记为abstract。即使实现了所有函数,合约也可能被标记为abstract。

抽象合约通过使用关键字abstract来完成,未实现的函数应具有关键字virtual以表示允许多态

StarkWare创始人:一笔交易可以产生6000万个NFT:金色财经报道,零知识(ZK)汇总技术公司StarkWare创始人Eli Ben-Sasson表示,其新的递归有效性证明理论上可以在以太坊区块链上汇总多达6000万笔交易。此前他在一次演讲中宣布开始生产 StarkWare的新递归有效性证明技术。

与标准Validium扩展相比,递归有效性证明可以进一步将交易吞吐量扩展至至少10倍,并指出他们已经在市场上拥有 600,000 枚NFT。我们至少可以达到600万,而且这是在短期内。这是一件很容易做到的事情。Ben-Sasson还补充说,通过更多的工程和调整,这个数字可能会上升到6000万,并补充说:我认为也很有可能将延迟再降低5到10倍。[2022/8/8 12:09:42]

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:62ms0-0:589ms