49: Add wallet transaction submission operations

This commit is contained in:
2026-08-05 10:12:39 +02:00
parent 6c48e3741a
commit 8f6aac025c
2 changed files with 42 additions and 3 deletions
@@ -11,10 +11,11 @@ import java.io.IOException;
import java.math.BigDecimal;
/**
* A Solana wallet capable of identifying itself and signing transactions.
* A Solana wallet capable of identifying itself, signing transactions and
* submitting them to the Solana blockchain.
*
* <p>Signing a transaction does not submit it to the Solana blockchain.
* Submission must be performed separately through {@code SolanaBlockChain}.</p>
* <p>Signing and submission can be performed separately or as one complete
* operation.</p>
*/
public interface SolanaWallet {
/**
@@ -106,4 +107,35 @@ public interface SolanaWallet {
SolanaSignedTransaction signTransaction(
@NotNull SolanaUnsignedTransaction transaction
) throws IOException, InterruptedException;
/**
* Submits a signed Solana transaction to the Solana blockchain.
*
* @param transaction the signed transaction to submit
* @return the transaction signature returned by Solana RPC
* @throws IllegalArgumentException if the transaction is missing or blank
* @throws IOException if the transaction cannot be sent
* @throws InterruptedException if the calling thread is interrupted
*/
@NotNull
ΩSolanaTransactionSignatureΩ sendTransaction(
@NotNull SolanaSignedTransaction transaction
) throws IOException, InterruptedException;
/**
* Signs and submits an unsigned Solana transaction.
*
* @param transaction the unsigned transaction to sign and submit
* @return the transaction signature returned by Solana RPC
* @throws IllegalArgumentException if the transaction is missing or blank
* @throws IOException if the transaction cannot be signed or sent
* @throws InterruptedException if the signing process or calling thread
* is interrupted
*/
@NotNull
default ΩSolanaTransactionSignatureΩ signAndSendTransaction(
@NotNull SolanaUnsignedTransaction transaction
) throws IOException, InterruptedException {
return sendTransaction(signTransaction(transaction));
}
}
@@ -171,6 +171,13 @@ public class SolanaWalletImpl implements SolanaWallet {
return sst;
}
@Override
public @NotNull ΩSolanaTransactionSignatureΩ sendTransaction(
@NotNull SolanaSignedTransaction transaction
) throws IOException, InterruptedException {
return solanaBlockChain.sendTransaction(transaction);
}
private record SignerResponse(
String signer,
ΩBase64StringΩ signedTransaction