"VM Exception when processing transaction: revert"是一个在使用OpenZeppelin ERC721合约进行铸造(mint)操作时可能出现的错误信息。该错误信息表示在处理交易时发生了虚拟机异常,并且交易被回滚(revert)了。 这个错误通常是由于...
我们将按照ERC-721标准进行开发, 这大大便利了我们的开发流程. 在这个基础上, 我们可以借助OpenZeppelin所实现的ERC-721标准进一步地做到快速开发. 在IDE的终端中输入:$ npm install @openzeppelin/contracts@2.3.0 --save 如果安装不成功, 可以尝试$ sudo npm install @openzeppelin/contracts 安装成功后可以在package...
pragma solidity^0.6.0;import"@openzeppelin/contracts/token/ERC721/ERC721.sol";import"@openzeppelin/contracts/utils/Counters.sol"contract UniqueAsset isERC721{constructor()publicERC721("UniqueAsset","UNA"){}} 我们需要指定 solidity 的版本(或兼容的版本)这里使用的是^0.6.0,通过编辑truffle-config.js文...
ERC721A 的改进 从Openzeppelin 的实现缺点来看,其主要缺点在于没有提供批量 Mint 的 API,使得用户批量 Mint 时,其算法复杂度达到 O(N).故 ERC721A 提出了一种批量 Mint 的 API,使得其算法复杂度降为 O(1). 最简单的想法: 最简单的想法莫过于直接修改_mint 函数,将批量 mint 的数量也作为参数传入,然后...
围绕 ERC721 的生态环境也在快速完善。很多智能合约第三方库,如 OpenZeppelin 也提供了对 ERC721的支持,让开发者可以轻松地在自己的产品中添加不可替换代币。来自 0x 交易所的工程师已经计划支持 ERC721 代币,这样ERC721 代币将能够和 ERC20 自由无缝互换。加密猫是 ERC721 标准的第一次应用,它的火爆显示了...
为了防止溢出,OpenZeppelin 建立了一个叫做 SafeMath 的库(library),默认情况下可以防止这些问题。 一个_库_ 是 Solidity 中一种特殊的合约。其中一个有用的功能是给原始数据类型增加一些方法。 比如,使用 SafeMath 库的时候,我们将使用 using SafeMath for uint256 这样的语法。 SafeMath 库有四个方法 — add, ...
Github上已经有ERC721的实现了,地址:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol 不过这是solidity的实现,并且基于公链,如果要基于联盟链,可以看一下我的这篇文章基于Hyperledger Fabric实现ERC721 参考 https://github.com/ethereum/EIPs/blob/master/EIPS...
OpenZeppelin(之前称为Zeppelin)是一个开源项目,专注于创立平安的区块链合约。其中,ERC721是一个十分受欢送的规范,用于创立非同质化代币(NFTs)。以下是关于OpenZeppelin中ERC721类库的扼要引见和一个简单的代码示例。ERC721类库引见:ERC721规范定义了非同质化代币的根本功用和事情。每个ERC721代币都是无独有偶的...
@openzeppelin 版本4.5.0 核心实现接口包括: IERC721: 定义了 Token 层面的通用属性,包括持有查询/余额查询/转账/转账授权等。 IERC165: 判断合约是否实现了某个接口。 ERC721Metadata: Metadata 层面的通用属性,包括token名称/存储地址(metadata URI)等。
注意: ERC721目前是一个 草稿,还没有正式商定的实现。在本教程中,我们使用的是 OpenZeppelin 库中的当前版本,但在未来正式发布之前它可能会有更改。 所以把这 一个 可能的实现当作考虑,但不要把它作为 ERC721 代币的官方标准。 实现一个代币合约 在实现一个代币合约的时候,我们首先要做的是将接口复制到它自己...