Skip to content

Conversation

@YouStillAlive
Copy link
Member

closes #113

@sonarqubecloud
Copy link

@github-actions
Copy link

Methods

Symbol Meaning
Execution gas for this method does not include intrinsic gas overhead
Cost was non-zero but below the precision setting for the currency display (see options)
Min Max Avg Calls usd avg
ERC20HelperMock
       mockApproveAllowanceERC20(address,address,uint256) - - 51,936 1 0.04
       mockTransferInToken(address,uint256) 47,479 64,579 52,365 7 0.04
       mockTransferToken(address,address,uint256) - - 38,872 1 0.03
ERC20Token
       approve(address,uint256) 45,914 45,926 45,923 4 0.03
       FreeTest() - - 33,278 1 0.02
ERC721HelperMock
       mockSetApproveForAllNFT(address,address,bool) - - 52,049 1 0.04
       mockTransferNFTIn(address,uint256,address) 48,232 66,008 57,120 2 0.04
       mockTransferNFTOut(address,uint256,address) - - 50,608 1 0.03
ERC721Token
       approve(address,uint256) - - 48,339 1 0.03
       awardItem(address,string) 80,723 114,983 97,833 6 0.07
       setApprovalForAll(address,bool) 24,185 46,097 33,755 5 0.02
ETHHelper
       switchIsPayble() - - 26,510 1 0.02
ETHHelperMock
       mockTransferETH(address,uint256) - - 32,630 3 0.02
       receiveETH(uint256) - - 22,935 3 0.02
FeeHelper
       addUsers(address[],uint256[]) 38,278 58,214 48,952 4 0.03
       MethodWithFee() 25,956 100,310 61,295 10 0.04
       removeUsers(address[]) - - 34,849 1 0.02
       setFee(address,uint256) 28,841 70,881 42,573 5 0.03
       setupNewWhitelist(address) - - 96,067 1 0.07
       withdrawFee(address,address) 36,478 41,956 39,217 2 0.03
GovManager
       setGovernorContract(address) - - 49,685 2 0.03
PausableHelper
       pause() - - 46,721 2 0.03
       unpause() - - 24,680 2 0.02
PozBenefit
       setGovernorContract(address) 27,545 49,685 38,615 2 0.03
       setPozTimer(uint256) 25,930 30,873 28,402 2 0.02

Deployments

Min Max Avg Block % usd avg
ArraysMock - - 482,341 0.4 % 0.33
CalcUtilsMock - - 114,043 0.1 % 0.08
ERC20HelperMock - - 1,057,253 0.8 % 0.72
ERC20Token - - 649,001 0.5 % 0.44
ERC721HelperMock - - 1,057,968 0.8 % 0.72
ERC721Token - - 911,650 0.7 % 0.62
ETHHelper - - 704,980 0.5 % 0.48
ETHHelperMock - - 903,307 0.7 % 0.61
FeeHelper - - 1,802,962 1.4 % 1.22
GovManager - - 832,956 0.6 % 0.56
NameableMock - - 268,254 0.2 % 0.18
PausableHelper - - 916,978 0.7 % 0.62
PozBenefit - - 901,860 0.7 % 0.61
WhiteListMock - - 270,673 0.2 % 0.18

Solidity and Network Config

Settings Value
Solidity: version 0.8.27
Solidity: optimized true
Solidity: runs 200
Solidity: viaIR true
Block Limit 130,000,000
L1 Gas Price 1 gwei
Token Price 678.03 usd/bnb
Network BINANCE
Toolchain hardhat

@codecov
Copy link

codecov bot commented Jan 30, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 99.05%. Comparing base (a86da0e) to head (f2271be).
Report is 2 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #114   +/-   ##
=======================================
  Coverage   99.05%   99.05%           
=======================================
  Files          20       20           
  Lines         212      212           
  Branches       48       48           
=======================================
  Hits          210      210           
  Misses          2        2           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@github-actions
Copy link

Slither report

THIS CHECKLIST IS NOT COMPLETE. Use --show-ignored-findings to show all the results.
Summary

events-access

Impact: Low
Confidence: Medium

function setupNewWhitelist(address _whiteListAddress) external firewallProtected onlyOwnerOrGov {
whiteListAddress = _whiteListAddress;
whiteListId = IWhiteList(_whiteListAddress).CreateManualWhiteList(type(uint256).max, address(this));
}

missing-zero-check

Impact: Low
Confidence: Medium

function setFee(address _token, uint _amount) external firewallProtected onlyOwnerOrGov {

function setupNewWhitelist(address _whiteListAddress) external firewallProtected onlyOwnerOrGov {

function withdrawFee(address _token, address _to) external firewallProtected onlyOwnerOrGov {

function setGovernorContract(address _address) external firewallProtected onlyOwnerOrGov {

low-level-calls

Impact: Informational
Confidence: High

function withdrawFee(address _token, address _to) external firewallProtected onlyOwnerOrGov {
if (feeReserve[_token] == 0) revert FeeAmountIsZero();
uint256 amount = feeReserve[_token];
feeReserve[_token] = 0;
if (_token == address(0)) {
(bool success, ) = _to.call{value: amount}("");
if (!success) revert TransferFailed();
} else {
transferToken(IERC20(_token), _to, amount);
}
}

naming-convention

Impact: Informational
Confidence: High

uint256[] calldata _FinishTime,

function setGovernorContract(address _address) external firewallProtected onlyOwnerOrGov {

function ChangeCreator(uint256 _Id, address _NewCreator) external;

function setupNewWhitelist(address _whiteListAddress) external firewallProtected onlyOwnerOrGov {

uint256 _FinishTime, //Until what time the pool will end

function LastRoundRegister(address _Subject,uint256 _Id) external;

function CreateNewPool(
address _Token,
uint64 _FinishTime,
uint256 _StartAmount,
address _Owner
) external returns (uint256);

function RemoveAddress(uint256 _Id, address[] calldata _Users) external;

function FreeTest() public {
_mint(msg.sender, 5_000_00 * 10 ** 18);
}

function Index() external returns (uint256);

function LastRoundRegister(address _Subject,uint256 _Id) external;

function KeepNElementsInArray(uint256[] memory _arr, uint256 _n)

uint256 _StartTime, //Until what time the pool will start

function KeepNElementsInArray(address[] memory _arr, uint256 _n)

function GetMyPoolsId(
address _UserAddress
) external view returns (uint256[] memory);

function addIfNotExsist(address[] storage _arr, address _elem) internal {

function SplitPoolAmountFrom(
uint256 _LDpoolId,
uint256 _Amount,
address _Address
) external returns(uint256 poolId);

function IsPOZHolder(address _Subject) external view returns (bool);

uint256 _CliffTime, //Before CliffTime can't withdraw tokens

function addIfNotExsist(address[] storage _arr, address _elem) internal {

function Allowance(
uint256 _poolId,
address _user
) external view returns(uint256 amount);

address _Token, //token to lock address

function KeepNElementsInArray(address[] memory _arr, uint256 _n)
internal
pure
returns (address[] memory newArray)
{
if (_arr.length == _n) return _arr;
if (_arr.length <= _n) revert InvalidArrayLength(_arr.length, _n);
newArray = new address[](_n);
for (uint256 i = 0; i < _n; ++i) {
newArray[i] = _arr[i];
}
return newArray;
}

function setFee(address _token, uint _amount) external firewallProtected onlyOwnerOrGov {

function withdrawFee(address _token, address _to) external firewallProtected onlyOwnerOrGov {

function ChangeCreator(uint256 _Id, address _NewCreator) external;

function AddAddress(uint256 _Id, address[] calldata _Users, uint256[] calldata _Amount) external;

uint256[] calldata _StartAmount,

function RemoveAddress(uint256 _Id, address[] calldata _Users) external;

function CreateManualWhiteList(uint256 _ChangeUntil, address _Contract) external payable returns(uint256 Id);

function WithdrawToken(uint256 _PoolId) external returns (bool);

function RemoveAddress(uint256 _Id, address[] calldata _Users) external;

function setFee(address _token, uint _amount) external firewallProtected onlyOwnerOrGov {

function GetMyPoolsIdByToken(
address _UserAddress,
address[] memory _Tokens
) external view returns (uint256[] memory);

function Register(address _Subject,uint256 _Id,uint256 _Amount) external;

function AddAddress(uint256 _Id, address[] calldata _Users, uint256[] calldata _Amount) external;

function Check(address _Subject, uint256 _Id) external view returns(uint);

function AddAddress(uint256 _Id, address[] calldata _Users, uint256[] calldata _Amount) external;

function AllPoolz(uint256 _LDpoolId) external view returns (

uint256 _StartAmount, //Total amount of the tokens to sell in the pool

function KeepNElementsInArray(uint256[] memory _arr, uint256 _n)
internal
pure
returns (uint256[] memory newArray)
{
if (_arr.length == _n) return _arr;
if (_arr.length <= _n) revert InvalidArrayLength(_arr.length, _n);
newArray = new uint256[](_n);
for (uint256 i = 0; i < _n; ++i) {
newArray[i] = _arr[i];
}
return newArray;
}

function setPozTimer(uint256 _pozTimer) public onlyOwnerOrGov percentCheckOk(_pozTimer) {

function CreateManualWhiteList(uint256 _ChangeUntil, address _Contract) external payable returns(uint256 Id);

address[] calldata _Owner

function Register(address _Subject,uint256 _Id,uint256 _Amount) external;

uint256[] calldata _CliffTime,

address[] memory _Tokens

function Register(address _Subject,uint256 _Id,uint256 _Amount) external;

function AllPoolz(uint256 _LDpoolId) external view returns (
uint256 StartTime,
uint256 CliffTime,
uint256 FinishTime,
uint256 StartAmount,
uint256 DebitedAmount,
address Owner,
address Token
);

function KeepNElementsInArray(address[] memory _arr, uint256 _n)

function isInArray(address[] memory _arr, address _elem)

function WithdrawToken(
uint256 _PoolId
) external returns (uint256 withdrawnAmount);

function KeepNElementsInArray(uint256[] memory _arr, uint256 _n)

function AddAddress(uint256 _Id, address[] calldata _Users, uint256[] calldata _Amount) external;

function withdrawFee(address _token, address _to) external firewallProtected onlyOwnerOrGov {

function getArraySum(uint256[] memory _array)

function transferETH(address payable receiver, uint256 _amount) internal firewallProtectedSig(0xfd69c215) {

function ChangeCreator(uint256 _Id, address _NewCreator) external;

uint256[] calldata _StartTime,

function Check(address _Subject, uint256 _Id) external view returns(uint);

function LastRoundRegister(address _Subject,uint256 _Id) external;

function Register(address _Subject,uint256 _Id,uint256 _Amount) external;

function isArrayOrdered(uint256[] memory _arr)

address _Owner // Who the tokens belong to

function Check(address _Subject, uint256 _Id) external view returns(uint);

function CreateNewPool(
address _Token, //token to lock address
uint256 _StartTime, //Until what time the pool will start
uint256 _CliffTime, //Before CliffTime can't withdraw tokens
uint256 _FinishTime, //Until what time the pool will end
uint256 _StartAmount, //Total amount of the tokens to sell in the pool
address _Owner // Who the tokens belong to
) external payable;

function WithdrawToken(uint256 _PoolId) external returns (bool);

function isInArray(address[] memory _arr, address _elem)

function IsPOZHolder(address _Subject) external view returns (bool);

function CreateManualWhiteList(uint256 _ChangeUntil, address _Contract) external payable returns(uint256 Id);

function CreatePoolsWrtTime(
address _Token,
uint256[] calldata _StartTime,
uint256[] calldata _CliffTime,
uint256[] calldata _FinishTime,
uint256[] calldata _StartAmount,
address[] calldata _Owner
) external payable;

@YouStillAlive YouStillAlive merged commit 1903d23 into master Jan 30, 2025
9 checks passed
@YouStillAlive YouStillAlive deleted the issue-113 branch January 30, 2025 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Extend the ILockDealNFT interface by adding approvedPoolUserTransfers

2 participants