1155合约完成
This commit is contained in:
@@ -958,7 +958,7 @@ abstract contract Ownable is Context {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contract JZBG1155 is
|
contract JZBG is
|
||||||
ERC1155,
|
ERC1155,
|
||||||
ERC1155Burnable,
|
ERC1155Burnable,
|
||||||
ERC1155Pausable,
|
ERC1155Pausable,
|
||||||
@@ -969,6 +969,17 @@ contract JZBG1155 is
|
|||||||
{
|
{
|
||||||
using Strings for uint256;
|
using Strings for uint256;
|
||||||
|
|
||||||
|
uint256 private _total;
|
||||||
|
uint256 private _count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Jing Zhong Bao Guo,JZBG,https://ipfs.jzbg.org/
|
||||||
|
* MINT: 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,1,1234
|
||||||
|
* 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,1,1234567890
|
||||||
|
* TRANSFER: 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,1,5,0x
|
||||||
|
* mintBatch: 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,[1,2,3,4],[100,2000,30000,400000]
|
||||||
|
* safeTransferToAddresses: 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,[0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,0x4B20993Bc481177ec7E8f571ceCaE8A9e22C02db,0x78731D3Ca6b7E34aC0F824c42a7cC18A495cabaB],1,200
|
||||||
|
*/
|
||||||
constructor(
|
constructor(
|
||||||
string memory name_,
|
string memory name_,
|
||||||
string memory symbol_,
|
string memory symbol_,
|
||||||
@@ -989,53 +1000,56 @@ contract JZBG1155 is
|
|||||||
_setBaseURI(baseURI);
|
_setBaseURI(baseURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 获取所有的token发行总数
|
||||||
|
*/
|
||||||
|
function totalSupply() public view virtual returns (uint256) {
|
||||||
|
return _total;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 获取已发行的TOKEN种类数量
|
||||||
|
*/
|
||||||
|
function tokenIdsTracker() public view virtual returns (uint256) {
|
||||||
|
return _count;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 清空owner,重写了,防止误操作
|
||||||
|
*/
|
||||||
function renounceOwnership() public virtual override onlyOwner {}
|
function renounceOwnership() public virtual override onlyOwner {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 增发
|
||||||
|
*/
|
||||||
function mint(
|
function mint(
|
||||||
address to_,
|
address to_,
|
||||||
uint256 tokenId_,
|
uint256 tokenId_,
|
||||||
uint256 amount_,
|
uint256 amount_
|
||||||
string memory uri_
|
|
||||||
) public virtual onlyOwner {
|
) public virtual onlyOwner {
|
||||||
_mint(to_, tokenId_, amount_, "");
|
_mint(to_, tokenId_, amount_, "");
|
||||||
if (bytes(uri_).length > 0) {
|
|
||||||
_setURI(tokenId_, uri_);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 批量增发
|
||||||
|
*/
|
||||||
function bacthAddressMint(
|
function bacthAddressMint(
|
||||||
address to_,
|
address to_,
|
||||||
uint256[] memory tokenIds_,
|
uint256[] memory tokenIds_,
|
||||||
uint256[] memory amounts_,
|
uint256[] memory amounts_
|
||||||
string[] memory uris_
|
) public virtual onlyOwner {
|
||||||
) public virtual {
|
|
||||||
require(
|
|
||||||
tokenIds_.length == amounts_.length,
|
|
||||||
"The tokenIds and Amounts are not match"
|
|
||||||
);
|
|
||||||
|
|
||||||
if (uris_.length > 0) {
|
|
||||||
require(
|
|
||||||
tokenIds_.length == uris_.length,
|
|
||||||
"The ids and uris are not match"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
_mintBatch(to_, tokenIds_, amounts_, "");
|
_mintBatch(to_, tokenIds_, amounts_, "");
|
||||||
|
|
||||||
if (uris_.length > 0) {
|
|
||||||
for (uint256 i = 0; i < tokenIds_.length; i++) {
|
|
||||||
_setURI(tokenIds_[i], uris_[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 批量给地址增发同一种代币
|
||||||
|
*/
|
||||||
function batchAddressesMint(
|
function batchAddressesMint(
|
||||||
address[] memory tos_,
|
address[] memory tos_,
|
||||||
uint256 tokenId_,
|
uint256 tokenId_,
|
||||||
uint256 amount_,
|
uint256 amount_,
|
||||||
string memory uri_
|
string memory uri_
|
||||||
) public virtual {
|
) public virtual onlyOwner {
|
||||||
for (uint256 i = 0; i < tos_.length; i++) {
|
for (uint256 i = 0; i < tos_.length; i++) {
|
||||||
_mint(tos_[i], tokenId_, amount_, "");
|
_mint(tos_[i], tokenId_, amount_, "");
|
||||||
}
|
}
|
||||||
@@ -1045,6 +1059,9 @@ contract JZBG1155 is
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev See {IERC1155-safeBatchTransferFrom}.
|
||||||
|
*/
|
||||||
function safeTransferToAddresses(
|
function safeTransferToAddresses(
|
||||||
address from_,
|
address from_,
|
||||||
address[] memory tos_,
|
address[] memory tos_,
|
||||||
@@ -1067,10 +1084,16 @@ contract JZBG1155 is
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 暂停交易
|
||||||
|
*/
|
||||||
function pause() public virtual whenNotPaused onlyOwner {
|
function pause() public virtual whenNotPaused onlyOwner {
|
||||||
_pause();
|
_pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 恢复交易
|
||||||
|
*/
|
||||||
function unpause() public virtual whenPaused onlyOwner {
|
function unpause() public virtual whenPaused onlyOwner {
|
||||||
_unpause();
|
_unpause();
|
||||||
}
|
}
|
||||||
@@ -1083,7 +1106,6 @@ contract JZBG1155 is
|
|||||||
uint256[] memory amounts,
|
uint256[] memory amounts,
|
||||||
bytes memory data
|
bytes memory data
|
||||||
) internal virtual override(ERC1155, ERC1155Supply, ERC1155Pausable) {
|
) internal virtual override(ERC1155, ERC1155Supply, ERC1155Pausable) {
|
||||||
ERC1155._beforeTokenTransfer(operator, from, to, ids, amounts, data);
|
|
||||||
ERC1155Pausable._beforeTokenTransfer(
|
ERC1155Pausable._beforeTokenTransfer(
|
||||||
operator,
|
operator,
|
||||||
from,
|
from,
|
||||||
@@ -1092,6 +1114,15 @@ contract JZBG1155 is
|
|||||||
amounts,
|
amounts,
|
||||||
data
|
data
|
||||||
);
|
);
|
||||||
|
// 记录增发数量
|
||||||
|
if (from == address(0)) {
|
||||||
|
for (uint256 i = 0; i < ids.length; ++i) {
|
||||||
|
if (!ERC1155Supply.exists(ids[i])) {
|
||||||
|
_count++;
|
||||||
|
}
|
||||||
|
_total += amounts[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
ERC1155Supply._beforeTokenTransfer(
|
ERC1155Supply._beforeTokenTransfer(
|
||||||
operator,
|
operator,
|
||||||
from,
|
from,
|
||||||
@@ -1100,6 +1131,15 @@ contract JZBG1155 is
|
|||||||
amounts,
|
amounts,
|
||||||
data
|
data
|
||||||
);
|
);
|
||||||
|
// 燃烧的时候减少数量
|
||||||
|
if (to == address(0)) {
|
||||||
|
for (uint256 i = 0; i < ids.length; ++i) {
|
||||||
|
if (!ERC1155Supply.exists(ids[i])) {
|
||||||
|
_count--;
|
||||||
|
}
|
||||||
|
_total -= amounts[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function uri(uint256 tokenId)
|
function uri(uint256 tokenId)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import "@openzeppelin/contracts/access/Ownable.sol";
|
|||||||
import "@openzeppelin/contracts/utils/Strings.sol";
|
import "@openzeppelin/contracts/utils/Strings.sol";
|
||||||
import "../common/Symbolable.sol";
|
import "../common/Symbolable.sol";
|
||||||
|
|
||||||
contract JZBG1155 is
|
contract JZBG is
|
||||||
ERC1155,
|
ERC1155,
|
||||||
ERC1155Burnable,
|
ERC1155Burnable,
|
||||||
ERC1155Pausable,
|
ERC1155Pausable,
|
||||||
@@ -22,9 +22,12 @@ contract JZBG1155 is
|
|||||||
{
|
{
|
||||||
using Strings for uint256;
|
using Strings for uint256;
|
||||||
|
|
||||||
|
uint256 private _total;
|
||||||
|
uint256 private _count;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Jing Zhong Bao Guo,JZBG,https://jzbg.org/
|
* @dev Jing Zhong Bao Guo,JZBG,https://ipfs.jzbg.org/
|
||||||
* 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,1,1234
|
* MINT: 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,1,1234
|
||||||
* 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,1,1234567890
|
* 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,1,1234567890
|
||||||
* TRANSFER: 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,1,5,0x
|
* TRANSFER: 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,1,5,0x
|
||||||
* mintBatch: 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,[1,2,3,4],[100,2000,30000,400000]
|
* mintBatch: 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2,[1,2,3,4],[100,2000,30000,400000]
|
||||||
@@ -50,6 +53,20 @@ contract JZBG1155 is
|
|||||||
_setBaseURI(baseURI);
|
_setBaseURI(baseURI);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 获取所有的token发行总数
|
||||||
|
*/
|
||||||
|
function totalSupply() public view virtual returns (uint256) {
|
||||||
|
return _total;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev 获取已发行的TOKEN种类数量
|
||||||
|
*/
|
||||||
|
function tokenIdsTracker() public view virtual returns (uint256) {
|
||||||
|
return _count;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev 清空owner,重写了,防止误操作
|
* @dev 清空owner,重写了,防止误操作
|
||||||
*/
|
*/
|
||||||
@@ -61,13 +78,9 @@ contract JZBG1155 is
|
|||||||
function mint(
|
function mint(
|
||||||
address to_,
|
address to_,
|
||||||
uint256 tokenId_,
|
uint256 tokenId_,
|
||||||
uint256 amount_,
|
uint256 amount_
|
||||||
string memory uri_
|
|
||||||
) public virtual onlyOwner {
|
) public virtual onlyOwner {
|
||||||
_mint(to_, tokenId_, amount_, "");
|
_mint(to_, tokenId_, amount_, "");
|
||||||
if (bytes(uri_).length > 0) {
|
|
||||||
_setURI(tokenId_, uri_);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -76,28 +89,9 @@ contract JZBG1155 is
|
|||||||
function bacthAddressMint(
|
function bacthAddressMint(
|
||||||
address to_,
|
address to_,
|
||||||
uint256[] memory tokenIds_,
|
uint256[] memory tokenIds_,
|
||||||
uint256[] memory amounts_,
|
uint256[] memory amounts_
|
||||||
string[] memory uris_
|
|
||||||
) public virtual onlyOwner {
|
) public virtual onlyOwner {
|
||||||
require(
|
|
||||||
tokenIds_.length == amounts_.length,
|
|
||||||
"The tokenIds and Amounts are not match"
|
|
||||||
);
|
|
||||||
|
|
||||||
if (uris_.length > 0) {
|
|
||||||
require(
|
|
||||||
tokenIds_.length == uris_.length,
|
|
||||||
"The ids and uris are not match"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
_mintBatch(to_, tokenIds_, amounts_, "");
|
_mintBatch(to_, tokenIds_, amounts_, "");
|
||||||
|
|
||||||
if (uris_.length > 0) {
|
|
||||||
for (uint256 i = 0; i < tokenIds_.length; i++) {
|
|
||||||
_setURI(tokenIds_[i], uris_[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -165,7 +159,6 @@ contract JZBG1155 is
|
|||||||
uint256[] memory amounts,
|
uint256[] memory amounts,
|
||||||
bytes memory data
|
bytes memory data
|
||||||
) internal virtual override(ERC1155, ERC1155Supply, ERC1155Pausable) {
|
) internal virtual override(ERC1155, ERC1155Supply, ERC1155Pausable) {
|
||||||
ERC1155._beforeTokenTransfer(operator, from, to, ids, amounts, data);
|
|
||||||
ERC1155Pausable._beforeTokenTransfer(
|
ERC1155Pausable._beforeTokenTransfer(
|
||||||
operator,
|
operator,
|
||||||
from,
|
from,
|
||||||
@@ -174,6 +167,15 @@ contract JZBG1155 is
|
|||||||
amounts,
|
amounts,
|
||||||
data
|
data
|
||||||
);
|
);
|
||||||
|
// 记录增发数量
|
||||||
|
if (from == address(0)) {
|
||||||
|
for (uint256 i = 0; i < ids.length; ++i) {
|
||||||
|
if (!ERC1155Supply.exists(ids[i])) {
|
||||||
|
_count++;
|
||||||
|
}
|
||||||
|
_total += amounts[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
ERC1155Supply._beforeTokenTransfer(
|
ERC1155Supply._beforeTokenTransfer(
|
||||||
operator,
|
operator,
|
||||||
from,
|
from,
|
||||||
@@ -182,6 +184,15 @@ contract JZBG1155 is
|
|||||||
amounts,
|
amounts,
|
||||||
data
|
data
|
||||||
);
|
);
|
||||||
|
// 燃烧的时候减少数量
|
||||||
|
if (to == address(0)) {
|
||||||
|
for (uint256 i = 0; i < ids.length; ++i) {
|
||||||
|
if (!ERC1155Supply.exists(ids[i])) {
|
||||||
|
_count--;
|
||||||
|
}
|
||||||
|
_total -= amounts[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function uri(uint256 tokenId)
|
function uri(uint256 tokenId)
|
||||||
|
|||||||
Reference in New Issue
Block a user