貔貅盘是什么意思?貔貅合约代码全公开
貔貅读音是pí xiū,它一种古老的猛兽,与龙、凤、龟、麒麟并称为五大瑞兽,别称“辟邪、天禄、百解”。每逢新春元宵佳节或喜庆之日,广东湛江的吴川市梅菉头的群众都要舞貔貅舞,或配合国技武术队伍和各式飘色,共同游行表演庆贺节日,以祈福驱邪,保佑平安。
本来是一头瑞兽,但是在币圈,貔貅变为了不详之兽,是韭菜的天敌,任何人遇到貔貅都要绕道而行。这到底是为什么呢?今天,就给大家解释一下貔貅盘的意思,以及如何开发一个貔貅的合约,并附上详细的代码。
1、貔貅盘是什么意思?
貔貅盘指的是一种只能购买,不能卖出的代币合约。由于只能买不能卖,使其代币价格会一路走高,这样就会不断的吸引更多的散户进入。如此循环往复,直到最后,项目方撤池子跑路,完成一次资金诈骗。
这种资金盘为什么叫貔貅盘呢?据传说,上古时期貔貅在天庭犯了戒,被玉帝揍的肛门封闭了,只能吃不能拉。这种只吃不拉的特点,就和貔貅盘“只买不卖”的特点很像,所以貔貅盘的名字便由此而来。
2、如何撰写一个貔貅合约代码
‘貔貅币合约最大的特点就是:只有合约拥有者能够卖出代币,其他人无法卖出。对此,需要对应使用到三种函数:构造函数、铸造函数以及转账函数。
- 构造函数:初始化代币的名称和代号,并根据去中心化交易所的的原理计算LP合约地址,这个地址会在 _beforeTokenTransfer() 函数中用到。
- 铸造函数mint():仅 owner 地址(合约拥有者)可以调用,用于铸造貔貅代币。
- _beforeTokenTransfer():ERC20代币在被转账前会调用的函数。在其中,我们限制了当转账的目标地址 to 为 LP 的时候,也就是其他持有者卖出的时候,交易会 revert;只有调用者为owner的时候能够成功。这也是貔貅合约的核心。
那么,貔貅合约的代码具体是怎么样的?给大家写一个看看,如下
// 极简貔貅ERC20代币,只能买,不能卖 contract HoneyPot is ERC20, Ownable { address public pair; // 构造函数:初始化代币名称和代号 constructor() ERC20("HoneyPot", "Pi Xiu") { address factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f; // goerli uniswap v2 factory address tokenA = address(this); // 貔貅代币地址 address tokenB = 0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6; // goerli WETH (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); //将tokenA和tokenB按大小排序 bytes32 salt = keccak256(abi.encodePacked(token0, token1)); // calculate pair address pair = address(uint160(uint(keccak256(abi.encodePacked( hex'ff', factory, salt, hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' ))))); } /** * 铸造函数,只有合约所有者可以调用 */ function mint(address to, uint amount) public onlyOwner { _mint(to, amount); } /** * @dev See {ERC20-_beforeTokenTransfer}. * 貔貅函数:只有合约拥有者可以卖出 */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual override { super._beforeTokenTransfer(from, to, amount); // 当转账的目标地址为 LP 时,会revert if(to == pair){ require(from == owner(), "Can not Transfer"); } } }
3、貔貅币开发演示
为了降低演示成本,我在 Goerli 测试网上部署 Pixiu 合约,并在 uniswap 交易所中演示。其实Uni和pancake一样,你学会了在以太坊上如何部署,同样可以复制到币安链上,没有太大区别。
1):部署貔貅合约
2):调用 mint()
函数,给自己铸造 100000
枚貔貅币。
3):进入 uniswap 交易所,为貔貅币创造流动性(v2),提供 10000
貔貅币和 0.1
ETH。
5):切换到另一个账户,使用 0.01
ETH 购买貔貅币,能够操作成功。
至此,整个貔貅盘的合约开发教程就到这里结束了。如果你没有分析貔貅盘的能力,可以借助ave等第三方平台进行检测。总而言之,了解貔貅合约的原理和预防方法,可以显著减少你买到貔貅盘的概率,让你的资金更安全。如果在开发过程中遇到什么困难或者问题,也欢迎大家随时找我讨论了解。
wx:btc6540,电报:@btc6540