sunspot

Crates.iosunspot
lib.rssunspot
version0.1.3
sourcesrc
created_at2023-09-09 22:08:52.039283
updated_at2023-09-29 22:32:25.305418
descriptionProxy server for Solflare Wallet to re-enable custom RPC endpoints
homepage
repositoryhttps://github.com/staratlasmeta/sunspot/
max_upload_size
id968412
size159,386
Sammy Harris (stegaBOB)

documentation

README

Sunspot Proxy

Crates.io Crates.io Crates.io

Sunspot is a proxy server that enables custom RPC urls and custom token metadata lists for the Solflare Solana wallet.

Installation

cargo install sunspot

Setting up Local Certificate Authority

Generating Certificates

From repo root

chmod +x generate-cert.sh
./generate-cert.sh

From anywhere

mkdir -p ./certs
openssl genrsa -out ./certs/sunspot.key 2048
openssl req -x509 -new -nodes -key ./certs/sunspot.key -sha256 -days 1825 -out ./certs/sunspot.pem

Adding CA to Chrome

  1. Go to chrome://settings/certificates in your Chrome browser
  2. Go to the Authorities tab and then Import
  3. Select the sunspot.pem file from the certs directory
  4. Select Trust this certificate for identifying websites and click OK

Adding CA to Firefox

  1. Go to about:preferences#privacy in your Firefox browser and scroll down to Certificates
  2. Click View Certificates, go to the Authorities tab, and then click Import
  3. Select the sunspot.pem file from the certs directory
  4. Select Trust this CA to identify websites. and click OK

Setting up SwitchyOmega Proxy

  1. Install from the Chrome Web Store or Firefox Add-ons
  2. In the SwitchyOmega options, go to Import/Export and click Restore from file
  3. Select the OmegaOptions.bak file from the switchy-omega-proxy directory
  4. Click Apply Changes and enable the auto switch option through the extension icon

Usage

Using the Testnet RPC option for Solflare is recommended. This will cause Solflare to route transactions through Testnet nodes, so if an API changes unexpectedly, real transactions won't be routed to Mainnet-Beta. Testnet also disables some features, which is what we want since Sunspot can't support everything (yet)!

sunspot --help
sunspot -k ./certs/sunspot.key -c ./certs/sunspot.pem http://localhost:8899

Using a Custom Token List File

Sunspot allows you to provide a custom token-list JSON file, which is used to add custom names, symbols, and imageURIs to tokens in both the wallet view and during simulations.

{
  "<Token Mint String>": {
    "name": "<Token Name>",
    "symbol": "<Token Symbol>",
    "imageUri": "<Token Image URI>"
  },
  // USD Coin Example
  "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v": {
    "name": "USD Coin",
    "symbol": "USDC",
    "imageUri": "https://assets.coingecko.com/coins/images/6319/large/USD_Coin_icon.png?1547042389"
  }
}

You can pass this file to Sunspot using the --token-list (-t) flag.

sunspot -k ./certs/sunspot.key -c ./certs/sunspot.pem -t ./tokens.json http://localhost:8899

Thanks

Special thanks to the Hudsucker crate for the MITM HTTP/S proxy implementation

Commit count: 26

cargo fmt