{"id":33900056,"url":"https://github.com/bcsuite/astraconnect","last_synced_at":"2026-04-20T08:02:42.689Z","repository":{"id":322735245,"uuid":"1079306170","full_name":"BCSuite/AstraConnect","owner":"BCSuite","description":"AstraConnect is a universal blockchain RPC client designed for iOS applications, enabling seamless RPC interactions with major public blockchains. Solana is currently supported.","archived":false,"fork":false,"pushed_at":"2025-11-06T02:43:32.000Z","size":1051,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-13T01:00:00.177Z","etag":null,"topics":["blockchain","evm","rpc","solana","swift","web3"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BCSuite.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-19T14:45:41.000Z","updated_at":"2025-11-06T02:43:35.000Z","dependencies_parsed_at":"2025-12-12T02:08:54.410Z","dependency_job_id":null,"html_url":"https://github.com/BCSuite/AstraConnect","commit_stats":null,"previous_names":["bcsuite/astraconnect"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/BCSuite/AstraConnect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BCSuite%2FAstraConnect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BCSuite%2FAstraConnect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BCSuite%2FAstraConnect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BCSuite%2FAstraConnect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BCSuite","download_url":"https://codeload.github.com/BCSuite/AstraConnect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BCSuite%2FAstraConnect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32038456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["blockchain","evm","rpc","solana","swift","web3"],"created_at":"2025-12-11T22:59:20.746Z","updated_at":"2026-04-20T08:02:42.684Z","avatar_url":"https://github.com/BCSuite.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"##                   \n\n- [AstraConnect](#astraconnect)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Extention](#extention)\n- [Solana](#solana)\n\n\n\n## **AstraConnect**\n\nAstraConnect is a universal blockchain RPC client designed for iOS applications, enabling seamless RPC interactions with major public blockchains. It offers extensive customization for data formats, encoding/decoding methods, communication protocols, and Request/Response structures, ensuring effortless extensibility to any blockchain network. With method-level access control, each RPC method can be independently configured for endpoint URL, data format, transmission method, and Request/Response schema. Solana is currently supported, with upcoming integration of EVM-compatible networks (including Base and BSC) and other leading blockchains.\n\n![iOS 14+](https://img.shields.io/badge/iOS-14%2B-blue) ![Swift 5.3+](https://img.shields.io/badge/Swift-5.3%2B-orange?logo=swift) [![Swift Package Manager](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange?style=flat-square)](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange?style=flat-square) [![Platforms](https://img.shields.io/badge/Platforms-macOS_iOS-Green?style=flat-square)](https://img.shields.io/badge/Platforms-macOS_iOS-Green?style=flat-square)\n\n\n\n## Installation\n\n### SPM\n\n```\n.package(url: \"https://github.com/BCSuite/AstraConnect.git\", from: \"1.0.0\")\n```\n\n\n\n\n## Usage\n\nEach blockchain has its own dedicated interactor, which exposes native interfaces for every RPC method. To invoke a specific RPC method, simply call the corresponding native interface. For Solana, the usage is as follows:\n\n```\n// Configuring RPC address.\nlet solDevnetAddr = \"https://api.devnet.solana.com\"\n// Configuring any requester conforms to the ACRequestCapability protocol.\nlet requester: any ACRequestCapability = URLSessionRequester()\n// Configuring any logger conforms to the ACLoggable protocol.\nlet logger: any ACLoggable = ACConsoleLogger()\n// Building the Solana interactor.\nlet solInteractor = ACSolanaInteractor(rpcAddress: solDevnetAddr,\n                                       requester: requester,\n                                       logger: logger)\n// Calling the 'getBalance' to get corresponding balance of the account of provided Pubkey.\nlet balance =  try? await solInteractor.getBalance(of: acctAddr,\n                                                  optionalParams: ACSolanaBasicOptionalParams(commitment: .finalized,\n                                                                                              minContextSlot: 10))\n```\n\nIf want to configure a different RPC address for one  RPC method,  just setting the `rpcAddress` param like below:\n\n```\nlet rpcAddress = \"https://api.testnet.solana.com\"\nlet balance =  try? await solInteractor.getBalance(of: acctAddr,\n                                                   rpcAddress: rpcAddress)\n```\n\nIf want to specify other data stream format for one  request,  just setting the `dataStreamParams.dataInfo` param like below:\n\n```\nlet rpcAddress = \"https://api.testnet.solana.com\"\nlet dataInfo = CustomData()\nlet balance =  try? await solInteractor.getBalance(of: acctAddr,\n                                                   rpcAddress: rpcAddress,\n                                                   dataStreamParams: ACReqDSA(dataInfo: dataInfo))\n```\n\nNow AstraConnect only supports `JSON`,  it needs to customize other data stream format if want to use non-JSON data.\n\n\n\n\n\n\n## Extention\n\nAstraConnect supports customize serverval functionalities:\n\n- **Request builder**:  supporting customizing any builders conforms to the  `ACURLRequestBuildable` protocol to build a request according to different RPC params constructions.\n\n- **URLRequest builder**:  supporting customizing any URLRequest builder conforms to the `ACURLRequestBuildable`,  if using the `URLSession` to handle the network request, you can extend custom URLRequest builder according to corresponding specific needs.\n\n- **Data stream format**:  supporting customizing any data format conforms to the  `ACRPCDataRepresentable `protocol, only supports  `JSON` now.\n\n- **Encoder**:  supporting customizing any encoder conforms to the `ACEncodable` protocol.\n\n- **Decoder**:  supporting customizing any decoder conforms to the `ACDecodable` protocol.\n\n- **Requester**:  supporting customizing any requester, providing network interaction capability, conforms to the `ACDecodable` protocol. Now, the defult requester is `URLSessionRequester`  which internally uses `URLSession` to handle the network request.\n\n- **Response**:  supporting customizing any response conforms to the `ACRPCResponsive` protocol. Even if different chains have respective responsive formats, you don't need to write encoding, parsing and processsing logic for each chain,  just defining the corresponding Response for each, the AstraConnect automatically handles those as one chain.\n\n- **Logger**:  supporting customizing any logger conforms to the `ACLoggable` protocol, now the default logger is `ACConsoleLogger ` which just outputs to the console.\n\n  \n\n\n\n## Solana\n\nNow, all RPC methods in the official doc: https://solana.com/docs/rpc/http have corresponding native interface.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcsuite%2Fastraconnect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbcsuite%2Fastraconnect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcsuite%2Fastraconnect/lists"}