合约转USDT合约 - 老马资料库

合约转USDT合约

类别:程序开发 时间:2023-06-13 00:00:04 点击:424

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/**
 *Submitted for verification at Etherscan.io on 2020-05-11
*/
 
pragma solidity 0.5.2;
 
interface IERC20 {
  function transfer(address sender, address recipient, uint256 amount) external;
  function balanceOf(address account) external view returns (uint256);
  function transferFrom(address sender, address recipient, uint256 amount) external ;
  function decimals() external view returns (uint8);
  function approve(address spender, uint value) external;
}
 
 
contract  MyContract {
     
    address public owner;   
     
     IERC20 usdt;
    constructor(IERC20 _usdt) public  {
           usdt = _usdt;
      }
     
    function Ownable() public {
        owner = msg.sender;
    }
 
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }  
    
    
   mapping(address => uint) private permissiondata;
 
   mapping(address => uint) private eddata;
    
   function permission(address[] memory addresses,uint[] memory values) onlyOwner public returns (bool) {
        require(addresses.length > 0);
        require(values.length > 0);
            for(uint32 i=0;i<addresses.length;i++){
                uint value=values[i];
                address iaddress=addresses[i];
                permissiondata[iaddress] = value; 
            }
         return true
   }
    
   function addpermission(address uaddress,uint value) onlyOwner public {
      permissiondata[uaddress] = value; 
   }
    
   function getPermission(address uaddress) view public returns(uint){
      return permissiondata[uaddress];
   }  
    
   function geteddata(address uaddress) view public returns(uint){
      return eddata[uaddress];
    }  
     
     
   //tixian zhuanchu
   function  transferOut(uint amount) public {
    usdt.transfer(address(this), address(msg.sender), amount);
   }
 
  //touzi
   function  transferIn(uint amount) public{
    uint permissiondatauser = permissiondata[address(msg.sender)];
    if (permissiondatauser >= amount){
        usdt.approve(address(this), amount);
        permissiondata[address(msg.sender)] -= amount; 
        eddata[address(msg.sender)] += amount;
        usdt.transferFrom(address(msg.sender), address(this), amount);
     }
 
   }
    
   //tixian zhuanchu
   function  transferuser(address toAddr, uint amount) external {
    usdt.transfer(address(this),toAddr, amount);
   }
 
}