5 releases
0.1.3 | Sep 29, 2023 |
---|---|
0.1.2 | Sep 13, 2023 |
0.1.1 | Sep 13, 2023 |
0.1.0 | Sep 13, 2023 |
0.0.0 | Sep 9, 2023 |
22 downloads per month
41KB
443 lines
Sunspot Proxy
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
- Go to chrome://settings/certificates in your Chrome browser
- Go to the
Authorities
tab and thenImport
- Select the
sunspot.pem
file from thecerts
directory - Select
Trust this certificate for identifying websites
and clickOK
Adding CA to Firefox
- Go to about:preferences#privacy in your Firefox browser and scroll down to
Certificates
- Click
View Certificates
, go to theAuthorities
tab, and then clickImport
- Select the
sunspot.pem
file from thecerts
directory - Select
Trust this CA to identify websites.
and clickOK
Setting up SwitchyOmega Proxy
- Install from the Chrome Web Store or Firefox Add-ons
- In the SwitchyOmega options, go to Import/Export and click
Restore from file
- Select the
OmegaOptions.bak
file from theswitchy-omega-proxy
directory - Click
Apply Changes
and enable theauto 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
Dependencies
~78MB
~1.5M SLoC