SATOZHI (SATOZ) Was formed using a technical protocol similar to Bitcoin (BTC) which was created according to Satoshi Nakamoto's proposal.
If in Bitcoin (BTC) we are familiar with the Proof-of-Work (PoW) protocol then at Satozhi (SATOZ) a better protocol is made, known as Proof-of-Burn (PoB).
How does the Proof-of-Burn (PoB) protocol work?
Satozhi (SATOZ) is the first token in the world to use this new protocol.
This protocol uses the logic of burning the token supply in the block chain, and then creating a new token in the pool every 10 minutes.
How many prize will you get from burning SATOZ?
the user will get a prize every 10 minutes. The prize distributed is 50 SATOZ, this calculation is obtained from the personal percentage that users burn up to the total inventory that has been burned. The bigger the user burns, the bigger the portion the user gets from a total of 50 SATOZ / 10 minutes.
Satozhi._balanceRewards(address) (#194-205) uses a weak PRNG: "_modulus = uint256(_timediff % _blockSpacing) (#200)"
Do not use block.timestamp, now or blockhash as a source of randomness
Additional information: link
Contract ownership is not renounced (belongs to a wallet)
Satozhi.constructor() (#105-112) uses literals with too many digits:
- _totalSupply = 2100000000000000 (#109)
Satozhi._virtualRewards(address) (#173-183) uses literals with too many digits:
- _portion = uint256((100000000 * _accountPoB[account]) / _contractPoB) (#177)
Satozhi._virtualRewards(address) (#173-183) uses literals with too many digits:
- _rewards = uint256(((_portion * _blockRewards) / 100000000) * _blocks) (#178)
Satozhi._balanceRewards(address) (#194-205) uses literals with too many digits:
- _portion = uint256((100000000 * _accountPoB[account]) / _contractPoB) (#198)
Satozhi._balanceRewards(address) (#194-205) uses literals with too many digits:
- _rewards = uint256(((_portion * _blockRewards) / 100000000) * _blocks) (#199)
Satozhi.slitherConstructorVariables() (#92-247) uses literals with too many digits:
- _blockRewards = 5000000000 (#98)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Satozhi._blockRewards (#98) should be constant
Satozhi._blockSpacing (#99) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
increaseAllowance(address,uint256) should be declared external:
- Satozhi.increaseAllowance(address,uint256) (#163-167)
decreaseAllowance(address,uint256) should be declared external:
- Satozhi.decreaseAllowance(address,uint256) (#168-172)
mint(uint256) should be declared external:
- Satozhi.mint(uint256) (#184-188)
burn(uint256) should be declared external:
- Satozhi.burn(uint256) (#189-193)
ProofOfBurn(uint256) should be declared external:
- Satozhi.ProofOfBurn(uint256) (#236-245)
Use the external attribute for functions never called from the contract.
Additional information: link
Satozhi._virtualRewards(address) (#173-183) performs a multiplication on the result of a division:
-_rewards = uint256(((_portion * _blockRewards) / 100000000) * _blocks) (#178)
Satozhi._balanceRewards(address) (#194-205) performs a multiplication on the result of a division:
-_rewards = uint256(((_portion * _blockRewards) / 100000000) * _blocks) (#199)
Consider ordering multiplication before division.
Additional information: link
Satozhi.allowance(address,address).owner (#149) shadows:
- Ownable.owner() (#72-74) (function)
Satozhi._approve(address,address,uint256).owner (#225) shadows:
- Ownable.owner() (#72-74) (function)
Rename the local variables that shadow another component.
Additional information: link
Satozhi._virtualRewards(address) (#173-183) uses timestamp for comparisons
Dangerous comparisons:
- _timediff > 0 && _blocks > 0 && _accountTs[account] > 0 (#176)
Satozhi._balanceRewards(address) (#194-205) uses timestamp for comparisons
Dangerous comparisons:
- _timediff > 0 && _blocks > 0 && _accountTs[account] > 0 (#197)
Satozhi.ProofOfBurn(uint256) (#236-245) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(_balances[_msgSender()] >= amount,BEP20: insufficient balance) (#237)
Avoid relying on block.timestamp.
Additional information: link
Context._msgData() (#21-24) is never used and should be removed
Ownable._transferOwnership(address) (#86-90) is never used and should be removed
Ownable.renounceOwnership() (#79-82) is never used and should be removed
Ownable.transferOwnership(address) (#83-85) is never used and should be removed
SafeMath.div(uint256,uint256) (#48-50) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#51-55) is never used and should be removed
SafeMath.mod(uint256,uint256) (#56-58) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#59-62) is never used and should be removed
SafeMath.mul(uint256,uint256) (#40-47) is never used and should be removed
Satozhi._burnFrom(address,uint256) (#231-235) is never used and should be removed
Remove unused functions.
Additional information: link
Function Satozhi.ProofOfBurn(uint256) (#236-245) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (#22)" inContext (#16-25)
Remove redundant statements if they congest code but offer no value.
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Token has relatively low CoinGecko rank
Token has relatively low CoinMarketCap rank
Last post in Twitter was more than 30 days ago
Unable to find Youtube account
Unable to find Discord account