# Cosmos Hub Hack Challenge This challenge is to demonstrate understanding of and ability to use the new Interchain Accounts IBC module and the Cosmos Hub specific Interchain Account Auth module (`mauth`) as well as a general understanding for running cosmos-sdk validators nodes, relayers and IBC. To begin, we created 3 digital ocean nodes. ## Node 1 - gaia `test-1` (`165.22.23.73`) This is a gaia blockchain using chain id `test-1` with the ica ibc module, as well as our new mauth module which allows arbitrary messages to be executed by a private key controlled account. On this blockchain we pre-populated 3 accounts with `stake` token. * `demowallet` (used as a faucet) * `val` (used as a validator) * `rly` (used by a relayer) The `val` key is used to start the node and run so that all default ports are being used and publicly accessible through the IP address of the node. ## Node 2 - gaia `test-2` (`164.90.226.126`) This is the exact same set up as Node 1, except the chain id is `test-2`. ## Node 3 - relayer (`164.90.211.136`) This node contains an install of the hermes relayer with configuration data for Node 1 (`test-1`) and Node 2 (`test-2`) as well as the mnemonic phrase for the `rly` account created on Node 1 (`test-1`) and Node 2 (`test-2`). On this node we ran a command to create a new connection between `test-1` and `test-1`. This is `connection-0` and `connection-0`. Afterwards we ran `hermes start` so that it would complete any new channel handshakes and relay all packets between chains. # Further Preparation A few actions were taken to prepare the team for their final tasks. These include: * Each team member created an account on `test-1` that was populated with `1000stake` from the `demowallet` account. * Each team member created a `register` transaction on `test-1` that created an interchain account for them on `test-2`. * Each team members's `test-2` interchain account was populated with `1000stake` from the `test-2` `demowallet`. # Final Tasks > NOTE: > * `a` = account on `test-1` > * `a'` = account on `test-2` controlled by `a` on `test-1` > * `A` = account on `test-2` 1) `a'` sends `stake` to `A` (via ICA) 2) `A` sends `stake` back to `a'` (via Bank) 3) `a` sends `stake` to `A` (via IBC-Transfer) 4) `A` sends `ibc/stake` to `a'` (via Bank) 5) `a'` sends `ibc/stake` to `a` (via ICA & IBC-Transfer) # Solution A valid solution will include all CLI commands a team member used to complete the tasks.