链游知识02:学会识别多种类型的USDT

本文是链游玩家的知识科普,讲解了USDT在区块链游戏中的重要性,以及三种类型的USDT——Omni类、ERC20类和TRON类USDT的特点,强调了选择正确USDT类型在充值或提现时的重要性,帮助玩家规避风险。
摘要由CSDN通过智能技术生成

前言:链游知识是链游玩家专门推出的针对入门玩家的游戏知识科普,从小白到高玩,看链游玩家就够了。

 

 

 

 

进入区块链游戏世界的大门,要从USDT开始,为什么是USDT呢?这是因为其他的数字货币波动太大,需要有一个相对稳定的币种来和他们对接,由此,USDT孕育而出。因为USDT是Tether公司在银行的美元储备,通过锚定美元,而成为各大数字货币交易所的计价货币之一。

 

而这一特性,也同样受到区块链游戏玩家的喜爱。各种链游的资产要先经过法币购买USDT,然后再用USDT兑换成各种其他数字货币,来实现购买道具的流程。

 

 

 

区块链沙盒游戏NeoWorld的道具购买界面

 

有很多区块链游戏的代币或者资产,都是需要花费ETH、BTC、EOS等来购买的,例如知名链游NeoWorld的代币NASH就需要ETH来购买,而你想购买ETH,还是得先购买USDT。有人会说,我直接用法币买ETH不就完事了吗?

 

但是!ETH这类数字货币都属于波动非常大的币种,直接买ETH放在手里很有可能出现贬值的情况。但是你买了USDT就不一样了,它锚定美元。当你需要购买

要归集BSC上的USDT,您需要执行以下步骤: 1. 创建BSC钱包地址并获取私钥。 2. 使用Binance Smart Chain的RPC接口连接到BSC网络。 3. 使用USDT的合约地址和ABI,调用USDT合约的transfer方法将USDT从原地址转移到BSC钱包地址。 以下是Java代码示例: ```java import java.math.BigInteger; import java.util.Arrays; import org.web3j.abi.FunctionEncoder; import org.web3j.abi.FunctionReturnDecoder; import org.web3j.abi.TypeReference; import org.web3j.abi.datatypes.Function; import org.web3j.abi.datatypes.Type; import org.web3j.abi.datatypes.generated.Uint256; import org.web3j.crypto.Credentials; import org.web3j.protocol.Web3j; import org.web3j.protocol.core.DefaultBlockParameterName; import org.web3j.protocol.core.methods.request.Transaction; import org.web3j.protocol.core.methods.response.EthGetTransactionCount; import org.web3j.protocol.core.methods.response.EthSendTransaction; import org.web3j.protocol.http.HttpService; import org.web3j.tx.RawTransactionManager; import org.web3j.utils.Convert; import org.web3j.utils.Numeric; public class USDTTransfer { public static void main(String[] args) throws Exception { // BSC钱包地址和私钥 String fromAddress = "0x..."; String privateKey = "..."; Credentials credentials = Credentials.create(privateKey); // BSC节点地址 String bscRpcUrl = "https://bsc-dataseed.binance.org/"; Web3j web3j = Web3j.build(new HttpService(bscRpcUrl)); // USDT合约地址和ABI String usdtContractAddress = "0x..."; String usdtContractAbi = "[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_spender\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"remaining\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"initialSupply\",\"type\":\"uint256\"},{\"name\":\"tokenName\",\"type\":\"string\"},{\"name\":\"decimalUnits\",\"type\":\"uint8\"},{\"name\":\"tokenSymbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]"; // 获取USDT的decimals参数 Function decimalsFunction = new Function("decimals", Arrays.asList(), Arrays.asList(new TypeReference<Uint256>() {})); String encodedDecimals = FunctionEncoder.encode(decimalsFunction); org.web3j.protocol.core.methods.response.EthCall decimalsCall = web3j.ethCall(Transaction.createEthCallTransaction(fromAddress, usdtContractAddress, encodedDecimals), DefaultBlockParameterName.LATEST).send(); String decimalsHex = decimalsCall.getValue(); int decimals = Integer.parseInt(Numeric.cleanHexPrefix(decimalsHex), 16); // 转移USDT的数量 BigInteger amount = Convert.toWei("1", Convert.Unit.ETHER).multiply(BigInteger.TEN.pow(decimals)); // 获取BSC钱包地址的nonce EthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount(fromAddress, DefaultBlockParameterName.LATEST).send(); BigInteger nonce = ethGetTransactionCount.getTransactionCount(); // 构造USDT转移交易数据 Function transferFunction = new Function("transfer", Arrays.asList(credentials.getAddress(), new Uint256(amount)), Arrays.asList(new TypeReference<Type>() {})); String encodedTransfer = FunctionEncoder.encode(transferFunction); // 使用USDT合约地址、nonce、gasPrice、gasLimit和交易数据构造交易 BigInteger gasPrice = Convert.toWei("5", Convert.Unit.GWEI).toBigInteger(); BigInteger gasLimit = BigInteger.valueOf(100000); Transaction transaction = Transaction.createFunctionCallTransaction(fromAddress, nonce, gasPrice, gasLimit, usdtContractAddress, encodedTransfer); // 签名交易并发送到BSC网络 RawTransactionManager rawTransactionManager = new RawTransactionManager(web3j, credentials); EthSendTransaction ethSendTransaction = rawTransactionManager.signAndSend(transaction); String transactionHash = ethSendTransaction.getTransactionHash(); System.out.println("USDT transfer transaction hash: " + transactionHash); } } ``` 请注意,您需要将代码中的钱包地址、私钥、USDT合约地址和ABI替换为您自己的值,并确保您的钱包具有足够的USDT余额以支付交易费用。此外,gasPrice和gasLimit参数应根据当前网络状况进行调整以确保交易能够成功被打包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值