Skip to content
This repository has been archived by the owner on May 14, 2024. It is now read-only.

fortelabsinc/solana-elixir-archived

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solana

The unofficial Elixir package for interacting with the Solana blockchain.

Note that this README refers to the master branch of solana, not the latest released version on Hex. See the documentation for the documentation of the version you're using.

Installation

Add solana to your list of dependencies in mix.exs:

def deps do
  [
    {:solana, "~> 0.2.0"}
  ]
end

Documentation

JSON-RPC API Client

solana provides a simple interface for interacting with Solana's JSON-RPC API. Here's an example of requesting an airdrop to a new Solana account via the requestAirdrop method:

key = Solana.keypair() |> Solana.pubkey!()
client = Solana.RPC.client(network: "localhost")
{:ok, signature} = Solana.RPC.send(client, Solana.RPC.Request.request_airdrop(key, 1))

Solana.Transaction.check(signature) # {:ok, ^signature}

To see the full list of supported methods, check the Solana.RPC.Request module.

Using a custom HTTP client

Since this module uses Tesla for its API client, you can use whichever HTTP client you wish, just be sure to include it in your dependencies:

def deps do
  [
    # Gun, for example
    {:gun, "~> 1.3"},
    {:idna, "~> 6.0"},
    {:castore, "~> 0.1"},
    # SSL verification
    {:ssl_verify_hostname, "~> 1.0"},
  ]
end

Then, specify the corresponding Tesla.Adapter when creating your client:

client = Solana.RPC.client(network: "localhost", adapter: {Tesla.Adapter.Gun, certificates_verification: true})

See the Solana.RPC module for more details about which options are available when creating an API client.

On-chain program interaction

Since solana's JSON-RPC API client supports sendTransaction, you can use it to interact with on-chain Solana programs. solana provides utilities to craft transactions, send them, and confirm them on-chain. It also includes the Solana.SystemProgram module, which allows you to create SystemProgram instructions.

Also check out the solana_spl package documentation to interact with the Solana Program Library.

Writing a custom program client

By providing an interface for the Solana.SystemProgram, solana provides guidelines for how to build interfaces to your own programs. For more examples, see the solana_spl package.

Testing custom programs

Once you've built your custom program's client, you should probably write some tests for it. solana provides example tests for the Solana.SystemProgram in test/solana/system_program_test.exs, along with an Elixir-managed Solana Test Validator process to test your program locally. See Solana.TestValidator for more details about how to set this up.

About

Solana's unofficial Elixir client

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Elixir 99.7%
  • Shell 0.3%