Solana blockchain client, written in pure Java. SolanaJ is an API for integrating with Solana blockchain using the Solana RPC API.
This fork includes functionality for multiple Solana programs, including the Serum DEX.
For SolanaJ implementations of popular Solana programs such as Serum, please visit: https://github.com/skynetcap/solanaj-programs
- Java 17+
- bitcoinj
- OkHttp
- Moshi
Add the following Maven dependency to your project's pom.xml
:
<dependency>
<groupId>com.mmorrell</groupId>
<artifactId>solanaj</artifactId>
<version>1.19.2</version>
</dependency>
- In
pom.xml
, update themaven-gpg-plugin
configuration with your homedir and keyname:
<configuration>
<homedir>/home/your_username/.gnupg/</homedir>
<keyname>YOUR_GPG_KEY_ID</keyname>
</configuration>
- Check if you have a GPG key:
gpg --list-secret-keys
- If no key is returned, create one:
gpg --full-generate-key
- Run the Maven install command:
mvn install
The build should complete successfully.
RpcClient client = new RpcClient(Cluster.TESTNET);
PublicKey fromPublicKey = new PublicKey("QqCCvshxtqMAL2CVALqiJB7uEeE5mjSPsseQdDzsRUo");
PublicKey toPublickKey = new PublicKey("GrDMoeqMLFjeXQ24H56S1RLgT4R76jsuWCd6SvXyGPQ5");
int lamports = 3000;
Account signer = new Account(secret_key);
Transaction transaction = new Transaction();
transaction.addInstruction(SystemProgram.transfer(fromPublicKey, toPublickKey, lamports));
String signature = client.getApi().sendTransaction(transaction, signer);
RpcClient client = new RpcClient(Cluster.TESTNET);
long balance = client.getApi().getBalance(new PublicKey("QqCCvshxtqMAL2CVALqiJB7uEeE5mjSPsseQdDzsRUo"));
final PublicKey solUsdcPublicKey = new PublicKey("7xMDbYTCqQEcK2aM9LbetGtNFJpzKdfXzLL5juaLh4GJ");
final Market solUsdcMarket = new MarketBuilder()
.setClient(new RpcClient())
.setPublicKey(solUsdcPublicKey)
.setRetrieveOrderBooks(true)
.build();
final OrderBook bids = solUsdcMarket.getBidOrderBook();
// Create account from private key
final Account feePayer = new Account(Base58.decode(new String(data)));
final Transaction transaction = new Transaction();
// Add instruction to write memo
transaction.addInstruction(
MemoProgram.writeUtf8(feePayer.getPublicKey(),"Hello from SolanaJ :)")
);
String response = client.getApi().sendTransaction(transaction, feePayer);
We welcome contributions to SolanaJ! Here's how you can help:
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature-name
) - Make your changes
- Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin feature/your-feature-name
) - Create a new Pull Request
Please make sure to update tests as appropriate and adhere to the existing coding style.
SolanaJ is open-source software licensed under the MIT License. See the LICENSE file for more details.