
假USDT是如何创建——保姆级教程教你如何分辨真假U
什么是假USDT假USDT通常指的是一些非官方发行,或者没有真实背书的USDT代币。这些代币可能是通过某些非法手段制造出来的,或者是通过欺骗手段从他人手中骗取的。 高仿假usdt也是基于trc erc链上发行。转出也是需要消耗对应能量例如TRX 所以本质上我们只要在TRC链上发行代币就可以了 TRC-20 代币类似以太坊的 ERC-20,基于智能合约的标准化代币。支持复杂功能(如授权转账、代币销毁等),交易需要消耗TRX作为手续费(Gas)。常用于DeFi代币(如稳定币、治理代币)等。 通常说到波场链的代币,未特殊说明的话,都是默认指TRC-20的代币标准。本文的发币教程也核心针对TRC-20代币标准进行演示说明。 标准TRC-20代币指的是没有任何功能、机制的代币合约,代币创建之后默认会丢弃权限,所以也没有任何权限,是一个纯粹的、干净的、标准的合约。 根据以下步骤,您可以在Tron上创建一个属于自己的标准合约代币。 如果你觉得下方教程难以实现,或者有类似的开发需求:可以通过最下方的联系方式找到我们部署准备钱包:TronLink,保证钱包中至少有150个TRX,用于支付代币部署的...

Binance交易所批量提币教程
由于交易所的钱包地址通常处于白名单中,项目方在进行反女巫查找时会将交易所地址设为白名单。一般批量撸空投时都会从交易所提币分散到各个钱包地址中。然而,每次提币都需要输入验证码,这一过程相对繁琐。为解决这个问题,Crypto Box推出了【交易所批量提币】功能,使大家可以利用这个工具从Binance交易所批量提币到链上,从而节省时间。本次教程分2个部分,第一部分是进入Binance交易所创建API key并设置提币IP,第二部分是登录Crypto Box官网https://www.cpbox.io/cn/exchange/withdraw,设置批量提币相关信息,进行批量提币。 一、创建Binance交易所API key 1. 进入Binance交易所官网 www.binance.com,登录账号后,点击右上角小人头像找到【API 管理】点击进入2. 点击【创建API】,再选择【密钥类型】,并点击【下一步】3.自定义 输入API密钥标签,再点击【下一步】4.完成安全验证 5. 完成验证后,点击【编辑权限】6.再选择【限制只对受信任ip的访问(推荐)】输入IP【************】...

撸空投高手的秘密武器:指纹浏览器批量操作教程,撸空投必学
最近ARB空投账号简直是金铲子,整个撸空投圈热情也是非常高涨,因为在这个赛道已经表现出了足够强的造富效应,也涌现了一大批通过获得空投赚麻的人,伴随着造富效应,场外也有不少人涌进空投赛道,首先先给大家列举下历史上的大空投项目:可以看到单号收益基本最低都有一万多收益,这可以说是相当诱人的回报率,所以很多人开始了多号撸空投,并且已经在前几个项目中赚到了可能普通人一辈子都赚不到的钱,这也导致行业越来越卷,项目方审查越来越严格,对于项目方的审查机制我们无法获知,但是批量操作能吃到更多的收益是大家都认可的事情。 如何避免项目方的审查机制,成为了更需要注意的事情,毕竟辛苦几个月耗费时间精力最后因为被女巫检测了,那真是得不偿失。 指纹浏览器算是撸空投圈必备秘器,指纹浏览器可以做到,隔离IP、多号操作、群控操作等,而且其特性也更方便批量撸空投人的账号管理,基本上是人手必备的工具。本期教程为大家带来指纹浏览器的操作及群控教程,让新人也感受下撸空投的币圈人有多么疯狂。 教程目录:指纹浏览器介绍及基础使用IP购买独立IP操作指纹浏览器指纹浏览器的群控操作指纹浏览器的使用技巧一、指纹浏览器介绍及基础使用 ...
CPBox.io is a powerful toolkit for one-click token creation and batch management on Solana, Sui, and BSC. Built for Web3 teams, developers,



假USDT是如何创建——保姆级教程教你如何分辨真假U
什么是假USDT假USDT通常指的是一些非官方发行,或者没有真实背书的USDT代币。这些代币可能是通过某些非法手段制造出来的,或者是通过欺骗手段从他人手中骗取的。 高仿假usdt也是基于trc erc链上发行。转出也是需要消耗对应能量例如TRX 所以本质上我们只要在TRC链上发行代币就可以了 TRC-20 代币类似以太坊的 ERC-20,基于智能合约的标准化代币。支持复杂功能(如授权转账、代币销毁等),交易需要消耗TRX作为手续费(Gas)。常用于DeFi代币(如稳定币、治理代币)等。 通常说到波场链的代币,未特殊说明的话,都是默认指TRC-20的代币标准。本文的发币教程也核心针对TRC-20代币标准进行演示说明。 标准TRC-20代币指的是没有任何功能、机制的代币合约,代币创建之后默认会丢弃权限,所以也没有任何权限,是一个纯粹的、干净的、标准的合约。 根据以下步骤,您可以在Tron上创建一个属于自己的标准合约代币。 如果你觉得下方教程难以实现,或者有类似的开发需求:可以通过最下方的联系方式找到我们部署准备钱包:TronLink,保证钱包中至少有150个TRX,用于支付代币部署的...

Binance交易所批量提币教程
由于交易所的钱包地址通常处于白名单中,项目方在进行反女巫查找时会将交易所地址设为白名单。一般批量撸空投时都会从交易所提币分散到各个钱包地址中。然而,每次提币都需要输入验证码,这一过程相对繁琐。为解决这个问题,Crypto Box推出了【交易所批量提币】功能,使大家可以利用这个工具从Binance交易所批量提币到链上,从而节省时间。本次教程分2个部分,第一部分是进入Binance交易所创建API key并设置提币IP,第二部分是登录Crypto Box官网https://www.cpbox.io/cn/exchange/withdraw,设置批量提币相关信息,进行批量提币。 一、创建Binance交易所API key 1. 进入Binance交易所官网 www.binance.com,登录账号后,点击右上角小人头像找到【API 管理】点击进入2. 点击【创建API】,再选择【密钥类型】,并点击【下一步】3.自定义 输入API密钥标签,再点击【下一步】4.完成安全验证 5. 完成验证后,点击【编辑权限】6.再选择【限制只对受信任ip的访问(推荐)】输入IP【************】...

撸空投高手的秘密武器:指纹浏览器批量操作教程,撸空投必学
最近ARB空投账号简直是金铲子,整个撸空投圈热情也是非常高涨,因为在这个赛道已经表现出了足够强的造富效应,也涌现了一大批通过获得空投赚麻的人,伴随着造富效应,场外也有不少人涌进空投赛道,首先先给大家列举下历史上的大空投项目:可以看到单号收益基本最低都有一万多收益,这可以说是相当诱人的回报率,所以很多人开始了多号撸空投,并且已经在前几个项目中赚到了可能普通人一辈子都赚不到的钱,这也导致行业越来越卷,项目方审查越来越严格,对于项目方的审查机制我们无法获知,但是批量操作能吃到更多的收益是大家都认可的事情。 如何避免项目方的审查机制,成为了更需要注意的事情,毕竟辛苦几个月耗费时间精力最后因为被女巫检测了,那真是得不偿失。 指纹浏览器算是撸空投圈必备秘器,指纹浏览器可以做到,隔离IP、多号操作、群控操作等,而且其特性也更方便批量撸空投人的账号管理,基本上是人手必备的工具。本期教程为大家带来指纹浏览器的操作及群控教程,让新人也感受下撸空投的币圈人有多么疯狂。 教程目录:指纹浏览器介绍及基础使用IP购买独立IP操作指纹浏览器指纹浏览器的群控操作指纹浏览器的使用技巧一、指纹浏览器介绍及基础使用 ...
CPBox.io is a powerful toolkit for one-click token creation and batch management on Solana, Sui, and BSC. Built for Web3 teams, developers,

Subscribe to CPBOX

Subscribe to CPBOX
Scroll 最近成功从 Polychain 资本、红杉资本等知名 VC 筹集了 5000 万美元。总体而言,Scroll 成功筹集了 8300 万美元。
Scroll 现在估值为 $ 1,8 B
Scroll 是基于以太坊上 zkEVM 的 zkRollup,提供与现有以太坊应用程序和工具的原生兼容性。简单来说,它是一个新的以太坊第 2 层网络。
目前,alpha 测试网阶段正在进行中,在 pre-alpha 版本期间,实现了 100 万个唯一地址和 1600 万笔交易
步骤1、登录官网、链接测试网
将网络(Goerli 测试网和 Scroll Alpha 测试网)添加到 metamask 钱包

步骤2、领取测试网代币
使用https://goerlifaucet.com/ 领取测试网代币

登录桥接部分:https://scroll.io/alpha/bridge
将 ETH 从 goerli testnet 发送到 Scroll Alpha testnet 网络


让小狐狸向任何其他钱包发送少量金额。

现在我们需要从Scroll Alpha testnet中提取少量ETH回Goerli网络,
返回桥接部分,并确保在 Scroll Alpha 测试网上并发送给 Goerli。 https://scroll-usdc-faucet.vercel.app/


要获得 testnet USDC 代币,请点击链接,并从水龙头领取 USDC; https://scroll-usdc-faucet.vercel.app/

点击链接,兑换 USDC(可以添加 USDC 合约 0xA0D71B9877f44C744546D649147E3F1e70a93760) https://uniswap-v3.scroll.io/#/swap?outputCurrency=0xA0D71B9877f44C744546D649147E3F1e70a93760

将少量的 ETH 换成 USDC

点击链接,并创建+new position,以便添加流动性 https://uniswap-v3.scroll.io/#/pool

选择 ETH — USDC对,选择 0.3% 和全范围

然后点击 I Understand

输入要添加的金额并确认所有操作


按关闭

现在看到我们的位置,可以删除一小部分

点击Remove liquidity

移除 25% 的流动性

到这里我们完成了最简单的部分,下一步是智能合约部署
点击链接,按照如下所示进行操作:
1、 单击图标
2、写合约名称
3、点击空白处 https://remix.ethereum.org/

从这里复制此代码,官方文件
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract FunctionTypes{
uint256 public number = 5;
constructor() payable {}
// 函数类型
// function (<parameter types>) {internal|external} [pure|view|payable] [returns (<return types>)]
// 默认function
function add() external{
number = number + 1;
} // pure: 纯纯牛马
function addPure(uint256 _number) external pure returns(uint256 new_number){
new_number = _number+1;
}
// view: 看客
function addView() external view returns(uint256 new_number) {
new_number = number + 1;
} // internal: 内部
function minus() internal {
number = number - 1;
} // 合约内的函数可以调用内部函数
function minusCall() external {
minus();
} // payable: 递钱,能给合约支付eth的函数
function minusPayable() external payable returns(uint256 balance) {
minus();
balance = address(this).balance;
}
}
单击空白区域并使用命令粘贴代码:
MAC 用户cmnd + V
Windows用户 ctrl + V

ok

MAC 用户按cmnd + S
Windows 用户按ctrl + S
现在你应该看到绿色复选标记,如下所示:

点击,如下所示

1、将版本更改为最新
2、点击编译

如果一切顺利,应该会看到绿色复选标记,如下所示

按照如下所示的步骤操作:
1、单击图标
2、选择 Injected provider (metamask)
3、确保你在Scroll Alpha 网络上,并检查地址是否正确
4、点击部署

在 Metamask 中签名

如果合约部署成功,我们将看到如下所示的消息,我们也可以在小狐狸中看到它。


到这里,我们就已经在 Scroll Alpha 测试网上部署了智能合约。
此操作将类似于之前的操作(部署智能合约)
点击链接,按照如下所示的步骤操作 https://remix.ethereum.org/#lang=en&optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.18+commit.87f61d96.js

复制此代码
// SPDX-License-Identifier: MIT
// WTF Solidity by 0xAA
单击空白区域(与我们在部署智能合约时所做的相同)
MAC 用户cmnd + V
Windows 用户ctrl + V
粘贴代码,然后确定

Mac 用户按cmnd + S
Windows 用户按ctrl + S。
我们应该看到绿色复选标记,如下所示

按照如下所示的步骤操作:
1、点击图标
2、选择最新版
3、编译。
在我们应该看到绿色复选标记之后

按照如下所示的步骤操作:
1、点击最后一个图标
2、injected provider
3、你的地址将自动被添加(这里要检查地址是不是对的)
4、点击injected provider
5、写下名字
6、写下Symbol
7、点击transact
并确认你钱包中的所有操作。

如果一切顺利,你将在控制台和钱包中看到它

单击交易记录器,如下所示

按照如所示的步骤操作:
1、打开 ERC20 AT…. Menu
2、打开 Mint 菜单
3、输入金额 1800000000000000000000
4、点击交易
钱包验证

如果一切顺利,将收到如下所示的消息

复制你的代币地址

可以使用我们自己的代币添加流动性
登录:https://uniswap-v3.scroll.io/#/pool
点击:new position

选择token

粘贴你的代币地址(之前复制的)

可以使用如下所示的相同设置


钱包确认
如果一切顺利,你应该会看到如下所示:
到这里基本完成了Scroll的全部操作。
以上就是本篇 的全部内容。
结语:最后感谢这篇教程的作者 加密狗 大佬,大家可以关注一下加密狗的推特: https://twitter.com/JiamigouCn
Crypto Box是一个致力于成为**最专业的Web3投研信息、实用工具、教程百科平台!**我们的愿景是以社区发掘+深入投研+技术工具帮助Web3投资者。
**Crypto Box 7\*24快讯推送**
功能限时开放
扫码进群即刻体验

**推特: **https://twitter.com/Web3CryptoBox
**Mirror: **https://mirror.xyz/0x5D150bF18B9a878eD2417b2C0E69f7eA5a6dFC18
**官网: **https://www.cpbox.io/

Scroll 最近成功从 Polychain 资本、红杉资本等知名 VC 筹集了 5000 万美元。总体而言,Scroll 成功筹集了 8300 万美元。
Scroll 现在估值为 $ 1,8 B
Scroll 是基于以太坊上 zkEVM 的 zkRollup,提供与现有以太坊应用程序和工具的原生兼容性。简单来说,它是一个新的以太坊第 2 层网络。
目前,alpha 测试网阶段正在进行中,在 pre-alpha 版本期间,实现了 100 万个唯一地址和 1600 万笔交易
步骤1、登录官网、链接测试网
将网络(Goerli 测试网和 Scroll Alpha 测试网)添加到 metamask 钱包

步骤2、领取测试网代币
使用https://goerlifaucet.com/ 领取测试网代币

登录桥接部分:https://scroll.io/alpha/bridge
将 ETH 从 goerli testnet 发送到 Scroll Alpha testnet 网络


让小狐狸向任何其他钱包发送少量金额。

现在我们需要从Scroll Alpha testnet中提取少量ETH回Goerli网络,
返回桥接部分,并确保在 Scroll Alpha 测试网上并发送给 Goerli。 https://scroll-usdc-faucet.vercel.app/


要获得 testnet USDC 代币,请点击链接,并从水龙头领取 USDC; https://scroll-usdc-faucet.vercel.app/

点击链接,兑换 USDC(可以添加 USDC 合约 0xA0D71B9877f44C744546D649147E3F1e70a93760) https://uniswap-v3.scroll.io/#/swap?outputCurrency=0xA0D71B9877f44C744546D649147E3F1e70a93760

将少量的 ETH 换成 USDC

点击链接,并创建+new position,以便添加流动性 https://uniswap-v3.scroll.io/#/pool

选择 ETH — USDC对,选择 0.3% 和全范围

然后点击 I Understand

输入要添加的金额并确认所有操作


按关闭

现在看到我们的位置,可以删除一小部分

点击Remove liquidity

移除 25% 的流动性

到这里我们完成了最简单的部分,下一步是智能合约部署
点击链接,按照如下所示进行操作:
1、 单击图标
2、写合约名称
3、点击空白处 https://remix.ethereum.org/

从这里复制此代码,官方文件
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract FunctionTypes{
uint256 public number = 5;
constructor() payable {}
// 函数类型
// function (<parameter types>) {internal|external} [pure|view|payable] [returns (<return types>)]
// 默认function
function add() external{
number = number + 1;
} // pure: 纯纯牛马
function addPure(uint256 _number) external pure returns(uint256 new_number){
new_number = _number+1;
}
// view: 看客
function addView() external view returns(uint256 new_number) {
new_number = number + 1;
} // internal: 内部
function minus() internal {
number = number - 1;
} // 合约内的函数可以调用内部函数
function minusCall() external {
minus();
} // payable: 递钱,能给合约支付eth的函数
function minusPayable() external payable returns(uint256 balance) {
minus();
balance = address(this).balance;
}
}
单击空白区域并使用命令粘贴代码:
MAC 用户cmnd + V
Windows用户 ctrl + V

ok

MAC 用户按cmnd + S
Windows 用户按ctrl + S
现在你应该看到绿色复选标记,如下所示:

点击,如下所示

1、将版本更改为最新
2、点击编译

如果一切顺利,应该会看到绿色复选标记,如下所示

按照如下所示的步骤操作:
1、单击图标
2、选择 Injected provider (metamask)
3、确保你在Scroll Alpha 网络上,并检查地址是否正确
4、点击部署

在 Metamask 中签名

如果合约部署成功,我们将看到如下所示的消息,我们也可以在小狐狸中看到它。


到这里,我们就已经在 Scroll Alpha 测试网上部署了智能合约。
此操作将类似于之前的操作(部署智能合约)
点击链接,按照如下所示的步骤操作 https://remix.ethereum.org/#lang=en&optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.18+commit.87f61d96.js

复制此代码
// SPDX-License-Identifier: MIT
// WTF Solidity by 0xAA
单击空白区域(与我们在部署智能合约时所做的相同)
MAC 用户cmnd + V
Windows 用户ctrl + V
粘贴代码,然后确定

Mac 用户按cmnd + S
Windows 用户按ctrl + S。
我们应该看到绿色复选标记,如下所示

按照如下所示的步骤操作:
1、点击图标
2、选择最新版
3、编译。
在我们应该看到绿色复选标记之后

按照如下所示的步骤操作:
1、点击最后一个图标
2、injected provider
3、你的地址将自动被添加(这里要检查地址是不是对的)
4、点击injected provider
5、写下名字
6、写下Symbol
7、点击transact
并确认你钱包中的所有操作。

如果一切顺利,你将在控制台和钱包中看到它

单击交易记录器,如下所示

按照如所示的步骤操作:
1、打开 ERC20 AT…. Menu
2、打开 Mint 菜单
3、输入金额 1800000000000000000000
4、点击交易
钱包验证

如果一切顺利,将收到如下所示的消息

复制你的代币地址

可以使用我们自己的代币添加流动性
登录:https://uniswap-v3.scroll.io/#/pool
点击:new position

选择token

粘贴你的代币地址(之前复制的)

可以使用如下所示的相同设置


钱包确认
如果一切顺利,你应该会看到如下所示:
到这里基本完成了Scroll的全部操作。
以上就是本篇 的全部内容。
结语:最后感谢这篇教程的作者 加密狗 大佬,大家可以关注一下加密狗的推特: https://twitter.com/JiamigouCn
Crypto Box是一个致力于成为**最专业的Web3投研信息、实用工具、教程百科平台!**我们的愿景是以社区发掘+深入投研+技术工具帮助Web3投资者。
**Crypto Box 7\*24快讯推送**
功能限时开放
扫码进群即刻体验

**推特: **https://twitter.com/Web3CryptoBox
**Mirror: **https://mirror.xyz/0x5D150bF18B9a878eD2417b2C0E69f7eA5a6dFC18
**官网: **https://www.cpbox.io/

interface IERC20 {
/**
* @dev 释放条件:当 `value` 单位的货币从账户 (`from`) 转账到另一账户 (`to`)时.
*/
event Transfer(address indexed from, address indexed to, uint256 value); /**
* @dev 释放条件:当 `value` 单位的货币从账户 (`owner`) 授权给另一账户 (`spender`)时.
*/
event Approval(address indexed owner, address indexed spender, uint256 value); /**
* @dev 返回代币总供给.
*/
function totalSupply() external view returns (uint256); /**
* @dev 返回账户`account`所持有的代币数.
*/
function balanceOf(address account) external view returns (uint256); /**
* @dev 转账 `amount` 单位代币,从调用者账户到另一账户 `to`.
*
* 如果成功,返回 `true`.
*
* 释放 {Transfer} 事件.
*/
function transfer(address to, uint256 amount) external returns (bool); /**
* @dev 返回`owner`账户授权给`spender`账户的额度,默认为0。
*
* 当{approve} 或 {transferFrom} 被调用时,`allowance`会改变.
*/
function allowance(address owner, address spender) external view returns (uint256); /**
* @dev 调用者账户给`spender`账户授权 `amount`数量代币。
*
* 如果成功,返回 `true`.
*
* 释放 {Approval} 事件.
*/
function approve(address spender, uint256 amount) external returns (bool); /**
* @dev 通过授权机制,从`from`账户向`to`账户转账`amount`数量代币。转账的部分会从调用者的`allowance`中扣除。
*
* 如果成功,返回 `true`.
*
* 释放 {Transfer} 事件.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}contract ERC20 is IERC20 { mapping(address => uint256) public override balanceOf; mapping(address => mapping(address => uint256)) public override allowance; uint256 public override totalSupply; // 代币总供给 string public name; // 名称
string public symbol; // 符号
uint8 public decimals = 18; // 小数位数
address public owner; // @dev 在合约部署的时候实现合约名称和符号
constructor(string memory name_, string memory symbol_){
name = name_;
symbol = symbol_;
owner = msg.sender;
} // @dev 实现`transfer`函数,代币转账逻辑
function transfer(address recipient, uint amount) external override returns (bool) {
balanceOf[msg.sender] -= amount;
balanceOf[recipient] += amount;
emit Transfer(msg.sender, recipient, amount);
return true;
} // @dev 实现 `approve` 函数, 代币授权逻辑
function approve(address spender, uint amount) external override returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
} // @dev 实现`transferFrom`函数,代币授权转账逻辑
function transferFrom(
address sender,
address recipient,
uint amount
) external override returns (bool) {
allowance[sender][msg.sender] -= amount;
balanceOf[sender] -= amount;
balanceOf[recipient] += amount;
emit Transfer(sender, recipient, amount);
return true;
} // @dev 铸造代币,从 `0` 地址转账给 调用者地址
function mint(uint amount) external {
require(owner == msg.sender);
balanceOf[msg.sender] += amount;
totalSupply += amount;
emit Transfer(address(0), msg.sender, amount);
} // @dev 销毁代币,从 调用者地址 转账给 `0` 地址
function burn(uint amount) external {
balanceOf[msg.sender] -= amount;
totalSupply -= amount;
emit Transfer(msg.sender, address(0), amount);
}
}
interface IERC20 {
/**
* @dev 释放条件:当 `value` 单位的货币从账户 (`from`) 转账到另一账户 (`to`)时.
*/
event Transfer(address indexed from, address indexed to, uint256 value); /**
* @dev 释放条件:当 `value` 单位的货币从账户 (`owner`) 授权给另一账户 (`spender`)时.
*/
event Approval(address indexed owner, address indexed spender, uint256 value); /**
* @dev 返回代币总供给.
*/
function totalSupply() external view returns (uint256); /**
* @dev 返回账户`account`所持有的代币数.
*/
function balanceOf(address account) external view returns (uint256); /**
* @dev 转账 `amount` 单位代币,从调用者账户到另一账户 `to`.
*
* 如果成功,返回 `true`.
*
* 释放 {Transfer} 事件.
*/
function transfer(address to, uint256 amount) external returns (bool); /**
* @dev 返回`owner`账户授权给`spender`账户的额度,默认为0。
*
* 当{approve} 或 {transferFrom} 被调用时,`allowance`会改变.
*/
function allowance(address owner, address spender) external view returns (uint256); /**
* @dev 调用者账户给`spender`账户授权 `amount`数量代币。
*
* 如果成功,返回 `true`.
*
* 释放 {Approval} 事件.
*/
function approve(address spender, uint256 amount) external returns (bool); /**
* @dev 通过授权机制,从`from`账户向`to`账户转账`amount`数量代币。转账的部分会从调用者的`allowance`中扣除。
*
* 如果成功,返回 `true`.
*
* 释放 {Transfer} 事件.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}contract ERC20 is IERC20 { mapping(address => uint256) public override balanceOf; mapping(address => mapping(address => uint256)) public override allowance; uint256 public override totalSupply; // 代币总供给 string public name; // 名称
string public symbol; // 符号
uint8 public decimals = 18; // 小数位数
address public owner; // @dev 在合约部署的时候实现合约名称和符号
constructor(string memory name_, string memory symbol_){
name = name_;
symbol = symbol_;
owner = msg.sender;
} // @dev 实现`transfer`函数,代币转账逻辑
function transfer(address recipient, uint amount) external override returns (bool) {
balanceOf[msg.sender] -= amount;
balanceOf[recipient] += amount;
emit Transfer(msg.sender, recipient, amount);
return true;
} // @dev 实现 `approve` 函数, 代币授权逻辑
function approve(address spender, uint amount) external override returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
} // @dev 实现`transferFrom`函数,代币授权转账逻辑
function transferFrom(
address sender,
address recipient,
uint amount
) external override returns (bool) {
allowance[sender][msg.sender] -= amount;
balanceOf[sender] -= amount;
balanceOf[recipient] += amount;
emit Transfer(sender, recipient, amount);
return true;
} // @dev 铸造代币,从 `0` 地址转账给 调用者地址
function mint(uint amount) external {
require(owner == msg.sender);
balanceOf[msg.sender] += amount;
totalSupply += amount;
emit Transfer(address(0), msg.sender, amount);
} // @dev 销毁代币,从 调用者地址 转账给 `0` 地址
function burn(uint amount) external {
balanceOf[msg.sender] -= amount;
totalSupply -= amount;
emit Transfer(msg.sender, address(0), amount);
}
}
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
No activity yet