github.com/fff-chain/go-fff@v0.0.0-20220726032732-1c84420b8a99/consensus/parlia/token/token_test.go (about) 1 package token 2 3 import ( 4 "context" 5 "github.com/fff-chain/go-fff/accounts/abi/bind" 6 "github.com/fff-chain/go-fff/common" 7 "github.com/fff-chain/go-fff/crypto" 8 "github.com/fff-chain/go-fff/ethclient" 9 "github.com/fff-chain/go-fff/global_config" 10 "github.com/fff-chain/go-fff/global_config/wallet" 11 "log" 12 "math/big" 13 "testing" 14 ) 15 16 func TestDeployBEP20USDT(t *testing.T) { //发布代币 17 18 d, _ := ethclient.Dial("http://87.118.86.2:8488") 19 20 pri := "20a442166fda1598b32d85d0cf5b30fe5867bf23c943f8584013eab0ad49a88c" 21 22 priKeyECD, err := crypto.HexToECDSA(pri) 23 24 ownerAddress := wallet.GetPublicAddressFromKey(pri) 25 26 if err != nil { 27 log.Println("私钥异常") 28 29 } 30 chianId, err := d.ChainID(context.Background()) 31 if err != nil { 32 log.Println("节点chianId异常", err) 33 34 } 35 param, err := bind.NewKeyedTransactorWithChainID(priKeyECD, chianId) 36 if err != nil { 37 log.Println("节点Transactor异常", err) 38 39 } 40 41 addr, _, _, _ := DeployBEP20USDT(param, d," EUR Stable Coin Cryptocurrency","EURco",global_config.EthToWei(100_0000_0000),"http://87.118.86.2:6001/dmc.png") 42 43 log.Println(addr, ownerAddress) 44 45 } 46 47 func TestErc20Transfer(t *testing.T) { //代币转账 48 49 d, _ := ethclient.Dial("http://87.118.86.2:8488") 50 51 pri := "20a442166fda1598b32d85d0cf5b30fe5867bf23c943f8584013eab0ad49a88c" 52 53 priKeyECD, err := crypto.HexToECDSA(pri) 54 55 if err != nil { 56 log.Println("私钥异常") 57 58 } 59 chianId, err := d.ChainID(context.Background()) 60 if err != nil { 61 log.Println("节点chianId异常", err) 62 63 } 64 param, err := bind.NewKeyedTransactorWithChainID(priKeyECD, chianId) 65 if err != nil { 66 log.Println("节点Transactor异常", err) 67 68 } 69 70 71 72 73 74 75 76 tokenContract := common.HexToAddress("FFF3TKXUqGcZ8wnFi5RGVMXSkrujbWzWAmXnWtvQSQSRnMS9kNpMCx7ig8") 77 78 tokenTransact, err := NewBEP20USDTTransactor(tokenContract, d) 79 if err != nil { 80 log.Println("节点Transactor异常", err) 81 82 } 83 84 ts, err := tokenTransact.Transfer(param, common.HexToAddress("FFF3rPN3k7M1EASWb6QU1QvJHXmrUGhPF8QS5U7hpDfkoWwGyb6aBoZhD1"), global_config.EthToWei(1)) 85 86 if err != nil { 87 log.Println("节点Transactor异常", err) 88 89 } 90 91 log.Println(ts.Hash()) 92 93 } 94 func TestGetErc20ContractInfo(t *testing.T) { //获取代币信息 95 96 d, _ := ethclient.Dial("http://87.118.86.2:8488") 97 98 ctAddress:=common.HexToAddress("FFF3bU7YUTH4Pn6PqvzxZ5GeVHDWJwKYngkVX4CsCQUBqs9q8SjVgLE473") 99 100 cl,_:=NewBEP20USDTCaller(ctAddress,d) 101 102 name,_:=cl.Name(nil) 103 104 log.Println("代币全民",name) 105 106 symbol,_:=cl.Symbol(nil) 107 108 log.Println("代币简称",symbol) 109 110 Decimals,_:=cl.Decimals(nil) 111 112 log.Println("代币精度",Decimals) 113 114 total,_:=cl.TotalSupply(nil) 115 116 log.Println("代币总流通",total) 117 118 119 bl,_:=cl.BalanceOf(nil,common.HexToAddress("FFF3nx7A1Coqe5shVeQzSbC5TruewaDkWVScqrsES2dB8FsJtfcYDCvJ6c")) 120 121 log.Println(global_config.WeiToEth(bl)) 122 123 124 log.Println(d.PendingBalanceAt(context.Background(),common.HexToAddress("FFF3nx7A1Coqe5shVeQzSbC5TruewaDkWVScqrsES2dB8FsJtfcYDCvJ6c"))) 125 126 } 127 func TestGetErc20Transaction(t *testing.T) { //获取每个交易中包含的代币交易 128 129 d, _ := ethclient.Dial("http://87.118.86.2:8488") 130 131 log.Println(getTransactionErc20Transactions(d, "0xa6438cfe68f349743b9d7ed85df14510bea7938f36a7b1b467a124d1a6efbbbf")) 132 133 } 134 135 type Erc20Transaction struct { 136 From common.Address 137 To common.Address 138 Value *big.Int 139 ContractAddress common.Address 140 } 141 142 func getTransactionErc20Transactions(d *ethclient.Client, tsHash string) []Erc20Transaction { 143 var erc20Ts []Erc20Transaction 144 rc, err := d.TransactionReceipt(context.Background(), common.HexToHash(tsHash)) 145 if err != nil { 146 147 log.Println(err) 148 return erc20Ts 149 } 150 logs := rc.Logs 151 152 var ercTransferHash = common.HexToHash("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef") 153 for k := range logs { 154 155 topics := logs[k].Topics 156 157 if len(topics) > 2 && topics[0].Hex() == ercTransferHash.Hex() { //判断是不是ERC20转账 158 159 newTrans := new(Erc20Transaction) 160 newTrans.From = common.BytesToAddress(topics[1].Bytes()) 161 newTrans.To = common.BytesToAddress(topics[2].Bytes()) 162 newTrans.Value = new(big.Int).SetBytes(logs[k].Data) 163 newTrans.ContractAddress = logs[k].Address 164 erc20Ts = append(erc20Ts, *newTrans) 165 } 166 167 } 168 169 return erc20Ts 170 171 }