From c565ff41d9cf2597f337448a8e43e2cc4c054f3b Mon Sep 17 00:00:00 2001 From: yaruwangway <69694322+yaruwangway@users.noreply.github.com> Date: Wed, 16 Nov 2022 14:49:27 +0100 Subject: [PATCH] icamauth docs (#1813) * docs: add icamauth docs * docs: change uatom to stake * chore: update docs * docs: update icamuath.md according to review comments * docs: rename icamauth.md to README.md * docs: read mnemonic from file * docs: add hermes download instruction * update docs * globalfee/README.md -> globalfee.md * Update docs/modules/icamauth/hermes_setup.sh Co-authored-by: Danilo Pantani * docs: fix dead link * Update README.md * Update README.md * fixes Co-authored-by: billy rennekamp Co-authored-by: Danilo Pantani --- docs/modules/README.md | 2 + .../{globalfee/README.md => globalfee.md} | 6 +- docs/modules/icamauth/README.md | 247 ++++++++++++++++++ docs/modules/icamauth/hermes_setup.sh | 25 ++ .../modules/icamauth/init_chain_controller.sh | 73 ++++++ docs/modules/icamauth/init_chain_host.sh | 72 +++++ docs/modules/icamauth/rly-config.toml | 63 +++++ docs/modules/icamauth/rly0-mnemonic.txt | 1 + docs/modules/icamauth/rly1-mnemonic.txt | 1 + go.work.sum | 92 ++++++- 10 files changed, 576 insertions(+), 6 deletions(-) rename docs/modules/{globalfee/README.md => globalfee.md} (94%) create mode 100644 docs/modules/icamauth/README.md create mode 100755 docs/modules/icamauth/hermes_setup.sh create mode 100644 docs/modules/icamauth/init_chain_controller.sh create mode 100644 docs/modules/icamauth/init_chain_host.sh create mode 100644 docs/modules/icamauth/rly-config.toml create mode 100644 docs/modules/icamauth/rly0-mnemonic.txt create mode 100644 docs/modules/icamauth/rly1-mnemonic.txt diff --git a/docs/modules/README.md b/docs/modules/README.md index 9dc70916d5f..5f37809980d 100644 --- a/docs/modules/README.md +++ b/docs/modules/README.md @@ -7,5 +7,7 @@ Updated Modules in V8 Rho - [Gov](./gov.md) ## New Modules in Rho V8 +- [Global Fee](./globalfee.md) - [Group](./group.md) +- [ICA-Mauth](./icamauth/) diff --git a/docs/modules/globalfee/README.md b/docs/modules/globalfee.md similarity index 94% rename from docs/modules/globalfee/README.md rename to docs/modules/globalfee.md index 8a3a046093b..8d3580448bd 100644 --- a/docs/modules/globalfee/README.md +++ b/docs/modules/globalfee.md @@ -1,4 +1,4 @@ -# Gaia Fee Ante-handler +# Gaia Fees and Fees Check ## Gaia Fees @@ -12,7 +12,7 @@ Global fees are the fees that each transaction incurs—except [bypass fee messa For [global fees](https://github.com/cosmos/gaia/blob/82c4353ab1b04cf656a8c95d226c30c7845f157b/x/globalfee/types/params.go#L54-L99) to be valid: - fees have to be alphabetically sorted by denomination (denom) -- fees must to have non-negative amount, with a valid and unique denom (i.e no duplicate denoms are allowed). +- fees must have non-negative amount, with a valid and unique denom (i.e. no duplicate denoms are allowed). Global fees allow denoms with zero coins or value. @@ -64,7 +64,7 @@ Global fees, min_gas_prices and the paid fees all allow zero coins setup. After Only global fees might contain zero coins, which is used to define the allowed denoms of paid fees. -The [Fee AnteHandle](../../../x/globalfee/ante/fee.go) will take global fees and min_gas_prices and merge them into one [combined `sdk.Deccoins`](https://github.com/cosmos/gaia/blob/f2be720353a969b6362feff369218eb9056a60b9/ante/fee.go#L79) according to the denoms and amounts of global fees and min_gas_prices. +The [Fee AnteHandle](../../x/globalfee/ante/fee.go) will take global fees and min_gas_prices and merge them into one [combined `sdk.Deccoins`](https://github.com/cosmos/gaia/blob/f2be720353a969b6362feff369218eb9056a60b9/ante/fee.go#L79) according to the denoms and amounts of global fees and min_gas_prices. If the paid fee is a subset of the combined fees set and the paid fee amount is greater than or equal to the required fees amount, the transaction can pass the fee check, otherwise an error will occur. diff --git a/docs/modules/icamauth/README.md b/docs/modules/icamauth/README.md new file mode 100644 index 00000000000..7a0c23ae64f --- /dev/null +++ b/docs/modules/icamauth/README.md @@ -0,0 +1,247 @@ +# icamauth module + +## Introduction to Interchain Accounts +**Interchain Accounts** (ICA) is a standard that allows an account on a *controller* chain to create and securely control an address on a different *host* chain using the Inter Blockchain Protocol (IBC). Transactions native to the host chain are wrapped inside an IBC packet and sent from the Interchain Account Owner on the controller chain to be executed on the host chain. + +The benefit of ICA is that there is no need to create a custom IBC implementation for each unique transaction that a sovereign blockchain might have (trading on a DEX, executing a specific smart contract, etc.). Instead, a **generic** implementation allows blockchains to speak to each other, much like contracts can interact on Ethereum or other smart contract platforms. + +For example, let's say that you have an address on the Cosmos Hub (the controller) with OSMO tokens that you want to stake on Osmosis (the host). With Interchain Accounts, you can create and control a new address on Osmosis without requiring a new private key. After sending your tokens to your Interchain Account using a regular IBC token transfer, you can send a wrapped `delegate` transaction over IBC, which will then be unwrapped and executed natively on Osmosis. + +## The icamauth module +Blockchains implementing Interchain Accounts can decide which messages they allow a controller chain to execute via a whitelist. The **icamuath (interchain account message authentication) module** whitelists most of the message types available to the Cosmos Hub, allowing any account on a controller chain to interact with the Cosmos Hub as if owning a native account on the chain itself. +The following command allows you to query all the allowed message types on a host chain: +```shell +gaiad q interchain-accounts host params +``` + +The following tutorial will demonstrate how to use Interchain Accounts through the [icamauth module](../../../x/icamauth). + +## Setup preparation +We will run two Cosmos-SDK chains (controller chain: `test-0` and host chain: `test-1`) and a relayer to connect these two chains. We will create an account on chain `test-0` and call it `alice`, and register an Interchain Account (that we'll call `alice_ica`) on chain `test-1` for `alice` on chain `test-0`. We will also create a standard account, `bob` on chain `test-1`. + +Through these 3 accounts, we can test if: +- `alice` on chain `test-0` can control its `alice_ica` to transfer tokens to account `bob` on chain `test-1`. +- `alice` can control its `alice_ica` to transfer `alice_ica`'s token back to `alice` using a regular IBC token transfer. + +### Prepare to run two chains +We've simplified the setup process via several shell scripts. If you'd like to learn more about what's happening under the hood we suggest you inspect the files more closely. + +Set up the two chains, create the keys for `alice` and `bob`, and start running both chains in different terminals: +```shell +source ./docs/modules/icamauth/init_chain_controller.sh +``` +and ni another temrinal: +```shell +source ./docs/modules/icamauth/init_chain_host.sh +``` + +### Setting up a Hermes relayer +You can download or build the Hermes binary from the source code. +#### Download the Hermes binary +You can find the hermes download information for different os architectures [here](https://github.com/informalsystems/hermes/releases). +```shell +curl -OL https://github.com/informalsystems/hermes/releases/download/v1.0.0/hermes-v1.0.0-x86_64-apple-darwin.zip +mkdir -p $HOME/.hermes/bin +tar -C $HOME/.hermes/bin/ -vxzf hermes-v1.0.0-x86_64-apple-darwin.zip +export PATH="$HOME/.hermes/bin:$PATH" +``` + +#### Build the Hermes binary +Install Rust: +```shell +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +source $HOME/.cargo/env +``` + +Build the Hermes binary: +```shell +git clone https://github.com/informalsystems/ibc-rs.git +cd ibc-rs +git checkout v1.0.0 +cargo build --release --no-default-features --bin hermes +# binary path: ./target/release/hermes +cp ./target/release/hermes $HOME/.cargo/bin +export PATH="$HOME/.hermes/bin:$PATH" +``` + +#### Create the IBC connection +Run the following command in `gaia/docs/modules/icamauth` directory to create an IBC connection: +```shell +cd ./docs/modules/icamauth +source hermes_setup.sh +``` + +## Testing the Interchain Accounts functionality +First of all, you need to register an Interchain Account on `test-1` for `alice` by sending an `icamauth register` command signed by `alice` on the `test-0` chain: + +Open a new terminal and add the following variables. +```shell +export HOME0=$HOME/test-0 +export HOME1=$HOME/test-1 +``` + +```shell +gaiad tx icamauth register --from alice --connection-id connection-0 --gas-prices 0.4stake --home $HOME0 +``` +query alice's ica: +```shell +gaiad query icamauth interchainaccounts connection-0 $(gaiad keys show alice -a --home $HOME0) --home $HOME0 +``` +To make things easier during the next steps, export the account addresses to environment variables: +```shell +export ALICE_ICA=$(gaiad query icamauth interchainaccounts connection-0 $(gaiad keys show alice -a --home $HOME0) --home $HOME0 -o json | jq -r '.interchain_account_address') +export ALICE=$(gaiad keys show alice -a --home $HOME0) +export BOB=$(gaiad keys show bob -a --home $HOME1) +``` + +Let's make sure `alice_ica` has some `stake`: +```shell +gaiad q bank balances $ALICE_ICA --home $HOME1 +gaiad tx bank send $BOB $ALICE_ICA 1000stake --from bob --gas-prices 0.025stake --home $HOME1 +gaiad q bank balances $ALICE_ICA --home $HOME1 +``` + +### Exercises +We would like to invite you to try to perform the actions below yourself. If you're having issues, you can find the solutions at the bottom of this tutorial. + +> NOTE: +> * `alice` = account on `test-0` +> * `alice_ica` = account on `test-1` owned by `alice` on `test-0` +> * `bob` = account on `test-1` + +Q1: Let `alice` send `stake` to `bob` (hint: using ICA) + +Q2: Let `bob` send `stake` back to `alice_ica` (hint: via the Bank module) + +Q3: Let `alice` send `stake` to `bob` (hint: via a regular IBC token transfer) + +Q4: Let `bob` send `ibc/stake` to `alice_ica` (hint: via the Bank module) + +Q5: Let `alice_ica` send `ibc/stake` to `alice` (hint: via ICA & IBC-Transfer) + +### Solutions +#### Q1: `alice_ica` sends tokens to `bob` +Both `alice_ica` and `bob` are on chain `test-1`, however, we need `alice` from `test-0` to sign the transaction, because `alice` is the only account with access to `alice_ica` over `icamuath`. + +Step 1: generate the transaction json: +```shell +gaiad tx bank send $ALICE_ICA $BOB --from alice 100stake --generate-only --home $HOME1 | jq '.body.messages[0]' > ./send-raw.json + +cat send-raw.json +``` + +This will generate and display a JSON file similar to this following file: +```shell +{ + "@type": "/cosmos.bank.v1beta1.MsgSend", + "from_address": "cosmos1g2c3l9m7zpvwsa2k4yx007zsnx9gme9qyw89uccxf7gkus6ehylsaklv2y", + "to_address": "cosmos1jl3p6e62ey4xad8c5x0vh4p26j5ml8ejxr936t", + "amount": [ + { + "denom": "stake", + "amount": "100" + } + ] +} +``` + +Step 2: Check the balance of Bob's account before the transfer, then send the generated transaction and let `alice` sign it: +```shell +gaiad q bank balances $BOB --home $HOME1 + +gaiad tx icamauth submit ./send-raw.json --connection-id connection-0 --from alice --gas-prices 0.025stake --home $HOME0 +``` + +Step 3: check the balance of Bob's account after the transfer to make sure it went through: +```shell +gaiad q bank balances $BOB --home $HOME1 +``` + +#### Q2: `bob` sends the tokens back to `alice_ica` +Note that this transaction is just a regular coin transfer using the Bank module because both accounts exist on `test-1` and you are interacting directly with that chain via the `--home` flag. + +```shell +gaiad tx bank send $BOB $ALICE_ICA 100stake --gas-prices 0.025stake --home $HOME1 +``` + +#### Q3: `alice` sends tokens to `bob` via IBC +Create a new IBC channel using Hermes: + +```shell + hermes --config ./docs/modules/icamauth/rly-config.toml create channel --a-chain test-0 --a-connection connection-0 --a-port transfer --b-port transfer +``` + +Initiate the IBC token transfer: +```shell +gaiad tx ibc-transfer transfer transfer channel-1 $BOB 200stake --from alice --gas-prices 0.025stake --home $HOME0 +``` + +IBC token transfers can take a while before they're confirmed. You can check the balance of `bob` on `test-1`: +```shell +gaiad q bank balances $BOB --home $HOME1 +balances: +- amount: "200" + denom: ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9 +- amount: "99999999000" + denom: stake +pagination: + next_key: null + total: "0" +``` + +Note how the `200stake` received has changed its denom to `ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9`. Tokens sending over IBC always are encoded with information about its origin in its denom. + +#### Q4: Let `bob` send the `ibc/stake` it just received to `alice_ica` +Notice how this is just a regular token transfer using the Bank module. Also make sure the ibc denom is correct as it will be different for each chain. + +```shell +export IBC_DENOM=ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9 +gaiad tx bank send $BOB $ALICE_ICA 200$IBC_DENOM --from bob --gas-prices 0.025stake --home $HOME1 +``` + +#### Q5: `alice_ica` sends `100ibc/stake` to `alice` + +we have already created the channel in the above [#Q3], we can just use this channel to send the token back from `alice_ica` to `alice`. + +Step 1: prepare the transaction JSON file: + +```shell +gaiad tx ibc-transfer transfer transfer channel-1 $ALICE 100$IBC_DENOM --from $ALICE_ICA --generate-only --home $HOME1 | jq '.body.messages[0]' > send-raw.json + +cat send-raw.json +``` + +This will generate and display the following JSON file: +```shell +{ + "@type": "/ibc.applications.transfer.v1.MsgTransfer", + "source_port": "transfer", + "source_channel": "channel-1", + "token": { + "denom": "ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9", + "amount": "100" + }, + "sender": "cosmos13ys0vw7uhw5c70lrgzz6nw77f95k2pm42rt33areg33k0kltn2zsdjsfvu", + "receiver": "cosmos1sjww7vhxhe5sfye44fex4fv9telmuakuahk9nh", + "timeout_height": { + "revision_number": "1", + "revision_height": "4130" + }, + "timeout_timestamp": "1641572037493534000" +} +``` + +Step 2: use Interchain Accounts to execute the IBC transfer in the JSON file. +Don't forget to confirm Alice's balance before and after the transfer to see the IBC denom disappear (it may take a moment for the entire sequence to complete): + +```shell +gaiad q bank balances $ALICE_ICA --home $HOME1 +gaiad tx icamauth submit send-raw.json --connection-id connection-0 --from alice --home $HOME0 --gas-prices 0.025stake +gaiad q bank balances $ALICE_ICA --home $HOME1 +``` + +The long denom we saw will be changed from `ibc/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9` back to `stake` when the token is back to a on chain `test-0`. + +## References: +- [Hermes installation](https://hermes.informal.systems/quick-start/installation.html) +- [Interchain Accounts tutorial](https://github.com/cosmos/interchain-accounts/blob/master/README.md) diff --git a/docs/modules/icamauth/hermes_setup.sh b/docs/modules/icamauth/hermes_setup.sh new file mode 100755 index 00000000000..5ce68fdaef8 --- /dev/null +++ b/docs/modules/icamauth/hermes_setup.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +HERMES_BINARY=$(which hermes) +CONFIG_DIR=./rly-config.toml + +# Restore Keys +$HERMES_BINARY --config $CONFIG_DIR keys add --key-name hermes-rly0 --chain test-0 --mnemonic-file ./rly0-mnemonic.txt + +echo "sleeping" +sleep 5 + +$HERMES_BINARY --config $CONFIG_DIR keys add --key-name hermes-rly1 --chain test-1 --mnemonic-file ./rly1-mnemonic.txt + +echo "sleeping" +sleep 5 + +# Configure the clients and connection +echo "Initiating connection handshake..." +$HERMES_BINARY --config $CONFIG_DIR create connection --a-chain test-0 --b-chain test-1 + +echo "sleeping" +sleep 5 + +echo "Starting hermes relayer..." +$HERMES_BINARY --config $CONFIG_DIR start diff --git a/docs/modules/icamauth/init_chain_controller.sh b/docs/modules/icamauth/init_chain_controller.sh new file mode 100644 index 00000000000..fb436ed9d1d --- /dev/null +++ b/docs/modules/icamauth/init_chain_controller.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +BINARY=$(which gaiad) +# please do not reveal your mnemonic in production !!! +MNEMONIC_RLY0=`cat docs/modules/icamauth/rly0-mnemonic.txt` +MNEMONIC_ALICE="captain six loyal advice caution cost orient large mimic spare radar excess quote orchard error biology choice shop dish master quantum dumb accident between" +CHAINID_0=test-0 +HOME_0=$HOME/test-0 +P2PPORT_0=16656 +RPCPORT_0=16657 +GRPCPORT_0=9095 +GRPCWEBPORT_0=9081 +RESTPORT_0=1316 +ROSETTA_0=8080 + +# Stop if it is already running +if pgrep -x "$BINARY" >/dev/null; then + echo "Terminating $BINARY..." + killall gaiad +fi + +echo "Removing previous data..." +rm -rf $HOME_0 &> /dev/null + +# Add directories for both chains, exit if an error occurs +if ! mkdir -p $HOME_0 2>/dev/null; then + echo "Failed to create gaiad folder. Aborting..." + exit 1 +fi + +echo "Initializing $CHAINID_0..." +$BINARY init test0 --chain-id=$CHAINID_0 --home $HOME_0 + +$BINARY config chain-id $CHAIN_ID_0 --home $HOME_0 +$BINARY config keyring-backend test --home $HOME_0 +$BINARY config broadcast-mode block --home $HOME_0 +$BINARY config node tcp://localhost:$RPCPORT_0 --home $HOME_0 + + +echo "Adding genesis accounts..." +$BINARY keys add val0 --home=$HOME_0 +echo $MNEMONIC_ALICE | $BINARY keys add alice --recover --home=$HOME_0 +echo $MNEMONIC_RLY0 | $BINARY keys add rly0 --recover --home=$HOME_0 +$BINARY add-genesis-account $($BINARY keys show val0 -a --home=$HOME_0) 100000000000stake --home=$HOME_0 +$BINARY add-genesis-account $($BINARY keys show alice -a --home=$HOME_0) 100000000000stake --home=$HOME_0 +$BINARY add-genesis-account $($BINARY keys show rly0 -a --home=$HOME_0) 100000000000stake --home=$HOME_0 + +echo "Creating and collecting gentx..." +$BINARY gentx val0 7000000000stake --chain-id $CHAINID_0 --home=$HOME_0 +$BINARY collect-gentxs --home=$HOME_0 + +echo "Change setups in app.toml and config.toml files..." +sed -i -e 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2PPORT_0"'"#g' $HOME_0/config/config.toml +sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPCPORT_0"'"#g' $HOME_0/config/config.toml +sed -i -e 's/"0.0.0.0:9090"/"0.0.0.0:'"$GRPCPORT_0"'"/g' $HOME_0/config/app.toml +sed -i -e 's/"0.0.0.0:9091"/"0.0.0.0:'"$GRPCWEBPORT_0"'"/g' $HOME_0/config/app.toml +sed -i -e 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $HOME_0/config/config.toml +sed -i -e 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $HOME_0/config/config.toml +sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $HOME_0/config/config.toml +sed -i -e 's/enable = false/enable = true/g' $HOME_0/config/app.toml +sed -i -e 's/swagger = false/swagger = true/g' $HOME_0/config/app.toml +sed -i -e 's#"tcp://0.0.0.0:1317"#"tcp://0.0.0.0:'"$RESTPORT_0"'"#g' $HOME_0/config/app.toml +sed -i -e 's#":8080"#":'"$ROSETTA_0"'"#g' $HOME_0/config/app.toml + +#set min_gas_prices +sed -i '' 's/minimum-gas-prices = ""/minimum-gas-prices = "0.025stake"/g' $HOME_0/config/app.toml + +# Update host chain genesis to allow all msg types +sed -i '' 's/\"allow_messages\": \[\]/\"allow_messages\": \["*"\]/g' $HOME_0/config/genesis.json + +echo "Starting $CHAINID_0..." +echo "Creating log file at gaia0.log" +$BINARY start --home=$HOME_0 --log_level=trace --log_format=json --pruning=nothing diff --git a/docs/modules/icamauth/init_chain_host.sh b/docs/modules/icamauth/init_chain_host.sh new file mode 100644 index 00000000000..2d718824a86 --- /dev/null +++ b/docs/modules/icamauth/init_chain_host.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +BINARY=$(which gaiad) +# please do not reveal your mnemonic in production !!! +MNEMONIC_RLY1=`cat docs/modules/icamauth/rly1-mnemonic.txt` +MNEMONIC_BOB="uphold train large action document mixed exact cherry input evil sponsor digital used child engine fire attract sing little jeans decrease despair unfair what" +CHAINID_1=test-1 +HOME_1=$HOME/test-1 +P2PPORT_1=26656 +RPCPORT_1=26657 +GRPCPORT_1=9096 +GRPCWEBPORT_1=9082 +RESTPORT_1=1317 +ROSETTA_1=8081 + +# Stop the binary if it is already running +if pgrep -x "$BINARY" >/dev/null; then + echo "Terminating $BINARY..." + killall gaiad +fi + +echo "Removing previous data..." +rm -rf $HOME_1 &> /dev/null + +# Add directories for both chains, exit if an error occurs +if ! mkdir -p $HOME_1 2>/dev/null; then + echo "Failed to create gaiad folder. Aborting..." + exit 1 +fi + +echo "Initializing $CHAINID_1..." +$BINARY init test1 --chain-id=$CHAINID_1 --home $HOME_1 + +$BINARY config chain-id $CHAIN_ID_1 --home $HOME_1 +$BINARY config keyring-backend test --home $HOME_1 +$BINARY config broadcast-mode block --home $HOME_1 +$BINARY config node tcp://localhost:$RPCPORT_1 --home $HOME_1 + +echo "Adding genesis accounts..." +$BINARY keys add val1 --home=$HOME_1 +echo $MNEMONIC_BOB | $BINARY keys add bob --recover --home=$HOME_1 +echo $MNEMONIC_RLY1 | $BINARY keys add rly1 --recover --home=$HOME_1 +$BINARY add-genesis-account $($BINARY keys show val1 -a --home=$HOME_1) 100000000000stake --home=$HOME_1 +$BINARY add-genesis-account $($BINARY keys show bob -a --home=$HOME_1) 100000000000stake --home=$HOME_1 +$BINARY add-genesis-account $($BINARY keys show rly1 -a --home=$HOME_1) 100000000000stake --home=$HOME_1 + +echo "Creating and collecting gentx..." +$BINARY gentx val1 7000000000stake --chain-id $CHAINID_1 --home=$HOME_1 +$BINARY collect-gentxs --home=$HOME_1 + +echo "Change setups in app.toml and config.toml files..." +sed -i -e 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2PPORT_1"'"#g' $HOME_1/config/config.toml +sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPCPORT_1"'"#g' $HOME_1/config/config.toml +sed -i -e 's/"0.0.0.0:9090"/"0.0.0.0:'"$GRPCPORT_1"'"/g' $HOME_1/config/app.toml +sed -i -e 's/"0.0.0.0:9091"/"0.0.0.0:'"$GRPCWEBPORT_1"'"/g' $HOME_1/config/app.toml +sed -i -e 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $HOME_1/config/config.toml +sed -i -e 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $HOME_1/config/config.toml +sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $HOME_1/config/config.toml +sed -i -e 's/enable = false/enable = true/g' $HOME_1/config/app.toml +sed -i -e 's/swagger = false/swagger = true/g' $HOME_1/config/app.toml +sed -i -e 's#"tcp://0.0.0.0:1317"#"tcp://0.0.0.0:'"$RESTPORT_1"'"#g' $HOME_1/config/app.toml +sed -i -e 's#":8080"#":'"$ROSETTA_1"'"#g' $HOME_1/config/app.toml + +# set min_gas_prices +sed -i '' 's/minimum-gas-prices = ""/minimum-gas-prices = "0.025stake"/g' $HOME_1/config/app.toml + +# Update host chain genesis to allow all msg types ("*" represents all msg types) +sed -i '' 's/\"allow_messages\": \[\]/\"allow_messages\": \["*"\]/g' $HOME_1/config/genesis.json + +echo "Starting $CHAINID_1..." +echo "Creating log file at gaia1.log" +$BINARY start --home=$HOME_1 --log_level=trace --log_format=json --pruning=nothing diff --git a/docs/modules/icamauth/rly-config.toml b/docs/modules/icamauth/rly-config.toml new file mode 100644 index 00000000000..e5e45ebe8f5 --- /dev/null +++ b/docs/modules/icamauth/rly-config.toml @@ -0,0 +1,63 @@ +[global] +log_level = 'debug' + +[mode] + +[mode.clients] +enabled = true +refresh = true +misbehaviour = true + +[mode.connections] +enabled = false + +[mode.channels] +enabled = true + +[mode.packets] +enabled = true +clear_interval = 100 +clear_on_start = true +tx_confirmation = true + +[rest] +enabled = true +host = '0.0.0.0' +port = 3031 + +[telemetry] +enabled = true +host = '127.0.0.1' +port = 3001 + +[[chains]] +id = 'test-0' +rpc_addr = 'http://localhost:16657' +grpc_addr = 'http://localhost:9095' +websocket_addr = 'ws://localhost:16657/websocket' +rpc_timeout = '10s' +account_prefix = 'cosmos' +key_name = 'hermes-rly0' +store_prefix = 'ibc' +max_gas = 4000000 +gas_price = { price = 0.025, denom = 'stake' } +gas_multiplier = 1.5 +clock_drift = '1m' # to accomdate docker containers +trusting_period = '14days' +trust_threshold = { numerator = '1', denominator = '3' } + +[[chains]] +id = 'test-1' +rpc_addr = 'http://localhost:26657' +grpc_addr = 'http://localhost:9096' +websocket_addr = 'ws://localhost:26657/websocket' +rpc_timeout = '10s' +account_prefix = 'cosmos' +key_name = 'hermes-rly1' +store_prefix = 'ibc' +max_gas = 4000000 +gas_price = { price = 0.025, denom = 'stake' } +gas_multiplier = 1.5 +clock_drift = '1m' # to accomdate docker containers +trusting_period = '14days' +trust_threshold = { numerator = '1', denominator = '3' } diff --git a/docs/modules/icamauth/rly0-mnemonic.txt b/docs/modules/icamauth/rly0-mnemonic.txt new file mode 100644 index 00000000000..057880b9c57 --- /dev/null +++ b/docs/modules/icamauth/rly0-mnemonic.txt @@ -0,0 +1 @@ +alley afraid soup fall idea toss can goose become valve initial strong forward bright dish figure check leopard decide warfare hub unusual join cart diff --git a/docs/modules/icamauth/rly1-mnemonic.txt b/docs/modules/icamauth/rly1-mnemonic.txt new file mode 100644 index 00000000000..9b4dcd70168 --- /dev/null +++ b/docs/modules/icamauth/rly1-mnemonic.txt @@ -0,0 +1 @@ +record gift you once hip style during joke field prize dust unique length more pencil transfer quit train device arrive energy sort steak upset diff --git a/go.work.sum b/go.work.sum index c44c34ed3c0..4e81a8555ed 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,7 +1,61 @@ - bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= +cloud.google.com/go/firestore v1.8.0/go.mod h1:r3KB8cAdRIe8znzoPWLw8S6gpDVd9treohhn8b09424= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cosmossdk.io/math v1.0.0-beta.2/go.mod h1:u/MXvf8wbUbCsAEyQSSYXXMsczAsFX48e2D6JI86T4o= github.com/Antonboom/errname v0.1.5/go.mod h1:DugbBstvPFQbv/5uLcRRzfrNqKE9tVdVCqWCLp6Cifo= github.com/Antonboom/nilnil v0.1.0/go.mod h1:PhHLvRPSghY5Y7mX4TW+BHZQYo1A8flE5H20D3IPZBo= @@ -82,9 +136,18 @@ github.com/gostaticanalysis/forcetypeassert v0.0.0-20200621232751-01d4955beaa5/g github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.15.3/go.mod h1:/g/qgcoBcEXALCNZgRRisyTW0nY86++L0KbeAMXYCeY= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.11.0/go.mod h1:yPkX5Q6CsxTFMjQQDJwzeNmUUF5NUGGbrDsv9wTb8cw= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.3.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/serf v0.9.8/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/informalsystems/tm-load-test v1.0.0/go.mod h1:WVaSKaQdfZK3v0C74EMzn7//+3aeCZF8wkIKBz2/M74= github.com/jhump/protocompile v0.0.0-20220812162104-d108583e055d/go.mod h1:qr2b5kx4HbFS7/g4uYO5qv9ei8303JMsC7ESbYiqr2Q= github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI= @@ -102,6 +165,7 @@ github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/mgechev/revive v1.1.2/go.mod h1:bnXsMr+ZTH09V5rssEI+jHAZ4z+ZdyhgO/zsy3EhK+0= github.com/mgechev/revive v1.2.3/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/moby/buildkit v0.10.3/go.mod h1:jxeOuly98l9gWHai0Ojrbnczrk/rf+o9/JqNhY+UCSo= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= @@ -136,7 +200,9 @@ github.com/quasilyte/go-ruleguard/dsl v0.3.10/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQ github.com/quasilyte/go-ruleguard/rules v0.0.0-20210428214800-545e0d2e0bf7/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= +github.com/sagikazarmark/crypt v0.8.0/go.mod h1:TmKwZAo97S4Fy4sfMH/HX/cQP5D+ijra2NyLpNNmttY= github.com/sashamelentyev/usestdlibvars v1.8.0/go.mod h1:BFt7b5mSVHaaa26ZupiNRV2ODViQBxZZVhtAxAJRrjs= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= @@ -155,8 +221,7 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= -github.com/strangelove-ventures/packet-forward-middleware/v5 v5.0.0-20221006203904-d5492a6827c1 h1:Ve6PLqMyJYm8iVihbY/HL5oFTcnY08iYGZRcGb6YTUI= -github.com/strangelove-ventures/packet-forward-middleware/v5 v5.0.0-20221006203904-d5492a6827c1/go.mod h1:JFis43ZqAGHmBYKtsbnNmm0Cq95sNuGFrBfXu2Lt5mw= +github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/sylvia7788/contextcheck v1.0.6/go.mod h1:9XDxwvxyuKD+8N+a7Gs7bfWLityh5t70g/GjdEt2N2M= github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= @@ -172,6 +237,10 @@ github.com/ultraware/whitespace v0.0.4/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89 github.com/yeya24/promlinter v0.1.0/go.mod h1:rs5vtZzeBHqqMwXqFScncpCF6u06lezhZepno9AB1Oc= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/etcd/api/v3 v3.5.5/go.mod h1:KFtNaxGDw4Yx/BA4iPPwevUTAuqcsPxzyX8PHydchN8= +go.etcd.io/etcd/client/pkg/v3 v3.5.5/go.mod h1:ggrwbk069qxpKPq8/FKkQ3Xq9y39kbFR4LnKszpRXeQ= +go.etcd.io/etcd/client/v2 v2.305.5/go.mod h1:zQjKllfqfBVyVStbt4FaosoX2iYd8fV/GRy/PbowgP4= +go.etcd.io/etcd/client/v3 v3.5.5/go.mod h1:aApjR4WGlSumpnJ2kloS75h6aHUmAyaPLjHMxpc7E7c= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.33.0/go.mod h1:y/SlJpJQPd2UzfBCj0E9Flk9FDCtTyqUmaCB41qFrWI= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.34.0/go.mod h1:fk1+icoN47ytLSgkoWHLJrtVTSQ+HgmkNgPTKrk/Nsc= go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= @@ -183,7 +252,14 @@ golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d/go.mod h1:AbB0pIl golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20210903162142-ad29c8ab022f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -192,10 +268,12 @@ golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210915083310-ed5796bab164/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211013075003-97ac67df715c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220727055044-e65921a090b8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220818161305-2296e01440c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -205,10 +283,18 @@ golang.org/x/tools v0.0.0-20210104081019-d8d6ddbec6ee/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.6/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= google.golang.org/genproto v0.0.0-20211101144312-62acf1d99145/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220725144611-272f38e5d71b/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=