区块链学习第十二期

myBlog

Contracts解读

[toc] ---

ERC1155 导读

什么是 ERC1155

ERC-1155 是一种 Ethereum 代币标准,由 Enjin 首席技术官 Witek Radomski 等人开发,并于 2018 年 6 月 17 日将该标准的第一个版本放置到 Ethereum 的 github 库中。其主要可用于游戏行业中道具的生成和处理。该标准的提出对 nft 在游戏行业的应用起到了极大的提升。在一定程度上融合了 ERC-20 和 ERC-721 的功能。

其主要用途包括了发行同质化代币和非同质化代币。同质化代币即能像 ERC-20 一样发布各样的代币类型,但目前为止各钱包和交易所暂未支持 ERC-1155 标准代币;与此同时,ERC-1155 标准更是能够发行 NFT,且能基于一个合约同时发行多个 NFT。伴随现在区块链游戏的大火,ERC-1155 标准能够给基于以太坊的上的游戏开发运行提供大大的帮助。尤其在同质化道具的生成和处理上,该标准能够极大降低成本,提高效率。

有哪些特点

允许使用者在同一个智能合约中无限量地重复使用同质化或者非同质化的代币。是可以一次性铸造多种多量同质化及非同质化资产的以太坊标准

fun

  1. 既可以发行同质化也可以发行非同质化代币,当对同质化和非同质代币都有需求时都可以在此标准上发行,无需切换别的标准。

  2. 可以批量转移代币资产(批量生成 比如一次性生成 1000 个 nft),以及一次操作就可向不同对象转移多个代币资产,大大提高使用效率降低时间及 gasfee 成本。

有哪些方法

具体方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
solidity
interface ICryptoItems {
// Events
event Transfer(uint256 indexed _itemId, address indexed _from, address indexed _to, uint256 _value);
event Approval(uint256 indexed _itemId, address indexed _owner, address indexed _spender, uint256 _value);

// Required Functions
function transfer(uint256[] _itemId, address[] _to, uint256[] _value) external returns (bool success);
function transferFrom(uint256[] _itemId, address[] _from, address[] _to, uint256[] _value) external returns (bool success);
function approve(uint256[] _itemId, address[] _spender, uint256[] _value) external returns (bool success);
function increaseApproval(uint256[] _itemId, address[] _spender, uint256[] _addedValue) external returns (bool success);
function decreaseApproval(uint256[] _itemId, address[] _spender, uint256[] _subtractedValue) external returns (bool success);

// Required View Functions
function totalSupply(uint256 _itemId) external view returns (uint256);
function balanceOf(uint256 _itemId, address _owner) external view returns (uint256);
function allowance(uint256 _itemId, address _owner, address _spender) external view returns (uint256);

// Optional View Functions
function name(uint256 _itemId) external view returns (string);
function symbol(uint256 _itemId) external view returns (string);
function decimals(uint256 _itemId) external view returns (uint8);

// Optional Functions for Non-Fungible Items
function ownerOf(uint256 _itemId) external view returns (address);
function itemURI(uint256 _itemId) external view returns (string);
function itemByIndex(uint256 _itemId, uint256 _index) external view returns (uint256);
function itemOfOwnerByIndex(uint256 _itemId, address _owner, uint256 _index) external view returns (uint256);
}



方法解释

ERC1155

  • transfer
    transfer(uint256[] _itemId, address[] _to, uint256[] _value)

    向目标地址 address[] _to 批量转账 uint256[] _itemId 资产。地址和资产数组的长度要一致,以便一一对应。
    必须同时触发 Transfer 事件。

  • transferFrom
    transferFrom(uint256[] _itemId, address[] _from, address[] _to, uint256[] _value)

    将把批量资产 _itemId[] 从一个或多个地址 _from[] 转移到指定的地址 _to[] 。地址和资产数组的长度要一致,以便一一对应。
    必须触发 Transfer 事件。

  • approve
    approve(uint256[] _itemId, address[] _spender, uint256[] _value)

    批准触发帐户能够代表另一个帐户 address[] _spender 转移批量资产 uint256[] _itemId (使用 transferFrom)。地址和资产数组的长度要一致,以便一一对应。
    必须触发 Approval 事件。

  • increaseApproval
    increaseApproval(uint256[] _itemId, address[] _spender, uint256[] _addedValue)

    增加一个或多个资产的授权量而不需要重置为 0.地址和资产数组的长度要一致,以便一一对应。
    必须触发 Approval 事件。

  • decreaseApproval

    降低一个或多个资产的授权量而不需要重置为 0.地址和资产数组的长度要一致,以便一一对应。
    必须触发 Approval 事件。

  • name
    name(uint256 _itemId)

    返回每个 itemId 资产对应的名称,本函数是可选的,但强烈建议要有。

  • symbol

    返回每个 itemId 资产对应的标识符,简称,本函数可选的。

  • decimals
    decimals(uint256 _itemId)

    返回每个 itemId 资产对应的精度,就是个位数后还有几位,本函数是可选的,但强烈建议要有。

  • totalSupply
    totalSupply(uint256 _itemId)

    返回每个 itemId 资产对应的供给总量。

  • balanceOf
    balanceOf(uint256 _itemId, address _owner)

    返回一个账号的 itemId 资产对应的余额量。

  • allowance
    allowance(uint256 _itemId, address _owner, address _spender)

    返回 approve 授权函数的授权量,是指管理账号 address _owner 授予消费账号 address _spender 对资产 uint256 _itemId 的授权量。

  • ownerOf
    ownerOf(uint256 _itemId)

    返回 NFT(非同质化)的特定资产 _itemId 对应的管理账号;
    本函数是可选的。

  • itemURI

    itemURI(uint256 _itemId)

    返回一个特定的 _itemId 资产的独特统一资源标识符[ a distinct Uniform Resource Identifier (URI) ]
    本函数是可选的。

  • itemByIndex
    itemByIndex(uint256 _itemId, uint256 _index)

    返回非同质化资产 _itemId 的 _index 位置的?
    本函数是可选的。

  • itemOfOwnerByIndex
    itemOfOwnerByIndex(uint256 _itemId, address _owner, uint256 _index)

    返回一个特定管理账号 address _owner 下的资产 _itemId 的索引 uint256 _index 的?
    本函数是可选的。

补充说明

differences


手写梳理(临时学习记录)

笔记 介绍
合约开发过程
思路
恒定积
uniswap1
uniswap2
cpi 指数
hardhat
blockchain