PHOENIX is the next evolution in Red Pulse, bringing forth a revolutionary new infrastructure and upgraded token (PHX).
PHOENIX is both a new platform and token (PHX). We’re building on top of the original roadmap that was initially outlined in our whitepaper, adding a new cloud-based knowledge network that connects research consumers with content-producers. PHOENIX will utilize machine learning, natural language processing, and blockchain technology to power a more efficient ecosystem for matching industry experts to clients looking for insights.
The PHOENIX platform is powered by a new token, PHX, which will replace our existing RPX token. PHX includes features such as Proof of Creation, Proof of Ownership, regulatory compliance, IP protection and accountability built right into the new smart contract. We will be conducting a token swap in August, so please sign up for our email list in order to get the latest updates as we release information on the upcoming token swap.
BEP20PHB.convertPHX(uint256) (#615-625) performs a multiplication on the result of a division:
-_mint(_msgSender(),amount.div(100).mul(10000000000)) (#622)
BEP20PHB.convertPHX(uint256) (#615-625) performs a multiplication on the result of a division:
-require(bool,string)(balanceAfter - balanceBefore <= amount.div(100).mul(10000000000),BEP20: after convert,the balance increase error) (#624)
Consider ordering multiplication before division.
Additional information: link
BEP20PHB.setInflationRate(uint256) (#654-657) should emit an event for:
- _inflationRate = rate (#656)
Emit an event for critical parameter changes.
Additional information: link
BEP20PHB.constructor(address,address,uint256,uint256).oldPHB (#377) lacks a zero-check on :
- _oldPHBAddress = oldPHB (#386)
BEP20PHB.constructor(address,address,uint256,uint256).oldPHX (#377) lacks a zero-check on :
- _oldPHXAddress = oldPHX (#388)
Check that the address is not zero.
Additional information: link
Context._msgData() (#124-127) is never used and should be removed
SafeMath.mod(uint256,uint256) (#258-260) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#273-276) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version0.6.8 (#1) allows old versions
solc-0.6.8 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
BEP20PHB (#355-805) should inherit from PHBOld (#95-102)
Inherit from the missing interface or contract.
Additional information: link
Redundant expression "this (#125)" inContext (#115-128)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Reentrancy in BEP20PHB.convertPHB(uint256) (#596-606):
External calls:
- _oldPHB.burnFrom(_msgSender(),amount) (#602)
State variables written after the call(s):
- _mint(_msgSender(),amount.div(100)) (#603)
- _balances[account] = _balances[account].add(amount) (#715)
Reentrancy in BEP20PHB.convertPHX(uint256) (#615-625):
External calls:
- _oldPHX.burnFrom(_msgSender(),amount) (#621)
State variables written after the call(s):
- _mint(_msgSender(),amount.div(100).mul(10000000000)) (#622)
- _balances[account] = _balances[account].add(amount) (#715)
Apply the check-effects-interactions pattern.
Additional information: link
BEP20PHB.constructor(address,address,uint256,uint256).oldPHB (#377) shadows:
- BEP20PHB.oldPHB() (#691-693) (function)
BEP20PHB.constructor(address,address,uint256,uint256).oldPHX (#377) shadows:
- BEP20PHB.oldPHX() (#698-700) (function)
BEP20PHB.allowance(address,address).owner (#455) shadows:
- Ownable.owner() (#308-310) (function)
BEP20PHB.setInflationAddress(address).inflationAddress (#668) shadows:
- BEP20PHB.inflationAddress() (#676-678) (function)
BEP20PHB._approve(address,address,uint256).owner (#752) shadows:
- Ownable.owner() (#308-310) (function)
Rename the local variables that shadow another component.
Additional information: link
Reentrancy in BEP20PHB.convertPHB(uint256) (#596-606):
External calls:
- _oldPHB.burnFrom(_msgSender(),amount) (#602)
State variables written after the call(s):
- _mint(_msgSender(),amount.div(100)) (#603)
- _totalSupply = _totalSupply.add(amount) (#714)
Reentrancy in BEP20PHB.convertPHX(uint256) (#615-625):
External calls:
- _oldPHX.burnFrom(_msgSender(),amount) (#621)
State variables written after the call(s):
- _mint(_msgSender(),amount.div(100).mul(10000000000)) (#622)
- _totalSupply = _totalSupply.add(amount) (#714)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in BEP20PHB.convertPHB(uint256) (#596-606):
External calls:
- _oldPHB.burnFrom(_msgSender(),amount) (#602)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (#716)
- _mint(_msgSender(),amount.div(100)) (#603)
Reentrancy in BEP20PHB.convertPHX(uint256) (#615-625):
External calls:
- _oldPHX.burnFrom(_msgSender(),amount) (#621)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (#716)
- _mint(_msgSender(),amount.div(100).mul(10000000000)) (#622)
Apply the check-effects-interactions pattern.
Additional information: link
BEP20PHB.inflation() (#629-646) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(nowTime > _lastInflationTime,BEP20: now time is before last inflation time) (#631)
- i < n (#638)
Avoid relying on block.timestamp.
Additional information: link
BEP20PHB._isContract(address) (#797-803) uses assembly
- INLINE ASM (#801)
Do not use evm assembly.
Additional information: link
Contract iBEP20 (#3-92) is not in CapWords
Variable BEP20PHB._decimals (#365) is not in mixedCase
Variable BEP20PHB._symbol (#366) is not in mixedCase
Variable BEP20PHB._name (#367) is not in mixedCase
Variable BEP20PHB._inflationInitialAmount (#368) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable BEP20PHB._oldPHBAddress (#371) is too similar to BEP20PHB._oldPHXAddress (#372)
Prevent variables from having similar names.
Additional information: link
BEP20PHB.convertPHX(uint256) (#615-625) uses literals with too many digits:
- _mint(_msgSender(),amount.div(100).mul(10000000000)) (#622)
BEP20PHB.convertPHX(uint256) (#615-625) uses literals with too many digits:
- require(bool,string)(balanceAfter - balanceBefore <= amount.div(100).mul(10000000000),BEP20: after convert,the balance increase error) (#624)
BEP20PHB.inflation() (#629-646) uses literals with too many digits:
- day_inflation = _tmpInflationInitialAmount.mul(_inflationRate).div(1000000000000) (#639)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#327-330)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#336-338)
increaseAllowance(address,uint256) should be declared external:
- BEP20PHB.increaseAllowance(address,uint256) (#501-504)
decreaseAllowance(address,uint256) should be declared external:
- BEP20PHB.decreaseAllowance(address,uint256) (#520-523)
mint(uint256) should be declared external:
- BEP20PHB.mint(uint256) (#533-536)
burn(uint256) should be declared external:
- BEP20PHB.burn(uint256) (#543-545)
burnFrom(address,uint256) should be declared external:
- BEP20PHB.burnFrom(address,uint256) (#558-563)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find audit link on the website
Token is not listed at Mobula.Finance
Additional information: link
Unable to find Youtube account
Unable to find Discord account