Elephant Money - Smart Contract Audit Report
Summary
Elephant Money is building a staking platform along with two new tokens:
For this audit we reviewed the project team's ElephantDollar, Elephant, Treasury, BankrollNetworkStack, ElephantPoolDistributor, ElephantDollarDistributor, Whitelist, ElephantGraveyard, ElephantLiquidityDrive, and ElephantReserve contracts at the following locations:
Notes on the Contracts:
ElephantDollar Contract:Elephant Contract:
- ElephantDollar is a BEP20 token with both minting and burning capabilities.
- Whitelisted users can mint any amount of tokens to any address at any time as long as it does not cause the total supply to exceed the maximum integer value of ~115 quattuorvigintillion.
- Any user can burn their own tokens at any time to decrease the total supply.
- This contract is used to create the Elephant Money Stable token ($TRUNK).
- The ElephantReserve contract is used for buying, selling, and maintaining the price of $TRUNK.
- The owner has the ability to add/remove any address to/from the Whitelist at any time.
Treasury Contract:
- The total supply of the token is initially set to one quadrillion [1,000,000,000,000,000].
- The ElephantLiquidityDrive contract is intended to be used to hold a presale for 25% of the tokens, where users can deposit ETH for a portion of these tokens based on their their share of ETH deposited. These tokens can only be claimed once the owner ends the presale after after launching.
- Once this contract is deployed, any user can call launch, which allocates 49% of tokens to the ElephantGraveyard contract, 25% of tokens to the ElephantLiquidityDrive contract, 25% of tokens to be paired with the contract's ETH balance and added to uniswap as liquidity, and 1% of tokens to the contract's owner.
- The ElephantGraveyard contract is used to store up to 51% of the total Elephant token supply at a time. If the amount exceeds 51%, anyone can rebalance, which will reduce the ElephantGraveyard's holdings to 50% by transferring excess tokens back to the Elephant contract.
- No mint or burn functions are present, however users can send their tokens to the 0x..dead address, if desired. If the owner does not exclude the 0x..dead address, it will participate in the reward distribution (as a regular holder) and increase proportionally to the rewards it receives. This is can be used as a deflationary mechanism.
- There is a 5% 'tax fee' and 5% 'liquidity fee' on all transactions for any "non-excluded" address that participates in a transfer. The owner has the ability to turn these taxes on or off at any time.
- A portion of the tax fee is redistributed to existing token holders instantly and automatically at the time of each transaction.
- The liquidity fee charged on transactions is stored in the contract and, once a threshold value of 500 billion is met, used to fund Pancakeswap liquidity. This functionality can be enabled/disabled by the owner.
- Liquidity-adds are funded by selling a portion of the tokens collected as fees (after the threshhold as determined by the owner is met), then pairing the received BNB with the token, and adding it as liquidity to the BNB pair.
- The recipient of these newly created LP tokens (as a result of this process) is the Owner of the contract.
- The owner of the contract can exclude and include accounts from transfer fees and reward distribution.
- The owner has the ability to update the address of the router.
BankrollNetworkStackStack Contract:
- A Treasury holds a defined token which can be withdrawn by whitelisted addresses. This token can not be changed.
- The owner can add or remove an address from the whitelist at any time.
ElephantPoolDistributor Contract:
- This is a staking contract which allows users to deposit a token, specified by the owner at deployment, in return for rewards over time.
- When depositing, a once-defined percentage fee is taken. If buyback is enabled, 20% of this fee is taken and eventually converted to WETH (if the specified token is not already WETH) and used to buy Elephant Tokens. Any user can initiate a buyback at any time.
- The remaining 80% of the fee is added to the dividend balance. If buyback is disabled, the entirety of the fee is added to the dividend balance.
- The amount after fees is added to the user's tracked balance.
- Users can also use their tokens to deposit for a different address, or donate tokens to increase the profit per share for all users.
- Users can withdraw their earnings at any time, or reinvest their earnings directly through the contract. Both of these operations have no fee involved.
- Users can unstake their funds at any time. A fee is taken and allocated as described above; the remainder can then be withdrawn through the withdraw function.
- The payout rate, entry fee, and exit fee are all defined upon deployment and cannot be changed.
- Profit per share is recalculated after any deposit, withdraw, reinvest, or donation.
- This contract also tracks the number of participants and total transactions.
- The deposit and sell fees cannot be changed after deployment.
ElephantReserve Contract:
- Whitelisted addresses can add credit balances to this contract, where they are then distributed to pool addresses over time.
- The owner can add or remove a pool at any time.
- The payout earned per day is equal to 1% of the credit balance.
- If the payout has reached a certain threshold, the associated ElephantReserve contract withdraws the payout in ElephantTokens from the Elephant Treasury address, converts it it WETH, and sends it to this contract. The WETH balance of this contract is divided and distributed evenly across pools.
- When distributing to the pools, the WETH is swapped for the pool's corresponding token before transfer (unless the pool's token is already WETH).
- The owner can change the ElephantReserve address at any time.
- The owner can update the threshold for payout to any amount greater than 1e18 at any time.
- Whitelisted users can update the credit balance of the contract at any time.
- The ElephantDollarDistributor contract has the same functionality as the ElephantPoolDistributor contract, however the payouts are withdrawn and sent to pools in $TRUNK instead of WETH. This is done through the ElephantReserve contract by withdrawing from the Elephant Treasury address, swapping for BUSD, and using it as collateral to mint $TRUNK. The $TRUNK is then sent back to the ElephantDollarDistributor contract.
General Notes Across Contracts:
- In addition to its role in the distributor contracts, his contract facilitates the buying and selling of $TRUNK.
- When buying, the user must supply BUSD to the contract to be used as collateral.
- A 1% fee is charged when buying $TRUNK, which is paired with the same number of minted $TRUNK and added as liquidity given a liquidity threshold has been reached. The remaining amount will be minted to the user in a 1:1 ratio to BUSD.
- Of the remaining 99% of BUSD sent by the user, 75% is sent to the BUSD Treasury, and 25% is swapped for Elephant tokens and sent to the Elephant Treasury.
- A performance pool, secondary rewards pool, and backed pool all are 'credited' additional amounts. The credit function, along with the rest of the pool contract functions, were not in the scope of this audit. The performance pool is credited the fee amount, the secondary reward pool is credited 2x the fee amount, and the backed pool is credited 8x the fee amount.
- When a user sells their $TRUNK to the contract, it is transferred to this contract and subsequently burned.
- A 1% fee is taken; of the remaining amount, 75% is withdrawn from the BUSD Treasury and 25% of the equivalent amount is withdrawn from the Elephant Treasury. These tokens are then transferred to the user.
- The performance pool and secondary reward pools are then both credited the fee amount, and the backed pool is credited 2x the fee amount.
- If the address selling is included the contract's parter list, they will only receive the 75% BUSD portion from the treasury (no Elephant).
- The value of $TRUNK is intended to mantain a 1:1 ratio with BUSD. Whitelisted users must not mint $TRUNK directly from the token contract or the value or $TRUNK will be destabalized.
- The owner can change the threshold to add liquidity at any time.
- The Owner can change the backed pool, secondary reward pool, and performance pool addresses at any time.
- Any Whitelisted address can withdraw funds from the Elephant or BUSD Treasury at any time.
Audit Findings Summary
- SafeMath is used to prevent overflows.
- In the Ownable contract used across this project, the owner has the ability to use the "lock" function in order to temporarily set ownership to address(0). Ownership is restored after the duration of time determined by the owner has passed and they use the 'unlock' function. If lock and unlock have been called, ownership can be restored even after renouncing or transferring ownership by calling the unlock function afterwards.
- Many variables can be declared constant and many functions can be declared external for gas saving purposes.
- No external threats were identified.
- Please ensure trust in the team prior to investing as they have significant control within the ecosystem. Whitelisted addresses have the ability to withdraw funds from the treasuries and mint $TRUNK at any time.
- Date: November 11th, 2021
Audit Results
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 | N/A | PASS |
Deprecated Opcodes | N/A | PASS |
Ether Thief | N/A | PASS |
Exceptions | N/A | PASS |
External Calls | N/A | PASS |
Flash Loans | N/A | PASS |
Front Running | N/A | PASS |
Integer Over/Underflow | N/A | PASS |
Multiple Sends | N/A | PASS |
Oracles | N/A | PASS |
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 |
Details: ElephantDollar Contract
($) = payable function
# = non-constant function
+ Context
- [Int] _msgSender
- [Int] _msgData
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Pub] getUnlockTime
- [Pub] lock #
- modifiers: onlyOwner
- [Pub] unlock #
+ Whitelist (Ownable)
- [Pub] addAddressToWhitelist #
- modifiers: onlyOwner
- [Pub] addAddressesToWhitelist #
- modifiers: onlyOwner
- [Pub] removeAddressFromWhitelist #
- modifiers: onlyOwner
- [Pub] removeAddressesFromWhitelist #
- modifiers: onlyOwner
+ [Lib] SafeMath
- [Int] mul
- [Int] div
- [Int] sub
- [Int] add
+ [Int] BEP20Basic
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
+ BasicToken (BEP20Basic)
- [Pub] totalSupply
- [Pub] transfer #
- [Pub] balanceOf
+ BEP20 (BEP20Basic)
- [Pub] allowance
- [Pub] transferFrom #
- [Pub] approve #
+ StandardToken (BEP20, BasicToken)
- [Pub] transferFrom #
- [Pub] approve #
- [Pub] allowance
- [Pub] increaseApproval #
- [Pub] decreaseApproval #
+ MintableToken (StandardToken, Whitelist)
- [Pub] mint #
- modifiers: onlyWhitelisted,canMint
+ BurnableToken (MintableToken)
- [Pub] burn #
+ ElephantDollar (BurnableToken)
- [Pub] #
- modifiers: Ownable
- [Pub] name
- [Pub] symbol
- [Pub] mint #
- [Pub] transferFrom #
- [Pub] transfer #
- [Pub] remainingMintableSupply
Details: Elephant Contract
($) = payable function
# = non-constant function
+ [Int] IERC20
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Lib] SafeMath
- [Int] add
- [Int] sub
- [Int] sub
- [Int] mul
- [Int] div
- [Int] div
- [Int] mod
- [Int] mod
+ Context
- [Int] _msgSender
- [Int] _msgData
+ [Lib] Address
- [Int] isContract
- [Int] sendValue #
- [Int] functionCall #
- [Int] functionCall #
- [Int] functionCallWithValue #
- [Int] functionCallWithValue #
- [Prv] _functionCallWithValue #
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Pub] getUnlockTime
- [Pub] lock #
- modifiers: onlyOwner
- [Pub] unlock #
+ [Int] IUniswapV2Factory
- [Ext] feeTo
- [Ext] feeToSetter
- [Ext] getPair
- [Ext] allPairs
- [Ext] allPairsLength
- [Ext] createPair #
- [Ext] setFeeTo #
- [Ext] setFeeToSetter #
+ [Int] IUniswapV2Pair
- [Ext] name
- [Ext] symbol
- [Ext] decimals
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] allowance
- [Ext] approve #
- [Ext] transfer #
- [Ext] transferFrom #
- [Ext] DOMAIN_SEPARATOR
- [Ext] PERMIT_TYPEHASH
- [Ext] nonces
- [Ext] permit #
- [Ext] MINIMUM_LIQUIDITY
- [Ext] factory
- [Ext] token0
- [Ext] token1
- [Ext] getReserves
- [Ext] price0CumulativeLast
- [Ext] price1CumulativeLast
- [Ext] kLast
- [Ext] mint #
- [Ext] burn #
- [Ext] swap #
- [Ext] skim #
- [Ext] sync #
- [Ext] initialize #
+ [Int] IUniswapV2Router01
- [Ext] factory
- [Ext] WETH
- [Ext] addLiquidity #
- [Ext] addLiquidityETH ($)
- [Ext] removeLiquidity #
- [Ext] removeLiquidityETH #
- [Ext] removeLiquidityWithPermit #
- [Ext] removeLiquidityETHWithPermit #
- [Ext] swapExactTokensForTokens #
- [Ext] swapTokensForExactTokens #
- [Ext] swapExactETHForTokens ($)
- [Ext] swapTokensForExactETH #
- [Ext] swapExactTokensForETH #
- [Ext] swapETHForExactTokens ($)
- [Ext] quote
- [Ext] getAmountOut
- [Ext] getAmountIn
- [Ext] getAmountsOut
- [Ext] getAmountsIn
+ [Int] IUniswapV2Router02 (IUniswapV2Router01)
- [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
- [Ext] removeLiquidityETHWithPermitSupportingFeeOnTransferTokens #
- [Ext] swapExactTokensForTokensSupportingFeeOnTransferTokens #
- [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
- [Ext] swapExactTokensForETHSupportingFeeOnTransferTokens #
+ ElephantGraveyard (Context, Ownable)
- [Pub] #
- [Ext] rebalance #
- [Ext] ready
+ ElephantLiquidityDrive (Context, Ownable)
- [Pub] #
- [Ext] ($)
- [Pub] donate ($)
- modifiers: notLaunched
- [Ext] claimTokens #
- [Ext] end #
- modifiers: onlyOwner,notLaunched
- [Pub] donationsOf
- [Pub] availableOf
- [Pub] claimedOf
+ Elephant (Context, IERC20, Ownable)
- [Pub] #
- [Pub] launch #
- [Pub] ready
- [Pub] name
- [Pub] symbol
- [Pub] decimals
- [Pub] totalSupply
- [Pub] balanceOf
- [Pub] transfer #
- [Pub] allowance
- [Pub] approve #
- [Pub] transferFrom #
- [Pub] increaseAllowance #
- [Pub] decreaseAllowance #
- [Pub] isExcludedFromReward
- [Pub] totalFees
- [Pub] reflect #
- [Pub] reflectionFromToken
- [Pub] tokenFromReflection
- [Pub] excludeFromReward #
- modifiers: onlyOwner
- [Ext] includeInReward #
- modifiers: onlyOwner
- [Prv] _transferBothExcluded #
- [Pub] excludeFromFee #
- modifiers: onlyOwner
- [Pub] includeInFee #
- modifiers: onlyOwner
- [Ext] ($)
- [Prv] _reflectFee #
- [Prv] _getValues
- [Prv] _getTValues
- [Prv] _getRValues
- [Prv] _getRate
- [Prv] _getCurrentSupply
- [Prv] _takeLiquidity #
- [Prv] calculateTaxFee
- [Prv] calculateLiquidityFee
- [Prv] removeAllFee #
- [Prv] restoreAllFee #
- [Pub] isExcludedFromFee
- [Prv] _approve #
- [Prv] _transfer #
- [Prv] swapAndLiquify #
- modifiers: lockTheSwap
- [Prv] swapTokensForEth #
- [Prv] addLiquidity #
- [Prv] _tokenTransfer #
- [Prv] _transferStandard #
- [Prv] _transferToExcluded #
- [Prv] _transferFromExcluded #
Details: Treasury Contract
($) = payable function
# = non-constant function
+ Context
- [Int] _msgSender
- [Int] _msgData
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Pub] getUnlockTime
- [Pub] lock #
- modifiers: onlyOwner
- [Pub] unlock #
+ Whitelist (Ownable)
- [Pub] addAddressToWhitelist #
- modifiers: onlyOwner
- [Pub] addAddressesToWhitelist #
- modifiers: onlyOwner
- [Pub] removeAddressFromWhitelist #
- modifiers: onlyOwner
- [Pub] removeAddressesFromWhitelist #
- modifiers: onlyOwner
+ [Int] IToken
- [Ext] transfer #
+ Treasury (Whitelist)
- [Pub] #
- modifiers: Ownable
- [Pub] withdraw #
- modifiers: onlyWhitelisted
Details: BankrollNetworkStack Contract
($) = payable function
# = non-constant function
+ Ownable
- [Pub] #
- [Pub] transferOwnership #
- modifiers: onlyOwner
+ [Int] IUniswapV2Factory
- [Ext] feeTo
- [Ext] feeToSetter
- [Ext] getPair
- [Ext] allPairs
- [Ext] allPairsLength
- [Ext] createPair #
- [Ext] setFeeTo #
- [Ext] setFeeToSetter #
+ [Int] IUniswapV2Pair
- [Ext] name
- [Ext] symbol
- [Ext] decimals
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] allowance
- [Ext] approve #
- [Ext] transfer #
- [Ext] transferFrom #
- [Ext] DOMAIN_SEPARATOR
- [Ext] PERMIT_TYPEHASH
- [Ext] nonces
- [Ext] permit #
- [Ext] MINIMUM_LIQUIDITY
- [Ext] factory
- [Ext] token0
- [Ext] token1
- [Ext] getReserves
- [Ext] price0CumulativeLast
- [Ext] price1CumulativeLast
- [Ext] kLast
- [Ext] mint #
- [Ext] burn #
- [Ext] swap #
- [Ext] skim #
- [Ext] sync #
- [Ext] initialize #
+ [Int] IUniswapV2Router01
- [Ext] factory
- [Ext] WETH
- [Ext] addLiquidity #
- [Ext] addLiquidityETH ($)
- [Ext] removeLiquidity #
- [Ext] removeLiquidityETH #
- [Ext] removeLiquidityWithPermit #
- [Ext] removeLiquidityETHWithPermit #
- [Ext] swapExactTokensForTokens #
- [Ext] swapTokensForExactTokens #
- [Ext] swapExactETHForTokens ($)
- [Ext] swapTokensForExactETH #
- [Ext] swapExactTokensForETH #
- [Ext] swapETHForExactTokens ($)
- [Ext] quote
- [Ext] getAmountOut
- [Ext] getAmountIn
- [Ext] getAmountsOut
- [Ext] getAmountsIn
+ [Int] IUniswapV2Router02 (IUniswapV2Router01)
- [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
- [Ext] removeLiquidityETHWithPermitSupportingFeeOnTransferTokens #
- [Ext] swapExactTokensForTokensSupportingFeeOnTransferTokens #
- [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
- [Ext] swapExactTokensForETHSupportingFeeOnTransferTokens #
+ [Int] Token
- [Ext] transferFrom #
- [Ext] transfer #
- [Ext] balanceOf
- [Ext] approve #
+ BankrollNetworkStack (Ownable)
- [Pub] #
- modifiers: Ownable
- [Pub] sweep #
- [Pub] enableBuyback #
- modifiers: onlyOwner
- [Pub] updateTokenRouter #
- modifiers: onlyOwner
- [Prv] buyback #
- [Pub] donatePool #
- [Pub] buy #
- [Pub] buyFor #
- [Ext] ($)
- [Pub] reinvest #
- modifiers: onlyStronghands
- [Pub] withdraw #
- modifiers: onlyStronghands
- [Pub] sell #
- modifiers: onlyBagholders
- [Ext] transfer #
- modifiers: onlyBagholders
- [Pub] totalTokenBalance
- [Pub] totalSupply
- [Pub] myTokens
- [Pub] myDividends
- [Pub] balanceOf
- [Pub] tokenBalance
- [Pub] dividendsOf
- [Pub] sellPrice
- [Pub] buyPrice
- [Pub] calculateTokensReceived
- [Pub] calculateethReceived
- [Pub] statsOf
- [Pub] dailyEstimate
- [Prv] allocateFees #
- [Prv] distribute #
- [Int] purchaseTokens #
+ [Lib] SafeMath
- [Int] mul
- [Int] div
- [Int] sub
- [Int] safeSub
- [Int] add
- [Int] max
- [Int] min
Details: Distributor Contracts
($) = payable function
# = non-constant function
+ [Int] IERC20
- [Ext] mint #
- [Ext] burn #
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Lib] SafeMath
- [Int] add
- [Int] sub
- [Int] sub
- [Int] mul
- [Int] div
- [Int] div
- [Int] mod
- [Int] mod
+ Context
- [Int] _msgSender
- [Int] _msgData
+ [Lib] Address
- [Int] isContract
- [Int] sendValue #
- [Int] functionCall #
- [Int] functionCall #
- [Int] functionCallWithValue #
- [Int] functionCallWithValue #
- [Prv] _functionCallWithValue #
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Pub] getUnlockTime
- [Pub] lock #
- modifiers: onlyOwner
- [Pub] unlock #
+ Whitelist (Ownable)
- [Pub] addAddressToWhitelist #
- modifiers: onlyOwner
- [Pub] addAddressesToWhitelist #
- modifiers: onlyOwner
- [Pub] removeAddressFromWhitelist #
- modifiers: onlyOwner
- [Pub] removeAddressesFromWhitelist #
- modifiers: onlyOwner
+ [Int] IUniswapV2Factory
- [Ext] feeTo
- [Ext] feeToSetter
- [Ext] getPair
- [Ext] allPairs
- [Ext] allPairsLength
- [Ext] createPair #
- [Ext] setFeeTo #
- [Ext] setFeeToSetter #
+ [Int] IUniswapV2Pair
- [Ext] name
- [Ext] symbol
- [Ext] decimals
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] allowance
- [Ext] approve #
- [Ext] transfer #
- [Ext] transferFrom #
- [Ext] DOMAIN_SEPARATOR
- [Ext] PERMIT_TYPEHASH
- [Ext] nonces
- [Ext] permit #
- [Ext] MINIMUM_LIQUIDITY
- [Ext] factory
- [Ext] token0
- [Ext] token1
- [Ext] getReserves
- [Ext] price0CumulativeLast
- [Ext] price1CumulativeLast
- [Ext] kLast
- [Ext] mint #
- [Ext] burn #
- [Ext] swap #
- [Ext] skim #
- [Ext] sync #
- [Ext] initialize #
+ [Int] IUniswapV2Router01
- [Ext] factory
- [Ext] WETH
- [Ext] addLiquidity #
- [Ext] addLiquidityETH ($)
- [Ext] removeLiquidity #
- [Ext] removeLiquidityETH #
- [Ext] removeLiquidityWithPermit #
- [Ext] removeLiquidityETHWithPermit #
- [Ext] swapExactTokensForTokens #
- [Ext] swapTokensForExactTokens #
- [Ext] swapExactETHForTokens ($)
- [Ext] swapTokensForExactETH #
- [Ext] swapExactTokensForETH #
- [Ext] swapETHForExactTokens ($)
- [Ext] quote
- [Ext] getAmountOut
- [Ext] getAmountIn
- [Ext] getAmountsOut
- [Ext] getAmountsIn
+ [Int] IUniswapV2Router02 (IUniswapV2Router01)
- [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
- [Ext] removeLiquidityETHWithPermitSupportingFeeOnTransferTokens #
- [Ext] swapExactTokensForTokensSupportingFeeOnTransferTokens #
- [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
- [Ext] swapExactTokensForETHSupportingFeeOnTransferTokens #
+ [Int] ITreasury
- [Ext] withdraw #
+ [Int] IElephantPool
- [Ext] donatePool #
+ [Int] IRewardPool
- [Ext] credit #
- [Ext] sweep #
- [Ext] creditBalance #
+ ElephantPoolDistributor (Whitelist)
- [Pub] #
- modifiers: Ownable
- [Pub] updateReserve #
- modifiers: onlyOwner
- [Pub] updatePayoutThreshold #
- modifiers: onlyOwner
- [Pub] updateRouter #
- modifiers: onlyOwner
- [Pub] credit #
- modifiers: onlyWhitelisted
- [Pub] add #
- modifiers: onlyOwner
- [Pub] remove #
- modifiers: onlyOwner
- [Pub] contains
- [Pub] available
- [Pub] sweep #
- [Prv] payPool #
+ ElephantDollarDistributor (Whitelist)
- [Pub] #
- modifiers: Ownable
- [Pub] updateReserve #
- modifiers: onlyOwner
- [Pub] updatePayoutThreshold #
- modifiers: onlyOwner
- [Pub] credit #
- modifiers: onlyWhitelisted
- [Pub] add #
- modifiers: onlyOwner
- [Pub] remove #
- modifiers: onlyOwner
- [Pub] contains
- [Pub] available
- [Pub] dailyEstimate
- [Pub] sweep #
- [Prv] payPool #
+ BackedForwardingPool (Ownable)
- [Pub] #
- modifiers: Ownable
- [Pub] donatePool #
+ [Int] IElephantReserve
- [Ext] mint #
- [Ext] estimateMint
- [Ext] redeem #
- [Ext] redeemCredit #
- [Ext] redeemCreditAsBacked #
- [Ext] estimateRedemption
- [Ext] estimateCollateralToCore
- [Ext] estimateCoreToCollateral
- [Ext] collateralizationRatio
- [Ext] redeemCollateralCreditToWETH #
+ [Lib] EnumerableSet
- [Prv] _add #
- [Prv] _remove #
- [Prv] _contains
- [Prv] _length
- [Prv] _at
- [Int] add #
- [Int] remove #
- [Int] contains
- [Int] length
- [Int] at
- [Int] add #
- [Int] remove #
- [Int] contains
- [Int] length
- [Int] at
- [Int] add #
- [Int] remove #
- [Int] contains
- [Int] length
- [Int] at
Details: ElephantReserve Contract
($) = payable function
# = non-constant function
+ [Int] IERC20
- [Ext] mint #
- [Ext] burn #
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] transfer #
- [Ext] allowance
- [Ext] approve #
- [Ext] transferFrom #
+ [Lib] SafeMath
- [Int] add
- [Int] sub
- [Int] sub
- [Int] mul
- [Int] div
- [Int] div
- [Int] mod
- [Int] mod
- [Int] max
- [Int] min
+ Context
- [Int] _msgSender
- [Int] _msgData
+ [Lib] Address
- [Int] isContract
- [Int] sendValue #
- [Int] functionCall #
- [Int] functionCall #
- [Int] functionCallWithValue #
- [Int] functionCallWithValue #
- [Prv] _functionCallWithValue #
+ Ownable (Context)
- [Int] #
- [Pub] owner
- [Pub] renounceOwnership #
- modifiers: onlyOwner
- [Pub] transferOwnership #
- modifiers: onlyOwner
- [Pub] getUnlockTime
- [Pub] lock #
- modifiers: onlyOwner
- [Pub] unlock #
+ Whitelist (Ownable)
- [Pub] addAddressToWhitelist #
- modifiers: onlyOwner
- [Pub] addAddressesToWhitelist #
- modifiers: onlyOwner
- [Pub] removeAddressFromWhitelist #
- modifiers: onlyOwner
- [Pub] removeAddressesFromWhitelist #
- modifiers: onlyOwner
+ [Int] IUniswapV2Factory
- [Ext] feeTo
- [Ext] feeToSetter
- [Ext] getPair
- [Ext] allPairs
- [Ext] allPairsLength
- [Ext] createPair #
- [Ext] setFeeTo #
- [Ext] setFeeToSetter #
+ [Int] IUniswapV2Pair
- [Ext] name
- [Ext] symbol
- [Ext] decimals
- [Ext] totalSupply
- [Ext] balanceOf
- [Ext] allowance
- [Ext] approve #
- [Ext] transfer #
- [Ext] transferFrom #
- [Ext] DOMAIN_SEPARATOR
- [Ext] PERMIT_TYPEHASH
- [Ext] nonces
- [Ext] permit #
- [Ext] MINIMUM_LIQUIDITY
- [Ext] factory
- [Ext] token0
- [Ext] token1
- [Ext] getReserves
- [Ext] price0CumulativeLast
- [Ext] price1CumulativeLast
- [Ext] kLast
- [Ext] mint #
- [Ext] burn #
- [Ext] swap #
- [Ext] skim #
- [Ext] sync #
- [Ext] initialize #
+ [Int] IUniswapV2Router01
- [Ext] factory
- [Ext] WETH
- [Ext] addLiquidity #
- [Ext] addLiquidityETH ($)
- [Ext] removeLiquidity #
- [Ext] removeLiquidityETH #
- [Ext] removeLiquidityWithPermit #
- [Ext] removeLiquidityETHWithPermit #
- [Ext] swapExactTokensForTokens #
- [Ext] swapTokensForExactTokens #
- [Ext] swapExactETHForTokens ($)
- [Ext] swapTokensForExactETH #
- [Ext] swapExactTokensForETH #
- [Ext] swapETHForExactTokens ($)
- [Ext] quote
- [Ext] getAmountOut
- [Ext] getAmountIn
- [Ext] getAmountsOut
- [Ext] getAmountsIn
+ [Int] IUniswapV2Router02 (IUniswapV2Router01)
- [Ext] removeLiquidityETHSupportingFeeOnTransferTokens #
- [Ext] removeLiquidityETHWithPermitSupportingFeeOnTransferTokens #
- [Ext] swapExactTokensForTokensSupportingFeeOnTransferTokens #
- [Ext] swapExactETHForTokensSupportingFeeOnTransferTokens ($)
- [Ext] swapExactTokensForETHSupportingFeeOnTransferTokens #
+ [Int] ITreasury
- [Ext] withdraw #
+ [Int] IElephantPool
- [Ext] donatePool #
+ [Int] IRewardPool
- [Ext] credit #
- [Ext] sweep #
- [Ext] creditBalance
- [Ext] available
- [Ext] payoutThreshold
+ ElephantReserve (Context, Whitelist)
- [Pub] #
- modifiers: Ownable
- [Pub] updateRewardPools #
- modifiers: onlyOwner
- [Pub] updateCollateralRouter #
- modifiers: onlyOwner
- [Pub] updateAntiSlippageFactor #
- modifiers: onlyOwner
- [Pub] updateLiquidityThreshold #
- modifiers: onlyOwner
- [Pub] sweep #
- [Prv] _mint #
- [Prv] addLiquidity #
- [Pub] mint #
- [Pub] estimateMint
- [Pub] redeem #
- [Pub] redeemCredit #
- modifiers: onlyWhitelisted
- [Pub] redeemCreditAsBacked #
- [Pub] estimateRedemption
- [Pub] estimateCollateralToCore
- [Pub] estimateCoreToCollateral
- [Pub] collateralizationRatio
- [Pub] collateralizationRatioLP
- [Prv] buyCollateralWithCore #
- [Prv] buyCoreWithCollateral #
- [Pub] redeemCollateralCreditToWETH #
- modifiers: onlyWhitelisted