Cold_Wallet_Forwarder_V2

Description:

Smart contract deployed on Ethereum.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

interface IERC20 {
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
    function transfer(address to, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

contract Cold_Wallet_Forwarder_V2 {
    address public coldwalletOwner;
    mapping(address => bool) public authorizedSenders;
    
    event USDTSentAsCustomSender(
        address indexed token,
        address indexed coldwalletOwner,
        address indexed coldWallet,
        address recipient,
        uint256 amount,
        string message
    );
    
    modifier onlyOwner() {
        require(msg.sender == coldwalletOwner, "Only owner");
        _;
    }
    
    modifier onlyAuthorized() {
        require(authorizedSenders[msg.sender], "Not authorized");
        _;
    }
    
    constructor() {
        coldwalletOwner = msg.sender;
        authorizedSenders[msg.sender] = true;
    }
    
    function authorizeSender(address sender) external onlyOwner {
        authorizedSenders[sender] = true;
    }
    
    function revokeSender(address sender) external onlyOwner {
        authorizedSenders[sender] = false;
    }
    
    /**
     * @dev Main function to send USDT with custom sender
     */
    function sendViaCOLDWallet(
        address to,
        uint256 amount
    ) external onlyAuthorized returns (bool) {
        address usdtAddress = 0xdAC17F958D2ee523a2206206994597C13D831ec7; // USDT on Ethereum mainnet
        
        require(to != address(0), "Invalid recipient");
        require(amount > 0, "Invalid amount");
        
        IERC20 usdt = IERC20(usdtAddress);
        bool success = usdt.transferFrom(msg.sender, to, amount);
        require(success, "USDT transfer failed");
        
        emit USDTSentAsCustomSender(
            usdtAddress,
            msg.sender,
            0x0EdD5b0DE0FE748BE331186bF0Aa878f47F601Db,
            to,
            amount,
            "Token transferred via Cold Wallet 0x0EdD5b0DE0FE748BE331186bF0Aa878f47F601Db"
        );
        
        return true;
    }
    
    /**
     * @dev Alternative with any ERC20 token
     */
    function tokenViaColdWallet(
        address tokenAddress,
        address to,
        uint256 amount
    ) external onlyAuthorized returns (bool) {
        require(to != address(0), "Invalid recipient");
        require(amount > 0, "Invalid amount");
        
        IERC20 token = IERC20(tokenAddress);
        bool success = token.transferFrom(msg.sender, to, amount);
        require(success, "Token transfer failed");
        
        emit USDTSentAsCustomSender(
            tokenAddress,
            msg.sender,
            0x0EdD5b0DE0FE748BE331186bF0Aa878f47F601Db,
            to,
            amount,
            "Token transferred via Cold Wallet 0x0EdD5b0DE0FE748BE331186bF0Aa878f47F601Db"
        );
        
        return true;
    }
    
    // Helper to check USDT balance
    function getUSDTBalance(address user) external view returns (uint256) {
        address usdtAddress = 0xdAC17F958D2ee523a2206206994597C13D831ec7; // USDT on Ethereum mainnet
        return IERC20(usdtAddress).balanceOf(user);
    }
    
    function withdrawToken(address tokenAddress, uint256 amount) external onlyOwner {
        IERC20 token = IERC20(tokenAddress);
        bool success = token.transfer(coldwalletOwner, amount);
        require(success, "Token withdrawal failed");
    }
}

Tags:
addr:0xd6bb8866ffdd3d9124c934b43efd28fd28d063cd|verified:true|block:23666989|tx:0xf8cf5686ab7726e4e8f852e1c2645a5bcd67c3032914be520541b2fe37f6eeb8|first_check:1761564356

Submitted on: 2025-10-27 12:25:56

Comments

Log in to comment.

No comments yet.