Wie kann ich USDT über Solanaj auf der Solana-Kette senden?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie kann ich USDT über Solanaj auf der Solana-Kette senden?

by Guest » 23 Jan 2025, 07:37

Ich habe Solansj Version 1.20.2 verwendet, um usdt über die Solana-Kette zu senden, aber nach der Signaturerstellung konnte ich den relevanten Datensatz in der Kette nicht finden. Bitte helfen Sie mir zu überprüfen, ob ein Problem mit dem Code vorliegt.
Das eigentliche Problem ist: Die Signatur (Transaktions-Hash) kann normal generiert werden und es werden keine Fehler gemeldet, die Transaktion jedoch nicht gefunden auf der Blockchain.
Ich stecke hier seit drei Tagen fest, bitte helfen Sie mir
der Code ist unten:Solanaj-Version:

Code: Select all

com.mmorrell
solanaj
1.20.2

Code: Select all

public static String transferUsdt(CryptoAccount fromAccount, String toAddress, long amount) {
RpcClient rpcClient = new RpcClient(Cluster.MAINNET);
String senderPrivateKeyBase58 = fromAccount.getPrivateKey();
Account senderAccount = new Account(Base58.decode(senderPrivateKeyBase58));
try {
PublicKey usdtPublicKey = PublicKey.valueOf("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB");
PublicKey tokenAccountFrom = rpcClient.getApi().getTokenAccountsByOwner(senderAccount.getPublicKey(), usdtPublicKey);
PublicKey tokenAccountTo = rpcClient.getApi().getTokenAccountsByOwner(new PublicKey(toAddress), usdtPublicKey);

Transaction transaction = new Transaction();
transaction.addInstruction(
ComputeBudgetProgram.setComputeUnitPrice(80000)
);
transaction.addInstruction(
TokenProgram.transfer(
tokenAccountFrom,
tokenAccountTo,
amount,
senderAccount.getPublicKey()

)
);

String signature = rpcClient.getApi().sendTransaction(transaction, senderAccount);

ConfirmedTransaction confirmedTransaction = rpcClient.getApi().getTransaction(signature);

long start = System.currentTimeMillis();
while (Objects.isNull(confirmedTransaction) && (System.currentTimeMillis() - start) < 120000) {
Thread.sleep(5000);
SignatureStatuses signatureStatuses = rpcClient.getApi().getSignatureStatuses(List.of(signature), true);
if (Objects.isNull(signatureStatuses)) {
System.out.println("transaction fail");
break;
}
confirmedTransaction = rpcClient.getApi().getTransaction(signature);
}
if (Objects.nonNull(confirmedTransaction) && Objects.isNull(confirmedTransaction.getMeta().getErr())) {

return signature;
}
} catch (RpcException e) {
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return null;
}

Top