波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

  • A+
所属分类:波场TRX

chatGPT账号

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

随着defi的快速发展,基与主流公链上的通证token已经出现了多样化的模式。从最初的以太坊上标准代币的ico,到各大主流交易所的IEO,发展到现在defi已经原来越平民化。区块链技术已经逐步推广开来。defi的发展离不开DEX(去中心化交易)的进步。目前配合各大公链的主流dex以及公链的执行效率和共识度大致如下:

公链名称 通证TOKEN 去中心交易所DEX GAS费用 执行效率 用户共识
以太坊 ETH uniswap 最高 最慢 最高
波场 TRX justswap 最低 最快 较高
币安智能链 BNB pancakeswap 较高 较块 一般
火币链 HT mdex 较低 较块 较低

无论是基于ETH,TRX,BSC,HECO任何一条公链,底层的token通知的实现都实现最基本的ERC20协议,都是基于solidtiy语言开发的智能合约,必然要实现固定的接口规范。当然在具体的合约实现过程中可能会有区别。鉴于DEFI通证多模式的发展本教材提供如下几种模式:通缩、燃烧、指定地址回流、持币分红、加权分红、平均分红等几种模式的源代码,供读者学习研究区块链技术本身使用。

特此声明:

本源代码仅供学习研究区块链技术本身使用,不得用于商业用途,非法使用该源代码造成的后果与作者无关。

多种通缩、燃烧、持币分红、加权分红模式的合约代码github下载地址:

此处为隐藏的内容!
登录后才能查看!

注:加权分红和持币分红的区别:

加权分红是按照每个地址的持币量的权重获得交易分红,持币量越多,分红越多。

平均分红是每个地址获得固定比例的交易分红,不计算持币量。

 

具体的操作步骤如下:

第一步:修改代币基本信息

首先我们需要有一套代码文件,然后打开文件 “Token.sol”,选择以“记事本”的方式打开,然后找到最后几行代码,进行修改,修改方式如下

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

 

分别对应代币全称、简称、发行数量。

示例中,代币英文全称“PlayToken”,简称“PTO”,数量8888,精度8,代码如下

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

第二步:修改通缩(燃烧)率

然后就修改通缩率,我们打开文件夹里的“ERC20.sol”文件,打开方式同上,然后搜索“IERC20-transfer”,找到transfer函数,就是下面我选中的这几列,大概在50多行:代币通缩模式的区别主要在transfer函数的实现上。该函数是标准的ERC20接口函数。

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

然后我们可以看到一行代码是“recipient` cannot be the zero address”,这句话的意思是,通缩销毁的代币会打入黑洞。对应的链上黑洞地址为0x0 ,十六进制ERC20地址,主要修改的是下图中的两行:

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

第一行:amount*90/100,代表的是每一次转账或者交易,对方只能获得实际量的90%。比如说,你转100个代币给另一个账号,对方实际只能得到90个,即你的通缩率是10%。

第二行:amount*10/100,代表的是说,你转出的代币,有10%进入黑洞。即,你转账100个代币,对方实际收到90个,另外10个转入黑洞。

因此,如果你要设置通缩率,只需要修改“90/100”和“10/100”这两对数字就行,后面的100不用动。比如通缩率是20,那你就相应的改成:“80/100”和“20/100”即可,非常简单。这里的通缩燃烧,均适用于justswap资金池,即每一次在justswap交易,都会燃烧。

为了方便演示,这个通缩率就暂定10%了,下面我发个币给大家看下。发币教程就不重复演示了,直接上结果。

 

第三步:验证代码真实性

简单对上述代码进行了一次部署,花了60万能量,具体能力的花费根据链上的繁忙程度,来链上越拥堵,需要的能力就越高。另外和合约的复杂程度有关,合约代码越复杂,需要的能量就越高,合约地址是:TDdHBihVwkvhZgcCRbVMt6v8kbF6FjDjoG

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

 

然后做一下通证录入,和之前的流程一样,很简单。(合约验证就不做了,麻烦)

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

然后现在要直接转账。先把代币搜出来,添加到钱包里,具体操作如下图:

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

然后开始转账,设定转账1000个到地址TEbAaWcpFKSCRYNYJwSggx4S73o1EJVYtP:

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

然后我登陆另一个钱包会发现,实际到账只有900个:

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

另外100个去了哪里?直接进入了黑洞地址(波场的黑洞地址是T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb),你也可以理解,这100 在转账的时候燃烧掉了,这就是整个通缩合约的演示。

怎么证明以上的转账不是我P图或者造假的?两个验证方法:第一,查询交易哈希。第二,查询通证持有账号。

1、查询交易哈希

在浏览器里查询交易哈希也可以发现,这笔交易实际上分成了两笔:100个和900个。(uint256 value显示的数量,去掉精度8个0,就是实际数量)。100个的那笔,转账转入了黑洞地址。900个的那笔,转账转入了实际地址。

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

2、查询通证持有者

通过查询通证持有人可以发现,这个代币目前只有两个地址持有,就是刚才转账发起者和转账收款人这两个,黑洞地址不显示。其中,转账发起者现有7888个代币(本来是8888个,转走了1000个),收款者拥有900个代币,与上述情况对应,可证明代码无误,通缩没问题。

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

第四步:其他模式的拓展

基于以上的通缩代码,可以衍生出多个模式制度出来,比如限制通缩、分红、回流等。

这里就“限制通缩”简单说一下,比如上面那个代码是“仅通缩”,那么就意味着,代币会一直通缩下去,直至变为0。有些人不希望这样,希望能通缩到某个固定的数值,比如从8888通缩到888,其实这个也不难。只需要在代码里加两行限制通缩的代码即可,如下:

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

“MAX_STOP_FEE_TOTAL”代表的就是限制数量,当通缩至某个数量的时候,就会停止通缩与回流,从而让代币数量保持恒定。

_transfer函数部分核心代码如下:


function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
         if(_tTotal <= MAX_STOP_FEE_TOTAL) {
            removeAllFee();
            _transferStandard(sender, recipient, amount);
        } else {
        if(_isExcludedFromFee[sender])
            removeAllFee();
        
         _transferStandard(sender, recipient, amount);
         
         if(_isExcludedFromFee[sender])
            restoreAllFee();
        }  
    }

_transferStandard函数部分核心代码如下:


function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tFund) = _getValues(tAmount);
        
        
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);  
        
        _rOwned[fundAddress] = _rOwned[fundAddress].add(tFund.mul(currentRate));
        
        _reflectFee(rFee, tBurn.mul(currentRate), tFee, tBurn);
       
        emit Transfer(sender, recipient, tTransferAmount);
        
        emit Transfer(sender, _burnPool, tBurn);
        
        emit Transfer(sender, fundAddress, tFund);
    }

 

代码部分就讲到这里,另外的分红、回流等代码,这里就不给大家展示了,随教程提供代码如下供学习研究。

通缩、燃烧、指定地址回流、加权分红等模式智能合约源代码下载地址:

此处为隐藏的内容!
登录后才能查看!

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

添加VX或者telegram获取全程线上免费指导

波场链TRC20通缩、燃烧、分红、回流代币发行教程与合约代码

特此声明:

本源代码仅供学习研究区块链技术本身使用,不得用于商业用途,非法使用该源代码造成的后果与作者无关。

免责声明

发文时比特币价格:$49249

当前比特币价格:[crypto coins=”BTC” type=”text” show=”price”]

当前比特币涨幅:[crypto coins=”BTC” type=”text” show=”percent”]

免责声明:

本文不代表知点网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点区块链研究院声明:知点区块链研究院内容由知点网发布,部分来源于互联网和行业分析师投稿收录,内容为知点区块链研究院加盟专职分析师独立观点,不代表知点网立场。

本文是全系列中第15 / 237篇:通证发行

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
知点

发表评论

您必须登录才能发表评论!