change sth

This commit is contained in:
CounterFire2023 2023-07-13 10:28:16 +08:00
parent c91d36cb33
commit a17b99a390
6 changed files with 8192 additions and 8170 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,85 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
import "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
import "../interfaces/IAsset.sol";
import "../interfaces/IBEERC721.sol";
import "../utils/UInt.sol";
contract AirdropNft is AccessControlEnumerable {
using UInt for uint256;
bytes32 public constant MANAGE_ROLE = keccak256("MANAGE_ROLE");
event EventDrop(
address indexed nftAddress,
uint256 indexed serialNum,
uint256 firstTokenId,
uint256 batchSize
);
constructor(address[] memory _manageAddress) {
// Set up the ADMIN_ROLE and MANAGE_ROLE
_setRoleAdmin(MANAGE_ROLE, DEFAULT_ADMIN_ROLE);
// Grant the ADMIN_ROLE to the deployer and to the contract itself
_setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
// Grant the MANAGE_ROLE to the specified address
for (uint256 i = 0; i < _manageAddress.length; ++i) {
_setupRole(MANAGE_ROLE, _manageAddress[i]);
}
}
/**
* @dev Modifier that checks if the caller has the MANAGE_ROLE.
*
* The function uses the _checkRole() function from the AccessControl library.
* If the check is successful, the code defined by the function that uses this modifier is executed.
*/
modifier onlyManager() {
// Check if the caller has the MANAGE_ROLE
_checkRole(MANAGE_ROLE, _msgSender());
// If the check is successful, execute the code in the function that uses this modifier
_;
}
function dropMintNft(
address tokenAddr,
uint256 serialNum,
address[] memory _recipients,
uint256[] memory _amounts
) public onlyManager returns (bool) {
require(_recipients.length == _amounts.length, "ERC:length mismatch");
uint256 beginToken = 0;
uint256 batchSize = 0;
for (uint16 i = 0; i < _recipients.length; i++) {
uint256[] memory _nftIds = IBEERC721(tokenAddr).batchMint(
_recipients[i],
_amounts[i]
);
batchSize += _amounts[i];
if (i == 0) {
beginToken = _nftIds[0];
}
}
emit EventDrop(tokenAddr, serialNum, beginToken, batchSize);
return true;
}
function dropMintAsset(
address tokenAddr,
uint256 serialNum,
address[] memory _recipients,
uint256[] memory _tokenIds
) external onlyManager returns (bool) {
require(_recipients.length == _tokenIds.length, "ERC:length mismatch");
uint256 beginToken = _tokenIds[0];
for (uint16 i = 0; i < _recipients.length; i++) {
IAsset(tokenAddr).batchMint(
_recipients[i],
_tokenIds[i].asSingletonArray()
);
}
emit EventDrop(tokenAddr, serialNum, beginToken, _tokenIds.length);
return true;
}
}

View File

@ -23,8 +23,6 @@ contract ClaimBoxFactory is HasSignature, TimeChecker {
uint256 tokenId
);
constructor() HasSignature("ClaimBoxFactory", "1") {}
function addTokenSupport(address nftToken) external onlyOwner {
tokenSupported[nftToken] = true;
}

View File

@ -3,7 +3,7 @@ pragma solidity 0.8.10;
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract HasSignature is Ownable {
contract HasSignature712 is Ownable {
bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;
uint256 private immutable _CACHED_CHAIN_ID;
address private immutable _CACHED_THIS;

View File

@ -81,5 +81,4 @@ module.exports = async function (deployer, network, accounts) {
walletInstance.address
);
console.log("success add distributor to badge's mint role");
jetpack.write("./out.json", cfgs);
};

View File

@ -94,5 +94,23 @@
"type": "logic",
"json": "assets/contracts/JSONMetadata.json",
"address": "0xfba1F2861718993B94edd5DCe1D06b3Cbe19353d"
},
{
"name": "BEMultiSigWallet",
"type": "logic",
"json": "assets/contracts/BEMultiSigWallet.json",
"address": "0xE68F149daF2F314d9960c08496D8701BC7671850"
},
{
"name": "TestBadge",
"type": "erc721",
"json": "assets/contracts/BEBadge.json",
"address": "0x2d3Afa678F777Df6b59186A54E5427c3527C637c"
},
{
"name": "AridropNft",
"type": "logic",
"json": "assets/contracts/AridropNft.json",
"address": "0x95DD930634694709425d9a929619B3c653C85F73"
}
]