主页 > 苹果手机安装imtoken钱包 > 教你如何创建令牌!

教你如何创建令牌!

苹果手机安装imtoken钱包 2023-08-28 05:07:41

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】
链客,有问必答!

在这里插入图片描述

本文从技术角度详细介绍了如何基于以太坊ERC20创建代币的过程。

写在前面

本文中提到的代币是使用以太坊智能合约创建的。 在阅读本文之前,您应该对以太坊和智能合约有一定的了解。 如果你还不知道,我建议你读一读以太坊是什么

代币

如果不追求精确的定义,代币就是数字货币,比特币、以太坊都是代币。

使用以太坊的智能合约,您可以轻松编写自己的代币,代币可以代表任何可以交易的东西,例如积分、财产、证书等。

所以不管是商务还是学习很多人都想创建自己的token,先发个图看看创建出来的token长什么样子。

今天我们将详细讨论如何创建这样的令牌。

ERC20代币

可能大家经常看到ERC20和代币在一起,ERC20是以太坊定义的一种代币标准。

实现代币需要我们遵守的协议,比如指定代币名称、总量、实现代币交易功能等添加代币usdt,只有协议支持,以太坊钱包才能支持。

它的界面如下:

16 合约ERC20接口{

string public constant name = "Token Name";
string public constant symbol = "SYM";
uint8 public constant decimals = 18;  // 18 is the most common number of decimal places
function totalSupply() public constant returns (uint);
function balanceOf(address tokenOwner) public constant returns (uint balance);
function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
function transfer(address to, uint tokens) public returns (bool success);
function approve(address spender, uint tokens) public returns (bool success);

泰达币usdt_添加代币usdt_usdt如何兑换人民币

function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens);

}

简单说明:

名称 : 代币名称

符号:代币符号

decimals:token的小数位数,token的最小单位,18表示我们可以有.00000000000000000001个单位的token。

totalSupply() :发行的代币总量。

balanceOf():查看对应账户的代币余额。

transfer():实现代币交易,用于向用户发送代币(从我们的账户)。

transferFrom():实现代币用户之间的交易。

allowance():控制代币交易,例如可交易账户和资产。

approve():允许用户花费的代币数量。

编写代币合约代码

代币合约代码:

pragma solidity ^0.4.16;

interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; }

合约 TokenERC20 {

字符串公共名称;

字符串公共符号;

uint8 public decimals = 18;  // 18 是建议的默认值
uint256 public totalSupply;
mapping (address => uint256) public balanceOf;  //
mapping (address => mapping (address => uint256)) public allowance;
event Transfer(address indexed from, address indexed to, uint256 value);

泰达币usdt_添加代币usdt_usdt如何兑换人民币

event Burn(address indexed from, uint256 value); function TokenERC20(uint256 initialSupply, string tokenName, string tokenSymbol) public { totalSupply = initialSupply * 10 ** uint256(decimals); balanceOf[msg.sender] = totalSupply; name = tokenName; symbol = tokenSymbol; } function _transfer(address _from, address _to, uint _value) internal { require(_to != 0x0); require(balanceOf[_from] >= _value); require(balanceOf[_to] + _value > balanceOf[_to]); uint previousBalances = balanceOf[_from] + balanceOf[_to]; balanceOf[_from] -= _value; balanceOf[_to] += _value; Transfer(_from, _to, _value); assert(balanceOf[_from] + balanceOf[_to] == previousBalances);

usdt如何兑换人民币_添加代币usdt_泰达币usdt

} function transfer(address _to, uint256 _value) public { _transfer(msg.sender, _to, _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; } function approve(address _spender, uint256 _value) public returns (bool success) { allowance[msg.sender][_spender] = _value; return true; } function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) { tokenRecipient spender = tokenRecipient(_spender);

添加代币usdt_usdt如何兑换人民币_泰达币usdt

if (approve(_spender, _value)) { spender.receiveApproval(msg.sender, _value, this, _extraData); return true; } } function burn(uint256 _value) public returns (bool success) { require(balanceOf[msg.sender] >= _value); balanceOf[msg.sender] -= _value; totalSupply -= _value; Burn(msg.sender, _value); return true; } function burnFrom(address _from, uint256 _value) public returns (bool success) { require(balanceOf[_from] >= _value); require(_value <= allowance[_from][msg.sender]); balanceOf[_from] -= _value;

泰达币usdt_usdt如何兑换人民币_添加代币usdt

allowance[_from][msg.sender] -= _value; totalSupply -= _value; Burn(_from, _value); return true; }

}

详细的代码解读,欢迎订阅我的小专栏。

部署

在开发和测试智能合约时,MetaMask 和 Remix Solidity IDE 是两个非常有用的工具。 使用它们来完成今天的部署。

要安装和配置 MetaMask,请参阅开发和部署第一个去中心化应用程序。 不同的是,本文选择了以太坊的测试网络 Ropsten。 如果您没有余额,请点击购买,您进入的网站会送您一些测试以太币。 ,配置完成后,界面应该是这样的:

在浏览器中打开Remix Solidity IDE,将上面的源码复制粘贴,参考右边的设置如图:

注意Environment、Account和MetaMask是一致的,然后选择合约TokenERC20,填写你想要的流通量、名称和代码,就可以创建合约了。

此时MetaMask会弹出交易确认框,点击SUBMIT。 合约部署交易确认后,复制合约地址。

打开Metamask界面,切换到TOKENS,点击Add Contract,出现如下对话框:

填写刚刚复制的地址,点击ADD,即可看到创建的token,如图:

哈哈,你已经完成了token的创建和部署(正式网的部署方式和测试网一样),你可以在Etherscan上查询我们刚刚部署的token。 你可以用它来做ICO,你会走上人生的巅峰(开个玩笑,我们不鼓励大家发行无意义的代币)。

代币交易

由于MetaMask插件不提供代币交易功能,考虑到很多人没有以太坊钱包或者被以太坊钱包网络的同步问题折磨,今天我就用网页版钱包来讲解一下代币交易。

1、输入网页钱包地址,第一次输入时,会有一些安全提示,需要用户确认。

2、进入后,按照下图进行设置:

3、连接好后,如图

需要添加代币,填写代币合约地址。

4.进行代币转账交易

在接下来的交易确认中添加代币usdt,只需点击确定。

5、交易完成后,可以看到MetaMask中的token余额有所减少,如图:

代币交易是不是很简单? 只要了解交易流程,使用其他钱包也是一样的。

我是【Linker】Level 6算力等级「守护者平井一夫」为大家解答区块链技术问题,欢迎加入。

联科区块链技术问答社区,有问必答! !

国内域名:复制网址到浏览器进入社区

国际域名:QQ群:725414372