Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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/e2e-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ jobs:
- "three-chain.yaml"
- "agoric.yaml"
- "multi-relayer.yaml"
- "neutron-relayer.yaml"
fail-fast: true
max-parallel: 1

Expand Down
23 changes: 23 additions & 0 deletions starship/charts/devnet/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -776,6 +776,26 @@ defaultRelayers:
mode: push # allowed values: push, pull. Valid only for 1.6.0+
go-relayer:
image: ghcr.io/cosmology-tech/starship/go-relayer:v2.4.1
neutron-query-relayer:
image: ghcr.io/cosmology-tech/starship/neutron-query-relayer:v0.2.0
config:
RELAYER_NEUTRON_CHAIN_TIMEOUT: 1000s
RELAYER_NEUTRON_CHAIN_GAS_PRICES: 0.5untrn
RELAYER_NEUTRON_CHAIN_GAS_LIMIT: 200000
RELAYER_NEUTRON_CHAIN_GAS_ADJUSTMENT: 2.0
RELAYER_NEUTRON_CHAIN_DEBUG: false
RELAYER_NEUTRON_CHAIN_KEYRING_BACKEND: test
RELAYER_NEUTRON_CHAIN_OUTPUT_FORMAT: json
RELAYER_NEUTRON_CHAIN_SIGN_MODE_STR: direct
RELAYER_TARGET_CHAIN_TIMEOUT: 1000s
RELAYER_TARGET_CHAIN_DEBUG: true
RELAYER_REGISTRY_ADDRESS: ""
RELAYER_ALLOW_TX_QUERIES: true
RELAYER_ALLOW_KV_CALLBACKS: true
RELAYER_MIN_KV_UPDATE_PERIOD: 1
RELAYER_STORAGE_PATH: "storage/leveldb"
RELAYER_CHECK_SUBMITTED_TX_STATUS_DELAY: 10s
RELAYER_QUERIES_TASK_QUEUE_CAPACITY: 10000

defaultScripts:
createGenesis:
Expand All @@ -796,6 +816,9 @@ defaultScripts:
buildChain:
name: build-chain.sh
file: scripts/default/build-chain.sh
ibcConnection:
name: ibc-connection.sh
file: scripts/default/ibc-connection.sh

defaultFaucet:
cosmjs:
Expand Down
26 changes: 26 additions & 0 deletions starship/charts/devnet/scripts/default/ibc-connection.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash

REGISTRY_URL="$1"
CHAIN_1="$2"
CHAIN_2="$3"

set -eux

function connection_id() {
CONNECTION_ID=$(curl -s $REGISTRY_URL/ibc/$CHAIN_1/$CHAIN_2 | jq -r ".chain_1.connection_id")
echo $CONNECTION_ID
}

echo "Try to get connection id, if failed, wait for 2 seconds and try again"
max_tries=20
while [[ max_tries -gt 0 ]]
do
id=$(connection_id)
if [[ -n "$id" ]]; then
echo "Found connection id: $id"
exit 0
fi
echo "Failed to get connection id. Sleeping for 2 secs. Tries left $max_tries"
((max_tries--))
sleep 10
done
22 changes: 17 additions & 5 deletions starship/charts/devnet/scripts/neutron/create-neutron-genesis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ KEYS_CONFIG="${KEYS_CONFIG:=configs/keys.json}"

BRANCH="${BRANCH:=v2.0.1}"

FAUCET_ENABLED="${FAUCET_ENABLED:=true}"
NUM_VALIDATORS="${NUM_VALIDATORS:=1}"
NUM_RELAYERS="${NUM_RELAYERS:=0}"

GENESIS_PATH="$CHAIN_DIR/config/genesis.json"
BASE_DIR=./data

Expand All @@ -33,16 +37,24 @@ echo "Adding key...." $(jq -r ".genesis[0].name" $KEYS_CONFIG)
jq -r ".genesis[0].mnemonic" $KEYS_CONFIG | $BINARY keys add $(jq -r ".genesis[0].name" $KEYS_CONFIG) --recover --keyring-backend="test"
$BINARY add-genesis-account $($BINARY keys show -a $(jq -r .genesis[0].name $KEYS_CONFIG) --keyring-backend="test") $COINS --keyring-backend="test"

# Add relayer key to the keyring and self delegate initial coins
echo "Adding key...." $(jq -r ".relayers[0].name" $KEYS_CONFIG)
jq -r ".relayers[0].mnemonic" $KEYS_CONFIG | $BINARY keys add $(jq -r ".relayers[0].name" $KEYS_CONFIG) --recover --keyring-backend="test"
$BINARY add-genesis-account $($BINARY keys show -a $(jq -r .relayers[0].name $KEYS_CONFIG) --keyring-backend="test") $COINS --keyring-backend="test"

# Add faucet key to the keyring and self delegate initial coins
echo "Adding key...." $(jq -r ".faucet[0].name" $KEYS_CONFIG)
jq -r ".faucet[0].mnemonic" $KEYS_CONFIG | $BINARY keys add $(jq -r ".faucet[0].name" $KEYS_CONFIG) --recover --keyring-backend="test"
$BINARY add-genesis-account $($BINARY keys show -a $(jq -r .faucet[0].name $KEYS_CONFIG) --keyring-backend="test") $COINS --keyring-backend="test"

if [[ $FAUCET_ENABLED == "false" && $NUM_RELAYERS -gt "-1" ]];
then
## Add relayers keys and delegate tokens
for i in $(seq 0 $NUM_RELAYERS);
do
# Add relayer key and delegate tokens
RELAYER_KEY_NAME="$(jq -r ".relayers[$i].name" $KEYS_CONFIG)"
echo "Adding relayer key.... $RELAYER_KEY_NAME"
jq -r ".relayers[$i].mnemonic" $KEYS_CONFIG | $BINARY keys add $RELAYER_KEY_NAME --recover --keyring-backend="test"
$BINARY add-genesis-account $($BINARY keys show -a $RELAYER_KEY_NAME --keyring-backend="test") $COINS --keyring-backend="test"
done
fi

# Add test addresses, admin address
echo "Adding key.... demowallet1"
jq -r ".keys[0].mnemonic" $KEYS_CONFIG | $BINARY keys add demowallet1 --index 1 --recover --keyring-backend="test"
Expand Down
2 changes: 2 additions & 0 deletions starship/charts/devnet/templates/chains/cosmos/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,6 @@ metadata:
data:
transfer-tokens.sh: |-
{{- $.Files.Get "scripts/default/transfer-tokens.sh" | nindent 4 }}
ibc-connection.sh: |-
{{- $.Files.Get "scripts/default/ibc-connection.sh" | nindent 4 }}
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{{- $keys := .Files.Get "configs/keys.json" | fromJson }}
{{- range $relayer := .Values.relayers }}
{{- if eq $relayer.type "neutron-query-relayer" }}
{{ $defaultFile := $.Files.Get "defaults.yaml" | fromYaml }}
{{ $relayer = include "devnet.fullrelayer" (dict "name" $relayer.name "file" $defaultFile "context" $) | fromJson }}
{{ $tag := include "image.tag" $relayer.image }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: "{{ $relayer.fullname }}"
data:
{{- range $i, $chain := $relayer.chains }}
{{ $fullchain := include "devnet.fullchain" (dict "name" $chain "file" $defaultFile "context" $) | fromJson }}
{{- if eq $fullchain.name "neutron" }}
relayer-neutron-chain-rpc-addr: "http://{{ $fullchain.hostname }}-genesis.{{ $.Release.Namespace }}.svc.cluster.local:26657"
relayer-neutron-chain-rest-addr: "http://{{ $fullchain.hostname }}-genesis.{{ $.Release.Namespace }}.svc.cluster.local:1317"
relayer-neutron-chain-home-dir: "{{ $fullchain.home }}"
{{- else }}
relayer-target-chain-rpc-addr: "http://{{ $fullchain.hostname }}-genesis.{{ $.Release.Namespace }}.svc.cluster.local:26657"
{{- end }}
{{- end }}
relayer-registry-addresses: ""
relayer-listen-addr: "127.0.0.1:9999"
---
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{{- range $relayer := .Values.relayers }}
{{- if eq $relayer.type "neutron-query-relayer" }}
{{ $defaultFile := $.Files.Get "defaults.yaml" | fromYaml }}
{{ $defaultRelayer := get $defaultFile.defaultRelayers $relayer.type | default dict }}
{{ $relayer = mergeOverwrite $defaultRelayer $relayer }}
---
apiVersion: v1
kind: Service
metadata:
name: {{ $relayer.type }}-{{ $relayer.name }}
labels:
app.kubernetes.io/name: {{ $relayer.type }}-{{ $relayer.name }}
spec:
clusterIP: None
ports:
- name: rest
port: 3000
protocol: TCP
targetPort: 9999
selector:
app.kubernetes.io/name: {{ $relayer.type }}-{{ $relayer.name }}
---
{{- end }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
{{- range $relayer := .Values.relayers }}
{{- if eq $relayer.type "neutron-query-relayer" }}
{{ $defaultFile := $.Files.Get "defaults.yaml" | fromYaml }}
{{ $relayer := include "devnet.fullrelayer" (dict "name" $relayer.name "file" $defaultFile "context" $) | fromJson }}
{{ $relayerIndex := include "devnet.relayerindex" (dict "name" $relayer.name "context" $) }}
{{ $initParams := dict "chains" $relayer.chains "port" $.Values.exposer.ports.rest "context" $ }}
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ $relayer.fullname }}
spec:
serviceName: {{ $relayer.fullname }}
replicas: {{ $relayer.replicas }}
podManagementPolicy: "Parallel"
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/instance: relayer
app.kubernetes.io/type: {{ $relayer.type }}
app.kubernetes.io/name: {{ $relayer.fullname }}
template:
metadata:
annotations:
quality: release
role: api-gateway
sla: high
tier: gateway
labels:
app.kubernetes.io/instance: relayer
app.kubernetes.io/type: {{ $relayer.type }}
app.kubernetes.io/name: {{ $relayer.fullname }}
app.kubernetes.io/rawname: {{ $relayer.name }}
app.kubernetes.io/version: {{ $.Chart.AppVersion }}
spec:
{{- include "imagePullSecrets" $relayer | indent 6 }}
initContainers:
{{/* Waits for all upstream chains before starting relayer, vai init containers */}}
{{- include "devnet.init.wait" $initParams | indent 8 }}
- name: init-relayer
{{- range $i, $chain := $relayer.chains }}
{{ $fullchain := include "devnet.fullchain" (dict "name" $chain "file" $defaultFile "context" $) | fromJson }}
{{- if eq $fullchain.name "neutron" }}
image: {{ $fullchain.image }}
imagePullPolicy: {{ $.Values.images.imagePullPolicy }}
env:
- name: KEYS_CONFIG
value: /keys/keys.json
- name: RELAYER_DIR
value: "{{ $fullchain.home }}"
- name: RELAYER_INDEX
value: "{{ $relayerIndex }}"
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
command:
- bash
- "-c"
- |
set -ux

echo "Adding key.... relayer"
jq -r ".relayers[$RELAYER_INDEX].mnemonic" $KEYS_CONFIG | neutrond keys add relayer --recover --keyring-backend="test"

DENOM="{{ $fullchain.denom }}"
RLY_ADDR=$(neutrond keys show relayer -a --keyring-backend='test')
echo "Transfer tokens to address $RLY_ADDR"

echo "Transfer tokens to address $RLY_ADDR"
bash -e /scripts/transfer-tokens.sh \
$RLY_ADDR \
$DENOM \
http://{{ $fullchain.hostname }}-genesis.$NAMESPACE.svc.cluster.local:8000/credit \
"{{ $fullchain.faucet.enabled }}" || true

echo "Wait for connection id to be created"
bash -e /scripts/ibc-connection.sh \
http://registry.$NAMESPACE.svc.cluster.local:8080 \
{{ index $relayer.chains 0 }} \
{{ index $relayer.chains 1 }}
{{- end }}
{{- end }}
volumeMounts:
- mountPath: /root
name: relayer
- mountPath: /configs
name: relayer-config
- mountPath: /keys
name: keys
- mountPath: /scripts
name: scripts
containers:
- name: relayer
image: {{ $relayer.image }}
imagePullPolicy: {{ $.Values.images.imagePullPolicy }}
env:
- name: RELAYER_DIR
value: /root/.hermes
{{- range $key, $value := $relayer.config }}
- name: {{ $key }}
value: "{{ $value }}"
{{- end }}
- name: RELAYER_NEUTRON_CHAIN_SIGN_KEY_NAME
value: relayer
- name: RELAYER_NEUTRON_CHAIN_RPC_ADDR
valueFrom:
configMapKeyRef:
name: "{{ $relayer.fullname }}"
key: relayer-neutron-chain-rpc-addr
- name: RELAYER_NEUTRON_CHAIN_REST_ADDR
valueFrom:
configMapKeyRef:
name: "{{ $relayer.fullname }}"
key: relayer-neutron-chain-rest-addr
- name: RELAYER_NEUTRON_CHAIN_HOME_DIR
valueFrom:
configMapKeyRef:
name: "{{ $relayer.fullname }}"
key: relayer-neutron-chain-home-dir
- name: RELAYER_TARGET_CHAIN_RPC_ADDR
valueFrom:
configMapKeyRef:
name: "{{ $relayer.fullname }}"
key: relayer-target-chain-rpc-addr
- name: RELAYER_REGISTRY_ADDRESSES
valueFrom:
configMapKeyRef:
name: "{{ $relayer.fullname }}"
key: relayer-registry-addresses
- name: RELAYER_LISTEN_ADDR
valueFrom:
configMapKeyRef:
name: "{{ $relayer.fullname }}"
key: relayer-listen-addr
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
command:
- bash
- "-c"
- |
RLY_INDEX=${HOSTNAME##*-}
echo "Relayer Index: $RLY_INDEX"

echo "Query connection id from registry service"
CONNECTION_ID=$(curl -s -X GET curl http://registry.$NAMESPACE.svc.cluster.local:8080/ibc/{{ index $relayer.chains 0 }}/{{ index $relayer.chains 1 }} | jq -r ".chain_1.connection_id")
echo "Connection ID: $CONNECTION_ID"

RELAYER_NEUTRON_CHAIN_CONNECTION_ID=$CONNECTION_ID neutron_query_relayer start
resources: {{- include "devnet.node.resources" ( dict "node" $relayer "context" $ ) | trim | nindent 12 }}
securityContext:
allowPrivilegeEscalation: false
runAsUser: 0
volumeMounts:
- mountPath: /root
name: relayer
- mountPath: /configs
name: relayer-config
volumes:
- name: relayer
emptyDir: { }
- name: relayer-config
configMap:
name: "{{ $relayer.fullname }}"
- name: keys
configMap:
name: keys
- name: scripts
configMap:
name: setup-scripts
---
{{- end }}
{{- end }}
19 changes: 18 additions & 1 deletion starship/charts/devnet/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,22 @@
"file",
"data"
]
},
"ibcConnection": {
"type": "object",
"properties": {
"file": {
"type": "string"
},
"data": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"file",
"data"
]
}
},
"additionalProperties": false
Expand Down Expand Up @@ -531,7 +547,8 @@
"enum": [
"go-relayer",
"hermes",
"ts-relayer"
"ts-relayer",
"neutron-query-relayer"
]
},
"image": {
Expand Down
Loading