3 releases
new 0.5.0-beta.6 | May 15, 2025 |
---|---|
0.5.0-beta.2 |
|
#79 in Magic Beans
219 downloads per month
Used in 2 crates
370KB
7.5K
SLoC
GMX-Solana
Audits
Program | Last Audit Date | Version |
---|---|---|
gmsol-store | 2025-03-07 | 2a66761 |
gmsol-treasury | 2025-03-07 | 2a66761 |
gmsol-timelock | 2025-03-07 | 2a66761 |
Integration
Method 1: Using the Rust SDK
Add the following to your Cargo.toml
:
[dependencies]
gmsol-sdk = { version = "0.5.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.30.1"
bytemuck = { version = "1.19.0", features = ["min_const_generics"] }
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 install the gmsol
CLI:
cargo install-gmsol
Use the following command to verify the CLI is installed properly:
gmsol --version
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.
Dependencies
~20–39MB
~700K SLoC