前言本文主要介绍以太坊ERC20、ERC721、RC1155三种代币标准相关介绍以及特点;ERC20代币标准概念:同质化代币标准(等值)核心方法:name():代币名称symbol():代币简写decimals():代币可以分割到的小数位数totalSupply():代
本文主要介绍以太坊ERC20、ERC721、RC1155三种代币标准相关介绍以及特点;
ERC20代币标准
概念:同质化代币标准(等值)<br/> 核心方法:<br/>
name()
: 代币名称symbol()
: 代币简写decimals()
: 代币可以分割到的小数位数totalSupply()
: 代币的总供应量balanceOf(address _owner)
: 特定地址所有者的代币余额transfer(address _to, uint256 _value)
: 从调用者的地址转移 指定量的代币到地址transferFrom(address _from, address _to, uint256 _value)
: 允许支出者 从账号1转移一定量的代币到账号2approve(address _spender, uint256 _value)
: 允许 支出者 从调用者的账户多次取回总共定量的代币allowance(address _owner, address _spender)
: 返回支出者仍然被允许从所有者提取的代币数量
核心事件:<br/>
Transfer(address indexed _from, address indexed _to, uint256 _value)
:在代币被转移时触发Approval(address indexed _owner, address indexed _spender, uint256 _value)
:调用 approve 方法时触发
补充:OpenZeppelin库中的ERC20已经非常全面可以在此基础上扩展
概念:非同质化代币(唯一性)
核心方法:<br/>
balanceOf(address _owner)
:该地址拥有的代币数量ownerOf(uint256 _tokenId)
:拥有此代币的地址safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data)
:安全地
将代币从一个地址转移到另一个地址transferFrom(address _from, address _to, uint256 _tokenId)
:将代币从一个地址转移到另一个地址approve(address _approved, uint256 _tokenId)
:授权某个地址管理特定的ERC721代币getApproved(uint256 _tokenId)
:获取被授权管理特定代币的地址setApprovalForAll(address _operator, bool _approved)
:将一个操作者地址设置为被批准或取消批准管理所有代币的权利isApprovedForAll(address _owner, address _operator)
:查询一个操作者是否被批准管理某个所有者的所有代币ERC721Metadata
是 ERC721 标准的一个非常重要的扩展 :增加了名字(name
)”、“符号(symbol
)”和“元数据(tokenURI
)”三个方法核心事件:<br/>
Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)
:在代币被转移时触发Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)
:在一个地址被授权管理另一个地址的特定代币时触发ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)
:当一个操作者被授权或取消授权管理某个所有者的所有代币时触发补充说明 :
一般情况下借助OpenZeppelin库中的ERC721,在开发nft合约时候需要配合ipfs去中心化服务用来存储元数据
概念:管理多种类型的代币(包含了同质化代币和非同质化) 主要函数:<br/>
balanceOf(account, id)
:查询帐户对于特定代币 id 的余额balanceOfBatch(accounts, ids)
:同时查询多个账户对于多个代币 id 的余额safeTransferFrom(from, to, id, amount, data)
:安全地从一个账户向另一个账户转移特定 id 的代币safeBatchTransferFrom(from, to, ids, amounts, data)
:批量转移多种代币从一个账号到另一个账号setApprovalForAll(address _operator, bool _approved)
:将一个操作者地址设置为被批准或取消批准管理所有代币的权利isApprovedForAll(address _owner, address _operator)
:查询一个操作者是否被批准管理某个所有者的所有代币元数据扩展:
# json文件
{
"name": "Magic Sword", // 代币的名称
"description": "A rare sword imbued with magical powers.", // 代币的描述
"image": "https://images.example/magicsword.png", //代币的图片链接可以通过ipfs上传文件生成
"properties": {
"damage": 35,
"magic": 50
} //额外信息的对象
}
补充说明:开发一般使用OpenZeppelin库中的ERC1155的库来开发
Ethereum 网络上最出名且应用最广的代币标准
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!