From 52c4569c47424c77a652e9342fa6301accffb503 Mon Sep 17 00:00:00 2001 From: jamesm Date: Mon, 30 Sep 2024 09:50:18 -0400 Subject: [PATCH] Start adding better Javadocs for module / package overview --- overview.html | 19 +++++++---- .../solana4j/encoding/SolanaEncoding.java | 4 +++ .../encoding/SolanaLegacyInstructionView.java | 2 +- .../encoding/SolanaLegacyMessageView.java | 2 +- .../encoding/SolanaProgramDerivedAddress.java | 2 +- .../encoding/SolanaV0InstructionView.java | 2 +- .../java/com/lmax/solana4j/package-info.java | 4 ++- .../solana4j/programs/TokenProgramBase.java | 33 +++++++++---------- src/main/java/module-info.java | 8 ++--- 9 files changed, 44 insertions(+), 32 deletions(-) diff --git a/overview.html b/overview.html index a802758..5a1ff96 100644 --- a/overview.html +++ b/overview.html @@ -1,15 +1,22 @@ - Solana4j Library Overview + solana4j Library Overview -

Solana4j Library Overview

-

This library provides APIs for interacting with the Solana blockchain, focusing on token operations.

+

solana4j Library Overview

+

This library provides APIs for reading and writing messages to the Solana blockchain with both the Legacy +and V0 Solana Message encodings. This library supports interacting with a subset of the core Solana Programs, including +the SystemProgram, TokenProgram and AssociatedTokenProgram. The library can be easily extended to support more +Programs. +

Features

diff --git a/src/main/java/com/lmax/solana4j/encoding/SolanaEncoding.java b/src/main/java/com/lmax/solana4j/encoding/SolanaEncoding.java index 7e81f43..1c0c7da 100644 --- a/src/main/java/com/lmax/solana4j/encoding/SolanaEncoding.java +++ b/src/main/java/com/lmax/solana4j/encoding/SolanaEncoding.java @@ -33,6 +33,10 @@ public final class SolanaEncoding */ public static final int MAX_MESSAGE_SIZE = 1280 - 40 - 8; + private SolanaEncoding() + { + } + /** * Creates a new message builder for the given buffer. * diff --git a/src/main/java/com/lmax/solana4j/encoding/SolanaLegacyInstructionView.java b/src/main/java/com/lmax/solana4j/encoding/SolanaLegacyInstructionView.java index 0e60118..140b524 100644 --- a/src/main/java/com/lmax/solana4j/encoding/SolanaLegacyInstructionView.java +++ b/src/main/java/com/lmax/solana4j/encoding/SolanaLegacyInstructionView.java @@ -7,7 +7,7 @@ import java.util.List; import java.util.stream.Collectors; -class SolanaLegacyInstructionView extends SolanaInstructionView implements MessageVisitor.LegacyInstructionView +final class SolanaLegacyInstructionView extends SolanaInstructionView implements MessageVisitor.LegacyInstructionView { private final MessageVisitor.LegacyAccountsView accountsView; diff --git a/src/main/java/com/lmax/solana4j/encoding/SolanaLegacyMessageView.java b/src/main/java/com/lmax/solana4j/encoding/SolanaLegacyMessageView.java index ca7eb04..46a2b36 100644 --- a/src/main/java/com/lmax/solana4j/encoding/SolanaLegacyMessageView.java +++ b/src/main/java/com/lmax/solana4j/encoding/SolanaLegacyMessageView.java @@ -9,7 +9,7 @@ import java.util.List; import java.util.stream.Collectors; -class SolanaLegacyMessageView extends SolanaMessageView implements LegacyMessageView +final class SolanaLegacyMessageView extends SolanaMessageView implements LegacyMessageView { private final MessageVisitor.LegacyAccountsView accountsView; private final List instructions; diff --git a/src/main/java/com/lmax/solana4j/encoding/SolanaProgramDerivedAddress.java b/src/main/java/com/lmax/solana4j/encoding/SolanaProgramDerivedAddress.java index 0d7bb0d..d7d738e 100644 --- a/src/main/java/com/lmax/solana4j/encoding/SolanaProgramDerivedAddress.java +++ b/src/main/java/com/lmax/solana4j/encoding/SolanaProgramDerivedAddress.java @@ -14,7 +14,7 @@ import static java.util.Objects.requireNonNull; import static net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable.ED_25519_CURVE_SPEC; -class SolanaProgramDerivedAddress implements ProgramDerivedAddress +final class SolanaProgramDerivedAddress implements ProgramDerivedAddress { public static final byte[] PROGRAM_DERIVED_ADDRESS_BYTES = "ProgramDerivedAddress".getBytes(StandardCharsets.UTF_8); private static final int BUMP_LENGTH = 1; diff --git a/src/main/java/com/lmax/solana4j/encoding/SolanaV0InstructionView.java b/src/main/java/com/lmax/solana4j/encoding/SolanaV0InstructionView.java index 7ab8706..dc4c913 100644 --- a/src/main/java/com/lmax/solana4j/encoding/SolanaV0InstructionView.java +++ b/src/main/java/com/lmax/solana4j/encoding/SolanaV0InstructionView.java @@ -8,7 +8,7 @@ import java.util.List; import java.util.stream.Collectors; -class SolanaV0InstructionView extends SolanaInstructionView implements MessageVisitor.V0InstructionView +final class SolanaV0InstructionView extends SolanaInstructionView implements MessageVisitor.V0InstructionView { private final MessageVisitor.V0AccountsView accountsView; diff --git a/src/main/java/com/lmax/solana4j/package-info.java b/src/main/java/com/lmax/solana4j/package-info.java index b546187..38390ac 100644 --- a/src/main/java/com/lmax/solana4j/package-info.java +++ b/src/main/java/com/lmax/solana4j/package-info.java @@ -1,4 +1,6 @@ /** - * Solana + * This is the base package representing the entrypoint to the library. Functionality includes + * building a Solana Message, reading a signed or unsigned Solana Message, as well as exposing methods + * to create useful domain objects, such as an AddressLookupTable, Blockhash, Slot and a PublicKey. */ package com.lmax.solana4j; diff --git a/src/main/java/com/lmax/solana4j/programs/TokenProgramBase.java b/src/main/java/com/lmax/solana4j/programs/TokenProgramBase.java index b616920..6a6c850 100644 --- a/src/main/java/com/lmax/solana4j/programs/TokenProgramBase.java +++ b/src/main/java/com/lmax/solana4j/programs/TokenProgramBase.java @@ -16,7 +16,6 @@ /** * Program for managing token operations on the Solana blockchain. - * */ public abstract class TokenProgramBase { @@ -99,9 +98,9 @@ public TransactionInstruction initializeMint( /** * Mints new tokens to a list of destinations. * - * @param mint the public key of the mint - * @param authority the public key of the authority - * @param destination the destination to mint to + * @param mint the public key of the mint + * @param authority the public key of the authority + * @param destination the destination to mint to * @return {@code TransactionInstruction} of the created instruction */ public TransactionInstruction mintTo( @@ -179,7 +178,7 @@ public static class TokenProgramBaseFactory * Factory method for creating a new instance of {@code TokenProgramBaseFactory}. * * @param tokenProgramId the program id of the token program - * @param tb the transaction builder + * @param tb the transaction builder */ protected TokenProgramBaseFactory(final PublicKey tokenProgramId, final TransactionBuilder tb) { @@ -351,8 +350,8 @@ protected static TransactionInstruction initializeMint( .data(67, bb -> { bb.order(ByteOrder.LITTLE_ENDIAN) - .put((byte) INITIALIZE_MINT_INSTRUCTION) - .put(decimals); + .put((byte) INITIALIZE_MINT_INSTRUCTION) + .put(decimals); mintAuthority.write(bb); bb.put((byte) ( freezeAuthority.isPresent() @@ -392,8 +391,8 @@ static TransactionInstruction mintTo( .account(destination.getDestination(), false, true) .account(authority, true, false) .data(1 + 8, bb -> bb.order(ByteOrder.LITTLE_ENDIAN) - .put((byte) MINT_TO_INSTRUCTION) - .putLong(destination.getAmount())) + .put((byte) MINT_TO_INSTRUCTION) + .putLong(destination.getAmount())) ); } @@ -421,8 +420,8 @@ static TransactionInstruction transfer( ib .program(programId) .data(1 + 8, bb -> bb.order(ByteOrder.LITTLE_ENDIAN) - .put((byte) TRANSFER_INSTRUCTION) - .putLong(amount)) + .put((byte) TRANSFER_INSTRUCTION) + .putLong(amount)) .account(source, false, true) .account(destination, false, true) .account(owner, signers.isEmpty(), false); @@ -451,8 +450,8 @@ static TransactionInstruction initializeMultisig( ib .program(programId) .data(1 + 1, bb -> bb.order(ByteOrder.LITTLE_ENDIAN) - .put((byte) INITIALIZE_MULTISIG_INSTRUCTION) - .put((byte) requiredSignatures)) + .put((byte) INITIALIZE_MULTISIG_INSTRUCTION) + .put((byte) requiredSignatures)) .account(multisigPublicKey, false, true) .account(RENT, false, false); signers.forEach(signer -> ib @@ -488,10 +487,10 @@ static TransactionInstruction setAuthority( ib .program(programId) .data(1 + 1 + 1 + PublicKey.PUBLIC_KEY_LENGTH, bb -> bb.order(ByteOrder.LITTLE_ENDIAN) - .put((byte) SET_AUTHORITY_INSTRUCTION) - .put(authorityType.value) - .put((byte) 1) - .put(newAuthorityBuffer.flip()) + .put((byte) SET_AUTHORITY_INSTRUCTION) + .put(authorityType.value) + .put((byte) 1) + .put(newAuthorityBuffer.flip()) ) .account(tokenAccount, false, true) .account(oldAuthority, signers.isEmpty(), false); diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 1655796..7dc2eed 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,9 +1,9 @@ /** - * This module provides core functionality for interacting with the Solana blockchain, - * focusing on token operations such as minting, transferring, and managing token accounts. + * This module provides functionality for reading and writing messages on the Solana blockchain. *

- * The module is part of the solana4j library and exports key packages for token management - * and transaction building. + * The Solana Legacy and V0 encoding schemes are both supported. The library has support for interacting + * with core programs such as the SystemProgram, TokenProgram and AssociatedTokenProgram. Support for + * more programs can be easily extended. *

*/ module com.lmax.solana4j {