From a7976136b7bdcb309da1669d381e209ab5761868 Mon Sep 17 00:00:00 2001 From: Nikhil Suri Date: Wed, 18 Jan 2023 07:57:09 -0800 Subject: [PATCH] tilt: add ibc relayer which connects wormchain and terra2 to dev environment (#2215) - updates terra2 devnet chain timeout_commit to "1s" since the timeout_commit of "0.5s" is too fast and leads to Terra2's clock going into the future. - updates terra2 devnet chain unbonding_time to "1814400s" which is the default value and translates to a valid trusting period for IBC connectivity. --- Tiltfile | 22 ++++++++ cosmwasm/devnet/config/config.toml | 4 +- cosmwasm/devnet/config/genesis.json | 2 +- cosmwasm/devnet/config/tiltRelayer-mnemonic | 1 + devnet/ibc-relayer.yaml | 51 +++++++++++++++++++ wormchain/build/config/genesis.json | 16 ++++++ wormchain/build/config/tiltRelayer-mnemonic | 1 + ...b354a3f97d209831b9b383668db64f76ca.address | 1 + wormchain/build/keyring-test/tiltRelayer.info | 1 + wormchain/ibc-relayer/Dockerfile | 24 +++++++++ wormchain/ibc-relayer/chains/localterra.json | 16 ++++++ wormchain/ibc-relayer/chains/wormchain.json | 16 ++++++ 12 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 cosmwasm/devnet/config/tiltRelayer-mnemonic create mode 100644 devnet/ibc-relayer.yaml create mode 100644 wormchain/build/config/tiltRelayer-mnemonic create mode 100644 wormchain/build/keyring-test/ab160bb354a3f97d209831b9b383668db64f76ca.address create mode 100644 wormchain/build/keyring-test/tiltRelayer.info create mode 100644 wormchain/ibc-relayer/Dockerfile create mode 100644 wormchain/ibc-relayer/chains/localterra.json create mode 100644 wormchain/ibc-relayer/chains/wormchain.json diff --git a/Tiltfile b/Tiltfile index b746da6a2..a37d55aff 100644 --- a/Tiltfile +++ b/Tiltfile @@ -54,6 +54,7 @@ config.define_bool("node_metrics", False, "Enable Prometheus & Grafana for Guard config.define_bool("guardiand_governor", False, "Enable chain governor in guardiand") config.define_bool("wormchain", False, "Enable a wormchain node") config.define_bool("secondWormchain", False, "Enable a second wormchain node with different validator keys") +config.define_bool("ibc_relayer", False, "Enable IBC relayer between cosmos chains") cfg = config.parse() num_guardians = int(cfg.get("num", "1")) @@ -77,6 +78,7 @@ guardiand_debug = cfg.get("guardiand_debug", False) node_metrics = cfg.get("node_metrics", False) guardiand_governor = cfg.get("guardiand_governor", False) secondWormchain = cfg.get("secondWormchain", False) +ibc_relayer = cfg.get("ibc_relayer", False) btc = cfg.get("btc", False) if cfg.get("manual", False): @@ -753,6 +755,26 @@ if wormchain: trigger_mode = trigger_mode, ) +if ibc_relayer: + docker_build( + ref = "ibc-relayer-image", + context = ".", + dockerfile = "./wormchain/ibc-relayer/Dockerfile", + only = [] + ) + + k8s_yaml_with_ns("devnet/ibc-relayer.yaml") + + k8s_resource( + "ibc-relayer", + port_forwards = [ + port_forward(7597, name = "HTTPDEBUG [:7597]", host = webHost), + ], + resource_deps = ["guardian-validator", "terra2-terrad"], + labels = ["ibc-relayer"], + trigger_mode = trigger_mode, + ) + if btc: k8s_yaml_with_ns("devnet/btc-localnet.yaml") diff --git a/cosmwasm/devnet/config/config.toml b/cosmwasm/devnet/config/config.toml index ac3dbed03..cd13ea610 100644 --- a/cosmwasm/devnet/config/config.toml +++ b/cosmwasm/devnet/config/config.toml @@ -370,7 +370,9 @@ timeout_precommit_delta = "500ms" # How long we wait after committing a block, before starting on the new # height (this gives us a chance to receive some more precommits, even # though we already have +2/3). -timeout_commit = "0.5s" +# If the timeout_commit is too fast, the chain clock will get messed up and go into the future. +# This is important for IBC - to sync IBC headers, the clocks on each chain cannot differ by > 10 minutes. +timeout_commit = "1s" # How many blocks to look back to check existence of the node's consensus votes before joining consensus # When non-zero, the node will panic upon restart diff --git a/cosmwasm/devnet/config/genesis.json b/cosmwasm/devnet/config/genesis.json index 029f9043a..0e3f9e997 100644 --- a/cosmwasm/devnet/config/genesis.json +++ b/cosmwasm/devnet/config/genesis.json @@ -403,7 +403,7 @@ }, "staking": { "params": { - "unbonding_time": "600s", + "unbonding_time": "1814400s", "max_validators": 100, "max_entries": 7, "historical_entries": 10000, diff --git a/cosmwasm/devnet/config/tiltRelayer-mnemonic b/cosmwasm/devnet/config/tiltRelayer-mnemonic new file mode 100644 index 000000000..186e76d94 --- /dev/null +++ b/cosmwasm/devnet/config/tiltRelayer-mnemonic @@ -0,0 +1 @@ +notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius \ No newline at end of file diff --git a/devnet/ibc-relayer.yaml b/devnet/ibc-relayer.yaml new file mode 100644 index 000000000..269664162 --- /dev/null +++ b/devnet/ibc-relayer.yaml @@ -0,0 +1,51 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: ibc-relayer + name: ibc-relayer +spec: + ports: + - name: rest + port: 7597 + protocol: TCP + selector: + app: ibc-relayer +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app: ibc-relayer + name: ibc-relayer +spec: + replicas: 1 + selector: + matchLabels: + app: ibc-relayer + template: + metadata: + labels: + app: ibc-relayer + spec: + containers: + - name: ibc-relayer + image: ibc-relayer-image + command: + - rly + - transact + - link-then-start + - terra-wormchain + - --debug-addr + - localhost:7597 + ports: + - containerPort: 7597 + name: rest + protocol: TCP + readinessProbe: + httpGet: + port: 7597 + path: / + periodSeconds: 1 + restartPolicy: Always + serviceName: ibc-relayer \ No newline at end of file diff --git a/wormchain/build/config/genesis.json b/wormchain/build/config/genesis.json index f37430886..64fdf5b95 100644 --- a/wormchain/build/config/genesis.json +++ b/wormchain/build/config/genesis.json @@ -44,6 +44,13 @@ "pub_key": null, "account_number": "0", "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "wormhole14vtqhv6550uh6gycxxum8qmx3kmy7ak2qwzecx", + "pub_key": null, + "account_number": "0", + "sequence": "0" } ] }, @@ -70,6 +77,15 @@ "amount": "20000" } ] + }, + { + "address": "wormhole14vtqhv6550uh6gycxxum8qmx3kmy7ak2qwzecx", + "coins": [ + { + "denom": "utest", + "amount": "20000" + } + ] } ], "supply": [], diff --git a/wormchain/build/config/tiltRelayer-mnemonic b/wormchain/build/config/tiltRelayer-mnemonic new file mode 100644 index 000000000..7002d4b5f --- /dev/null +++ b/wormchain/build/config/tiltRelayer-mnemonic @@ -0,0 +1 @@ +barrel eager leaf heart runway bridge crowd warm refuse anxiety blur rain desert good hill prison dune oyster abuse owner bless trash talk wheat \ No newline at end of file diff --git a/wormchain/build/keyring-test/ab160bb354a3f97d209831b9b383668db64f76ca.address b/wormchain/build/keyring-test/ab160bb354a3f97d209831b9b383668db64f76ca.address new file mode 100644 index 000000000..cb5fa1191 --- /dev/null +++ b/wormchain/build/keyring-test/ab160bb354a3f97d209831b9b383668db64f76ca.address @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0wMS0wNiAxNToyNzoxMS42MTQ4MDk0MDQgKzAwMDAgVVRDIG09KzAuMDg3MDY4NjYzIiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoicG42OVRJeE8wQ19aQkN1aiJ9.ZKxjML28R42dsEVy3QkGdTIqXYwtnwGINdZogK7CQSE6Hn1Rtxj1eA.3CgXMxCZ-nebt9GA.BuiYeWJnkRPRxLrJqFq5ZFsxksZ5A-YgvDxKK0g-ZwNzldrKT_gKV05s8TA1Qfq_bHLIAsK-iQRkbXln1IxgPhaX9PqN8Ov43pxlE3_xdk4gw2hkSlRDf1OdQ6G7XSM3Cdixc8slopC2ve58A82f5tBB1f94j7BhZ6hpqsabQNYzg-8JU_AaTyhjnv4YS35ANAdzxmCpHLCbq8CV4nx_DjFhiN5nDUltD9C02UTOuT5V82I0HLDeyaxh7jI7jA.UkodXyu2G6TDFxfE26z5Zw \ No newline at end of file diff --git a/wormchain/build/keyring-test/tiltRelayer.info b/wormchain/build/keyring-test/tiltRelayer.info new file mode 100644 index 000000000..6b7398a75 --- /dev/null +++ b/wormchain/build/keyring-test/tiltRelayer.info @@ -0,0 +1 @@ +eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJjcmVhdGVkIjoiMjAyMy0wMS0wNiAxNToyNzoxMS42MDcwMDIyNzYgKzAwMDAgVVRDIG09KzAuMDc5MjYxNTM1IiwiZW5jIjoiQTI1NkdDTSIsInAyYyI6ODE5MiwicDJzIjoibVdJWGd2aXpvd0FrSWhZdyJ9.E__rUpYMIWWoNwrz9qxjKaeeL-l51jS2C29z4i0rE5_aRfeE9F4p6Q.Q5JZRDmXqlBMRksv.rSrvtuNaVJYqo3zn3CL4gORPGZKmrCr07JCXMP2NlZ25MwTuU1Ct7tujgHEgI2_nBHHzIAlptMmhpRFChgaeoezl2DrLnDfj9eKlBd3TNZtrErwPBcSeRyda0JuHfeTSeqV0wcsyvNuhej4qjcMpHvCuabV-prFU7WsLxuXNAZzR3rwiBzMuADr0q6IiJm5kgqhYSCnQ0OBh7bttMaIPQ8lhrejK0HArYNOx1cRWiJjallqy6H_e7OLpcDltjdjgB0pSegwGENT8kQ9Q0U4orJeoL4x7SR75YJwEUdVS2-Ez-_1ZkhQYBncR4MkBGrGX5hAng21nOHbtZq7RMo9jnqdue8lUvUTho9ml2gH3bZzuqUnc8o8.E4GGzFAjRvZrciDXlWjZaA \ No newline at end of file diff --git a/wormchain/ibc-relayer/Dockerfile b/wormchain/ibc-relayer/Dockerfile new file mode 100644 index 000000000..f4b3ce5dc --- /dev/null +++ b/wormchain/ibc-relayer/Dockerfile @@ -0,0 +1,24 @@ +FROM docker.io/golang:1.19.0@sha256:4c00329e17be6fedd8bd4412df454a205348da00f9e0e5d763380a29eb096b75 + +#used for a readiness probe +RUN apt-get update +RUN apt install -y netcat +RUN apt install -y jq + +WORKDIR /app + +RUN curl -OL --ssl https://github.com/cosmos/relayer/archive/c30b8d9e0ba6b45f8a576f768cad0777de545cb3.tar.gz +RUN printf '%s %s\n' "ede065997ee5873b6256748662fb93cd2652f45cb19937b7e6873ecc088109d9" "c30b8d9e0ba6b45f8a576f768cad0777de545cb3.tar.gz" | sha256sum --check +RUN tar xzf c30b8d9e0ba6b45f8a576f768cad0777de545cb3.tar.gz +WORKDIR relayer-c30b8d9e0ba6b45f8a576f768cad0777de545cb3 +RUN make install + +COPY ./wormchain/ibc-relayer/chains /chains + +RUN rly config init +RUN rly chains add-dir /chains +RUN rly keys restore localterra default "notice oak worry limit wrap speak medal online prefer cluster roof addict wrist behave treat actual wasp year salad speed social layer crew genius" --coin-type 330 +RUN rly keys restore wormchain default "barrel eager leaf heart runway bridge crowd warm refuse anxiety blur rain desert good hill prison dune oyster abuse owner bless trash talk wheat" +RUN rly paths new localterra wormchain terra-wormchain + +EXPOSE 7597 \ No newline at end of file diff --git a/wormchain/ibc-relayer/chains/localterra.json b/wormchain/ibc-relayer/chains/localterra.json new file mode 100644 index 000000000..704f305b4 --- /dev/null +++ b/wormchain/ibc-relayer/chains/localterra.json @@ -0,0 +1,16 @@ +{ + "type": "cosmos", + "value": { + "key": "default", + "chain-id": "localterra", + "rpc-addr": "http://terra2-terrad:26657", + "account-prefix": "terra", + "keyring-backend": "test", + "gas-adjustment": 1.2, + "gas-prices": "1uluna", + "debug": true, + "timeout": "20s", + "output-format": "json", + "sign-mode": "direct" + } +} \ No newline at end of file diff --git a/wormchain/ibc-relayer/chains/wormchain.json b/wormchain/ibc-relayer/chains/wormchain.json new file mode 100644 index 000000000..6c648791b --- /dev/null +++ b/wormchain/ibc-relayer/chains/wormchain.json @@ -0,0 +1,16 @@ +{ + "type": "cosmos", + "value": { + "key": "default", + "chain-id": "wormchain", + "rpc-addr": "http://guardian-validator:26657", + "account-prefix": "wormhole", + "keyring-backend": "test", + "gas-adjustment": 1.2, + "gas-prices": "0.01utest", + "debug": true, + "timeout": "20s", + "output-format": "json", + "sign-mode": "direct" + } + } \ No newline at end of file