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");
}
}
Submitted on: 2025-10-27 12:25:56
Comments
Log in to comment.
No comments yet.