网站制作与网页制作,在线做原型的网站,找公司做网站多少钱,怎么入驻电商平台【从0学习Solidity】41. WETH 博主简介#xff1a;不写代码没饭吃#xff0c;一名全栈领域的创作者#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页#xff0c;探索全栈开发…【从0学习Solidity】41. WETH 博主简介不写代码没饭吃一名全栈领域的创作者专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构分享一些项目实战经验以及前沿技术的见解。关注我们的主页探索全栈开发期待与您一起在移动开发的世界中不断进步和创造本文收录于 不写代码没饭吃 的学习汇报系列大家有兴趣的可以看一看。欢迎访问我们的微信公众号不写代码没饭吃获取更多精彩内容、实用技巧、行业资讯等。您关注的是我们前进的动力 这一讲我们将学习WETH–带包装的ETH。
什么是WETH WETH (Wrapped ETH)是ETH的带包装版本。我们常见的WETHWBTCWBNB都是带包装的原生代币。那么我们为什么要包装它们
在2015年ERC20标准出现该代币标准旨在为以太坊上的代币制定一套标准化的规则从而简化了新代币的发布并使区块链上的所有代币相互可比。不幸的是以太币本身并不符合ERC20标准。WETH的开发是为了提高区块链之间的互操作性 并使ETH可用于去中心化应用程序dApps。它就像是给原生代币穿了一件智能合约做的衣服穿上衣服的时候就变成了WETH符合ERC20同质化代币标准可以跨链可以用于dApp脱下衣服它可1:1兑换ETH。
WETH合约
目前在用的主网WETH合约写于2015年非常老那时候solidity是0.4版本。我们用0.8版本重新写一个WETH。
WETH符合ERC20标准它比普通的ERC20多了两个功能 存款包装用户将ETH存入WETH合约并获得等量的WETH。 取款拆包装用户销毁WETH并获得等量的ETH。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;import openzeppelin/contracts/token/ERC20/ERC20.sol;contract WETH is ERC20{// 事件存款和取款event Deposit(address indexed dst, uint wad);event Withdrawal(address indexed src, uint wad);// 构造函数初始化ERC20的名字和代号constructor() ERC20(WETH, WETH){}// 回调函数当用户往WETH合约转ETH时会触发deposit()函数fallback() external payable {deposit();}// 回调函数当用户往WETH合约转ETH时会触发deposit()函数receive() external payable {deposit();}// 存款函数当用户存入ETH时给他铸造等量的WETHfunction deposit() public payable {_mint(msg.sender, msg.value);emit Deposit(msg.sender, msg.value);}// 提款函数用户销毁WETH取回等量的ETHfunction withdraw(uint amount) public {require(balanceOf(msg.sender) amount);_burn(msg.sender, amount);payable(msg.sender).transfer(amount);emit Withdrawal(msg.sender, amount);}
}继承
WETH符合ERC20代币标准因此WETH合约继承了ERC20合约。
事件
WETH合约共有2个事件
Deposit存款事件在存款的时候释放。Withdraw取款事件在取款的时候释放。
函数
除了ERC20标准的函数外WETH合约有5个函数
构造函数初始化WETH的名字和代号。回调函数fallback()和receive()当用户往WETH合约转ETH的时候会自动触发deposit()存款函数获得等量的WETH。deposit()存款函数当用户存入ETH时给他铸造等量的WETH。withdraw()取款函数让用户销毁WETH并归还等量的ETH。
Remix演示
1. 部署WETH合约 2. 调用deposit存入1 ETH并查看WETH余额 此时WETH余额为1 WETH。 3. 直接向WETH合约转入1 ETH并查看WETH余额 此时WETH余额为2 WETH。 4. 调用withdraw取出1.5 ETH并查看WETH余额 此时WETH余额为0.5 WETH。 总结
这一讲我们介绍了WETH并实现了WETH合约。它就像是给原生ETH穿了一件智能合约做的衣服穿上衣服的时候就变成了WETH符合ERC20同质化代币标准可以跨链可以用于dApp脱下衣服它可以1:1兑换ETH。 如果这份博客对大家有帮助希望各位给作者一个免费的点赞作为鼓励并评论收藏一下⭐谢谢大家 制作不易如果大家有什么疑问或给作者的意见欢迎评论区留言。