Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
c972f48
add solana to default values
Anmol1696 Jul 15, 2025
e992a57
Merge branch 'main' into anmol/add-solana
Anmol1696 Jul 15, 2025
1adb249
add initial setup for solana nodes
Anmol1696 Jul 15, 2025
4460f6b
add validator sh script
Anmol1696 Jul 15, 2025
d5d6a70
add solana test, update genesis and other charts for solana, add chec…
Anmol1696 Jul 16, 2025
a391a79
get initial version of solana running
Anmol1696 Jul 16, 2025
a08dc48
update services and faucet, ws and p2p ports
Anmol1696 Jul 18, 2025
fb9ed4a
update images and scripts to use agave
Anmol1696 Jul 18, 2025
06e16d6
add readinessprobe and chain ready script
Anmol1696 Jul 18, 2025
c18b339
add registry to solana testing
Anmol1696 Jul 18, 2025
b3c5b83
Merge pull request #725 from hyperweb-io/anmol/add-solana-explorer
Anmol1696 Jul 31, 2025
359c515
add exposer for genesis node for solana
Anmol1696 Jul 31, 2025
a73ece7
set config for the chain better, use it properly for the validator nodes
Anmol1696 Jul 31, 2025
ac71f51
add solana-faucet to faucet types
Anmol1696 Jul 31, 2025
411ddd6
fix solana-faucet container
Anmol1696 Jul 31, 2025
d8c577f
add initial setup for multi-validator solana setup
Anmol1696 Jul 31, 2025
82c3e09
fix dns for genesis rpc endpoint
Anmol1696 Jul 31, 2025
9699426
get validator working with the bootstrap node
Anmol1696 Aug 2, 2025
2631f4d
test cases for solana chain
Anmol1696 Aug 4, 2025
9401eba
add test for the solana chain
Anmol1696 Aug 4, 2025
a8d0f55
get solana test to work
Anmol1696 Aug 5, 2025
84d7f74
add solana-lite to e2e tests and in the ci
Anmol1696 Aug 5, 2025
4ec5136
update the resources for the solana-lite example
Anmol1696 Aug 5, 2025
b92feca
update resources of the faucet
Anmol1696 Aug 5, 2025
08756fa
try to increase resources of the main node
Anmol1696 Aug 5, 2025
b9d60d7
add solana chain to the port forwarding logic
Anmol1696 Aug 5, 2025
fd75b9b
update the client for solana chain
Anmol1696 Aug 19, 2025
d1dbd32
update clean to not remove test output, create new clean:test command…
Anmol1696 Aug 19, 2025
22dbb59
sleep more
Anmol1696 Aug 19, 2025
a94c20c
add sleep before txn as well
Anmol1696 Aug 19, 2025
003a0d0
add more timeout
Anmol1696 Aug 19, 2025
92eeb0d
Merge branch 'main' into anmol/add-solana
Anmol1696 Aug 19, 2025
6ff0e6c
Update starship/tests/e2e/e2e_test.go
Anmol1696 Aug 19, 2025
8047d9f
add solana chain to the docs
Anmol1696 Aug 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/pr-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ jobs:
- "one-chain-cometmock.yaml"
- "one-cosmoshub-cosmjs-faucet.yaml"
- "eth-lite.yaml"
- "solana-lite.yaml"
fail-fast: true
max-parallel: 3

Expand Down
3 changes: 2 additions & 1 deletion docs/config/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@
"chains": "Chains Directive Syntax",
"relayers": "Relayers Directive Syntax",
"features": "Feature Toggles",
"ethereum": "Ethereum"
"ethereum": "Ethereum",
"solana": "Solana"
}
175 changes: 175 additions & 0 deletions docs/config/solana.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
# Solana Chain Configuration in Starship

Solana support in Starship allows users to deploy Solana validator nodes using simple configurations.
This section details how to configure Solana-based chains within Starship.

## Solana Chain

The Solana chain runs a Solana validator node that can handle transactions and maintain the blockchain state.

### Basic Config
```yaml
chains:
- id: solana
name: solana
numValidators: 2
ports:
rpc: 8899
ws: 8900
exposer: 8001
faucet: 9900
resources:
cpu: 2000m
memory: 2048Mi
```

### Lite Configuration (CI/Testing)

For CI environments or testing scenarios where you need minimal resource usage, you can use the lite configuration:

```yaml
chains:
- id: solana
name: solana
numValidators: 1
ports:
rpc: 8899
ws: 8900
exposer: 8001
faucet: 9900
resources:
cpu: 1500m
memory: 1500Mi

exposer:
resources:
cpu: 100m
memory: 100Mi

faucet:
resources:
cpu: 200m
memory: 200Mi
```

## Configuration Options

### Chain Properties

- **id**: The chain identifier (can be string or number)
- **name**: Must be `"solana"` for Solana chains
- **numValidators**: Number of validator nodes to deploy (minimum: 1)

### Ports

- **rpc**: JSON RPC port (default: 8899)
- **ws**: WebSocket port (default: 8900)
- **exposer**: Exposer service port for chain information
- **faucet**: Faucet service port for requesting test tokens

### Resources

You can specify CPU and memory resources for the Solana validators:

```yaml
resources:
cpu: 2000m # 2 CPU cores
memory: 2048Mi # 2GB RAM
```

For lighter deployments (like CI), you can reduce these requirements:

```yaml
resources:
cpu: 1500m # 1.5 CPU cores
memory: 1500Mi # 1.5GB RAM
```

## Default Configuration

Starship uses the following defaults for Solana chains:

- **Image**: `ghcr.io/hyperweb-io/starship/solana-agave:v2.3.4`
- **Binary**: `solana-validator`
- **Home Directory**: `/root/.solana`
- **Denomination**: `lamports` (base unit), `sol` (display unit)
- **HD Path**: `m/44'/501'/0'/0'`
- **Coin Type**: 501
- **Faucet**: Enabled by default with Solana-specific faucet

## Registry Integration

When using the registry service, Solana chains are automatically registered with the following asset information:

```yaml
registry:
enabled: true
ports:
rest: 8081
resources:
cpu: "0.1"
memory: "100M"
```

## Usage Examples

### Full Development Environment

For a complete development setup with multiple validators:

```yaml
name: solana-dev
version: 1.10.0

chains:
- id: solana
name: solana
numValidators: 2
ports:
rpc: 8899
ws: 8900
exposer: 8001
faucet: 9900
resources:
cpu: 2000m
memory: 2048Mi

registry:
enabled: true
ports:
rest: 8081
```

### CI/Testing Environment

For continuous integration or testing environments where resources are limited:

```yaml
name: solana-ci
version: 1.10.0

chains:
- id: solana
name: solana
numValidators: 1
ports:
rpc: 8899
ws: 8900
exposer: 8001
faucet: 9900
resources:
cpu: 1500m
memory: 1500Mi

exposer:
resources:
cpu: 100m
memory: 100Mi

faucet:
resources:
cpu: 200m
memory: 200Mi
```

This lite configuration is perfect for CI pipelines where you need to test Solana functionality with minimal resource overhead.
6 changes: 6 additions & 0 deletions packages/packages/client/src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,12 @@ const defaultPorts: PodPorts = {
rest: 8545,
ws: 8546
},
solana: {
rpc: 8899,
ws: 8900,
exposer: 8081,
faucet: 9900
},
defaultPorts: {
rpc: 26657,
grpc: 9090,
Expand Down
3 changes: 2 additions & 1 deletion packages/packages/generator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@
},
"scripts": {
"copy": "copyfiles -f ../../LICENSE README.md package.json dist",
"clean": "del dist/**; del __tests__/__output__/**",
"clean": "del dist/**",
"clean:test": "del __tests__/__output__/**",
"prepare": "npm run build",
"build": "npm run clean; tsc; tsc -p tsconfig.esm.json; npm run copy",
"dev": "ts-node src/index",
Expand Down
34 changes: 34 additions & 0 deletions starship/charts/devnet/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -803,6 +803,37 @@ defaultChains:
png: https://raw.githubusercontent.com/cosmos/chain-registry/master/xpla/images/xpla.png
svg: https://raw.githubusercontent.com/cosmos/chain-registry/master/xpla/images/xpla.svg
coingecko_id: xpla
solana:
type: solana
image: ghcr.io/hyperweb-io/starship/solana-agave:v2.3.4
home: /root/.solana
binary: solana-validator
prefix: sol
denom: lamports
prettyName: Solana
coins: 1000000000000000lamports
hdPath: m/44'/501'/0'/0'
coinType: 501
repo: https://github.com/anzaxyz/agave
faucet:
enabled: true
type: solana-faucet
assets:
- base: lamports
description: "The native token of Solana"
name: Solana
display: sol
symbol: SOL
logo_URIs:
png: "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png"
svg: "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.svg"
denom_units:
- denom: lamports
exponent: 0
- denom: sol
exponent: 9
coingecko_id: solana
keywords: ["layer1"]
ethereum:
image: ghcr.io/hyperweb-io/starship/ethereum/client-go:v1.14.12
home: /ethereum
Expand Down Expand Up @@ -1008,6 +1039,9 @@ defaultFaucet:
starship:
image: ghcr.io/hyperweb-io/starship/faucet:20250325-2207109
concurrency: 5
solana-faucet:
image: ghcr.io/hyperweb-io/starship/solana-agave:v2.3.4
concurrency: 5

defaultCometmock:
image: ghcr.io/informalsystems/cometmock:v0.37.x
16 changes: 16 additions & 0 deletions starship/charts/devnet/scripts/solana/bench-tps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/env bash

here=$(dirname "$0")
# shellcheck source=multinode-demo/common.sh
source "$here"/common.sh

# shellcheck source=net/common.sh
source "$(cd "$here"/..; pwd)"/net/common.sh

args=()
default_arg --entrypoint 127.0.0.1:8001
default_arg --faucet 127.0.0.1:9900
default_arg --tx_count 50000
default_arg --duration 90

exec "$solana_bench_tps" "${args[@]}" "$@"
Loading
Loading