GMX-Solana
Audits
Program | Last Audit Date | Version |
---|---|---|
gmsol-store | 2025-06-19 | a5b38f3 |
gmsol-treasury | 2025-06-19 | a5b38f3 |
gmsol-timelock | 2025-06-19 | a5b38f3 |
gmsol-competition | 2025-06-19 | a5b38f3 |
Integration
Method 1: Using the Rust SDK
Add the following to your Cargo.toml
:
[dependencies]
gmsol-sdk = { version = "0.6.0", features = ["client"] }
Create a Client
and start using the core APIs:
use gmsol_sdk::{
Client,
ops::ExchangeOps,
solana_utils::{
cluster::Cluster,
solana_sdk::{pubkey::Pubkey, signature::read_keypair_file},
},
};
let keypair =
read_keypair_file(std::env::var("KEYPAIR")?)?;
let market_token: Pubkey = std::env::var("MARKET_TOKEN")?.parse()?;
let client = Client::new(Cluster::Mainnet, &keypair)?;
let store = client.find_store_address("");
let (txn, order) = client
.market_increase(
&store,
&market_token,
true,
5_000_000,
true,
500_000_000_000_000_000_000,
)
.build_with_address()
.await?;
let signature = txn.send().await?;
Method 2: Using declare_program!
1. Initialize a new Rust project and add dependencies
Create a new Rust project and include anchor_lang
and bytemuck
as dependencies:
[dependencies]
anchor-lang = "0.31.1"
bytemuck = { version = "1.19.0", features = ["min_const_generics", "derive"] }
2. Download and Store IDLs in {PROJECT_ROOT}/idls/
You can retrieve the IDLs using the anchor
CLI or download them directly from the explorer (gmsol-store
Program and gmsol-treasury
Program).
Once downloaded, move them to the {PROJECT_ROOT}/idls/
directory.
Your project structure should now look like this:
{PROJECT_ROOT}/
├── .gitignore
├── Cargo.lock
├── Cargo.toml
├── idls
│ ├── gmsol_store.json
│ └── gmsol_treasury.json
└── src
└── lib.rs
3. Declaring Programs in lib.rs
Use declare_program!
to register the gmsol-store
and gmsol-treasury
programs:
use anchor_lang::declare_program;
declare_program!(gmsol_store);
declare_program!(gmsol_treasury);
4. Build and Open the Documentation
Run the following command to generate and view the documentation:
cargo doc --open
If the build is successful, it will automatically open the documentation in your default web browser.
5. Example Project
For a working implementation, check out the gmx-solana-programs.
Development
Prerequisites
Commands
To run all tests:
just
To use the gmsol
CLI in development mode:
just cli
To install the gmsol
CLI:
just install-cli
Use the following command to verify the CLI is installed properly:
gmsol -V
Troubleshooting
1. Failed to start test-validator
on MacOS
Error Message:
Error: failed to start validator: Failed to create ledger at test-ledger: io error: Error checking to unpack genesis archive: Archive error: extra entry found: "._genesis.bin" Regular
Posssible Solution:
Check this comment.