{"id":13514064,"url":"https://github.com/blocto/solana-go-sdk","last_synced_at":"2025-04-12T21:28:44.877Z","repository":{"id":37397170,"uuid":"323240252","full_name":"blocto/solana-go-sdk","owner":"blocto","description":"Solana Golang SDK","archived":false,"fork":false,"pushed_at":"2024-06-19T04:29:08.000Z","size":915,"stargazers_count":464,"open_issues_count":50,"forks_count":116,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-04-04T01:06:49.051Z","etag":null,"topics":["blockchain","go","golang","sdk","solana"],"latest_commit_sha":null,"homepage":"https://blocto.github.io/solana-go-sdk/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blocto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-21T05:32:45.000Z","updated_at":"2025-04-03T09:39:43.000Z","dependencies_parsed_at":"2024-09-23T02:02:18.561Z","dependency_job_id":"4bd5f807-f4b8-47dd-a2bd-f33193098e98","html_url":"https://github.com/blocto/solana-go-sdk","commit_stats":{"total_commits":410,"total_committers":13,"mean_commits":31.53846153846154,"dds":"0.18048780487804883","last_synced_commit":"d16de8ddcdda9c8bd94ad91dcd187f9b9864280d"},"previous_names":["blocto/solana-go-sdk","portto/solana-go-sdk"],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blocto%2Fsolana-go-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blocto%2Fsolana-go-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blocto%2Fsolana-go-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blocto%2Fsolana-go-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blocto","download_url":"https://codeload.github.com/blocto/solana-go-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248634036,"owners_count":21136966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","go","golang","sdk","solana"],"created_at":"2024-08-01T05:00:45.202Z","updated_at":"2025-04-12T21:28:44.829Z","avatar_url":"https://github.com/blocto.png","language":"Go","funding_links":[],"categories":["Go","Decentralized Finance (DeFi)","Table of Contents"],"sub_categories":["Blockchain Services"],"readme":"\n\u003ch1 align=\"center\"\u003eSolana Go SDK\u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\n\t\u003cimg src=\"https://github.com/blocto/solana-go-sdk/actions/workflows/go.yml/badge.svg?branch=main\"\u003e\u003c/img\u003e\n\t\u003cimg src=\"https://goreportcard.com/badge/github.com/blocto/solana-go-sdk\"\u003e\u003c/img\u003e\n\t\u003cimg alt=\"GitHub go.mod Go version\" src=\"https://img.shields.io/github/go-mod/go-version/blocto/solana-go-sdk\"\u003e\n\t\u003cimg alt=\"GitHub release (latest SemVer)\" src=\"https://img.shields.io/github/v/release/blocto/solana-go-sdk?display_name=tag\"\u003e\n\u003c/div\u003e\n\n# Guide\n\n## Getting Started\n\n### Installing\n\n```sh\ngo get -v github.com/blocto/solana-go-sdk\n```\n\n### Example\n\n#### Hello World\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/blocto/solana-go-sdk/client\"\n\t\"github.com/blocto/solana-go-sdk/rpc\"\n)\n\nfunc main() {\n\tc := client.NewClient(rpc.MainnetRPCEndpoint)\n\n\t// If you would like to customize the http client used to make the\n\t// requests you could do something like this\n\t// c := client.New(rpc.WithEndpoint(rpc.MainnetRPCEndpoint),rpc.WithHTTPClient(customHTTPClient))\n\n\tresp, err := c.GetVersion(context.TODO())\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to version info, err: %v\", err)\n\t}\n\n\tfmt.Println(\"version\", resp.SolanaCore)\n}\n\n```\n\n## RPC\n\nAll interfaces of rpc follow the [solana's json-rpc docs](https://docs.solana.com/developing/clients/jsonrpc-api).\n\nThe implementation of client in this project separate into two parts, rpc and wrapped. The wrapped only returns main result value and the rpc returns whole rpc response. You can switch it by yourself for different situation. Take `getBalance` as example:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"log\"\n\n\t\"github.com/blocto/solana-go-sdk/client\"\n\t\"github.com/blocto/solana-go-sdk/rpc\"\n)\n\nfunc main() {\n\tc := client.NewClient(rpc.DevnetRPCEndpoint)\n\n\t// get balance\n\tbalance, err := c.GetBalance(\n\t\tcontext.TODO(),\n\t\t\"RNfp4xTbBb4C3kcv2KqtAj8mu4YhMHxqm1Skg9uchZ7\",\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to get balance, err: %v\", err)\n\t}\n\tfmt.Printf(\"balance: %v\\n\", balance)\n\n\t// get balance with sepcific commitment\n\tbalance, err = c.GetBalanceWithConfig(\n\t\tcontext.TODO(),\n\t\t\"RNfp4xTbBb4C3kcv2KqtAj8mu4YhMHxqm1Skg9uchZ7\",\n\t\trpc.GetBalanceConfig{\n\t\t\tCommitment: rpc.CommitmentProcessed,\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to get balance with cfg, err: %v\", err)\n\t}\n\tfmt.Printf(\"balance: %v\\n\", balance)\n\n\t// for advanced usage. fetch full rpc response\n\tres, err := c.RpcClient.GetBalance(\n\t\tcontext.TODO(),\n\t\t\"RNfp4xTbBb4C3kcv2KqtAj8mu4YhMHxqm1Skg9uchZ7\",\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"failed to get balance via rpc client, err: %v\", err)\n\t}\n\tfmt.Printf(\"response: %+v\\n\", res)\n}\n\n```\n\n## Programing model \u0026 Program\n\nThere are some important tpyes in solana.\n\n- Program\n\nresides in the `program/` folder.\n\n- Pubkey (a basic identity of key)\n\nresides in the `common/` folder.\n\n- Insturciton (contain many pubkeys and program ID)\n- Message (contain many instructions)\n- Transaction (contain a message and many signatures)\n- Account (a pub/pri keypair )\n\nreside in the `types/` folder.\n\n### More Example\n\nfor more examples, follow `examples/` folder\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblocto%2Fsolana-go-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblocto%2Fsolana-go-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblocto%2Fsolana-go-sdk/lists"}