erc1155.test.ts.md•22 kB
# Snapshot report for `src/erc1155.test.ts`
The actual snapshot is saved in `erc1155.test.ts.snap`.
Generated by [AVA](https://avajs.dev).
## basic
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
␊
contract MyToken is ERC1155, Ownable {␊
constructor(address initialOwner)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
Ownable(initialOwner)␊
{}␊
␊
function setURI(string memory newuri) public onlyOwner {␊
_setURI(newuri);␊
}␊
}␊
`
## name is unicodeSafe
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
␊
contract MyTokec is ERC1155, Ownable {␊
constructor(address initialOwner)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
Ownable(initialOwner)␊
{}␊
␊
function setURI(string memory newuri) public onlyOwner {␊
_setURI(newuri);␊
}␊
}␊
`
## basic + roles
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
␊
contract MyToken is ERC1155, AccessControl {␊
bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
␊
constructor(address defaultAdmin)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
{␊
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
}␊
␊
function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {␊
_setURI(newuri);␊
}␊
␊
// The following functions are overrides required by Solidity.␊
␊
function supportsInterface(bytes4 interfaceId)␊
public␊
view␊
override(ERC1155, AccessControl)␊
returns (bool)␊
{␊
return super.supportsInterface(interfaceId);␊
}␊
}␊
`
## basic + managed
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
␊
contract MyToken is ERC1155, AccessManaged {␊
constructor(address initialAuthority)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
AccessManaged(initialAuthority)␊
{}␊
␊
function setURI(string memory newuri) public restricted {␊
_setURI(newuri);␊
}␊
}␊
`
## no updatable uri
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
␊
contract MyToken is ERC1155 {␊
constructor()␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
{}␊
}␊
`
## burnable
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
import {ERC1155Burnable} from "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol";␊
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
␊
contract MyToken is ERC1155, Ownable, ERC1155Burnable {␊
constructor(address initialOwner)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
Ownable(initialOwner)␊
{}␊
␊
function setURI(string memory newuri) public onlyOwner {␊
_setURI(newuri);␊
}␊
}␊
`
## pausable
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
import {ERC1155Pausable} from "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Pausable.sol";␊
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
␊
contract MyToken is ERC1155, Ownable, ERC1155Pausable {␊
constructor(address initialOwner)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
Ownable(initialOwner)␊
{}␊
␊
function setURI(string memory newuri) public onlyOwner {␊
_setURI(newuri);␊
}␊
␊
function pause() public onlyOwner {␊
_pause();␊
}␊
␊
function unpause() public onlyOwner {␊
_unpause();␊
}␊
␊
// The following functions are overrides required by Solidity.␊
␊
function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
internal␊
override(ERC1155, ERC1155Pausable)␊
{␊
super._update(from, to, ids, values);␊
}␊
}␊
`
## mintable
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
␊
contract MyToken is ERC1155, Ownable {␊
constructor(address initialOwner)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
Ownable(initialOwner)␊
{}␊
␊
function setURI(string memory newuri) public onlyOwner {␊
_setURI(newuri);␊
}␊
␊
function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
public␊
onlyOwner␊
{␊
_mint(account, id, amount, data);␊
}␊
␊
function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
public␊
onlyOwner␊
{␊
_mintBatch(to, ids, amounts, data);␊
}␊
}␊
`
## mintable + roles
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
␊
contract MyToken is ERC1155, AccessControl {␊
bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
␊
constructor(address defaultAdmin, address minter)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
{␊
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
_grantRole(MINTER_ROLE, minter);␊
}␊
␊
function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {␊
_setURI(newuri);␊
}␊
␊
function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
public␊
onlyRole(MINTER_ROLE)␊
{␊
_mint(account, id, amount, data);␊
}␊
␊
function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
public␊
onlyRole(MINTER_ROLE)␊
{␊
_mintBatch(to, ids, amounts, data);␊
}␊
␊
// The following functions are overrides required by Solidity.␊
␊
function supportsInterface(bytes4 interfaceId)␊
public␊
view␊
override(ERC1155, AccessControl)␊
returns (bool)␊
{␊
return super.supportsInterface(interfaceId);␊
}␊
}␊
`
## mintable + managed
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
␊
contract MyToken is ERC1155, AccessManaged {␊
constructor(address initialAuthority)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
AccessManaged(initialAuthority)␊
{}␊
␊
function setURI(string memory newuri) public restricted {␊
_setURI(newuri);␊
}␊
␊
function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
public␊
restricted␊
{␊
_mint(account, id, amount, data);␊
}␊
␊
function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
public␊
restricted␊
{␊
_mintBatch(to, ids, amounts, data);␊
}␊
}␊
`
## supply tracking
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
import {ERC1155Supply} from "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol";␊
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
␊
contract MyToken is ERC1155, Ownable, ERC1155Supply {␊
constructor(address initialOwner)␊
ERC1155("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/")␊
Ownable(initialOwner)␊
{}␊
␊
function setURI(string memory newuri) public onlyOwner {␊
_setURI(newuri);␊
}␊
␊
// The following functions are overrides required by Solidity.␊
␊
function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
internal␊
override(ERC1155, ERC1155Supply)␊
{␊
super._update(from, to, ids, values);␊
}␊
}␊
`
## full upgradeable transparent
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
import {ERC1155Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
import {ERC1155BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
import {ERC1155PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
␊
contract MyToken is Initializable, ERC1155Upgradeable, AccessControlUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable {␊
bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
␊
/// @custom:oz-upgrades-unsafe-allow constructor␊
constructor() {␊
_disableInitializers();␊
}␊
␊
function initialize(address defaultAdmin, address pauser, address minter)␊
public␊
initializer␊
{␊
__ERC1155_init("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/");␊
__AccessControl_init();␊
__ERC1155Pausable_init();␊
__ERC1155Burnable_init();␊
␊
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
_grantRole(PAUSER_ROLE, pauser);␊
_grantRole(MINTER_ROLE, minter);␊
}␊
␊
function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {␊
_setURI(newuri);␊
}␊
␊
function pause() public onlyRole(PAUSER_ROLE) {␊
_pause();␊
}␊
␊
function unpause() public onlyRole(PAUSER_ROLE) {␊
_unpause();␊
}␊
␊
function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
public␊
onlyRole(MINTER_ROLE)␊
{␊
_mint(account, id, amount, data);␊
}␊
␊
function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
public␊
onlyRole(MINTER_ROLE)␊
{␊
_mintBatch(to, ids, amounts, data);␊
}␊
␊
// The following functions are overrides required by Solidity.␊
␊
function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
internal␊
override(ERC1155Upgradeable, ERC1155PausableUpgradeable)␊
{␊
super._update(from, to, ids, values);␊
}␊
␊
function supportsInterface(bytes4 interfaceId)␊
public␊
view␊
override(ERC1155Upgradeable, AccessControlUpgradeable)␊
returns (bool)␊
{␊
return super.supportsInterface(interfaceId);␊
}␊
}␊
`
## full upgradeable uups
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
import {ERC1155Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
import {ERC1155BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
import {ERC1155PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
␊
contract MyToken is Initializable, ERC1155Upgradeable, AccessControlUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable, UUPSUpgradeable {␊
bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
bytes32 public constant UPGRADER_ROLE = keccak256("UPGRADER_ROLE");␊
␊
/// @custom:oz-upgrades-unsafe-allow constructor␊
constructor() {␊
_disableInitializers();␊
}␊
␊
function initialize(address defaultAdmin, address pauser, address minter, address upgrader)␊
public␊
initializer␊
{␊
__ERC1155_init("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/");␊
__AccessControl_init();␊
__ERC1155Pausable_init();␊
__ERC1155Burnable_init();␊
__UUPSUpgradeable_init();␊
␊
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
_grantRole(PAUSER_ROLE, pauser);␊
_grantRole(MINTER_ROLE, minter);␊
_grantRole(UPGRADER_ROLE, upgrader);␊
}␊
␊
function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {␊
_setURI(newuri);␊
}␊
␊
function pause() public onlyRole(PAUSER_ROLE) {␊
_pause();␊
}␊
␊
function unpause() public onlyRole(PAUSER_ROLE) {␊
_unpause();␊
}␊
␊
function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
public␊
onlyRole(MINTER_ROLE)␊
{␊
_mint(account, id, amount, data);␊
}␊
␊
function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
public␊
onlyRole(MINTER_ROLE)␊
{␊
_mintBatch(to, ids, amounts, data);␊
}␊
␊
function _authorizeUpgrade(address newImplementation)␊
internal␊
override␊
onlyRole(UPGRADER_ROLE)␊
{}␊
␊
// The following functions are overrides required by Solidity.␊
␊
function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
internal␊
override(ERC1155Upgradeable, ERC1155PausableUpgradeable)␊
{␊
super._update(from, to, ids, values);␊
}␊
␊
function supportsInterface(bytes4 interfaceId)␊
public␊
view␊
override(ERC1155Upgradeable, AccessControlUpgradeable)␊
returns (bool)␊
{␊
return super.supportsInterface(interfaceId);␊
}␊
}␊
`
## full upgradeable transparent with managed
> Snapshot 1
`// SPDX-License-Identifier: MIT␊
// Compatible with OpenZeppelin Contracts ^5.4.0␊
pragma solidity ^0.8.27;␊
␊
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";␊
import {ERC1155Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
import {ERC1155BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
import {ERC1155PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
␊
contract MyToken is Initializable, ERC1155Upgradeable, AccessManagedUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable, UUPSUpgradeable {␊
/// @custom:oz-upgrades-unsafe-allow constructor␊
constructor() {␊
_disableInitializers();␊
}␊
␊
function initialize(address initialAuthority) public initializer {␊
__ERC1155_init("https://gateway.pinata.cloud/ipfs/QmcP9hxrnC1T5ATPmq2saFeAM1ypFX9BnAswCdHB9JCjLA/");␊
__AccessManaged_init(initialAuthority);␊
__ERC1155Pausable_init();␊
__ERC1155Burnable_init();␊
__UUPSUpgradeable_init();␊
}␊
␊
function setURI(string memory newuri) public restricted {␊
_setURI(newuri);␊
}␊
␊
function pause() public restricted {␊
_pause();␊
}␊
␊
function unpause() public restricted {␊
_unpause();␊
}␊
␊
function mint(address account, uint256 id, uint256 amount, bytes memory data)␊
public␊
restricted␊
{␊
_mint(account, id, amount, data);␊
}␊
␊
function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)␊
public␊
restricted␊
{␊
_mintBatch(to, ids, amounts, data);␊
}␊
␊
function _authorizeUpgrade(address newImplementation)␊
internal␊
override␊
restricted␊
{}␊
␊
// The following functions are overrides required by Solidity.␊
␊
function _update(address from, address to, uint256[] memory ids, uint256[] memory values)␊
internal␊
override(ERC1155Upgradeable, ERC1155PausableUpgradeable)␊
{␊
super._update(from, to, ids, values);␊
}␊
}␊
`