主页 > imtoken钱包下载注册教程 > 【区块链科普】发币有多简单? 5分钟够了,学技术,小心被砍。

【区块链科普】发币有多简单? 5分钟够了,学技术,小心被砍。

imtoken钱包下载注册教程 2023-07-23 05:12:03

提示:文章写完后,可以自动生成目录。 如何生成可以参考右边的帮助文档

文章目录摘要

前言

随着区块链概念的普及,衍生出一大批区块链项目,其中很多项目并没有太多的技术含量。 下面我们就来探究一下“发币”是如何进行的,了解原理,学习知识,防止盲目被抓“砍”。

提示:以下为本文正文,以下案例供参考

1、什么是空气币?

其中大部分实际上是erc20。

ERC-20 是以太坊网络的代币合约标准。

那么什么是erc20?

ERC-20 是一个标准。

ERC-20标准规定Token需要有名称、符号、总量、转账汇款等功能。 该标准的好处是:只要符合ERC-20标准的Token,就可以兼容以太坊钱包。 也就是说,你可以将这个Token添加到你的以太坊钱包中,你也可以通过钱包发送给其他人。

因为ERC-20标准的存在,发行Token非常简单。 目前,以太坊上的 ERC-20 代币数量超过 180,000。

二、探索技术内容 1、工具MetaMask俗称“小狐狸”以太坊发币工具,是一个钱包,也是一个交互工具。 我们可以很方便的安装在360浏览器,或者谷歌,通过插件安装。

Remix是一款使用solidity语言的在线编程工具。

当然你可以自己搜索,有中文版的

2、实现方法

小狐狸准备好了,打开Remxi,这里要注意,打开小狐狸有网络的选择,你想发帖的地方,部署到对应的网络即可,但是你必须有网络认可的token(如矿工费),比如以太坊就用eth,火币生态用ht。

好了,我们打开Remix来实现部署。

给个名字

把代码贴在旁边

pragma solidity ^0.4.26;
 //kql yc
interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }
 
contract TokenERC20 {
    string public name; // ERC20标准
    string public symbol; // ERC20标准
    uint8 public decimals = 2;  // ERC20标准,decimals 可以有的小数点个数,最小的代币单位。18 是建议的默认值
    uint256 public totalSupply; // ERC20标准 总供应量
 
    // 用mapping保存每个地址对应的余额 ERC20标准
    mapping (address => uint256) public balanceOf;
    // 存储对账号的控制 ERC20标准
    mapping (address => mapping (address => uint256)) public allowance;
 
    // 事件,用来通知客户端交易发生 ERC20标准
    event Transfer(address indexed from, address indexed to, uint256 value);
 
    // 事件,用来通知客户端代币被消费 ERC20标准
    event Burn(address indexed from, uint256 value);
 
    /**
     * 初始化构造
     */
    function TokenERC20(uint256 initialSupply, string tokenName, string tokenSymbol) public {
        totalSupply = initialSupply * 10 ** uint256(decimals);  // 供应的份额,份额跟最小的代币单位有关,份额 = 币数 * 10 ** decimals。
        balanceOf[msg.sender] = totalSupply;                // 创建者拥有所有的代币
        name = tokenName;                                   // 代币名称
        symbol = tokenSymbol;                               // 代币符号
    }
 
    /**
     * 代币交易转移的内部实现
     */
    function _transfer(address _from, address _to, uint _value) internal {
        // 确保目标地址不为0x0,因为0x0地址代表销毁
        require(_to != 0x0);
        // 检查发送者余额
        require(balanceOf[_from] >= _value);
        // 确保转移为正数个
        require(balanceOf[_to] + _value > balanceOf[_to]);
 
        // 以下用来检查交易,
        uint previousBalances = balanceOf[_from] + balanceOf[_to];
        // Subtract from the sender
        balanceOf[_from] -= _value;
        // Add the same to the recipient
        balanceOf[_to] += _value;
        Transfer(_from, _to, _value);
 
        // 用assert来检查代码逻辑。
        assert(balanceOf[_from] + balanceOf[_to] == previousBalances);
    }
 
    /**
     *  代币交易转移
     *  从自己(创建交易者)账号发送`_value`个代币到 `_to`账号
     * ERC20标准
     * @param _to 接收者地址
     * @param _value 转移数额
     */
    function transfer(address _to, uint256 _value) public {
        _transfer(msg.sender, _to, _value);
    }
 
    /**
     * 账号之间代币交易转移
     * ERC20标准
     * @param _from 发送者地址
     * @param _to 接收者地址
     * @param _value 转移数额
     */
    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;
    }
 
    /**
     * 设置某个地址(合约)可以创建交易者名义花费的代币数。
     *
     * 允许发送者`_spender` 花费不多于 `_value` 个代币
     * ERC20标准
     * @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;
        return true;
    }
 
    /**
     * 设置允许一个地址(合约)以我(创建交易者)的名义可最多花费的代币数。
     *-非ERC20标准
     * @param _spender 被授权的地址(合约)
     * @param _value 最大可花费代币数
     * @param _extraData 发送给合约的附加数据
     */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
    public
    returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            // 通知合约
            spender.receiveApproval(msg.sender, _value, this, _extraData);
            return true;
        }
    }
 
    /**
     * 销毁我(创建交易者)账户中指定个代币
     *-非ERC20标准
     */
    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
        Burn(msg.sender, _value);
        return true;
    }
 
    /**
     * 销毁用户账户中指定个代币
     *-非ERC20标准
     * 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
        Burn(_from, _value);
        return true;
    }
}
//qkl yc

然后编译左边第二个以太坊发币工具,点击编译

3.编译成功后运行

当然还需要配置参数,有3个,

INITIALSUPPLY 是数量

TOKENNAME 是名称

TOKENSYMBOL 是代币的符号

然后,只需添加它。

总结

本期从技术层面为大家普及空气币在市场上的变现原理。 科技是用来改变生活的。 应该是区块链赋能实体经济,改变生活,而不是扰乱生活。 希望得到理性对待。

另请注意,ICO 在中国是被禁止的

2017年9月4日下午3时,中国人民银行、工业和信息化部、国家工商总局、银监会、证监会、中国证监会等七部委保监会发布《关于防范代币发行融资风险的公告》(以下简称《公告》)。 《公告》指出,代币发行融资本质上是未经批准的非法公开融资,要求自公告发布之日起立即停止各类代币发行融资活动。 同时,已完成代币发行和融资的组织与个人进行清关等安排。