Inactivity Burn Functions

Time-based threshold (15 days of inactivity):

// ```solidity
function burnInactiveAddress(address[] calldata _addrs) external returns (bool) {
    require(_addrs.length > 0, "empty arr");
    uint256 arrLength = _addrs.length;
    for (uint256 i; i < arrLength; ) {
        address addr = _addrs[i];
        if (addr != address(0) && !isContract(addr)) {
            uint256 lastActive = lastTXtime[addr];
            if (lastActive != 0) {
                uint256 inactivityTime = block.timestamp - lastActive;
                if (inactivityTime > 15 days) {
                    uint256 burnAmount = balanceOf[addr] * inactive_burn / (10**decimals);  // 50%
                    _burn(addr, burnAmount);
                }
                if (inactivityTime > 30 days) {
                    _burn(addr, balanceOf[addr]);  // 100%
                }
            }
        }
        unchecked { ++i; }
    }
    return true;
}
```

A similar function exists for contracts. These can be called by the owner and integrated into the dApp for community triggers.

Last updated