利用OpenZeppelin合约库创建标准ERC20代币

发布于 18 天前  64 次阅读


前言

相信最近大家也已经听说了最近有一款名叫鱿鱼币(Squid Game)的代币崩盘的新闻,项目方套走了约$2.1M韭菜们的资金。尽管普通人可能会感到惊讶,但对于深处币圈中的一些人来说可能只会相视一笑,当作茶前饭后的一些闲聊谈资。如此一般的Rug Pull骗局不是第一个,也注定不会是最后一个。这个所谓的"Netflix官方授权"的代币自然而言部署在了韭菜资源丰富的BSC网络上,通过BSCScan上对合约代码的查询,发现项目方的发币合约是从老版本的OpenZeppelin"借鉴"而来,也根本没有实现官方所谓宣传的"Play to Earn"的功能,完全只是个噱头而已。而在BSCScan上他们既没有上传Token的Icon,也没有提供附带的官网、白皮书等信息。

现在的我们已经完全可以确认这就是个存粹的诈骗骗局而已,但是如今的币圈往往都不够理性,随着SHIB近期价格的不断回升突破,越来越多的人想去冲一波"土狗"代币,希望自己也能够获得"百倍币"、"千倍币",往往就将他们手上的BNB、USDT不断送进项目方的口袋。而在这个去中心化的世界里,一个项目的跑路,往往才真正代表着这个项目的"去中心化"。

发布

想要创建一个标准的ERC20代币,就首先需要其需要对应的代码和编译器。在EVM的世界里,最常用的IDE莫过于以太坊官方所提供的Remix了,而语言和编译器也利索当然的是Solidity。而想要发行一个代币,首先就需要选择一条兼容EVM的区块链,你可以选择Ethereum、Binance Smart Chain、Polygon、HECO Chain、Fantom、Arbitrum、Avalanche C-Chain、Moonriver Chain、Hoo Smart Chain、OKEX Chain等等EVM兼容链上进行发行,但是综合来看,BSC现在的生态已经相对成熟,手续费也较低,无数的韭菜们都在通过PancakeSwap梦想着自己有着翻身的哪一天,尽管对于他们的大多数来说,这一天永远都不会到来。而在传统的ETH上进行发行,则要面对当前牛市高额币价以及EIP-1559后完全没有下降的Gas费所带来的巨额手续费的难题。如果是在Matic上发行,虽然不用缴纳巨额的手续费,但是背后并没有币安那样雄厚的资本以及大量韭菜们的身影。

这里我们首先打开Remix官网,然后点开Contracts目录,创建一个新的Sol文件,这里命名为4_Token.sol,然后粘贴如下一段简易的合约代码。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
    constructor(string memory name, string memory symbol) ERC20(name, symbol) {
        _mint(msg.sender, 1000000 * 10**uint(decimals()));
    }
}

这里的1000000指的是在创建合约时生成到账户的具体Token数量,也就是代币的总供应量,默认代币精度为小数点后18位。

2021-11-09_212736.png

接着切换到Compiler界面,默认情况下编译器会自动选择,勾选下方的"Enable optimization"以进行优化,然后点击下方的编译按钮对源码进行编译。

2021-11-09_213121.png

在编译完成后,就可以将自己的合约部署到对应的网络上了。这里为了进行正式的部署,我们选择比较常见的MetaMask钱包进行授权,以便将合约发送至主网。安装MetaMask并导入对应的网络RPC,这里以Polygon为例,记得准备好一定的Matic作为手续费(其他网络则准备对应的原生币种)。切换到Depoly界面,将Environment选项改为"Injected Web3",以便我们调用MetaMask,接着在Depoly选项中输入对应要生成的ERC20代币名称和符号,点击"transact"部署合约,此处切记要选择对应的合约。

47.png

等待我们在MetaMask确认交易后,便可以在该页面的左下角或区块浏览器中看到对应的合约详情了。

05.png

至此,我们刚刚所生成的土狗币便成功上线主网。

做市

接下来我们要开始进行做市操作,为其在各种Swap上添加流动性。由于这里我们选用Polygon网络,我们可以选择在QuickSwap、Sushi上进行操作。同理,如果是BSC则可以选择PancakeSwap,如果是ETH则可使用UniSwap。

首先打开QuickSwap官网,选择为Pool添加流动性。这时我们需要将刚刚部署的代币合约地址进行导入。

2021-11-09_220836.png

这里我们使用20MATIC以及1,000,000个刚刚生成的SRT代币为其组成流动性。此时我们就可以在QuickSwap平台进行SRT代币与其他代币间的Swap操作。

2021-11-09_220836.png

这时候就可以找韭菜过来买买买了!

完善

仅仅是提供流动性和创建一个简单的合约当时不可能迷惑韭菜们的。我们首先要去PolygonScan完成合约的验证操作(EtherScan、BSCScan下同)。打开代币所对应的合约界面,切换到"Contract"选项,点击验证源代码的链接。

2021-11-09_223629.png

选择多个Solidity,并将所有引用的文件放置到同一目录下并修改导入关系,点击上传后选择对应的编译器和开源协议,点击验证即可。验证完成后,该合约的Contract标签旁边就可以看到绿色的认证字样,同时源代码可供任何人进行阅读。接着我们将鼠标移动到自己的用户名上,点击下方选项中的"Verified Address"选项,将刚刚的合约添加进列表,同时可以对合约的一些介绍进行修改。我们可以修改该代币的Icon、官网、社交媒体、简介等种种内容,点击提交等待完成审核即可,这方面建议自行发挥想象力。

总结

在BSC或是Polygon网络上发行合约或是代币的成本很低,这也导致了很多诈骗团队盯住了对应的网络。他们想方设法利用韭菜们破解想赚钱翻倍的欲望,引诱他们或是众筹或是认购本是一文不值的代币,再以黑客攻击或是其他等各种原因作为自身跑路的借口。而文章一开始所讲述的跑路甚至连一点伪装都没有。而在这个所谓的去中心化世界里,也许只有项目方跑路的时候,你所持有的代币才真正是去中心化的。而所谓的各种项目方,才真正成为了这个世界中的各个中点。