Solana
View SourceThe 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.1.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_request(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.