网站首页 > 百科 >虚拟货币usdt(erc20)

虚拟货币usdt(erc20)

难点:

1、采用rpc模式,脱离Dapp或者钱包等插件

2、不是本身链的货币,获得erc20的代币(也包括usdt等)

3、国内最新版本资料太少(好多都不是最新版本)

前提:

我用的是bsc测试链,自己发行了一个代币用于测试

第一步:rpc地址获得:

A: https://nodereal.io/   (包含bsc正式和测试)B: https://infura.io/

第二个:发行的代币的ABI生产golang的需要文件文件

加载依赖包:go get github.com/ethereum/go-ethereum

在这个目录下面有一个Abi生产脚本go-ethereum/cmd/abigen/main.go(可以find的命令找到),通过 "go build -o mainExe abigen/main.go" 生成可以执行脚本,注意(我用户linux的环境,window环境需要安装gcc,麻烦)


接下来,通过刚刚mainExe脚本通过abi信息生成go类,注意我将abi数据保存到了文件token.abi.

生成命令:./mainExe --abi token.abi --pkg code --type Token --out token.go

第三步:拥有代币的私钥字符串项目布局





第四步:开始获取数据(上代码)

import ( "context" "crypto/ecdsa" "fmt" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" "go/test/code"       //放置生成文件位置 "log" "math" "math/big")func main() {url := "https://bsc-testnet.nodereal.io/v1/17a4161812b6492d844419a35990b160"clt, e := rpc.Dial(url)fmt.Println(e)fmt.Println(clt)client := ethclient.NewClient(clt)fmt.Println("==version==>", params.Version)inputPrivateKey := "ee3645f62f55205***********************0be2700800352"    //私钥privateKey, err := crypto.HexToECDSA(inputPrivateKey)chainID, err := client.NetworkID(context.Background()) fmt.Println("=======888888=====>", chainID) auth, err := bind.NewKeyedTransactorWithChainID(privateKey, chainID) if err != nil {  log.Fatalln("读取keystore失败", err) } else {  fmt.Println(auth) }  var tokenAddress="0xA30C1Afe3338Ca72f40EA2b81d2883C7bb7AAf6C"       //代币地址 //开始使用生成文件  token, err := code.NewToken(common.HexToAddress(tokenAddress), client) if err != nil {  log.Fatalln("获取token失败", err)  panic(err) } balanceInt, errInt := token.BalanceOf(nil, common.HexToAddress(fromAddress.String())) if errInt != nil {  log.Fatalln("token balance of", err) } log.Println("to address balance: ", balanceInt) amount := big.NewFloat(2.00)      //测试转2个代币 //这是处理位数的代码段 tenDecimal := big.NewFloat(math.Pow(10, 18)) convertAmount, _ := new(big.Float).Mul(tenDecimal, amount).Int(&big.Int{}) toAccount := "0xb4377fb04FE5aDe3C359ea43290cd354308807bF"      //测试收笔地址 tx, err := token.Transfer(auth, common.HexToAddress(toAccount), convertAmount) if nil != err {  fmt.Println("=====>", err) } else {  fmt.Printf("result: %v\n", tx.Hash().Hex())        //获得交易id }}

第五步:展示执行效果



相关内容

虚拟货币usdt(erc20)文档下载: PDF DOC TXT
您可能感兴趣的文章
24h快讯
违法生育包括哪些情形,什么叫违法生育
一、教师如果违法计划生育会有什么处罚如果是教师,违反计划生育规定,应由计生机......
2024-04-05 法规
自残违法吗?自残算不算犯罪
一、教唆他人自残构成犯罪吗教唆他人自残有故意杀人的嫌疑,所以规劝大家不要以身......
2024-04-05 法规
新昌机动车违法?机动车违章处理时间限制
一、新昌货车通行证怎么办理1.办理新昌货车通行证是可行的。2.因为新昌货车通......
2024-04-05 法规
违法举报网站,公安干警违法举报平台
一、国家有奖举报平台以举报违章车辆为例,有奖举报平台如下:为加大监管力度,营......
2024-04-05 法规
查看更多