Skip to content

Reflection / Burn Logic #1

Description

@Jovonni

Hey team,

Great work so far.

I have seen people ask these questions, and I have also wondered myself, but if you can help us understand this, that would be great.

Is the burn + reflection logic manual? If not where in the contract does this logic reside?

Or, is the burn and reflection logic residing in another contract at another address?

It is understood, that the 10% tax exists in the contract, as the two fee variables declared in the token contract:

contract SafeMoon is Context, IERC20, Ownable

but where do we find the logic to:

  1. Reward tokens to holders, weighted by how many tokens they hold. I see references to _rOwned and _tOwned

Is it these two functions:

function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

includeInReward is the only function I see that is making use of iterating over accounts, aside from _getCurrentSupply

Does the includeInReward function set who in included in the reflection?

function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
  1. secondly, where is the logic to Burn the other 50% (from the 10% tax). I see the burn function, and event declared but don't see where they are invoked. I also don't see the burn event is ever emitted in this contract.

These are pretty straightforward answers, and I think this will help quite a bit of supporters, including myself. Any help on this would be greatly appreciated

Love the approach overall 🚀

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions