貔貅盘是什么意思?貔貅合约代码全公开

fffmCQ.jpg

貔貅盘是什么意思?貔貅合约代码全公开

貔貅读音是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。 貔貅盘是什么意思?貔貅实战合约代码全公开

4):出售 100 貔貅币,能够操作成功。 貔貅盘是什么意思?貔貅实战合约代码全公开

5):切换到另一个账户,使用 0.01 ETH 购买貔貅币,能够操作成功。 貔貅盘是什么意思?貔貅实战合约代码全公开

6)出售貔貅币,无法弹出交易。,故而不能卖出貔貅盘是什么意思?貔貅实战合约代码全公开

至此,整个貔貅盘的合约开发教程就到这里结束了。如果你没有分析貔貅盘的能力,可以借助ave等第三方平台进行检测。总而言之,了解貔貅合约的原理和预防方法,可以显著减少你买到貔貅盘的概率,让你的资金更安全。如果在开发过程中遇到什么困难或者问题,也欢迎大家随时找我讨论了解。

wx:btc6540,电报:@btc6540

声明:该文观点仅代表作者本人,与炒币网无关。炒币网系信息发布平台,仅提供信息存储空间服务。对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,并不对文章观点负责。 提示:投资有风险,入市须谨慎。本资讯仅供参阅,不作为投资理财建议。

发表评论

登录后才能评论