代币标准--ERC1155协议源码解析

这篇具有很好参考价值的文章主要介绍了代币标准--ERC1155协议源码解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ERC1155多代币标准

ERC1155结合了ERC20和ERC721的能力,这是一个标准接口,支持开发同质化的、半同质化的、非同质化的代币和其他配置的通用智能合约。文章来源地址https://www.toymoban.com/news/detail-410890.html

IERC1155接口

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/IERC1155.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

// IERC1155接口同样继承了IERC165接口
interface IERC1155 is IERC165 {

TransferSingle事件

// 转移代币后触发事件,记录转移信息
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

TransferBatch事件

// 批量转移代币后触发事件,记录转移信息
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

ApprovalForAll事件

// 授权approve后触发事件,记录授权信息
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

URI事件

// URI的值改变时触发该事件,记录信息
    event URI(string value, uint256 indexed id);

balanceOf函数

// 获取account账户对应代币id拥有的数量
    function balanceOf(address account, uint256 id) external view returns (uint256);

balanceOfBatch函数

// 获取账户列表对用的token余额,相当于多次balanceOf
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

setApprovalForAll函数

// 设置给operate的授权
    function setApprovalForAll(address operator, bool approved) external;

isApprovedForAll函数

// 判断operate是否有account账号的授权
    function isApprovedForAll(address account, address operator) external view returns (bool);

safeTransferFrom函数

// 从from账户转移amount数量的代币id到to地址
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

safeBatchTransferFrom函数

// 批量转移token,相当于调用多次safeTransfer
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

ERC1155

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC1155/ERC1155.sol)

pragma solidity ^0.8.0;

import "./IERC1155.sol";
import "./IERC1155Receiver.sol";
import "./extensions/IERC1155MetadataURI.sol";
import "../../utils/Address.sol";
import "../../utils/Context.sol";
import "../../utils/introspection/ERC165.sol";


contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;
    // 代币id与拥有者地址及其该代币余额的映射
    mapping(uint256 => mapping(address => uint256)) private _balances;
    // 地址之间的授权状态的映射
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    // 相同类型的代币 _uri是一致的
    string private _uri;
   // 构造函数 初始化uri
   constructor(string memory uri_) {
       _setURI(uri_);
   }

到了这里,关于代币标准--ERC1155协议源码解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ERC-20 vs BEP-20 vs TRC-20:什么是加密代币标准?

    摘要: 随着越来越多的项目和平台使用区块链技术发行代币,一些流行的标准如ERC-20、BEP-20和TRC-20应运而生,了解这些标准对于参与加密世界至关重要。 在日益发展的区块链和加密货币领域,加密代币标准成为了推动数字经济发展的关键要素之一。随着越来越多的项目和平台

    2024年04月25日
    浏览(27)
  • 基于ERC20代币协议实现的去中心化应用平台

    使用 solidity 实现的基于 ERC20 代币协议的借贷款去中心化应用平台(极简版)。实现存款、取款、贷款、还款以及利息计算的功能。 平台提供ERC20协议代币的相关存取和利息计算工作。部署智能合约时初始化贷款和存款的年利率、代币实现地址。 用户可以将手中的代币存入平台

    2024年02月04日
    浏览(56)
  • ERC/BSC314协议代币源代码部署、添加流动性、锁仓LP固定时间操作全流程

    一、说明 ERC314协议标准为通过实现IERC314接口标准,创建可以直接通过合约地址进行代币的买卖交易的合约。不再需要借助去中心化的dex(uniswap,sushiswap,pancakeswap)进行代币的定价和线上交易。从而可以有效的降低交易的gas费用。ETH链上代币在uniswap进行交易时,交易比较拥

    2024年04月16日
    浏览(57)
  • 【ERC-721与ERC-1155有什么区别?】

    无论您是加密爱好者还是第一次使用密码,您都可能听说过以太坊。它是最具影响力的开源区块链平台之一,用于创建智能合约、加密货币和去中心化应用程序。以太坊的智能合约改变了加密货币的世界,区块链技术现在渴望成为全球多个行业的标准。 大多数区块链发烧友已

    2024年02月01日
    浏览(35)
  • ERC20 | ERC-20/ERC-721/ERC-1155/ERC-3525 区别

    EIP 20 的地址:https://eips.ethereum.org/EIPS/eip-20 ERC 是 Ethereum Request for Comment 的缩写,也就是以太坊改进建议。提交 ERC 后,以太坊社区会对这个草案进行评估,最终会接受或者拒绝该建议。如果接受的话,ERC 会被确认为 EIP。 EIP 是 Ethereum Improvement Proposals 的缩写,也就是被接纳的

    2024年02月05日
    浏览(29)
  • Java智能合约工具包|Java调用智能合约|Java调用ERC20、ERC721、ERC1155合约

    Magician-ContractsTools是一个用于调用智能合约的工具包,你可以非常容易地在Java程序中调用智能合约进行查询和写入操作。 有三个内置的标准合约模板,分别是ERC20、ERC721和ERC1155,如果你需要调用这三个合约中的标准函数,可以帮助你非常快速地完成工作。除了内置的合同模板

    2024年02月11日
    浏览(38)
  • 代币合约 ERC20 Token接口

    在以太坊上发布代币就要遵守以太坊的规则,那么以太坊有什么规则呢?以太坊的精髓就是利用代码规定如何运作,由于在以太坊上发布智能合约是不能修改和删除的,所以智能合约一旦发布,就意味着永久有效,不可篡改。 在以太坊上发布了这么多与代币有关的合约,那么

    2024年02月02日
    浏览(42)
  • 开创加密资产新纪元:深度解析ERC-314协议

    随着加密资产市场的不断发展和区块链技术的日益成熟,新的协议和标准不断涌现,其中包括了ERC-314协议。本文将深入分析ERC-314协议的特点、功能以及对加密资产市场可能产生的影响。 1. ERC-314协议简介 ERC-314协议是一项建立在以太坊区块链上的新提案,旨在为NFT提供更加标

    2024年04月15日
    浏览(30)
  • ethers.js:构建ERC-20代币交易的不同方法

    在这篇文章中,我们将探讨如何使用ethers.js将ERC-20令牌从一个地址转移到另一个地址 Ethers是一个非常酷的JavaScript库,它能够发送EIP-1559事务,而无需手动指定气体属性。它将确定gasLimit,并默认使用1.5 Gwei的maxPriorityFeePerGas,从v5.6.0开始。 此外,如果您使用签名者类,它也会

    2024年02月08日
    浏览(28)
  • 创建你自己的ERC-721代币:一个简单的以太坊游戏智能合约模板

    区块链游戏正在成为一种新兴的游戏形式,其中代币化的游戏资产成为了一个重要的组成部分。今天,我们将介绍一个简单的ERC-721智能合约模板,这个模板可以帮助你在以太坊区块链上创建你自己的ERC-721代币,让你的游戏更有趣。 源码下载 ERC-721是一种免费的开放标准,它

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包