@@ -62,9 +62,8 @@ request.
6262```
6363final Signer signer = ...
6464
65- final var rpcEndpoint = URI.create("https://mainnet.helius-rpc.com/?api-key=");
6665try (final var httpClient = HttpClient.newHttpClient()) {
67- final var rpcClient = SolanaRpcClient.createClient(rpcEndpoint , httpClient);
66+ final var rpcClient = SolanaRpcClient.createClient(SolanaNetwork.MAIN_NET.getEndpoint() , httpClient);
6867
6968 final var blockHashFuture = rpcClient.getLatestBlockHash();
7069 final var minRentFuture = rpcClient.getMinimumBalanceForRentExemption(NonceAccount.BYTES);
@@ -133,3 +132,48 @@ try (final var httpClient = HttpClient.newHttpClient()) {
133132 System.out.println(nonceAccount);
134133}
135134```
135+
136+ ### Create & Send Durable Transaction
137+
138+ ```
139+ final var signer = ...
140+ final var nonceAccountKey = PublicKey.fromBase58Encoded("");
141+ final var sendToKey = PublicKey.fromBase58Encoded("");
142+ final var transferSOL = new BigDecimal("0.0");
143+
144+ final var solanaAccounts = SolanaAccounts.MAIN_NET;
145+ try (final var httpClient = HttpClient.newHttpClient()) {
146+ final var rpcClient = SolanaRpcClient.createClient(SolanaNetwork.MAIN_NET.getEndpoint(), httpClient);
147+
148+ final var nonceAccountInfo = rpcClient.getAccountInfo(nonceAccountKey).join();
149+ final var nonceAccount = NonceAccount.read(nonceAccountInfo);
150+ System.out.println(nonceAccount);
151+
152+ final var advanceNonceIx = nonceAccount.advanceNonceAccount(solanaAccounts);
153+ final var transferIx = SystemProgram.transfer(
154+ solanaAccounts.invokedSystemProgram(),
155+ signer.publicKey(),
156+ sendToKey,
157+ LamportDecimal.fromBigDecimal(transferSOL).longValue()
158+ );
159+
160+ final var instructions = List.of(advanceNonceIx, transferIx);
161+ final var transaction = Transaction.createTx(signer.publicKey(), instructions);
162+ transaction.setRecentBlockHash(nonceAccount.nonce());
163+ transaction.sign(signer);
164+
165+ final var base64Encoded = transaction.base64EncodeToString();
166+ final var sendTransactionFuture = rpcClient.sendTransaction(base64Encoded);
167+ System.out.format("""
168+ Transferring %s SOL from %s to %s.
169+ https://explorer.solana.com/tx/%s
170+
171+ """,
172+ transferSOL.toPlainString(), signer.publicKey(), sendToKey,
173+ transaction.getBase58Id()
174+ );
175+
176+ final var sig = sendTransactionFuture.join();
177+ System.out.println("Confirmed transaction " + sig);
178+ }
179+ ```
0 commit comments