justSwap开盘咯,你也想发个币去当庄家?手把手教你怎么用TRC20标准在tron发币

in hive-180932 •  3 months ago 

文:卖鱼的

tron发币很简单,而且比ETH和EOS更便宜,转账空投又便宜又快捷。

再加上可以直接在justSwap上币交易,实在是简单方便快捷的东西。

不过TRC20发币的教程比较少,这里写一个。

主要步骤:

  • 1 安装Tronlink:
  • 2 部署合约并广播
  • 3 在https://tronscan.io登记发布一下
  • 4 完成

1.安装tronlink

https://chrome.google.com/webstore/detail/tronlink/ibnejdfjmmkpcnlpebklmnkoeoihofec)
这是一个google插件,tron钱包来的。安装完毕创建新钱包或者导入私钥

image.png

2.部署合约

首先检查一下你有没能量,部署合约需要能量。

没有能量就去抵押一点TRX或者租一点。价格很便宜,也就几块钱人民币的事情。

image.png

我这里租了10万能量就成功发了好几个合约了。

首先打开tron-ide。你喜欢自己部署环境也可以自己动手。

http://www.tronide.io/#ideVersion=v0.4.5&optimize=false&version=soljson-v0.4.25+commit.69a1e72.js

image.png

新建一个文件,打代码,这里有个简单的示例合约,只要改下面的币名和数量就完事了。

image.png


pragma solidity >=0.4.23 <0.6.0;


contract CARE_TRC20 {
    // Public variables of the token
    string public name;
    string public symbol;
    uint8 public decimals = 8;
    uint256 precision = 100000000;
    address private ownerAddr;
    address private adminAddr;
    uint256 public totalSupply;

    // This creates an array with all balances
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    // This generates a public event on the blockchain that will notify clients
    event Transfer(address indexed from, address indexed to, uint256 value);

    // This generates a public event on the blockchain that will notify clients
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    // This notifies clients about the amount burnt
    event Burn(address indexed from, uint256 value);

    /**
     * Constructor function
     *
     * Initializes contract with initial supply tokens to the creator of the contract
     */
    uint256 initialSupply = 1000000000000;
    string tokenName = 'YOUR TOKEN';
    string tokenSymbol = 'YOUR';
    constructor() public {
        ownerAddr = msg.sender;
        totalSupply = initialSupply * 10 ** uint256(decimals);  // Update total supply with the decimal amount
        balanceOf[msg.sender] = totalSupply;                // Give the creator all initial tokens
        name = tokenName;                                // Set the name for display purposes
        symbol = tokenSymbol;                               // Set the symbol for display purposes
    }

    modifier isOwner() {
        require(msg.sender == ownerAddr);
        _;
    }

    modifier isAdmin() {
        require(msg.sender == adminAddr);
        _;
    }

    function setAdmin(address _newAdmin) external isOwner {
        require(_newAdmin != address(0));
        adminAddr = _newAdmin;
    }

    /**
     * Internal transfer, only can be called by this contract
     */
    function _transfer(address _from, address _to, uint _value) internal {
        // Prevent transfer to 0x0 address. Use burn() instead
        require(_to != address(0));
        // Check if the sender has enough
        require(balanceOf[_from] >= _value);
        // Check for overflows
        require(balanceOf[_to] + _value >= balanceOf[_to]);
        // Save this for an assertion in the future
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
        // Subtract from the sender
        balanceOf[_from] -= _value;
        // Add the same to the recipient
        balanceOf[_to] += _value;
        emit Transfer(_from, _to, _value);
        // Asserts are used to use static analysis to find bugs in your code. They should never fail
        require(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }

    /**
     * Transfer tokens
     *
     * Send `_value` tokens to `_to` from your account
     *
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function deduct(address _to, uint256 _value) external isAdmin returns (bool success) {
        _transfer(ownerAddr, _to, _value * precision);
        return true;
    }

    function transfer(address _to, uint256 _value) external returns (bool success) {
        _transfer(msg.sender, _to, _value);
        return true;
    }

    /**
     * Transfer tokens from other address
     *
     * Send `_value` tokens to `_to` on behalf of `_from`
     *
     * @param _from The address of the sender
     * @param _to The address of the recipient
     * @param _value the amount to send
     */
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(_value <= allowance[_from][msg.sender]);     // Check allowance
        allowance[_from][msg.sender] -= _value;
        _transfer(_from, _to, _value);
        return true;
    }

    /**
     * Set allowance for other address
     *
     * Allows `_spender` to spend no more than `_value` tokens on your behalf
     *
     * @param _spender The address authorized to spend
     * @param _value the max amount they can spend
     */
    function approve(address _spender, uint256 _value) public
    returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * Destroy tokens
     *
     * Remove `_value` tokens from the system irreversibly
     *
     * @param _value the amount of money to burn
     */
    function burn(uint256 _value) public returns (bool success) {
        require(balanceOf[msg.sender] >= _value);   // Check if the sender has enough
        balanceOf[msg.sender] -= _value;            // Subtract from the sender
        totalSupply -= _value;                      // Updates totalSupply
        emit Burn(msg.sender, _value);
        return true;
    }

    /**
     * Destroy tokens from other account
     *
     * Remove `_value` tokens from the system irreversibly on behalf of `_from`.
     *
     * @param _from the address of the sender
     * @param _value the amount of money to burn
     */
    function burnFrom(address _from, uint256 _value) public returns (bool success) {
        require(balanceOf[_from] >= _value);                // Check if the targeted balance is enough
        require(_value <= allowance[_from][msg.sender]);    // Check allowance
        balanceOf[_from] -= _value;                         // Subtract from the targeted balance
        allowance[_from][msg.sender] -= _value;             // Subtract from the sender's allowance
        totalSupply -= _value;                              // Update totalSupply
        emit Burn(_from, _value);
        return true;
    }
}  

复制上面代码弄上去就好。

接下来编译一下代码。

image.png

首先点插件这里,激活一下部署和广播用的插件。

激活完毕多了几个图标,按照下图点。成功编译的话没啥错误就进行下一步。

image.png

之后按下图点击,就可以广播合约了。

image.png

tronlink会跳出来,让你确认签名,确认后给点能量,就完成了。

image.png

然后你可以去区块浏览器查看是不是成功了。

image.png

3.在https://tronscan.io登记发布一下

弄完了,但是没有币,很奇怪?

这时候在钱包按照合约地址添加资产就有了。

不过最好去tronscan登记发布一下。

image.png

点击通证录入,选TRC20,把你发的合约信息填上,此处有个需翻墙的验证码。

image.png

提交了,你的币就很能很好的查询到了,也可以上传币的LOGO啥的。

4.完事,可以去空投发币。可以上justSwap圈钱了,祝大家发财。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  3 months ago 

咦,好像和Uniswap差不多,那边的币炒的热火朝天的

  ·  3 months ago 

和Uniswap起码有98%的相似度吧