前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基于ERC20协议的智能合约demo

基于ERC20协议的智能合约demo

作者头像
yuanshuai
发布于 2022-08-17 06:48:44
发布于 2022-08-17 06:48:44
63100
代码可运行
举报
文章被收录于专栏:一只程序原一只程序原
运行总次数:0
代码可运行

基于ERC20协议的智能合约demo

初次接触加密货币圈的人可能会有些困扰。 在本文中,考虑诸如代币标准、ERC20、ERC721 等术语。 现在您可能觉得一切都很陌生,但一旦您了解了它们的作用,再理解它们的概念就会非常简单。 什么是 ERC 代币? 我们在这里用大白话讲一讲。

一、首先,币或代币:它们是什么?

先来讲一下币。 这要从比特币说起,即第一个区块链网络。 比特币旨在让人们使用其原生货币(也称为比特币或 BTC)进行全球点对点支付。 随后出现了类似的区块链,如莱特币 (LTC) 和[狗币 (DOGE),它们的用途类似。

所有这些依托于自己的区块链网络的加密货币都称为币。

然后以太坊出现,并引入了基于区块链的去中心化应用和协议的概念。 尽管以太坊也有自己的“币”,名为 ETH,且使用方式与 BTC 相同,但它的主要用途是助推

基于网络搭建的应用和协议的交易和运作。

此外,这些应用的开发者可以创建应用内货币,这类货币没有专属区块链,而是存放在以太坊中。 借助以太坊,用户还可以创建其他形式的独立数字资产,这些

数字资产能够以不可更改的方式存放在以太坊中。 这些在以太坊中创建和存放的应用内货币或数字资产就是我们所说的代币。

总而言之,拥有专属区块链的加密资产从技术上来说是一种币,而在第三方区块链上创建的所有其他资产则称为代币。

二、那什么是 ERC 代币呢?

以太坊生态系统是去中心化的,但仍需要有人来制定规则,发出升级要求,并制定标准来定义区块链上的各种可能。 为此,以太坊的大部分用户需要提交以太坊

提案 (EIP),讨论具体细节,并投票决定是否决还是开始实施提案。

现在,有几种类型的 EIP 分别对应不同类别的改进和补充。 其中一种类型是以太坊核心开发者定义的,用于提出、讨论和实施在以太坊上创建代币、智能合约、应

用程序、钱包格式等的不同技术标准。

该子类别的 EIP 称为以太坊征求意见提案,又称 ERC。 到目前为止,已经可利用多个“以太坊征求意见提案”为可在以太坊上创建的代币制定标准。 而以太坊上创建

的所有代币都必须遵循这些 ERC 制定的标准。 因此,这些代表称为 ERC 代币。

目前有三种 ERC 标准在以太坊上使用最广泛:ERC20、ERC721 或 ERC1155。 为了不让您感到困惑,这里说明一下,ERC 后面的数字只是提出这些标准的“意见征

求”序号。

但是,这些标准具体指什么呢,我们为什么需要这些标准? 让我们弄清楚这个问题。

三、了解 ERC 代币标准

3.1 ERC20:可替代的/同质化代币标准

ERC20 于 2015 年首次实施,利用该代币标准,开发者可为基于以太坊的应用程序或协议创建可替代的/同质化代币。 什么?

首先,您可以将“同质化代币”想象成任何基于区块链的常规货币。 术语“同质化”仅意味着您可以将一个单位的代币交换为任何其他一个单位的该种代币,因为它们

代表的价值相同。 在这一点上,以 UNI 或 LINK 这样的加密资产为例,即基于以太坊的协议 Uniswap或Chainlink的 ERC20 代币。 每一种此类代币都是同质化

的,因为一个 UNI 或 LINK 代币始终等于任何其他 UNI 或 LINK 代币。

这意味着您可以一比一交换上述代币。 您拥有哪个 UNI 并不重要,因为它们的基础价值始终与所有其他 UNI 代币相同。

3.2 ERC721:非同质化代币标准

随着区块链的用途越来越广泛,需要对区块链上的唯一数据进行代币化和表示。 由此便引入了 ERC721 代币标准。 利用 ERC721 标准,您可以创建不可替代/非同

质化代币,即每个代币都具有独特价值,代表可验证的唯一数字对象,不能像 ERC20 代币那样相互交换。

因此,假设您想在区块链上表示一件数字艺术品。 显然不能用 ERC20 代币来表示。 您可以改用 ERC721 标准代币来创建 NFT 艺术作品。 这个数字艺术作品的

NFT 可轻松证明该艺术作品的真实性及其所有权记录。

由于 NFT 艺术品的所有权记录和身份是不可更改的,且存储在区块链上,此举也避免了对任何艺术家原创作品的伪造。

3.3 ERC1155:多重代币标准

ERC20 和 ERC721 标准的问题在于,它们仅允许一个智能合约支持单一类型的可替代/同质化或不可替代的/非同质化代币。 因此,每次要部署新代币时,都必须编

写一个新的智能合约。 此外,上述两个标准均未提供创建半可替代/半同质化代币的方法。

由此 ERC1155 代币标准应运而生,让以太坊开发者能够使用同一标准创建同质化、半同质化和非同质化的代币。 此外,利用 ERC1155,制定一份合约即可支持多

种类型的可单独配置的代币,从而降低了代币创建过程的复杂性。 这样说有点复杂,对吗? 我们来简化一下。

假设一个开发者想开发一款 NFT 游戏,他们计划创建一种同质化的代币作为游戏中使用的货币,同时计划创建多种非同质化代币,来代表游戏中的独特资产,如

皮肤、枪支、商品等。 如果采用 ERC20 和 ERC721 标准,那么创建每一种新的资产类型时他们都必须要编写新的智能合约作为支持。 然而,借助 ERC1155,他

们只要编写一份合约即可支持他们想在游戏中拥有的所有种类的代币。

这些并不能说明某个标准比其他标准好;它们只是用途不同。

四、基于ECR20协议手动实现合约demo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pragma solidity ^0.8.0;

contract ecr20 {

    // 账户余额
    mapping (address => uint256) private _balances;

    // 代币名称
    string private _name;

    // 代币符号
    string private _symble;

    // 代币精度 默认18位
    uint8 private _decimals = 18;

    // 代币总量
    uint256 private _totalApply;

    // 代币最大总量
    uint256 private _maxApply;

    // 定义合约拥有者
    address public owner;
    // 权限
    modifier onlyOwner() {
        require(msg.sender == owner, "account is not owner");
        _;
    }

    // 构造函数
    constructor(string memory name, string memory symble, uint256 maxApply) public {
        _name = name;
        _symble = symble;
        _maxApply = maxApply;
        owner = msg.sender;
    }

    // 查询账户姓名
    function name() public view returns (string memory) {
        return _name;
    }
    // 查询代币符号
    function symble() public view returns (string memory) {
        return _symble;
    }
    // 查询代币精度
    function decimals() public view returns (uint8) {
        return _decimals;
    }
    // 查询代币总量
    function totalApply() public view returns (uint256) {
        return _totalApply;
    }
    // 查询最大总量
    function maxApply() public view returns (uint256) {
        return _maxApply;
    }
    // 查询账户余额
    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }
    
    // 转账
    function transfer(address to, uint256 amount) public returns (bool) {
        // 转账发起人账号(谁调用这个函数就是谁)
        address from = msg.sender;
        // 查一下发起人钱包余额
        uint256 fromBalance = _balances[from];
        // 判断转账人余额是否大于转账金额
        require(fromBalance >= amount, "Over user balance");
        // 转账逻辑
        _balances[from] -= amount;
        _balances[to] += amount;

        return true;
    }

    // mint函数(给账户生成代币)
    function mint(address to, uint256 amount) public onlyOwner {
        require(_totalApply + amount <= _maxApply, "over _maxApply");
        _totalApply += amount;
        _balances[to] += amount;
    }

    // 改账户拥有者
    function setOwner(address _owner) public onlyOwner {
        owner = _owner;
    }


}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022.07.27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【以太坊通证标准】ERC20系列,ERC721系列,ERC865
【本文目标】 通过本文学习,了解ERC定义及知名ERC协议标准,如ERC20以及ERC223、ERC621,ERC827协议,ERC721以及 ERC875,ERC1155,ERC998协议,ERC 865等描述和定义。
辉哥
2018/08/10
1.7K0
【以太坊通证标准】ERC20系列,ERC721系列,ERC865
【区块链技术工坊34期】王登辉:以太坊通证协议标准及应用场景
2)议题: 通过本次技术分析,可以了解以太坊的ERC定义及知名ERC协议标准,如同质化通证系列ERC20以及ERC223协议; 非同质化系列ERC721以及 ERC875,ERC1155协议;STO标准半同质化系列ERC1400系列协议。
辉哥
2019/03/15
8190
【区块链技术工坊34期】王登辉:以太坊通证协议标准及应用场景
NFT 的一知半解
最近的区块链领域,越来越多的人认为 NFT 将会迎来爆发式的发展,DeFi+NFT概念将会是未来一段时间的主要流行趋势。那么,什么是NFT,NFT如何实现以及如何使用的呢? 感谢石头兄弟推荐的资料, 老码农梳理了一下学习笔记,记录一下对NFT的一知半解。
半吊子全栈工匠
2021/03/16
1.5K0
NFT 的一知半解
一文带你了解NFT的底层技术有哪些
不知道从什么时候起,NFT突然火了。你会时不时的看到一个新闻说某个数字藏品的NFT买了几十万美金,似乎NFT是财富密码一样。
用户7634691
2022/05/31
7620
一文带你了解NFT的底层技术有哪些
剖析非同质化代币ERC721-全面解析ERC721标准
什么是ERC-721?现在我们看到的各种加密猫猫狗狗都是基于ERC-721创造出来的,每只都是一个独一无二的ERC-721代币,不过ERC-721在区块链世界远不止猫猫狗狗,它更大的想象空间在于将物理世界的资产映射到区块链上。本文就来剖析下什么是ERC721.
Tiny熊
2018/07/23
1.5K0
剖析非同质化代币ERC721-全面解析ERC721标准
第十七课 【ERC721实践】迷恋猫从玩耍到开发
玩迷恋猫游戏,玩家需要在以太坊区块链上下载到这款游戏的APP,游戏开始系统会赠送玩家一只喵。刚推出时是送猫的,现在只有活动时才赠送。它让你沉迷于吸猫,然后当你无法自拔后,就会自愿掏出大把的以太币去氪金了,满满的套路啊!
辉哥
2018/08/10
1.3K0
第十七课 【ERC721实践】迷恋猫从玩耍到开发
如何开发创建ERC20以太坊代币
可以把ERC20简单理解成以太坊上的代币协议,所有基于以太坊开发的代币合约都遵守这个协议。遵守这些协议的代币我们可以认为是标准化的代币,而标准化带来的好处是兼容性好。这些标准化的代币可以被各种以太坊钱包支持,用于不同的平台和项目。说白了,你要是想在以太坊上发行代币融资,必须要遵守ERC20标准。
笔阁
2018/09/04
1.4K0
如何开发创建ERC20以太坊代币
【以太坊篇】-智能合约协议ERC20、ERC721
在解释ERC20、ERC721之前,需理出一个概念,就是同质化代币(Fungible Token, FT)和非同质化代币(Non-Fungible Token)。如图
帆说区块链
2022/04/26
1.9K0
【以太坊篇】-智能合约协议ERC20、ERC721
ERC-1155标准规范
本篇文章将对ERC-1155标准规范进行简单介绍,在介绍之前我们先来看一下之前的ERC-20、ERC-721、ERC-777都解决了什么问题,主要应用与那些场景:
Al1ex
2021/07/16
5.1K2
ERC-1155标准规范
以太坊ERC20协议以及发行自己代币
ERC-20 标准是在2015年11月份推出的,使用这种规则的代币,表现出一种通用的和可预测的方式。
若与
2018/11/23
2.3K0
Solidity:ERC20
ERC20是以太坊区块链上的一个标准,用于创建和发行智能合约,实现代币化的应用。它定义了一组通用的接口,使得开发者可以创建和使用代币,而不需要了解底层区块链技术的细节。以下是ERC20标准中的主要接口及其含义:
孟斯特
2024/06/11
1700
Solidity:ERC20
第二十课 【ERC1155实践】欧阳询书法复制品从确权设计到买卖测试
【本文目标】 通过本文学习,了解以太坊ERC1155标准规范和ERC1155Mintable可增发智能合约函数功能,并通过一个有趣的故事完成功能测试。
辉哥
2018/08/22
1.3K1
第二十课 【ERC1155实践】欧阳询书法复制品从确权设计到买卖测试
揭秘NFT:非同质化代币的原理与市场
在过去几年里,NFT(Non-Fungible Token,非同质化代币)一跃成为区块链和加密货币领域的热门话题。从艺术品到音乐作品,甚至是虚拟地产,NFT的应用场景越来越广泛。那么,什么是NFT?它是如何工作的?它的市场前景如何?本文将为你详细解答这些问题。
Echo_Wish
2025/01/21
1540
揭秘NFT:非同质化代币的原理与市场
智能合约安全审计技术概览
智能合约是区块链技术的重要组成部分,它能够自动执行代码并将结果写入区块链以实现各种业务场景,然而由于智能合约本质上是代码,因此也存在着相应的安全风险,如果智能合约存在漏洞,黑客就有可能利用这些漏洞进行攻击,导致资产损失甚至系统崩溃,因此对智能合约进行安全审计是至关重要的,本文将概述智能合约安全审计技术的相关知识为读者带来更深入的了解
Al1ex
2023/08/10
9270
智能合约安全审计技术概览
NFT链游系统开发DeFi链游
NFT是Non-FungibleTokens的缩写,意思是不可互换的代币,也称为非同质代币,就像艺术品一样,每件都独一无二。基于区块链技术的去中心化、防篡改、时间戳等技术优势,将链下物品价值对标NFT,能实现艺术品所有权确权且交易可查询。现阶段NFT主要有三种底层协议标准,分别是ERC721、ERC1155及ERC998,三种底层协议标准之间存在差异。
用户5539481
2022/06/06
5580
天才程序员: "开发 CryptoKitties 难不难? 只需掌握这3点..."
发行一款 CryptoKitties 简直是 so easy!还等什么?学起来吧!(文末有福利,免费送书)
区块链大本营
2019/07/16
6020
ERC20 Short Address Attack
代币大家应该都很熟悉了,代币也叫 token, 他不是像比特币,以太坊等虚拟币这样建立在大量技术人员的辛苦工作基础之上,用于维持公链运行的虚拟货币。代币一般是依赖于以太坊平台,就是一个以太坊平台上面的一个智能合约里面记录的数字。
程序那些事
2020/07/07
7370
链上游戏的未来:区块链技术如何改变游戏开发
近年来,区块链技术以其去中心化、透明性和防篡改的特点,在多个领域掀起了一场技术革命。而在游戏行业,区块链也正在改变传统的开发与运营模式,为玩家和开发者带来全新的体验。本文将围绕区块链技术在游戏开发中的具体应用展开讨论,并通过代码和实例帮助大家理解这一前沿技术如何推动游戏行业的变革。
Echo_Wish
2025/01/26
1450
链上游戏的未来:区块链技术如何改变游戏开发
NFT租赁提案EIP-5006步入最后审核!让海外大型游戏的链改成为可能
随NFT租赁场景的EIP-4907被纳入以太坊标准,NFT该如何应用的问题,正在从协议底层得到认可和解答。近期同样由 NFT 租赁市场 Double Protocol 提案的针对1155型的NFT租赁标准EIP-5006 ,也已经步入最后审核阶段(last call),如无意外将在2022-08-01结束审核。
十四君
2023/02/18
7100
NFT租赁提案EIP-5006步入最后审核!让海外大型游戏的链改成为可能
深入理解以太坊区块链的token
描述除BTC以外的所有加密Token的术语。Token的名字来自于它们是Token和传统法币的替代品。
JavaEdge
2024/07/30
3590
相关推荐
【以太坊通证标准】ERC20系列,ERC721系列,ERC865
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文