Solidity - 回购销毁合约实现
这一节我们来讲下区块链中的回购销毁是什么?
回购销毁合约通常是项目方用来控制代币的供应量,通过销毁代币来减少流通量,从而增加代币的稀缺性。合约以设定的价格购买代币,并将其从市场上移除。一旦代币被回购,它们会被永久性地销毁,从而减少了供应量。比如USDT-CHE代币对,将USDT转入到池子中,并且将CHE转入到黑洞地址进行销毁的方式。
下面,我们来演示如何来部署一个回购销毁合约。
首先,我们选择以太坊的Sepolia测试网络。之后,我们部署USDT代币合约和CHE代币合约,默认我们的代币的数量都是100个,精度都是18。
[]()
部署好两个代币后,我们开始部署工厂合约,WETH9合约和路由合约。
[]()
接下来,我们调用router合约的addLiquidity方法添加流动性,也就是添加了一个USDT-CHE的池子。
[]()
添加完成后,我们开始部署repurchase合约。之后,我们调用addCaller和setAmountIn方法。
[]()
详细步骤如下:
1.部署CHE(默认100个,给REPURCHASE授权)
0x0d57285Ed72b1Db83f497bDBE95C25738D10a8E6
2.部署USDT(默认100个,给REPURCHASE授权)
0x7f9Ee0245D3Be4bb8F79e9fCafeD81d34C8A623D
3.部署FACTORY (拿到init_code_hash给router02合约)0x3f65323e8FE950eD6b00c9ade89E32552e5A2b82
此时,CHE-USDT合约地址:
0x87B2Cc033901C512306F011A4CC70461584dcCd9
4.部署WETH
0x0DC5bbEDfEAEB24E266521C009A944FFE8357820
5.部署ROUTER
0xb7b51Abbeb753A5c5314c4C2f9104370fCf60995
触发addLiquidity方法
tokenA:0x0d57285Ed72b1Db83f497bDBE95C25738D10a8E6
tokenB:0x7f9Ee0245D3Be4bb8F79e9fCafeD81d34C8A623D
amountADesired: 1000000000000000000
amountBDesired: 1000000000000000000
amountAMin: 1
amountBMin: 1
To: 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
Deadline: 999999999999999
6.部署REPURCHASE(转10个USDT到合约内)
0xf2F511aA9Ae98d5dc806523f69Ba09dE568f88D1
触发addCaller方法:0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
触发AmountIn方法:
1000000000000000000
部署完成后,我们触发repurchase合约的swap方法,可以看到其流转日志记录。repurchase合约给USDT-CHE池子转了1 usdt。USDT-CHE池子给黑洞地址转了0.499248873309964947个CHE代币。
[]()
[]()
回购销毁合约的逻辑并不复杂,具体可以详看代码的swap方法逻辑。考虑到每个交易所的手续费的不同,大家在代码中根据情况的不同来调整。这里,我们的手续费是0.3%。
项目源码: https\://github.com/zhihaozhong123/Solidity_Contracts_Learning/tree/master/repurchase
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!