IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 几行代码生成自己的Token代币 -> 正文阅读

[区块链]几行代码生成自己的Token代币

78f14fad28f34f39d390669614cdf042.png

概念

什么是Token代币?

Token这个词,在开发领域很常见,刚看见Token代币这个词的时候,我确实懵逼了一段时间,比如常规的前后端Web程序会有Token的概念,它用于表明用户访问当前网站时的身份,比如编译原理中的Token,它用于表明词法分析阶段,代码会转为Token流,但区块链中的Token与前两者在概念上没有任何关系。

Token代币这个词出自ERC20协议,与常见的网络协议一样,协议只是用于规定程序的规则集,比如TCP/IP协议,为了方便计算机的网络数据互通,程序在传输数据时,数据的格式与程序发送数据与接收数据的行为都要满足TCP/IP协议一样,ERC20也如此,我们可以通过https://eips.ethereum.org/EIPS/eip-20来查看ERC20具体的规则,你浏览后就会发现,它会要求你的智能合约必须实现某些函数。

从ERC20这个角度看,Token只是记录在智能合约上的一个数值,目前很多DApp应用的Token之所以可以交易,是因为这里DApp的智能合约都遵守ERC20规范。现在有基于其改进的ERC776和ERC777,这些新的规范都向下兼容了ERC20。

从代码上看,不同应用的Token代币,都是这一行代码,你钱包账号的地址以及该地址对应的数值(uint256类型),这就是你这个钱包具体的Token,而各种交易操作就是对这个数值的操作,非常简单,代码如下:

mapping(address => uint256) private _balances;

这里吐槽一句,一开始我也是从网上了解Token的概念,越看越迷糊,如果是你开发同学,直接看相应的协议吧,直达本质。

那Token与以太坊有什么关系?

Token基于智能合约实现,这个智能合约要满足ERC20协议,而智能合约需要在以太坊网络中运行,这样Token也具有去中心、防篡改的特性了,直白点理解,Token就是智能合约上记录的一个数值,你要修改这个数值,其实就是要修改以太坊网络的状态,需要花费相应的gas。

实现

简单的概念介绍结束,下面通过几行代码来实现一下。

正常情况是,我们需要基于ERC20的规定,在自己的智能合约中实现ERC20要求我们实现的各种函数,但有人已经帮我们实现好了,我们直接通过solidity的继承功能,可以直接拿来就用。

第三方已经实现了规范的协议:

c73b8d401c78d725bd07a360a056005d.png

代码地址为:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol

有了这个ERC20.sol,我们只需要import然后继承用一下就好了,但如果你像我一样,特别懒,可以直接翻一下openzeppelin的文档:https://docs.openzeppelin.com/contracts/4.x/erc20。

2b2f40b48d38f8a8dbde0d9986e4d239.png

直接将这里的代码,全部复制下来,改一下你需要生成代币的名称和符号就好了。

注意,这里使用的solidity是 0.8.0,之前文章中提到,0.8.0版本的solidity,我们就不用担心数值溢出的问题了。

复制到本地,修改一下:

// contracts/AyuToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract AyuToken is ERC20 {
    // AyuToken: Token的名称,这里我的Token代币叫AyuToken
    // AT: Token的symbol(符号),这里我的Token代币的符号是AT
    constructor(uint256 initialSupply) ERC20("AyuToken", "AT") {
        // initialSupply: 初始的Token数量
        _mint(msg.sender, initialSupply);
    }
}

创建brownie项目,然后写一下部署代码:

from?brownie?import?AyuToken
from?scripts.utils?import?get_account
from?web3?import?Web3

#?Token代码的初始金额值
initialSupply?=?Web3.toWei(1000,?'ether')

def?main():
????account?=?get_account()
????ayu_token?=?AyuToken.deploy(initialSupply,?{"from":?account})
????print(ayu_token.name())

运行一下,部署成功,etherscan查询如下:

1e32092ac5dfc257647730eb9178c0f5.png

打开小狐狸插件,导入你部署的这个合约地址,可以找到你刚创建的AT代币。

a687d3b5bf5955b657adc504ea82a6aa.png

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:48:12  更:2021-12-02 16:48:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:42:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码