使用prettier格式化代码

This commit is contained in:
cebgcontract 2022-08-18 10:54:42 +08:00
parent cbf5712881
commit 69681b8106
28 changed files with 1632 additions and 1579 deletions

15
.prettierrc.json Normal file
View File

@ -0,0 +1,15 @@
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false,
"explicitTypes": "always"
}
}
]
}

View File

@ -3,7 +3,7 @@ pragma solidity 0.8.10;
contract Migrations {
address public owner = msg.sender;
uint public last_completed_migration;
uint256 public last_completed_migration;
modifier restricted() {
require(
@ -13,7 +13,7 @@ contract Migrations {
_;
}
function setCompleted(uint completed) external restricted {
function setCompleted(uint256 completed) external restricted {
last_completed_migration = completed;
}

View File

@ -7,20 +7,24 @@ contract BETimelockController is TimelockController {
uint256 public constant MAX_DELAY = 16 days;
uint256 private _minDelay;
constructor(
address[] memory proposers,
address[] memory executors)
TimelockController(MIN_DELAY, proposers, executors){
constructor(address[] memory proposers, address[] memory executors)
TimelockController(MIN_DELAY, proposers, executors)
{
_minDelay = MIN_DELAY;
}
/**
* @dev Returns the minimum delay for an operation to become valid.
*
* This value can be changed by executing an operation that calls `updateDelay`.
*/
function getMinDelay() public view virtual override returns (uint256 duration) {
function getMinDelay()
public
view
virtual
override
returns (uint256 duration)
{
return _minDelay;
}
@ -35,11 +39,19 @@ contract BETimelockController is TimelockController {
* an operation where the timelock is the target and the data is the ABI-encoded call to this function.
*/
function updateDelay(uint256 newDelay) external virtual override {
require(msg.sender == address(this), "BETimelockController: caller must be timelock");
require(newDelay >= MIN_DELAY, "BETimelockController: newDelay must greater than or equal to MIN_DELAY");
require(newDelay <= MAX_DELAY, "BETimelockController: newDelay must less than or equal to MAX_DELAY");
require(
msg.sender == address(this),
"BETimelockController: caller must be timelock"
);
require(
newDelay >= MIN_DELAY,
"BETimelockController: newDelay must greater than or equal to MIN_DELAY"
);
require(
newDelay <= MAX_DELAY,
"BETimelockController: newDelay must less than or equal to MAX_DELAY"
);
emit MinDelayChange(_minDelay, newDelay);
_minDelay = newDelay;
}
}

View File

@ -53,17 +53,10 @@ contract HasSignature is Ownable, Approval{
* @dev Returns the domain separator for the current chain.
*/
function _domainSeparatorV4() internal view returns (bytes32) {
if (
address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID
) {
if (address(this) == _CACHED_THIS && block.chainid == _CACHED_CHAIN_ID) {
return _CACHED_DOMAIN_SEPARATOR;
} else {
return
_buildDomainSeparator(
_TYPE_HASH,
_HASHED_NAME,
_HASHED_VERSION
);
return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);
}
}
@ -108,32 +101,26 @@ contract HasSignature is Ownable, Approval{
bytes memory signature
) public pure {
require(signature.length == 65, "[BE] invalid signature length");
bytes32 ethSignedMessageHash = ECDSA.toEthSignedMessageHash(
hash
);
bytes32 ethSignedMessageHash = ECDSA.toEthSignedMessageHash(hash);
address recovered = ECDSA.recover(ethSignedMessageHash, signature);
require(recovered == signer, "[BE] invalid signature");
}
modifier signatureValid(
bytes calldata signature
) {
modifier signatureValid(bytes calldata signature) {
require(
!_usedSignatures[signature],
"signature used. please send another transaction with new signature"
);
_;
}
/**
* @dev mark signature used
*/
function useSignature(
bytes calldata signature
) public approvaled {
function useSignature(bytes calldata signature) public approvaled {
if (!_usedSignatures[signature]) {
_usedSignatures[signature] = true;
}
}
}

View File

@ -17,7 +17,10 @@ interface IBEERC1155 is IERC1155 {
uint256[] memory values
) external;
function balanceOf(address account, uint256 id) external view returns (uint256);
function balanceOf(address account, uint256 id)
external
view
returns (uint256);
function canMint(uint256 id) external view returns (bool);
}

View File

@ -3,10 +3,10 @@ pragma solidity 0.8.10;
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
interface IBEERC721 is IERC721 {
function mint(address to, uint256 tokenId) external;
function burn(address owner, uint256 tokenId) external;
function ownerOf(uint256 tokenId) external view returns (address owner);
}

View File

@ -21,7 +21,5 @@ interface IEvolveFactory {
bytes calldata signature
) external;
function useSignature(
bytes calldata signature
) external;
function useSignature(bytes calldata signature) external;
}

View File

@ -18,14 +18,9 @@ contract EvolveFactory is Ownable, TimeChecker, Initializable, HasSignature {
address public executor;
event TokenEvolved(
address indexed owner,
uint256[] tokenIds
);
event TokenEvolved(address indexed owner, uint256[] tokenIds);
constructor()
HasSignature("EvolveFactory", "1"){
}
constructor() HasSignature("EvolveFactory", "1") {}
function init(address chipAddress) external initializer onlyOwner {
chip = IBEERC1155(chipAddress);
@ -35,7 +30,7 @@ contract EvolveFactory is Ownable, TimeChecker, Initializable, HasSignature {
* @dev update executor
*/
function updateExecutor(address account) external onlyOwner {
require(account != address(0), 'address can not be zero');
require(account != address(0), "address can not be zero");
executor = account;
}
@ -83,15 +78,14 @@ contract EvolveFactory is Ownable, TimeChecker, Initializable, HasSignature {
nft.burn(to, tokenIds[1]);
if (tokenIds[2] > 0) {
uint256 amount = 1;
chip.burnBatch(to,
chip.burnBatch(
to,
tokenIds[2].asSingletonArray(),
amount.asSingletonArray());
amount.asSingletonArray()
);
}
useSignature(signature);
emit TokenEvolved(
to,
signArray
);
emit TokenEvolved(to, signArray);
}
function evolveChip(
@ -115,14 +109,16 @@ contract EvolveFactory is Ownable, TimeChecker, Initializable, HasSignature {
amounts[i - 1] = 1;
}
}
bytes32 criteriaMessageHash = getMessageHash(to, startTime, saltNonce, tokenIds);
bytes32 criteriaMessageHash = getMessageHash(
to,
startTime,
saltNonce,
tokenIds
);
checkSigner(executor, criteriaMessageHash, signature);
chip.burnBatch(to, idsForBurn, amounts);
useSignature(signature);
emit TokenEvolved(
to,
tokenIds
);
emit TokenEvolved(to, tokenIds);
}
function getMessageHash(
@ -138,5 +134,4 @@ contract EvolveFactory is Ownable, TimeChecker, Initializable, HasSignature {
}
return keccak256(encoded);
}
}

View File

@ -12,7 +12,13 @@ import "../utils/TimeChecker.sol";
import "../core/HasSignature.sol";
import "./FactoryBase.sol";
contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasSignature {
contract MinterFactory is
Ownable,
FactoryBase,
TimeChecker,
Initializable,
HasSignature
{
using UInt for uint256;
using SafeERC20 for IERC20;
address public executor;
@ -30,7 +36,6 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
uint256 indexed tokenId
);
event TokenMintedBatch(
address contractAddress,
address indexed to,
@ -38,7 +43,6 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
uint256[] amounts
);
constructor() HasSignature("MinterFactory", "1") {}
function init(address[4] calldata _erc721s) external initializer onlyOwner {
@ -48,7 +52,6 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
shard = IBEERC1155(_erc721s[3]);
}
/**
* @dev update executor
*/
@ -58,7 +61,10 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
}
function setFeeToAddress(address _feeToAddress) external onlyOwner {
require(_feeToAddress != address(0), 'fee received address can not be zero');
require(
_feeToAddress != address(0),
"fee received address can not be zero"
);
feeToAddress = _feeToAddress;
}
@ -93,10 +99,7 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
/**
* @dev batch mint 1155 Chip to user
*/
function mintChipBatch(address to, uint256[] memory ids)
external
onlyOwner
{
function mintChipBatch(address to, uint256[] memory ids) external onlyOwner {
require(
to != address(0),
"MinterFactory::mintChipBatch: to address can not be zero"
@ -140,8 +143,13 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
) external signatureValid(signature) timeValid(startTime) {
uint256[] memory signArray = new uint256[](1);
signArray[0] = id;
bytes32 criteriaMessageHash =
getMessageHash(to, address(nft), startTime, saltNonce, signArray);
bytes32 criteriaMessageHash = getMessageHash(
to,
address(nft),
startTime,
saltNonce,
signArray
);
checkSigner(executor, criteriaMessageHash, signature);
mint721NFT(to, id, nft);
useSignature(signature);
@ -171,8 +179,13 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
signArray[i * 2] = ids[i];
signArray[i * 2 + 1] = amounts[i];
}
bytes32 criteriaMessageHash =
getMessageHash(to, address(nft), startTime, saltNonce, signArray);
bytes32 criteriaMessageHash = getMessageHash(
to,
address(nft),
startTime,
saltNonce,
signArray
);
checkSigner(executor, criteriaMessageHash, signature);
mint1155NFTBatch(to, ids, amounts, nft);
useSignature(signature);
@ -200,8 +213,11 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
signArray[i * 2] = ids[i];
signArray[i * 2 + 1] = amounts[i];
}
bytes32 criteriaMessageHash =
getShardMixHash(param, address(nft), signArray);
bytes32 criteriaMessageHash = getShardMixHash(
param,
address(nft),
signArray
);
checkSigner(executor, criteriaMessageHash, signature);
// Check payment approval and buyer balance
IERC20 paymentContract = IERC20(param.payToken);
@ -214,11 +230,7 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
"MinterFactory: doesn't approve MinterFactory to spend payment amount"
);
// transfer money to address
paymentContract.safeTransferFrom(
param.to,
feeToAddress,
param.payAmount
);
paymentContract.safeTransferFrom(param.to, feeToAddress, param.payAmount);
shard.burnBatch(param.to, ids, amounts);
mint721NFT(param.to, param.nftId, nft);
useSignature(signature);
@ -255,7 +267,6 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
emit TokenMintedBatch(address(nft), to, ids, amounts);
}
function getMessageHash(
address _to,
address _nftAddress,
@ -263,8 +274,12 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
uint256 _saltNonce,
uint256[] memory _ids
) public pure returns (bytes32) {
bytes memory encoded =
abi.encodePacked(_to, _nftAddress, _startTime, _saltNonce);
bytes memory encoded = abi.encodePacked(
_to,
_nftAddress,
_startTime,
_saltNonce
);
uint256 len = _ids.length;
for (uint256 i = 0; i < len; ++i) {
encoded = bytes.concat(encoded, abi.encodePacked(_ids[i]));
@ -277,8 +292,7 @@ contract MinterFactory is Ownable, FactoryBase, TimeChecker, Initializable, HasS
address nftAddress,
uint256[] memory _ids
) internal pure returns (bytes32) {
bytes memory encoded =
abi.encodePacked(
bytes memory encoded = abi.encodePacked(
param.to,
nftAddress,
param.nftId,

View File

@ -38,11 +38,7 @@ contract MysteryBoxProxy is Ownable, Initializable, HasSignature {
constructor() HasSignature("MysteryBoxProxy", "1") {}
function init(address[4] calldata _erc721s)
external
initializer
onlyOwner
{
function init(address[4] calldata _erc721s) external initializer onlyOwner {
hero = IBEERC721(_erc721s[0]);
equip = IBEERC721(_erc721s[1]);
chip = IBEERC721(_erc721s[2]);
@ -58,7 +54,7 @@ contract MysteryBoxProxy is Ownable, Initializable, HasSignature {
}
function mintBoxTo(address to, uint256 tokenId) external onlyOwner {
require(to != address(0), 'to address can not be zero');
require(to != address(0), "to address can not be zero");
box.mint(to, tokenId);
emit TokenMinted(address(box), to, tokenId);
}
@ -69,10 +65,7 @@ contract MysteryBoxProxy is Ownable, Initializable, HasSignature {
uint256 saltNonce,
bytes calldata signature
) external {
require(
ids.length == 3,
"MysteryBoxProxy: amount of token id mismatch"
);
require(ids.length == 3, "MysteryBoxProxy: amount of token id mismatch");
require(
!usedSignatures[signature],
"MysteryBoxProxy: signature used. please send another transaction with new signature"
@ -140,12 +133,7 @@ contract MysteryBoxProxy is Ownable, Initializable, HasSignature {
) internal view returns (uint256) {
uint256 random = uint256(
keccak256(
abi.encodePacked(
owner,
nonce,
block.difficulty,
block.timestamp
)
abi.encodePacked(owner, nonce, block.difficulty, block.timestamp)
)
);
return random % _length;

View File

@ -34,30 +34,23 @@ contract UserEvolveFactory is Ownable, Initializable {
bytes calldata signature
) external returns (bool success) {
address to = _msgSender();
try factory.evolve721NFT(to, tokenIds, startTime, saltNonce, signature, hero) {
try
factory.evolve721NFT(to, tokenIds, startTime, saltNonce, signature, hero)
{
return true;
} catch Error(string memory reason) {
bytes memory by;
factory.useSignature(signature);
emit TokenEvolveFail(
to,
signature,
reason,
by
);
emit TokenEvolveFail(to, signature, reason, by);
return false;
} catch (bytes memory lowLevelData) {
factory.useSignature(signature);
string memory reason;
emit TokenEvolveFail(
to,
signature,
reason,
lowLevelData
);
emit TokenEvolveFail(to, signature, reason, lowLevelData);
return false;
}
}
/**
* @dev evolve function for equip NFT
* tokenIds: [equip_to_evolve, equip_for_burn, chip]
@ -69,27 +62,19 @@ contract UserEvolveFactory is Ownable, Initializable {
bytes calldata signature
) external returns (bool success) {
address to = _msgSender();
try factory.evolve721NFT(to, tokenIds, startTime, saltNonce, signature, equip) {
try
factory.evolve721NFT(to, tokenIds, startTime, saltNonce, signature, equip)
{
return true;
} catch Error(string memory reason) {
bytes memory by;
factory.useSignature(signature);
emit TokenEvolveFail(
to,
signature,
reason,
by
);
emit TokenEvolveFail(to, signature, reason, by);
return false;
} catch (bytes memory lowLevelData) {
factory.useSignature(signature);
string memory reason;
emit TokenEvolveFail(
to,
signature,
reason,
lowLevelData
);
emit TokenEvolveFail(to, signature, reason, lowLevelData);
return false;
}
}
@ -104,33 +89,17 @@ contract UserEvolveFactory is Ownable, Initializable {
bytes calldata signature
) external returns (bool success) {
address to = _msgSender();
try factory.evolveChip(
to,
ids,
startTime,
saltNonce,
signature
) {
try factory.evolveChip(to, ids, startTime, saltNonce, signature) {
return true;
} catch Error(string memory reason) {
bytes memory by;
factory.useSignature(signature);
emit TokenEvolveFail(
to,
signature,
reason,
by
);
emit TokenEvolveFail(to, signature, reason, by);
return false;
} catch (bytes memory lowLevelData) {
factory.useSignature(signature);
string memory reason;
emit TokenEvolveFail(
to,
signature,
reason,
lowLevelData
);
emit TokenEvolveFail(to, signature, reason, lowLevelData);
return false;
}
}

View File

@ -28,6 +28,7 @@ contract UserMinterFactory is Ownable, FactoryBase, Initializable {
shard = IBEERC1155(addressArr[3]);
factory = MinterFactory(addressArr[4]);
}
/**
* @dev mint hero by user
*/
@ -38,30 +39,21 @@ contract UserMinterFactory is Ownable, FactoryBase, Initializable {
bytes calldata signature
) external returns (bool success) {
address to = _msgSender();
try factory.mint721ByUser(to, tokenId, startTime, saltNonce, signature, hero) {
try
factory.mint721ByUser(to, tokenId, startTime, saltNonce, signature, hero)
{
return true;
} catch Error(string memory reason) {
bytes memory by;
factory.useSignature(signature);
emit TokenMintFail(
to,
signature,
reason,
by
);
emit TokenMintFail(to, signature, reason, by);
return false;
} catch (bytes memory lowLevelData) {
factory.useSignature(signature);
string memory reason;
emit TokenMintFail(
to,
signature,
reason,
lowLevelData
);
emit TokenMintFail(to, signature, reason, lowLevelData);
return false;
}
}
/**
@ -74,30 +66,21 @@ contract UserMinterFactory is Ownable, FactoryBase, Initializable {
bytes calldata signature
) external returns (bool success) {
address to = _msgSender();
try factory.mint721ByUser(to, tokenId, startTime, saltNonce, signature, equip) {
try
factory.mint721ByUser(to, tokenId, startTime, saltNonce, signature, equip)
{
return true;
} catch Error(string memory reason) {
bytes memory by;
factory.useSignature(signature);
emit TokenMintFail(
to,
signature,
reason,
by
);
emit TokenMintFail(to, signature, reason, by);
return false;
} catch (bytes memory lowLevelData) {
factory.useSignature(signature);
string memory reason;
emit TokenMintFail(
to,
signature,
reason,
lowLevelData
);
emit TokenMintFail(to, signature, reason, lowLevelData);
return false;
}
}
/**
@ -115,27 +98,27 @@ contract UserMinterFactory is Ownable, FactoryBase, Initializable {
amounts[i] = 1;
}
address to = _msgSender();
try factory.mint1155BatchByUser(to, ids, amounts, startTime, saltNonce, signature, chip) {
try
factory.mint1155BatchByUser(
to,
ids,
amounts,
startTime,
saltNonce,
signature,
chip
)
{
return true;
} catch Error(string memory reason) {
bytes memory by;
factory.useSignature(signature);
emit TokenMintFail(
to,
signature,
reason,
by
);
emit TokenMintFail(to, signature, reason, by);
return false;
} catch (bytes memory lowLevelData) {
factory.useSignature(signature);
string memory reason;
emit TokenMintFail(
to,
signature,
reason,
lowLevelData
);
emit TokenMintFail(to, signature, reason, lowLevelData);
return false;
}
}
@ -151,30 +134,31 @@ contract UserMinterFactory is Ownable, FactoryBase, Initializable {
bytes calldata signature
) external returns (bool success) {
address to = _msgSender();
try factory.mint1155BatchByUser(to, ids, amounts, startTime, saltNonce, signature, shard) {
try
factory.mint1155BatchByUser(
to,
ids,
amounts,
startTime,
saltNonce,
signature,
shard
)
{
return true;
} catch Error(string memory reason) {
bytes memory by;
factory.useSignature(signature);
emit TokenMintFail(
to,
signature,
reason,
by
);
emit TokenMintFail(to, signature, reason, by);
return false;
} catch (bytes memory lowLevelData) {
factory.useSignature(signature);
string memory reason;
emit TokenMintFail(
to,
signature,
reason,
lowLevelData
);
emit TokenMintFail(to, signature, reason, lowLevelData);
return false;
}
}
/**
* @dev mint hero or equip with shard
*/
@ -197,36 +181,24 @@ contract UserMinterFactory is Ownable, FactoryBase, Initializable {
nft = equip;
}
ShardParam memory param = ShardParam(
to, nftId, payToken, payAmount, startTime, saltNonce);
try factory.shardMixByUser(
param,
ids,
amounts,
signature,
nft
) {
to,
nftId,
payToken,
payAmount,
startTime,
saltNonce
);
try factory.shardMixByUser(param, ids, amounts, signature, nft) {
return true;
} catch Error(string memory reason) {
bytes memory by;
factory.useSignature(signature);
emit TokenMintFail(
to,
signature,
reason,
by
);
emit TokenMintFail(to, signature, reason, by);
return false;
} catch (bytes memory lowLevelData) {
factory.useSignature(signature);
string memory reason;
emit TokenMintFail(
to,
signature,
reason,
lowLevelData
);
emit TokenMintFail(to, signature, reason, lowLevelData);
}
}
}

View File

@ -18,11 +18,10 @@ contract BEBoxMall is Ownable, HasSignature, TimelockController{
bool public address_initialized;
constructor(
address[] memory proposers,
address[] memory executors)
constructor(address[] memory proposers, address[] memory executors)
TimelockController(MIN_DELAY, proposers, executors)
HasSignature("BEBoxMall", "1"){
HasSignature("BEBoxMall", "1")
{
_minDelay = MIN_DELAY;
address_initialized = false;
}
@ -37,14 +36,21 @@ contract BEBoxMall is Ownable, HasSignature, TimelockController{
address public paymentReceivedAddress;
function setPaymentReceivedAddress(address _paymentReceivedAddress)
public
{
require(_paymentReceivedAddress != address(0), 'BEBoxMall::setPaymentReceivedAddress: payment received address can not be zero');
function setPaymentReceivedAddress(address _paymentReceivedAddress) public {
require(
_paymentReceivedAddress != address(0),
"BEBoxMall::setPaymentReceivedAddress: payment received address can not be zero"
);
if (address_initialized) {
require(msg.sender == address(this), "BEBoxMall::setPaymentReceivedAddress: Call must come from BEBoxMall.");
require(
msg.sender == address(this),
"BEBoxMall::setPaymentReceivedAddress: Call must come from BEBoxMall."
);
} else {
require(msg.sender == owner(), "BEBoxMall::setPaymentReceivedAddress: First call must come from owner.");
require(
msg.sender == owner(),
"BEBoxMall::setPaymentReceivedAddress: First call must come from owner."
);
address_initialized = true;
}
paymentReceivedAddress = _paymentReceivedAddress;
@ -82,16 +88,9 @@ contract BEBoxMall is Ownable, HasSignature, TimelockController{
userAddress,
address(this)
);
require(
allowToPayAmount >= price,
"BEBoxPayment: Invalid token allowance"
);
require(allowToPayAmount >= price, "BEBoxPayment: Invalid token allowance");
// Transfer payment
paymentToken.safeTransferFrom(
userAddress,
paymentReceivedAddress,
price
);
paymentToken.safeTransferFrom(userAddress, paymentReceivedAddress, price);
useSignature(signature);
// Emit payment event
emit BEBoxPaid(boxId, userAddress, _type, price, paymentErc20);
@ -106,7 +105,9 @@ contract BEBoxMall is Ownable, HasSignature, TimelockController{
return
keccak256(
abi.encode(
keccak256("set(uint256 item,address token,uint256 price,uint256 salt)"),
keccak256(
"set(uint256 item,address token,uint256 price,uint256 salt)"
),
_boxType,
_paymentErc20,
_price,
@ -120,7 +121,13 @@ contract BEBoxMall is Ownable, HasSignature, TimelockController{
*
* This value can be changed by executing an operation that calls `updateDelay`.
*/
function getMinDelay() public view virtual override returns (uint256 duration) {
function getMinDelay()
public
view
virtual
override
returns (uint256 duration)
{
return _minDelay;
}
@ -136,8 +143,14 @@ contract BEBoxMall is Ownable, HasSignature, TimelockController{
*/
function updateDelay(uint256 newDelay) external virtual override {
require(msg.sender == address(this), "BEBoxMall: caller must be timelock");
require(newDelay >= MIN_DELAY, "BEBoxMall: newDelay must greater than or equal to MIN_DELAY");
require(newDelay <= MAX_DELAY, "BEBoxMall: newDelay must less than or equal to MAX_DELAY");
require(
newDelay >= MIN_DELAY,
"BEBoxMall: newDelay must greater than or equal to MIN_DELAY"
);
require(
newDelay <= MAX_DELAY,
"BEBoxMall: newDelay must less than or equal to MAX_DELAY"
);
emit MinDelayChange(_minDelay, newDelay);
_minDelay = newDelay;
}

View File

@ -38,18 +38,20 @@ contract MarketPlace is Ownable, HasSignature {
uint256 fee
);
constructor()
HasSignature("MarketPlace", "1"){
}
constructor() HasSignature("MarketPlace", "1") {}
function setFeeToAddress(address _feeToAddress) external onlyOwner {
require(_feeToAddress != address(0), 'fee received address can not be zero');
require(
_feeToAddress != address(0),
"fee received address can not be zero"
);
feeToAddress = _feeToAddress;
}
function setTransactionFee(uint256 _transactionFee) external onlyOwner {
require(
_transactionFee >= MIN_TRANSACTION_FEE && _transactionFee <= MAX_TRANSACTION_FEE,
_transactionFee >= MIN_TRANSACTION_FEE &&
_transactionFee <= MAX_TRANSACTION_FEE,
"Marketplace: _transactionFee must >= 50 and <= 1000"
);
transactionFee = _transactionFee;
@ -105,10 +107,7 @@ contract MarketPlace is Ownable, HasSignature {
// address[3] [seller_address,nft_address,payment_token_address]
// uint256[3] [token_id,price,salt_nonce]
// bytes seller_signature
require(
paymentTokens[addresses[2]],
"Marketplace: invalid payment method"
);
require(paymentTokens[addresses[2]], "Marketplace: invalid payment method");
bytes32 criteriaMessageHash = getMessageHash(
addresses[1],
@ -166,10 +165,9 @@ contract MarketPlace is Ownable, HasSignature {
/**
* @dev Function to emit transaction matched event
*/
function emitEvent(
address[3] calldata addresses,
uint256[3] calldata values
) internal {
function emitEvent(address[3] calldata addresses, uint256[3] calldata values)
internal
{
emit MatchTransaction(
values[0],
addresses[1],
@ -191,7 +189,9 @@ contract MarketPlace is Ownable, HasSignature {
return
keccak256(
abi.encode(
keccak256("set(address nft,uint256 tokenId,address payToken,uint256 price,uint256 salt)"),
keccak256(
"set(address nft,uint256 tokenId,address payToken,uint256 price,uint256 salt)"
),
_nftAddress,
_tokenId,
_paymentErc20,

View File

@ -47,7 +47,6 @@ abstract contract BEBase1155 is ERC1155, Ownable, AccessControl {
_mintBatch(to, ids, amounts, data);
}
function burnBatch(
address account,
uint256[] memory ids,
@ -70,34 +69,22 @@ abstract contract BEBase1155 is ERC1155, Ownable, AccessControl {
/**
* @dev Add factory to mint/burn item
*/
function setMintFactory(address factory)
external
onlyOwner
{
function setMintFactory(address factory) external onlyOwner {
_grantRole(MINTER_ROLE, factory);
}
/**
* @dev Remove factory
*/
function removeMintFactory(address factory)
external
onlyOwner
{
function removeMintFactory(address factory) external onlyOwner {
_revokeRole(MINTER_ROLE, factory);
}
function grantLockRole(address account)
external
onlyOwner
{
function grantLockRole(address account) external onlyOwner {
_grantRole(LOCK_ROLE, account);
}
function revokeLockRole(address account)
external
onlyOwner
{
function revokeLockRole(address account) external onlyOwner {
_revokeRole(LOCK_ROLE, account);
}
@ -115,7 +102,6 @@ abstract contract BEBase1155 is ERC1155, Ownable, AccessControl {
_revokeRole(BURN_ROLE, proxy);
}
/**
* @dev Total amount of tokens in with a given id.
*/
@ -130,13 +116,12 @@ abstract contract BEBase1155 is ERC1155, Ownable, AccessControl {
return _totalSupply[id] > 0;
}
function canMint(uint256 /*id*/) external view virtual returns (bool) {
function canMint(
uint256 /*id*/
) external view virtual returns (bool) {
return true;
}
/**
* @dev Lock token to use in game or for rental
*/
@ -241,10 +226,9 @@ abstract contract BEBase1155 is ERC1155, Ownable, AccessControl {
}
}
}
function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
if (
_ownedTokensIndex[to][tokenId] == 0 && balanceOf(to, tokenId) == 0
) {
if (_ownedTokensIndex[to][tokenId] == 0 && balanceOf(to, tokenId) == 0) {
_ownedTokensIndex[to][tokenId] = _ownedTokens[to].length + 1;
_ownedTokens[to].push(tokenId);
}

View File

@ -2,6 +2,7 @@
pragma solidity 0.8.10;
import "./BEBase1155.sol";
/**
* for Hero and Weapon shard
*/

View File

@ -2,7 +2,6 @@
pragma solidity 0.8.10;
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
contract BECoin is ERC20Burnable {
uint256 public constant INITIALIZED_CAP = 100000000 * 1e18;

View File

@ -4,15 +4,13 @@ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
/**
* this contract will transfer ownership to BETimelockController after deployed
* all onlyowner method would add timelock
*/
contract BEGold is ERC20, ERC20Burnable, Pausable, Ownable {
constructor() ERC20("CRYPTO ELITE'S GOLD", "CEG") {
}
constructor() ERC20("CRYPTO ELITE'S GOLD", "CEG") {}
function pause() external onlyOwner {
_pause();
@ -26,11 +24,11 @@ contract BEGold is ERC20, ERC20Burnable, Pausable, Ownable {
_mint(to, amount);
}
function _beforeTokenTransfer(address from, address to, uint256 amount)
internal
whenNotPaused
override
{
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal override whenNotPaused {
super._beforeTokenTransfer(from, to, amount);
}
}

View File

@ -32,8 +32,9 @@ abstract contract BEBase is ERC721, AccessControl, ERC721Enumerable, Ownable {
*/
function mint(address to, uint256 tokenId)
external
virtual
onlyRole(MINTER_ROLE)
virtual {
{
require(!_exists(tokenId), "Must have unique tokenId");
// We cannot just use balanceOf to create the new tokenId because tokens
// can be burned (destroyed), so we need a separate counter.
@ -67,26 +68,21 @@ abstract contract BEBase is ERC721, AccessControl, ERC721Enumerable, Ownable {
function revokeBurnProxy(address proxy) external onlyOwner {
_revokeRole(BURN_ROLE, proxy);
}
/**
* @dev Add address to lock item
*/
function grantLockRole(address account)
external
onlyOwner
{
function grantLockRole(address account) external onlyOwner {
_grantRole(LOCK_ROLE, account);
}
/**
* @dev Remove address for lock item
*/
function revokeLockRole(address account)
external
onlyOwner
{
function revokeLockRole(address account) external onlyOwner {
_revokeRole(LOCK_ROLE, account);
}
/**
* @dev Lock token to use in game or for rental
*/
@ -144,7 +140,6 @@ abstract contract BEBase is ERC721, AccessControl, ERC721Enumerable, Ownable {
return super.supportsInterface(interfaceId);
}
/**
* @dev Burns `tokenId`.
*
@ -154,8 +149,8 @@ abstract contract BEBase is ERC721, AccessControl, ERC721Enumerable, Ownable {
*/
function burn(address owner, uint256 tokenId)
external
onlyRole(BURN_ROLE)
virtual
onlyRole(BURN_ROLE)
{
require(_exists(tokenId), "TokenId not exists");
require(!lockedTokens[tokenId], "Can not burn locked token");
@ -165,6 +160,4 @@ abstract contract BEBase is ERC721, AccessControl, ERC721Enumerable, Ownable {
);
_burn(tokenId);
}
}

View File

@ -7,8 +7,11 @@ import "./BEBase.sol";
contract BEMysteryBox is BEBase {
constructor() ERC721("CRYPTO ELITE'S MYSTERY BOXES", "BOX") {}
function userTokens(address user, uint256 start, uint256 page)
external view returns (uint256 [] memory){
function userTokens(
address user,
uint256 start,
uint256 page
) external view returns (uint256[] memory) {
uint256 size = balanceOf(user);
uint256[] memory results = new uint256[](page);
if (start < size) {

View File

@ -9,6 +9,7 @@ contract TimeChecker is Ownable {
constructor() {
_duration = 1 days;
}
modifier timeValid(uint256 time) {
require(
time + _duration >= block.timestamp,
@ -20,8 +21,7 @@ contract TimeChecker is Ownable {
/**
* @dev Returns the max duration for function called by user
*/
function getDuration() external view
returns (uint256 duration) {
function getDuration() external view returns (uint256 duration) {
return _duration;
}
@ -31,6 +31,4 @@ contract TimeChecker is Ownable {
function updateDuation(uint256 valNew) external onlyOwner {
_duration = valNew;
}
}

View File

@ -2,8 +2,11 @@
pragma solidity 0.8.10;
library UInt {
function asSingletonArray(uint256 element) internal pure returns (uint256[] memory) {
function asSingletonArray(uint256 element)
internal
pure
returns (uint256[] memory)
{
uint256[] memory array = new uint256[](1);
array[0] = element;
return array;

104
package-lock.json generated
View File

@ -1426,6 +1426,15 @@
"integrity": "sha1-n7OjzzEyMoFR81PeRjLgHlIQK+o=",
"dev": true
},
"@solidity-parser/parser": {
"version": "0.14.3",
"resolved": "https://registry.npmmirror.com/@solidity-parser/parser/-/parser-0.14.3.tgz",
"integrity": "sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw==",
"dev": true,
"requires": {
"antlr4ts": "^0.5.0-alpha.4"
}
},
"@szmarczak/http-timer": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/@szmarczak/http-timer/download/@szmarczak/http-timer-1.1.2.tgz",
@ -3061,6 +3070,12 @@
"color-convert": "^1.9.0"
}
},
"antlr4ts": {
"version": "0.5.0-alpha.4",
"resolved": "https://registry.npmmirror.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz",
"integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==",
"dev": true
},
"any-signal": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/any-signal/download/any-signal-2.1.2.tgz",
@ -15296,6 +15311,89 @@
"dev": true,
"optional": true
},
"prettier": {
"version": "2.7.1",
"resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz",
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
"dev": true
},
"prettier-plugin-solidity": {
"version": "1.0.0-beta.24",
"resolved": "https://registry.npmmirror.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.24.tgz",
"integrity": "sha512-6JlV5BBTWzmDSq4kZ9PTXc3eLOX7DF5HpbqmmaF+kloyUwOZbJ12hIYsUaZh2fVgZdV2t0vWcvY6qhILhlzgqg==",
"dev": true,
"requires": {
"@solidity-parser/parser": "^0.14.3",
"emoji-regex": "^10.1.0",
"escape-string-regexp": "^4.0.0",
"semver": "^7.3.7",
"solidity-comments-extractor": "^0.0.7",
"string-width": "^4.2.3"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"emoji-regex": {
"version": "10.1.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.1.0.tgz",
"integrity": "sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg==",
"dev": true
},
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"semver": {
"version": "7.3.7",
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz",
"integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"dependencies": {
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
}
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
},
"printj": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/printj/download/printj-1.1.2.tgz",
@ -16708,6 +16806,12 @@
}
}
},
"solidity-comments-extractor": {
"version": "0.0.7",
"resolved": "https://registry.npmmirror.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz",
"integrity": "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==",
"dev": true
},
"source-list-map": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/source-list-map/download/source-list-map-2.0.1.tgz",

View File

@ -6,6 +6,8 @@
"scripts": {
"test": "npx truffle test",
"build": "truffle compile",
"prettier": "prettier --write 'contracts/**/*.sol'",
"lint": "prettier --list-different 'contracts/**/*.sol'",
"deploy:dev": "truffle migrate --network development",
"deploy:20": "truffle migrate --network lan20 --compile-none",
"deploy:22": "truffle migrate --network lan22 --compile-none",
@ -20,6 +22,8 @@
"@openzeppelin/test-helpers": "^0.5.15",
"@truffle/hdwallet-provider": "^2.0.0",
"chai": "^4.3.4",
"prettier": "^2.7.1",
"prettier-plugin-solidity": "^1.0.0-beta.24",
"truffle": "^5.4.23",
"truffle-plugin-stdjsonin": "git+https://github.com/mhrsalehi/truffle-plugin-stdjsonin.git",
"truffle-plugin-verify": "^0.5.25"