Spartan Protocol provides community-governed and programmable token emissions functions to incentivize the formation of deep liquidity pools. This strong base of liquidity will be utilized to provide asset swaps, synthetic token generation, lending, derivatives and more.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Sparta.changeDAO(address) (Sparta.sol#188-191) should emit an event for:
- DAO = newDAO (Sparta.sol#190)
Emit an event for critical parameter changes.
Additional information: link
Parameter Sparta.saveFallenSpartans(address,uint256)._savedSpartans (Sparta.sol#182) is not in mixedCase
Parameter Sparta.saveFallenSpartans(address,uint256)._saveAmount (Sparta.sol#182) is not in mixedCase
Function Sparta.UTILS() (Sparta.sol#243-245) is not in mixedCase
Function Sparta.RESERVE() (Sparta.sol#246-248) is not in mixedCase
Variable Sparta._100m (Sparta.sol#31) is not in mixedCase
Variable Sparta.DAO (Sparta.sol#37) is not in mixedCase
Variable Sparta.DEPLOYER (Sparta.sol#38) is not in mixedCase
Variable Sparta.BASEv1 (Sparta.sol#39) is not in mixedCase
Contract iBASE (iBASE.sol#4-11) is not in CapWords
Function iBASE.DAO() (iBASE.sol#5) is not in mixedCase
Contract iBASEv1 (iBASEv1.sol#3-6) is not in CapWords
Contract iBEP20 (iBEP20.sol#3-16) is not in CapWords
Contract iBEP677 (iBEP677.sol#4-8) is not in CapWords
Contract iDAO (iDAO.sol#3-14) is not in CapWords
Function iDAO.ROUTER() (iDAO.sol#4) is not in mixedCase
Function iDAO.BASE() (iDAO.sol#5) is not in mixedCase
Function iDAO.UTILS() (iDAO.sol#6) is not in mixedCase
Function iDAO.DAO() (iDAO.sol#7) is not in mixedCase
Function iDAO.RESERVE() (iDAO.sol#8) is not in mixedCase
Function iDAO.BOND() (iDAO.sol#9) is not in mixedCase
Function iDAO.SYNTHFACTORY() (iDAO.sol#10) is not in mixedCase
Function iDAO.POOLFACTORY() (iDAO.sol#11) is not in mixedCase
Contract iUTILS (iUTILS.sol#3-11) is not in CapWords
Follow the Solidity naming convention.
Additional information: link
Sparta.setParams(uint256,uint256) (Sparta.sol#178-181) should emit an event for:
- secondsPerEra = newTime (Sparta.sol#179)
- emissionCurve = newCurve (Sparta.sol#180)
Emit an event for critical parameter changes.
Additional information: link
Sparta.constructor(address)._baseV1 (Sparta.sol#51) lacks a zero-check on :
- BASEv1 = _baseV1 (Sparta.sol#55)
Check that the address is not zero.
Additional information: link
Reentrancy in Sparta.upgrade() (Sparta.sol#227-232):
External calls:
- require(bool)(iBASEv1(BASEv1).transferTo(address(this),amount)) (Sparta.sol#229)
- iBEP20(BASEv1).burn(amount) (Sparta.sol#230)
State variables written after the call(s):
- _mint(msg.sender,amount) (Sparta.sol#231)
- _balances[account] += amount (Sparta.sol#147)
- _mint(msg.sender,amount) (Sparta.sol#231)
- totalSupply += amount (Sparta.sol#145)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in Sparta.upgrade() (Sparta.sol#227-232):
External calls:
- require(bool)(iBASEv1(BASEv1).transferTo(address(this),amount)) (Sparta.sol#229)
- iBEP20(BASEv1).burn(amount) (Sparta.sol#230)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (Sparta.sol#148)
- _mint(msg.sender,amount) (Sparta.sol#231)
Apply the check-effects-interactions pattern.
Additional information: link
Sparta._checkEmission() (Sparta.sol#203-214) uses timestamp for comparisons
Dangerous comparisons:
- (block.timestamp >= nextEraTime) && emitting (Sparta.sol#204)
Avoid relying on block.timestamp.
Additional information: link
Pragma version0.8.3 (Sparta.sol#3) allows old versions
Pragma version0.8.3 (iBASE.sol#2) allows old versions
Pragma version0.8.3 (iBASEv1.sol#2) allows old versions
Pragma version0.8.3 (iBEP20.sol#2) allows old versions
Pragma version0.8.3 (iBEP677.sol#2) allows old versions
Pragma version0.8.3 (iDAO.sol#2) allows old versions
Pragma version0.8.3 (iUTILS.sol#2) allows old versions
solc-0.8.3 is not recommended for deployment
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
balanceOf(address) should be declared external:
- Sparta.balanceOf(address) (Sparta.sol#62-64)
transfer(address,uint256) should be declared external:
- Sparta.transfer(address,uint256) (Sparta.sol#69-72)
approve(address,uint256) should be declared external:
- Sparta.approve(address,uint256) (Sparta.sol#74-77)
increaseAllowance(address,uint256) should be declared external:
- Sparta.increaseAllowance(address,uint256) (Sparta.sol#78-81)
decreaseAllowance(address,uint256) should be declared external:
- Sparta.decreaseAllowance(address,uint256) (Sparta.sol#82-87)
burn(uint256) should be declared external:
- Sparta.burn(uint256) (Sparta.sol#151-153)
burnFrom(address,uint256) should be declared external:
- Sparta.burnFrom(address,uint256) (Sparta.sol#154-158)
purgeDeployer() should be declared external:
- Sparta.purgeDeployer() (Sparta.sol#197-199)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find audit link on the website
Unable to find whitepaper link on the website
Young tokens have high risks of scam / price dump / death
Young tokens have high risks of price dump / death
Last post in Twitter was more than 30 days ago
Unable to find Youtube account