Vulnerability Category | Notes | Result |
---|---|---|
Arbitrary Storage Write | N/A | PASS |
Arbitrary Jump | N/A | PASS |
Delegate Call to Untrusted Contract | N/A | PASS |
Dependence on Predictable Variables | The randomOracle relies on predictable environment variables. This is not best practice, but the probability of miners maliciously changing these variables is extremley low. | Warning |
Deprecated Opcodes | N/A | PASS |
Ether/Token Thief | N/A | PASS |
Exceptions | N/A | PASS |
External Calls | N/A | PASS |
Integer Over/Underflow | N/A | PASS |
Multiple Sends | N/A | PASS |
Oracle | The project uses a pseudo random contract to determine winners of the game as opposed to verifiably random input. Chainlink's VRF is the emerging industry standard, but the team's contract will provide randomness. | Warning |
Suicide | N/A | PASS |
State Change External Calls | N/A | PASS |
Unchecked Retval | N/A | PASS |
User Supplied Assertion | N/A | PASS |
Critical Solidity Compiler | N/A | PASS |
Overall Contract Safety | -----> | PASS |
La Bytex- Smart Contract Audit Report
Summary
La Bytex is a decentralized autonomous organization (DAO) building a series of DApps on the Binance Smart Chain.
We audited La Bytex's contracts at commit 94d23b97a2ad5e69b3332a6abfc73431314a9e27 and later at commit a6549b4b50eb6c2d65d12a2184e23521c7a67730 on GitHub.
Notes on the Token Contracts:Besides the name, symbol, decimals, and total supply; the two token's code is the same. The total supply of the Bytex token (BYX) is 20,000,000 and the BytexCasino token (BYT) is also 100,000,000 No ownership-restricted functions are present. Anyone can burn tokens to reduce the total/circulating supply.` Utilization of SafeMath to prevent overflows.
Notes on the Staking Contract:Three pools currently exist, though the codebase for them is the same: - WBNB, BYX/BNB, and BYC/BNB. Users can deposit the above-referenced tokens in order to earn rewards in BYX token. There is a fee charged on user's deposits when they withdraw from the pool. The team can update this fee at any time, up to a maximum of 5%. Different 'levels' for rewards exist, with each level possibly providing a different reward rate and expiring after an amount of time set by the team Upon perfomring a withdraw, a user's rewards will be added to their balance and withdrawn. If a user wishes to increase their stake, when staking the second time accrued rewards will be added to their balance. The team has worked with us to resolve some minor logic issues and implement gas optimizations.
Notes on the Roulette Contract:This contract is a game in which users can can place a wager and if their number is selected, they will the pool up to the maximum payout. Users can wager between 0.01 and 1 BNB on each game round and 20-2,000 BYX tokens. This can be updated by the owner. The maximum payout a user will receive is 10 BNB and 20,000 BYX tokens. This can also be updated by the owner. Users will also receive rewards in BYC token as well. The contract attempts to achieve some level of randomness through the getPayout() function, but as all the information used in the calculation is stored on chain or provided by the team, the team as well as miners & bots in the memory pool may be able to predict the results and may take action accordingly to secure profits. The "Croupier", or person controlling the table, can provide data to select and confirm the winner of the lottery. The croupier is set by the team. The owner can transfer any amount BNB and tokens not includeed in user's stakes (profits only) out of the contract at any time. The team has worked with us to resolve some minor logic issues and implement gas optimizations.
Audit Findings Summary:Concerns exist surrounding the randomness used to select winners of the game. As with any presale, ensure trust in the team prior to investing. Further, ensure trust in the project team as they have notable control in the ecosystem. Date: March 16th, 2021. Update Date: March 24th, 2021 - Incorporation of recommendations..
Function Graph
Inheritence Chart
Functions Overview
($) = payable function
# = non-constant function
Int = Internal
Ext = External
Pub = Public
+ [Int] IBEP20
- [Ext] totalSupply
- [Ext] decimals
- [Ext] symbol
- [Ext] name
- [Ext] getOwner
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ Context
- [Int] #
- [Int] _msgSender
- [Int] _msgData
+ [Lib] SafeMath
- [Int] add
- [Int] sub
- [Int] sub
- [Int] mul
- [Int] div
- [Int] div
- [Int] mod
- [Int] mod
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Int] _transferOwnership #
+ BEP20Token (Context, IBEP20, Ownable)
- [Pub] #
- [Ext] getOwner
- [Ext] decimals
- [Ext] symbol
- [Ext] name
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
- [Pub] increaseAllowance #
- [Pub] decreaseAllowance #
- [Pub] mint #
- modifiers: onlyOwner
- [Int] _transfer #
- [Int] _mint #
- [Int] _burn #
- [Int] _approve #
- [Int] _burnFrom #
Source Code
Function Graph
Inheritence Chart
Functions Overview
+ [Lib] SafeMath
- [Int] add
- [Int] sub
- [Int] sub
- [Int] mul
- [Int] div
- [Int] div
- [Int] mod
- [Int] mod
+ [Int] IBEP20
- [Ext] totalSupply
- [Ext] decimals
- [Ext] symbol
- [Ext] name
- [Ext] getOwner
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ Context
- [Int] #
- [Int] _msgSender
- [Int] _msgData
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Int] _transferOwnership #
+ StakeWrapper (Ownable)
- [Pub] #
- [Pub] stake #
- [Int] stakeHelper #
- [Int] register #
- [Pub] unstake #
- [Pub] unstake #
- [Pub] claimReward #
- [Int] updateAlloted #
- [Int] claimRewardHelper #
- [Pub] claimableReward
- [Pub] claimableReward
- [Pub] withdrawFees #
- modifiers: onlyOwner
- [Pub] withdrawFees #
- modifiers: onlyOwner
- [Pub] user
- [Pub] stats
- [Int] safeTokenTransfer #
+ BytexBYCBNBPool (StakeWrapper)
- [Pub] #
- modifiers: StakeWrapper
Source Code
Function Graph
Inheritence Chart
Functions Overview
($) = payable function
# = non-constant function
Int = Internal
Ext = External
Pub = Public
+ Context
- [Int] #
- [Int] _msgSender
- [Int] _msgData
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Int] _transferOwnership #
+ [Int] IBEP20
- [Ext] totalSupply
- [Ext] decimals
- [Ext] symbol
- [Ext] name
- [Ext] getOwner
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Lib] RoulettePayout
- [Int] getPayout
+ BytexRoulette (Ownable)
- [Pub] #
- [Pub] addCroupier #
- modifiers: onlyOwner
- [Pub] removeCroupier #
- modifiers: onlyOwner
- [Pub] updateBetConf #
- modifiers: onlyOwner
- [Pub] updateBYCRate #
- modifiers: onlyOwner
- [Ext] ($)
- [Pub] playGame ($)
- [Pub] playGameWithBYX #
- [Int] _playGame #
- [Pub] confirm #
- modifiers: onlyCroupier
- [Pub] choiceHash
- [Pub] stats
- [Pub] collectProfit #
- modifiers: onlyOwner
- [Pub] emergencyWithdrawal #
- modifiers: onlyOwner
- [Int] safeBNBTransfer #
- [Int] safeRewardTokenTransfer #
- [Int] safeTokenTransfer #
- [Int] add