{"id":21551166,"url":"https://github.com/mfactory-lab/ic-solana","last_synced_at":"2026-01-17T09:21:19.256Z","repository":{"id":208806890,"uuid":"721610873","full_name":"mfactory-lab/ic-solana","owner":"mfactory-lab","description":"Interact with Solana from the Internet Computer.","archived":false,"fork":false,"pushed_at":"2025-07-14T00:51:59.000Z","size":16866,"stargazers_count":26,"open_issues_count":11,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-14T02:56:39.943Z","etag":null,"topics":["cross-chain","dfinity","icp","integration","internet-computer","rpc","solana","wallet","web3"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mfactory-lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","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,"zenodo":null}},"created_at":"2023-11-21T12:18:30.000Z","updated_at":"2025-07-14T00:52:03.000Z","dependencies_parsed_at":"2024-06-10T00:28:50.516Z","dependency_job_id":"ffa22dc2-2f84-40a9-bdc8-8bd9645ebf33","html_url":"https://github.com/mfactory-lab/ic-solana","commit_stats":null,"previous_names":["mfactory-lab/icp-solana-example","mfactory-lab/ic-solana"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mfactory-lab/ic-solana","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfactory-lab%2Fic-solana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfactory-lab%2Fic-solana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfactory-lab%2Fic-solana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfactory-lab%2Fic-solana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mfactory-lab","download_url":"https://codeload.github.com/mfactory-lab/ic-solana/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfactory-lab%2Fic-solana/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28505276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cross-chain","dfinity","icp","integration","internet-computer","rpc","solana","wallet","web3"],"created_at":"2024-11-24T07:02:10.290Z","updated_at":"2026-01-17T09:21:19.222Z","avatar_url":"https://github.com/mfactory-lab.png","language":"Rust","funding_links":[],"categories":["Chain Fusion"],"sub_categories":["Solana"],"readme":"# IC-Solana Gateway\n\n[![Internet Computer portal](https://img.shields.io/badge/InternetComputer-grey?logo=internet%20computer\u0026style=for-the-badge)](https://internetcomputer.org)\n[![GitHub license](https://img.shields.io/badge/license-Apache%202.0-blue.svg?logo=apache\u0026style=for-the-badge)](LICENSE)\n[![Tests Status](https://img.shields.io/github/actions/workflow/status/mfactory-lab/ic-solana/ci.yml?logo=githubactions\u0026logoColor=white\u0026style=for-the-badge\u0026label=tests)](./.github/workflows/ci.yml)\n\n\u003e #### Interact with [Solana](https://solana.com) from the [Internet Computer](https://internetcomputer.org/).\n\n\u003e [!Warning]\n\u003e This repo (`mfactory-lab/ic-solana`) is **deprecated**.  \n\u003e All users should migrate to the actively maintained replacement:  \n\u003e [`dfinity/sol-rpc-canister`](https://github.com/dfinity/sol-rpc-canister)\n\n## Overview\n\n**IC-Solana** is a solution that connects the [Internet Computer](https://internetcomputer.org/) with [Solana](https://solana.com/). It allows developers to build decentralized applications (dApps) on the Internet Computer with functionality comparable to traditional Solana dApps. This integration combines the capabilities of both blockchain networks, making it easier to develop cross-chain applications and expand the possibilities for decentralized solutions.\n\n## Quick start\n\nAdd the following configuration to your `dfx.json` file (replace the `ic` principal with any option from the list of available canisters):\n\n```json\n{\n  \"canisters\": {\n    \"solana_rpc\": {\n      \"type\": \"custom\",\n      \"candid\": \"https://github.com/mfactory-lab/ic-solana/blob/main/src/ic-solana-rpc/ic-solana-rpc.did\",\n      \"wasm\": \"https://github.com/mfactory-lab/ic-solana/blob/main/ic-solana-rpc.wasm.gz\",\n      \"init_arg\": \"(record {})\"\n    },\n    \"solana_wallet\": {\n      \"type\": \"custom\",\n      \"candid\": \"https://github.com/mfactory-lab/ic-solana/blob/main/src/ic-solana-wallet/ic-solana-wallet.did\",\n      \"wasm\": \"https://github.com/mfactory-lab/ic-solana/blob/main/ic-solana-wallet.wasm.gz\",\n      \"init_arg\": \"(record {})\"\n    }\n  }\n}\n```\n\n## Running the project locally\n\n### Requirements\n\nMake sure you have the following installed:\n\n- [Rust](https://www.rust-lang.org/learn/get-started)\n- [Docker](https://www.docker.com/get-started/) (optional for [reproducible builds](#reproducible-builds))\n- [PocketIC](https://github.com/dfinity/pocketic) (optional for testing)\n- [DFINITY SDK](https://sdk.dfinity.org/docs/quickstart/local-quickstart.html)\n\n### Building the code\n\nStart a local replica listening on port 4943:\n\n```bash\n# Start a local replica\ndfx start --clean --host 127.0.0.1:4943\n```\n\nBuild and deploy canisters:\n\n```bash\n# Deploy the `solana_rpc` canister locally\ndfx deploy solana_rpc --argument '(record {})'\n\n# Deploy the `solana_wallet` canister locally\ndfx deploy solana_wallet --argument \"(record { sol_canister = opt principal \\\"`dfx canister id solana_rpc`\\\"; schnorr_key = null })\"\n```\n\nAll the canisters will be deployed to the local network with their fixed canister IDs.\n\nOnce the build and deployment are complete, your application will be accessible at:\n\n```\nhttp://localhost:4943?canisterId={asset_canister_id}\n```\n\nReplace `{asset_canister_id}` with the actual canister's ID generated during deployment.\n\n## Examples\n\nUse the Solana mainnet cluster:\n\n```bash\ndfx canister call solana_rpc sol_getHealth '(variant{Mainnet},null)' --wallet $(dfx identity get-wallet)\n```\n\nUse the Solana devnet cluster:\n\n```bash\ndfx canister call solana_rpc sol_getHealth '(variant{Devnet},null)' --wallet $(dfx identity get-wallet)\n```\n\nUse a single custom RPC:\n\n```bash\ndfx canister call solana_rpc sol_getHealth '(variant{Custom=vec{record{network=\"https://mainnet.helius-rpc.com/\"}}},null)' --wallet $(dfx identity get-wallet)\n```\n\nUse multiple custom RPCs:\n\n```bash\ndfx canister call solana_rpc sol_getHealth '(variant{Custom=vec{record{network=\"mainnet\"},record{network=\"https://mainnet.helius-rpc.com/\"}}},null)' --wallet $(dfx identity get-wallet)\n```\n\nUse a single RPC provider (predefined providers: mainnet|m, devnet|d, testnet|t):\n\n```bash \ndfx canister call solana_rpc sol_getHealth '(variant{Provider=vec{\"mainnet\"}},null)' --wallet $(dfx identity get-wallet)\n```\n\n## Components\n\n### [RPC Canister](./src/ic-solana-rpc)\n\nThe **RPC Canister** enables communication with the Solana blockchain, using [HTTPS outcalls](https://internetcomputer.org/https-outcalls) to transmit raw transactions and messages via on-chain APIs of [Solana JSON RPC](https://solana.com/docs/rpc) providers, for example, [Helius](https://www.helius.dev/) or [Quicknode](https://www.quicknode.com/).\n\nKey functionalities include:\n\n1. Retrieving Solana-specific data, such as block details, account information, node statistics, etc.\n2. Managing Solana RPC providers, including registration, updates, and provider configurations.\n3. Calculating and managing the cost of RPC requests.\n\n[//]: # (The RPC Canister runs on the 34-node [fiduciary subnet]\u0026#40;https://internetcomputer.org/docs/current/references/subnets/subnet-types#fiduciary-subnets\u0026#41;)\n\n[//]: # (with the following principal: [bd3sg-teaaa-aaaaa-qaaba-cai]\u0026#40;https://dashboard.internetcomputer.org/canister/bd3sg-teaaa-aaaaa-qaaba-cai\u0026#41;.)\n\n### [Wallet Canister](./src/ic-solana-wallet)\n\nThe **Wallet Canister** is used for managing addresses and for securely signing transactions/messages for the Solana blockchain using the [threshold Schnorr API](https://internetcomputer.org/docs/current/developer-docs/smart-contracts/signatures/signing-messages-t-schnorr).\n\nKey functionalities include:\n\n1. Generating a Solana public key (Ed25519) for a user on the Internet Computer (ICP).\n2. Signing messages using distributed keys based on the `Threshold Schnorr` protocol.\n3. Signing and sending raw transactions to the Solana blockchain via the [RPC Canister](#rpc-canister).\n\n### [IC-Solana](./src/ic-solana)\n\nA Rust library that provides the necessary tools for integrating Solana with ICP canisters.\n\n## Access control\n\nIC-Solana stores a list of registered Solana JSON RPC providers, to which transactions and messages can be submitted. Access to the list is controlled by admin(s) who can assign managers with specific rights to add, remove, and update Solana JSON RPC providers.\n\n## Reproducible builds\n\nIC-Solana supports [reproducible builds](https://internetcomputer.org/docs/current/developer-docs/smart-contracts/test/reproducible-builds):\n\n1. Ensure [Docker](https://www.docker.com/get-started/) is installed on your machine.\n2. Run `./scripts/docker-build --rpc` in your terminal.\n3. Run `sha256sum ic-solana-rpc.wasm.gz` on the generated file to view the SHA-256 hash.\n\nCompare the generated SHA-256 hash with the hash provided in the repository to verify the build's integrity.\n\n## Learn more\n\n- [Candid Interface](https://github.com/mfactory-lab/ic-solana/blob/main/src/ic-solana-rpc/ic-solana-rpc.did)\n- [Solana JSON RPC API](https://solana.com/docs/rpc)\n- [Internet Computer Developer Docs](https://internetcomputer.org/docs/current/developer-docs/)\n- [DFINITY SDK Documentation](https://sdk.dfinity.org/docs/)\n- [Internet Computer HTTPS Outcalls](https://internetcomputer.org/https-outcalls)\n\n## Contributing\n\nContributions are welcome! Please check out the [contributor guidelines](https://github.com/mfactory-lab/ic-solana/blob/main/.github/CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the [Apache License 2.0](https://opensource.org/licenses/Apache-2.0).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmfactory-lab%2Fic-solana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmfactory-lab%2Fic-solana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmfactory-lab%2Fic-solana/lists"}