Goal: keep the current working web wallet behavior intact, and add your currently deployed Photon development servers as an additional selectable backend profile.
| Service | Public Entry Point | Backs Onto | Usefulness To Current Web Wallet |
|---|---|---|---|
| Electrum TLS | ssl://dev-index.photonbolt.xyz:50002 |
127.0.0.1:50001 electrs raw TCP |
Can be stored as Electrum setting, but the current wallet does not use Electrum for most chain reads. |
| RGB proxy | https://dev-proxy.photonbolt.xyz/json-rpc |
127.0.0.1:3000/json-rpc |
Usable immediately for RGB JSON-RPC. |
| Bitcoin RPC | https://dev-rpc.photonbolt.xyz |
127.0.0.1:18443 bitcoind RPC |
Not suitable to call directly from the browser wallet as a safe replacement for current public APIs. |
| Feature | Current Source | Can Your Current Server Replace It Today? |
|---|---|---|
| RGB proxy calls | rgbProxy storage value, default http://89.117.52.115:3000/json-rpc |
Yes |
| Electrum server setting | electrumServer storage value, default ssl://electrum.iriswallet.com:50013 |
Partially; the setting can be changed, but the app does not fully rely on it |
| Fee estimates | mempool.space |
No |
| Address history | mempool.space or blockstream.info |
No |
| UTXO lookup | mempool.space or blockstream.info |
No |
| Broadcast | mempool.space or blockstream.info |
No |
| Wallet canister access | https://ic0.app + canister IDs |
Unrelated to your local Photon server stack |
Photon Dev Regtest, keep the
current behavior as the default profile, and only use the new profile when the user explicitly selects it.
Add a profile model instead of only two loose settings.
{
id: "legacy-public",
name: "Current Public Servers",
type: "public",
electrumServer: "ssl://electrum.iriswallet.com:50013",
rgbProxy: "http://89.117.52.115:3000/json-rpc",
bitcoinApiMode: "public",
feeApiBase: "https://mempool.space/testnet/api",
addressApiBase: "https://mempool.space/testnet/api",
broadcastApiBase: "https://mempool.space/testnet/api"
}
{
id: "photon-dev-regtest",
name: "Photon Dev Regtest",
type: "photon-dev",
electrumServer: "ssl://dev-index.photonbolt.xyz:50002",
rgbProxy: "https://dev-proxy.photonbolt.xyz/json-rpc",
bitcoinApiMode: "photon-dev"
}
Do not remove existing keys. Add new ones.
electrumServer, rgbProxy, mainnetCanisterId, testnetCanisterId intact.backendProfileId and backendProfiles.legacy-public.This is the most important code change.
fetchLiveFees, checkAddressHistory, fetchUTXOsFromBlockchain, broadcastTransaction, and Bitcoin activity logic each choose hardcoded public URLs.Your deployed stack needs a browser-safe HTTP layer for Bitcoin data.
dev-rpc.photonbolt.xyz as a generic replacement for mempool APIs.dev-api.photonbolt.xyz.| Needed Endpoint | Why | Suggested Source |
|---|---|---|
GET /api/fees |
Replaces mempool fee API | Bitcoind fee estimate or electrs-compatible source |
GET /api/address/:address |
Address history / balance / funded count | Electrs or bitcoind-backed adapter |
GET /api/address/:address/utxo |
UTXO discovery | Electrs or bitcoind-backed adapter |
POST /api/tx |
Transaction broadcast | Bitcoind RPC adapter |
GET /api/address/:address/txs |
Activity list | Electrs-backed adapter |
| File | Change |
|---|---|
src/utils/storage.ts |
Add backend profile storage keys and default profile definitions. |
src/App.tsx |
Add backend profile selector UI, load/save active profile, and keep the current settings as the legacy public default. |
src/utils/bitcoin-transactions.ts |
Stop hardcoding mempool/blockstream URLs. Resolve endpoints from the active backend profile. |
src/utils/bitcoin-activities.ts |
Same change: stop hardcoding public explorers/API bases. |
src/utils/rgb.ts |
Keep current behavior but source the proxy URL from the selected profile when present. |
src/utils/icp.ts |
No direct Photon server change required unless you also want canister IDs grouped into profiles. |
{
"id": "photon-dev-regtest",
"name": "Photon Dev Regtest",
"electrumServer": "ssl://dev-index.photonbolt.xyz:50002",
"rgbProxy": "https://dev-proxy.photonbolt.xyz/json-rpc",
"bitcoinApiBase": "https://dev-api.photonbolt.xyz/api",
"networkMode": "regtest"
}
If you do not build dev-api.photonbolt.xyz or equivalent, then only the RGB side
of this profile will be truly wired to your current server stack.
Photon Dev Regtest profile and test it separately from the current public one.electrumServer and rgbProxy defaults and assume the wallet is now on your stack.
That would be incomplete and potentially misleading, because large parts of the wallet would still be using public mempool/blockstream APIs.