Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spike on exercising ICS20 transfers to the Osmosis testnet with Hermes #3043

Merged
merged 21 commits into from
Sep 20, 2023

Conversation

hdevalence
Copy link
Member

@hdevalence hdevalence commented Sep 17, 2023

Includes #3036

The goal of this PR, together with penumbra-zone/hermes#1 , is to successfully exercise an ICS20 transfer between a Penumbra devnet and the Osmosis testnet, making any necessary changes to Penumbra and Hermes as needed along the way.

Current status (update as needed, details in comments below):

@hdevalence
Copy link
Member Author

Issues we discovered so far:

@hdevalence
Copy link
Member Author

hdevalence commented Sep 17, 2023

Current steps to reproduce the (evolving) test setup:

Create a Penumbra devnet off this branch

With this branch checked out, create a new Penumbra devnet:

~/c/p/penumbra2 (hermes-osmo-test-5-spike|✔) [1]$ cargo run --release --bin pd -- testnet unsafe-reset-all
    Finished release [optimized] target(s) in 0.38s
     Running `target/release/pd testnet unsafe-reset-all`
~/c/p/penumbra2 (hermes-osmo-test-5-spike|✔) $ cargo run --release --bin pd -- testnet generate
    Finished release [optimized] target(s) in 0.35s
     Running `target/release/pd testnet generate`
2023-09-17T19:24:29.350882Z  INFO pd: Generating network config chain_id="penumbra-testnet-tethys-8777cb20"
2023-09-17T19:24:29.612580Z  INFO pd: Writing config files for network n_validators=1 chain_id=penumbra-testnet-tethys-8777cb20
2023-09-17T19:24:29.614315Z  INFO pd::testnet::config: Writing validator configs to config_dir=/Users/hdevalence/.penumbra/testnet_data/node0

Make note of the chain ID. It's also helpful to set an appropriate tracing filter (this is using fish syntax, adjust appropriately)

set -x RUST_LOG "info,[CheckTx]=debug"
set -x RUST_LOG "info,[CheckTx]=debug,[Query]=debug" # likely too noisy

The [] syntax filters on spans, so the first does info level filtering for everything, and drops to debug only for events occurring during a CheckTx. This is a generally useful trick for working with Penumbra testnets.

Start pd and tendermint:

~/c/p/penumbra2 (hermes-osmo-test-5-spike|✔) $ cargo run --release --bin pd -- start --home ~/.penumbra/testnet_data/node0/pd
~ $ tendermint --home ~/.penumbra/testnet_data/node0/tendermint/ start

Configure Hermes

First, check out the Hermes branch in the draft PR: penumbra-zone/hermes#1
Then build Hermes:

cargo build --release

The Hermes branch has a working-copy config file, config-devnet-osmosis.toml.

Edit it so that the ID of the Penumbra chain penumbra-testnet-tethys-RANDOMHEX matches the ID of the newly running chain. We'll use this config file in what follows.

Next, add keys for Osmosis. Create a text file with the mnemonic in it (cf informalsystems/hermes#3625). It's probably useful to use the mnemonic for osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488, which is in 1Password. Otherwise, make a new osmosis address and get funds from their testnet faucet.

cat "SEED PHRASE" > ./mnemonic
cargo run --release --bin hermes -- --config config-devnet-osmosis.toml keys add --chain osmo-test-5 --mnemonic-file ./mnemonic

Adding keys for Penumbra is not required, because the Penumbra backend doesn't currently sign transactions.

If Hermes is configured to use that account, all of the transactions will be visible on the Osmosis testnet explorer on its account page: https://testnet.mintscan.io/osmosis-testnet/account/osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488

Create a new transfer channel

Use Hermes to create a new channel between your local devnet and the Osmosis testnet:

cargo run --release --bin hermes -- --config config-devnet-osmosis.toml create channel --a-chain penumbra-testnet-tethys-8777cb20 --b-chain osmo-test-5 --a-port transfer --b-port transfer --new-client-connection

This will prompt for confirmation, then build a channel. This part should only need to be done once per devnet and should work:

Running `target/release/hermes --config config-devnet-osmosis.toml create channel --a-chain penumbra-testnet-tethys-8777cb20 --b-chain osmo-test-5 --a-port transfer --b-port transfer --new-client-connection`
2023-09-17T19:47:24.723191Z  INFO ThreadId(01) running Hermes v1.6.0+6113050e-dirty
WARN: Are you sure you want a new connection & clients to be created? Hermes will use default security parameters.
Hint: Consider using the default invocation

hermes create channel --a-port <PORT-ID> --b-port <PORT-ID> --a-chain <CHAIN-A-ID> --a-connection <CONNECTION-A-ID>

WARN: Are you sure you want a new connection & clients to be created? Hermes will use default security parameters.
Hint: Consider using the default invocation

hermes create channel --a-port <PORT-ID> --b-port <PORT-ID> --a-chain <CHAIN-A-ID> --a-connection <CONNECTION-A-ID>

to re-use a pre-existing connection. yes
2023-09-17T19:47:32.410997Z  INFO ThreadId(01) Creating new clients, new connection, and a new channel with order ORDER_UNORDERED
2023-09-17T19:47:32.412533Z  WARN ThreadId(25) foreign_client.create{client=osmo-test-5->penumbra-testnet-tethys-8777cb20:07-tendermint-0}: global telemetry state not set, will initialize it using default histogram ranges
2023-09-17T19:47:49.294865Z  INFO ThreadId(01) foreign_client.create{client=osmo-test-5->penumbra-testnet-tethys-8777cb20:07-tendermint-0}: 🍭 client was created successfully id=07-tendermint-1
2023-09-17T19:47:50.130564Z  WARN ThreadId(25) foreign_client.create{client=penumbra-testnet-tethys-8777cb20->osmo-test-5:07-tendermint-0}:send_messages_and_wait_commit{chain=osmo-test-5 tracking_id=create client}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=54}:estimate_gas: tx simulation successful but no gas amount used was returned, falling back on default gas: 400000
2023-09-17T19:47:55.695076Z  INFO ThreadId(01) foreign_client.create{client=penumbra-testnet-tethys-8777cb20->osmo-test-5:07-tendermint-0}: 🍭 client was created successfully id=07-tendermint-1029
2023-09-17T19:48:09.765655Z  INFO ThreadId(01) 🥂 penumbra-testnet-tethys-8777cb20 => OpenInitConnection(OpenInit { Attributes { connection_id: connection-0, client_id: 07-tendermint-1, counterparty_connection_id: None, counterparty_client_id: 07-tendermint-1029 } }) at height 0-224
2023-09-17T19:48:31.400128Z  WARN ThreadId(25) send_messages_and_wait_commit{chain=osmo-test-5 tracking_id=ConnectionOpenTry}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=55}:estimate_gas: tx simulation successful but no gas amount used was returned, falling back on default gas: 400000
2023-09-17T19:48:36.419668Z  INFO ThreadId(01) 🥂 osmo-test-5 => OpenTryConnection(OpenTry { Attributes { connection_id: connection-939, client_id: 07-tendermint-1029, counterparty_connection_id: connection-0, counterparty_client_id: 07-tendermint-1 } }) at height 5-2720518
2023-09-17T19:48:41.777273Z  WARN ThreadId(25) send_messages_and_wait_commit{chain=osmo-test-5 tracking_id=update client on source for ConnectionOpenAck}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=56}:estimate_gas: tx simulation successful but no gas amount used was returned, falling back on default gas: 400000
2023-09-17T19:49:05.955246Z  INFO ThreadId(01) 🥂 penumbra-testnet-tethys-8777cb20 => OpenAckConnection(OpenAck { Attributes { connection_id: connection-0, client_id: 07-tendermint-1, counterparty_connection_id: connection-939, counterparty_client_id: 07-tendermint-1029 } }) at height 0-235
2023-09-17T19:49:11.884281Z  WARN ThreadId(25) send_messages_and_wait_commit{chain=osmo-test-5 tracking_id=ConnectionOpenConfirm}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=57}:estimate_gas: tx simulation successful but no gas amount used was returned, falling back on default gas: 400000
2023-09-17T19:49:13.993327Z  INFO ThreadId(01) 🥂 osmo-test-5 => OpenConfirmConnection(OpenConfirm { Attributes { connection_id: connection-939, client_id: 07-tendermint-1029, counterparty_connection_id: connection-0, counterparty_client_id: 07-tendermint-1 } }) at height 5-2720525
2023-09-17T19:49:17.806922Z  INFO ThreadId(01) connection handshake already finished for Connection { delay_period: 0ns, a_side: ConnectionSide { chain: BaseChainHandle { chain_id: penumbra-testnet-tethys-8777cb20 }, client_id: 07-tendermint-1, connection_id: connection-0 }, b_side: ConnectionSide { chain: BaseChainHandle { chain_id: osmo-test-5 }, client_id: 07-tendermint-1029, connection_id: connection-939 } }
2023-09-17T19:49:31.493034Z  INFO ThreadId(01) 🎊  penumbra-testnet-tethys-8777cb20 => OpenInitChannel(OpenInit { port_id: transfer, channel_id: channel-0, connection_id: None, counterparty_port_id: transfer, counterparty_channel_id: None }) at height 0-240
2023-09-17T19:49:37.511024Z  WARN ThreadId(25) send_messages_and_wait_commit{chain=osmo-test-5 tracking_id=ChannelOpenTry}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=58}:estimate_gas: tx simulation successful but no gas amount used was returned, falling back on default gas: 400000
2023-09-17T19:49:40.152439Z  INFO ThreadId(01) 🎊  osmo-test-5 => OpenTryChannel(OpenTry { port_id: transfer, channel_id: channel-1675, connection_id: connection-939, counterparty_port_id: transfer, counterparty_channel_id: channel-0 }) at height 5-2720530
2023-09-17T19:50:02.174903Z  INFO ThreadId(01) 🎊  penumbra-testnet-tethys-8777cb20 => OpenAckChannel(OpenAck { port_id: transfer, channel_id: channel-0, connection_id: connection-0, counterparty_port_id: transfer, counterparty_channel_id: channel-1675 }) at height 0-246
2023-09-17T19:50:08.717664Z  WARN ThreadId(25) send_messages_and_wait_commit{chain=osmo-test-5 tracking_id=ChannelOpenConfirm}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=59}:estimate_gas: tx simulation successful but no gas amount used was returned, falling back on default gas: 400000
2023-09-17T19:50:13.730280Z  INFO ThreadId(01) 🎊  osmo-test-5 => OpenConfirmChannel(OpenConfirm { port_id: transfer, channel_id: channel-1675, connection_id: connection-939, counterparty_port_id: transfer, counterparty_channel_id: channel-0 }) at height 5-2720536
2023-09-17T19:50:17.445328Z  INFO ThreadId(01) channel handshake already finished for Channel { ordering: ORDER_UNORDERED, a_side: ChannelSide { chain: BaseChainHandle { chain_id: penumbra-testnet-tethys-8777cb20 }, client_id: 07-tendermint-1, connection_id: connection-0, port_id: transfer, channel_id: channel-0, version: None }, b_side: ChannelSide { chain: BaseChainHandle { chain_id: osmo-test-5 }, client_id: 07-tendermint-1029, connection_id: connection-939, port_id: transfer, channel_id: channel-1675, version: None }, connection_delay: 0ns }
SUCCESS Channel {
    ordering: Unordered,
    a_side: ChannelSide {
        chain: BaseChainHandle {
            chain_id: ChainId {
                id: "penumbra-testnet-tethys-8777cb20",
                version: 0,
            },
            runtime_sender: Sender { .. },
        },
        client_id: ClientId(
            "07-tendermint-1",
        ),
        connection_id: ConnectionId(
            "connection-0",
        ),
        port_id: PortId(
            "transfer",
        ),
        channel_id: Some(
            ChannelId(
                "channel-0",
            ),
        ),
        version: None,
    },
    b_side: ChannelSide {
        chain: BaseChainHandle {
            chain_id: ChainId {
                id: "osmo-test-5",
                version: 5,
            },
            runtime_sender: Sender { .. },
        },
        client_id: ClientId(
            "07-tendermint-1029",
        ),
        connection_id: ConnectionId(
            "connection-939",
        ),
        port_id: PortId(
            "transfer",
        ),
        channel_id: Some(
            ChannelId(
                "channel-1675",
            ),
        ),
        version: None,
    },
    connection_delay: 0ns,
}

Hermes will then exit.

Running Hermes

To run Hermes and relay packets between chains, use

cargo run --release --bin hermes -- --config config-devnet-osmosis.toml start

Hermes may print a supposedly fatal error, like

2023-09-17T19:54:33.557878Z ERROR ThreadId(27) spawn:chain{chain=penumbra-testnet-tethys-8777cb20}:wallet{chain=penumbra-testnet-tethys-8777cb20}: task aborting after encountering fatal error: failed to get key in use by the relayer: signature key not found: penumbra-wallet: cannot find key file at '/Users/hdevalence/.hermes/keys/penumbra-testnet-tethys-8777cb20/keyring-test/penumbra-wallet.json'

This error is not in fact fatal, because the Penumbra backend doesn't currently need to sign transactions (it doesn't pay fees).

NOTE: Because our trusting period is currently set very low (2h), if you stop running Hermes for longer than 2h, the clients will expire and you'll need to start over. We should probably adjust this parameter.

Hermes is unfortunately only really usable with info-level tracing, and the tracing output can be very confusing. This is because Hermes doesn't use async. Instead, it has a bespoke implementation of passing messages around between threads, and then sometimes jumping into an async runtime internally. This system doesn't propagate span information properly, like it would if the futures were just composed together. Be cautious interpreting tracing output.

At some point in the tracing output, Hermes will print something like

# Chain: penumbra-testnet-tethys-8777cb20
  - Client: 07-tendermint-0
  - Client: 07-tendermint-1
    * Connection: connection-0
      | State: OPEN
      | Counterparty state: OPEN
      + Channel: channel-0
        | Port: transfer
        | State: OPEN
        | Counterparty: channel-1675
# Chain: osmo-test-5
  - Client: 07-tendermint-1029
    * Connection: connection-939
      | State: OPEN
      | Counterparty state: OPEN
      + Channel: channel-1675
        | Port: transfer
        | State: OPEN
        | Counterparty: channel-0

This information is useful for making transfers.

Transferring from Penumbra to Osmosis

To make an ICS20 transfer from Penumbra to Osmosis, run

cargo run --release --bin pcli -- -n http://localhost:8080 view reset
cargo run --release --bin pcli -- -n http://localhost:8080 view balance # check what funds are available

and then a transfer command like

cargo run --release --bin pcli -- -n http://localhost:8080 tx withdraw --to osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488 --channel 0 --timeout-height 5-2900000 100penumbra

The --channel argument should be set to the channel ID on the Penumbra devnet. The --timeout-height is a height on the Osmosis chain. We can't make that automatically in pcli, I'm not sure what happens if it's omitted. We should also watch to make sure that pcli including a timeout timestamp in the transfer request doesn't leak a user's clock skew and deanonymize them.

After this transfer is accepted by Penumbra, Hermes will report an error while submitting to Osmosis:

2023-09-17T20:03:57.122888Z ERROR ThreadId(25) worker.batch{chain=penumbra-testnet-tethys-8777cb20}:supervisor.handle_batch{chain=penumbra-testnet-tethys-8777cb20}:supervisor.process_batch{chain=penumbra-testnet-tethys-8777cb20}:worker.packet.cmd{src_chain=penumbra-testnet-tethys-8777cb20 src_port=transfer src_channel=channel-0 dst_chain=osmo-test-5}:relay{odata=81b77a08 ->Destination @0-409; len=1}:send_messages_and_wait_check_tx{chain=osmo-test-5 tracking_id=81b77a08}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=60}: failed to broadcast tx with unrecoverable error response=Response { code: Err(2), data: b"", log: "receive packet verification failed: couldn't verify counterparty packet commitment: failed packet commitment verification for client (07-tendermint-1029): chained membership proof failed to verify membership of value: 67F7B6E389351EF9B679EC80C6BA2120F7378B96EC590781CE5986B3198CADD4 in subroot 2E2D6715F40BE6034E4C7A96812F37B6861FCC35E58A9409A0EB3B2FB0E8C8FA at index 0. Please ensure the path and value are both correct.: invalid proof", hash: Hash::Sha256(E71568B970750E6E4833040B1A459BF6A83A3646A456373C826E3D0FF4A96C82) } diagnostic=unknown TX sync response error: 2

Next Steps

It's hard to get more information about why the proof failed to verify without a running Osmosis node. Two possible directions:

  1. (Easier) Try debugging in the opposite direction (next section), to see if there's a trivial mismatch that we can detect by looking at the data Osmosis sends back.
  2. (Harder) Attempt to run a local Osmosis devnet and repeat this whole process, but with lots of extra manual setup work, no observability, and worse tooling (see next section).

Transferring from Osmosis to Penumbra

Transferring from Osmosis to Penumbra requires making an Osmosis transaction. Unfortunately, the Osmosis command line tooling is not very good. The command line tool is bundled together with the node implementation, there is not any specific documentation about making IBC transfers, and the tool reports confusing errors with no context (xref #2284 (comment)).

Instead, @jackzampolin pointed out that the Go relayer can do basic cross-chain transactions. To use it, we now need to configure the Go relayer, using the configs in the Penumbra repo:

cd deployments/relayer
./generate-configs local # refreshes definition of local devnet
rly config init --memo "PenumbraIBC"
rly chains add -f configs/penumbra-local.json
rly chains add -f configs/osmosis-testnet.json
rly keys restore osmosis-testnet default "SEED PHRASE" # use the seed phrase for the account to do transfer
rly keys add penumbra-local default

Note that osmosis-testnet and penumbra-local are locally defined config aliases, not chain IDs. Now add a path, manually filling in the required details:

~/c/p/p/d/relayer (hermes-osmo-test-5-spike|✔)$ rly paths add penumbra-testnet-tethys-8777cb20 osmo-test-5 spike_path
enter src(penumbra-testnet-tethys-8777cb20) client-id...
07-tendermint-1
enter src(penumbra-testnet-tethys-8777cb20) connection-id...
connection-0
enter dst(osmo-test-5) client-id...
07-tendermint-1029
enter dst(osmo-test-5) connection-id...
connection-939

Finally, use rly transact transfer to submit the transfer transaction on Osmosis:

~/c/p/p/d/relayer (hermes-osmo-test-5-spike|✔) $ rly transact transfer osmosis-testnet penumbra-local 100uosmo penumbrav2t1jp4pryqqmh65pq8e7zwk6k2674vwhn4qqphxjk0vukxln0crmp2tdld0mhavuyrspwuajnsk5t5t33u2auxvheunr7qde4l068ez0euvtu08z7rwj6shlh64ndz0wvz7mfqdcd channel-1675 -y 10000 -c 2h
2023-09-17T20:19:47.510916Z	info	Successfully sent a transfer	{"src_chain_id": "osmo-test-5", "dst_chain_id": "penumbra-testnet-tethys-8777cb20", "send_result": {"successful_src_batches": 1, "successful_dst_batches": 0, "src_send_errors": "<nil>", "dst_send_errors": "<nil>"}}
2023-09-17T20:19:47.510938Z	info	Successful transaction	{"provider_type": "cosmos", "chain_id": "osmo-test-5", "packet_src_channel": "channel-1675", "packet_dst_channel": "channel-0", "gas_used": 117670, "fees": "3717uosmo", "fee_payer": "osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488", "height": 2720869, "msg_types": ["/ibc.applications.transfer.v1.MsgTransfer"], "tx_hash": "67C55AD4FC6855579C2B4B421F8F02B2B2BFE6BA0D5C1553C13BBB7DFFAD781D"}

The resulting tx hash can be used in the explorer: https://testnet.mintscan.io/osmosis-testnet/txs/67C55AD4FC6855579C2B4B421F8F02B2B2BFE6BA0D5C1553C13BBB7DFFAD781D?height=2720869

NOTE: The -y and -c parameters seem to be required. Otherwise the transfer will not have any timeout offsets, and will immediately time out. See below.

Hermes will attempt to relay this packet, which will be rejected by pd:

2023-09-17T20:25:48.852764Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:check_stateful: jmt: key=b"sct/valid_anchors/3249ec70c3199f19d1e179da642538fbd1d00f5a5088b304c0783e69d7b15003" key_hash=KeyHash("a14bf139fb5f4691055f227c44a07ea488222ca002e5ab127f52ea5e7fc93d75")
2023-09-17T20:25:48.853100Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:check_stateful: penumbra_sct::component::view: anchor is valid anchor=Root(3249ec70c3199f19d1e179da642538fbd1d00f5a5088b304c0783e69d7b15003) anchor_height=0
2023-09-17T20:25:48.853122Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:check_stateful: jmt: key=b"fmd_parameters/previous" key_hash=KeyHash("e6f6c68e4d4435835f1a61aee15200b2833f7688ff36de0cdeb88d5efdb881b5")
2023-09-17T20:25:48.853168Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:check_stateful: jmt: key=b"fmd_parameters/current" key_hash=KeyHash("3a526e6eef60922309324f4621abf9d874aaf003981f8c7e6f7a27a367667379")
2023-09-17T20:25:48.853242Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:check_stateful: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-17T20:25:48.853919Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:check_stateless:valid_binding_signature: penumbra_app::action_handler::transaction::stateless: bvk=VerificationKey<Binding>("0000000000000000000000000000000000000000000000000000000000000000") auth_hash=AuthHash("0b39d036bcff90899dc5c74607c290cff38544250d37be0f8b7c2af01542d653")
2023-09-17T20:25:48.854949Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"clients/07-tendermint-1/consensusStates/5-2720934" key_hash=KeyHash("194542ff6a43616ac4ee39d5a8ae535af967a64a67ebbac6dd1c5bb4336c88cd")
2023-09-17T20:25:48.855257Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: penumbra_ibc::component::msg_handler::update_client: msg=MsgUpdateClient { client_id: ClientId("07-tendermint-1"), header: Any { type_url: "/ibc.lightclients.tendermint.v1.Header", value: [10, 249, 7, 10, 149, 3, 10, 4, 8, 11, 16, 5, 18, 11, 111, 115, 109, 111, 45, 116, 101, 115, 116, 45, 53, 24, 166, 137, 166, 1, 34, 11, 8, 185, 193, 157, 168, 6, 16, 199, 225, 222, 105, 42, 72, 10, 32, 85, 159, 150, 90, 71, 16, 37, 111, 216, 213, 59, 166, 157, 22, 161, 46, 4, 52, 254, 215, 247, 98, 195, 147, 82, 169, 244, 239, 4, 76, 232, 125, 18, 36, 8, 1, 18, 32, 62, 198, 91, 118, 164, 59, 6, 179, 123, 211, 176, 4, 79, 1, 164, 238, 39, 93, 169, 69, 244, 36, 52, 80, 135, 123, 211, 8, 172, 39, 41, 10, 50, 32, 19, 168, 223, 216, 16, 217, 60, 102, 39, 0, 248, 150, 233, 20, 184, 182, 200, 236, 173, 64, 149, 124, 132, 220, 250, 127, 197, 15, 116, 163, 206, 139, 58, 32, 50, 213, 84, 255, 114, 117, 229, 112, 195, 58, 25, 184, 34, 183, 253, 171, 124, 223, 76, 170, 161, 157, 144, 197, 192, 85, 214, 149, 141, 61, 40, 221, 66, 32, 176, 167, 65, 162, 121, 118, 91, 134, 75, 191, 3, 199, 150, 216, 238, 38, 210, 183, 100, 154, 21, 189, 111, 136, 14, 124, 52, 141, 105, 121, 151, 142, 74, 32, 176, 167, 65, 162, 121, 118, 91, 134, 75, 191, 3, 199, 150, 216, 238, 38, 210, 183, 100, 154, 21, 189, 111, 136, 14, 124, 52, 141, 105, 121, 151, 142, 82, 32, 4, 128, 145, 188, 125, 220, 40, 63, 119, 191, 191, 145, 215, 60, 68, 218, 88, 195, 223, 138, 156, 188, 134, 116, 5, 216, 183, 243, 218, 173, 162, 47, 90, 32, 222, 90, 93, 26, 102, 30, 81, 122, 212, 183, 146, 64, 26, 97, 27, 239, 213, 83, 88, 12, 84, 34, 175, 62, 178, 150, 154, 113, 100, 134, 62, 198, 98, 32, 36, 37, 67, 166, 122, 74, 136, 198, 146, 97, 59, 14, 55, 178, 6, 74, 34, 126, 29, 189, 131, 138, 211, 65, 132, 180, 87, 10, 62, 33, 219, 254, 106, 32, 227, 176, 196, 66, 152, 252, 28, 20, 154, 251, 244, 200, 153, 111, 185, 36, 39, 174, 65, 228, 100, 155, 147, 76, 164, 149, 153, 27, 120, 82, 184, 85, 114, 20, 37, 116, 174, 55, 191, 240, 124, 71, 61, 205, 54, 244, 111, 243, 52, 245, 78, 85, 217, 124, 18, 222, 4, 8, 166, 137, 166, 1, 26, 72, 10, 32, 21, 103, 239, 20, 137, 101, 155, 25, 58, 0, 133, 165, 201, 251, 188, 8, 0, 92, 85, 77, 253, 141, 167, 226, 64, 103, 14, 199, 209, 251, 220, 47, 18, 36, 8, 1, 18, 32, 169, 18, 100, 93, 229, 91, 254, 85, 1, 149, 65, 170, 55, 249, 17, 183, 18, 195, 124, 238, 14, 113, 238, 3, 163, 247, 52, 173, 244, 196, 179, 138, 34, 104, 8, 2, 18, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 26, 12, 8, 190, 193, 157, 168, 6, 16, 142, 176, 196, 168, 3, 34, 64, 134, 48, 227, 55, 79, 73, 168, 14, 20, 71, 155, 156, 174, 138, 151, 46, 212, 104, 80, 141, 52, 26, 132, 240, 9, 1, 13, 159, 217, 213, 76, 147, 85, 231, 245, 133, 30, 153, 3, 66, 83, 234, 201, 173, 25, 167, 122, 98, 220, 59, 92, 13, 119, 227, 218, 169, 103, 182, 234, 189, 90, 124, 236, 3, 34, 103, 8, 2, 18, 20, 37, 116, 174, 55, 191, 240, 124, 71, 61, 205, 54, 244, 111, 243, 52, 245, 78, 85, 217, 124, 26, 11, 8, 191, 193, 157, 168, 6, 16, 223, 218, 167, 53, 34, 64, 30, 204, 143, 113, 235, 229, 22, 165, 24, 7, 11, 202, 166, 134, 132, 5, 8, 235, 1, 49, 13, 65, 35, 95, 123, 183, 113, 110, 31, 84, 157, 21, 251, 205, 172, 167, 164, 98, 24, 81, 1, 23, 25, 187, 111, 159, 208, 76, 215, 97, 85, 232, 166, 131, 88, 152, 35, 56, 80, 222, 231, 191, 228, 12, 34, 104, 8, 2, 18, 20, 44, 189, 251, 123, 228, 254, 115, 33, 159, 176, 98, 155, 221, 10, 209, 93, 81, 107, 108, 145, 26, 12, 8, 191, 193, 157, 168, 6, 16, 227, 158, 163, 138, 1, 34, 64, 165, 52, 126, 7, 15, 117, 149, 30, 104, 28, 161, 71, 186, 227, 176, 125, 52, 177, 198, 148, 85, 44, 134, 87, 244, 20, 246, 244, 233, 221, 33, 175, 18, 49, 113, 50, 181, 182, 149, 40, 203, 221, 237, 78, 113, 222, 193, 41, 16, 94, 24, 159, 168, 225, 65, 127, 46, 10, 232, 0, 64, 89, 42, 11, 34, 103, 8, 2, 18, 20, 81, 253, 51, 248, 90, 49, 31, 210, 123, 54, 166, 32, 167, 185, 164, 11, 244, 131, 149, 51, 26, 11, 8, 191, 193, 157, 168, 6, 16, 176, 156, 176, 58, 34, 64, 106, 74, 236, 99, 85, 29, 195, 58, 44, 187, 98, 5, 111, 70, 165, 4, 187, 176, 86, 238, 154, 194, 201, 255, 35, 138, 208, 199, 73, 200, 35, 35, 138, 236, 19, 52, 30, 42, 27, 237, 106, 151, 75, 217, 78, 94, 246, 179, 114, 112, 200, 54, 252, 37, 70, 84, 153, 145, 228, 58, 38, 167, 238, 2, 34, 103, 8, 2, 18, 20, 206, 204, 128, 217, 85, 115, 20, 210, 241, 149, 203, 65, 186, 56, 194, 86, 163, 102, 179, 4, 26, 11, 8, 191, 193, 157, 168, 6, 16, 161, 202, 141, 24, 34, 64, 51, 115, 249, 216, 174, 199, 78, 130, 102, 4, 18, 90, 220, 213, 105, 61, 56, 68, 254, 9, 242, 62, 236, 169, 130, 205, 13, 206, 20, 22, 155, 111, 6, 41, 111, 9, 25, 159, 67, 149, 61, 48, 215, 25, 214, 87, 125, 7, 15, 83, 45, 108, 121, 141, 247, 121, 214, 66, 214, 189, 142, 144, 236, 5, 18, 135, 3, 10, 63, 10, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 18, 34, 10, 32, 68, 102, 204, 1, 113, 100, 219, 22, 80, 168, 121, 228, 164, 180, 24, 173, 157, 123, 124, 50, 167, 66, 104, 192, 111, 254, 209, 80, 35, 116, 194, 90, 24, 168, 210, 220, 30, 10, 63, 10, 20, 37, 116, 174, 55, 191, 240, 124, 71, 61, 205, 54, 244, 111, 243, 52, 245, 78, 85, 217, 124, 18, 34, 10, 32, 105, 81, 161, 171, 148, 178, 94, 171, 15, 216, 9, 248, 93, 115, 208, 72, 251, 61, 58, 77, 213, 232, 229, 98, 101, 219, 145, 74, 129, 57, 88, 15, 24, 219, 146, 133, 6, 10, 63, 10, 20, 44, 189, 251, 123, 228, 254, 115, 33, 159, 176, 98, 155, 221, 10, 209, 93, 81, 107, 108, 145, 18, 34, 10, 32, 125, 167, 197, 154, 226, 9, 231, 84, 166, 246, 38, 209, 109, 170, 122, 152, 208, 40, 29, 175, 77, 120, 249, 229, 29, 24, 31, 146, 59, 231, 101, 31, 24, 147, 184, 248, 2, 10, 62, 10, 20, 81, 253, 51, 248, 90, 49, 31, 210, 123, 54, 166, 32, 167, 185, 164, 11, 244, 131, 149, 51, 18, 34, 10, 32, 189, 18, 163, 254, 101, 83, 71, 102, 55, 134, 97, 76, 54, 28, 88, 36, 32, 66, 84, 101, 250, 140, 225, 162, 150, 159, 101, 114, 74, 214, 122, 120, 24, 249, 225, 1, 10, 60, 10, 20, 206, 204, 128, 217, 85, 115, 20, 210, 241, 149, 203, 65, 186, 56, 194, 86, 163, 102, 179, 4, 18, 34, 10, 32, 184, 56, 186, 165, 44, 0, 207, 34, 115, 24, 142, 226, 181, 93, 143, 30, 107, 214, 227, 167, 192, 193, 181, 44, 44, 58, 110, 177, 134, 151, 54, 128, 24, 6, 18, 63, 10, 20, 37, 116, 174, 55, 191, 240, 124, 71, 61, 205, 54, 244, 111, 243, 52, 245, 78, 85, 217, 124, 18, 34, 10, 32, 105, 81, 161, 171, 148, 178, 94, 171, 15, 216, 9, 248, 93, 115, 208, 72, 251, 61, 58, 77, 213, 232, 229, 98, 101, 219, 145, 74, 129, 57, 88, 15, 24, 219, 146, 133, 6, 24, 149, 255, 219, 39, 26, 7, 8, 5, 16, 147, 134, 166, 1, 34, 135, 3, 10, 63, 10, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 18, 34, 10, 32, 68, 102, 204, 1, 113, 100, 219, 22, 80, 168, 121, 228, 164, 180, 24, 173, 157, 123, 124, 50, 167, 66, 104, 192, 111, 254, 209, 80, 35, 116, 194, 90, 24, 168, 210, 220, 30, 10, 63, 10, 20, 37, 116, 174, 55, 191, 240, 124, 71, 61, 205, 54, 244, 111, 243, 52, 245, 78, 85, 217, 124, 18, 34, 10, 32, 105, 81, 161, 171, 148, 178, 94, 171, 15, 216, 9, 248, 93, 115, 208, 72, 251, 61, 58, 77, 213, 232, 229, 98, 101, 219, 145, 74, 129, 57, 88, 15, 24, 219, 146, 133, 6, 10, 63, 10, 20, 44, 189, 251, 123, 228, 254, 115, 33, 159, 176, 98, 155, 221, 10, 209, 93, 81, 107, 108, 145, 18, 34, 10, 32, 125, 167, 197, 154, 226, 9, 231, 84, 166, 246, 38, 209, 109, 170, 122, 152, 208, 40, 29, 175, 77, 120, 249, 229, 29, 24, 31, 146, 59, 231, 101, 31, 24, 147, 184, 248, 2, 10, 62, 10, 20, 81, 253, 51, 248, 90, 49, 31, 210, 123, 54, 166, 32, 167, 185, 164, 11, 244, 131, 149, 51, 18, 34, 10, 32, 189, 18, 163, 254, 101, 83, 71, 102, 55, 134, 97, 76, 54, 28, 88, 36, 32, 66, 84, 101, 250, 140, 225, 162, 150, 159, 101, 114, 74, 214, 122, 120, 24, 249, 225, 1, 10, 60, 10, 20, 206, 204, 128, 217, 85, 115, 20, 210, 241, 149, 203, 65, 186, 56, 194, 86, 163, 102, 179, 4, 18, 34, 10, 32, 184, 56, 186, 165, 44, 0, 207, 34, 115, 24, 142, 226, 181, 93, 143, 30, 107, 214, 227, 167, 192, 193, 181, 44, 44, 58, 110, 177, 134, 151, 54, 128, 24, 6, 18, 63, 10, 20, 44, 189, 251, 123, 228, 254, 115, 33, 159, 176, 98, 155, 221, 10, 209, 93, 81, 107, 108, 145, 18, 34, 10, 32, 125, 167, 197, 154, 226, 9, 231, 84, 166, 246, 38, 209, 109, 170, 122, 152, 208, 40, 29, 175, 77, 120, 249, 229, 29, 24, 31, 146, 59, 231, 101, 31, 24, 147, 184, 248, 2, 24, 149, 255, 219, 39] }, signer: "cosmos000000000000000000000000000000000000000" }
2023-09-17T20:25:48.855489Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"clients/07-tendermint-1/clientType" key_hash=KeyHash("50bd83110077195f5205c183fa2a2e307fda1dfc750823fb4da7b83c8233c351")
2023-09-17T20:25:48.855546Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"clients/07-tendermint-1/clientState" key_hash=KeyHash("b6ec07936f3f3d401065bbd7be3fd6fcd8d15fc30615e59f14b233c3d412a0bc")
2023-09-17T20:25:48.855612Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"clients/07-tendermint-1/consensusStates/5-2720531" key_hash=KeyHash("45adfcb95478f67152b23692d42bd447458b258b7e80d0b3b15a812d2ecc09ca")
2023-09-17T20:25:48.855679Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-17T20:25:48.855752Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"clients/07-tendermint-1/consensusStates/5-2720531" key_hash=KeyHash("45adfcb95478f67152b23692d42bd447458b258b7e80d0b3b15a812d2ecc09ca")
2023-09-17T20:25:48.855804Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-17T20:25:48.856295Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"clients/07-tendermint-1/clientState" key_hash=KeyHash("b6ec07936f3f3d401065bbd7be3fd6fcd8d15fc30615e59f14b233c3d412a0bc")
2023-09-17T20:25:48.856340Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"clients/07-tendermint-1/consensusStates/5-2720934" key_hash=KeyHash("194542ff6a43616ac4ee39d5a8ae535af967a64a67ebbac6dd1c5bb4336c88cd")
2023-09-17T20:25:48.856382Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"penumbra_verified_heights/07-tendermint-1/verified_heights" key_hash=KeyHash("e61270196a89fc5ada5a796f5943f8b99580e90f3603ddd0eb96f8593c884401")
2023-09-17T20:25:48.856435Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"penumbra_verified_heights/07-tendermint-1/verified_heights" key_hash=KeyHash("e61270196a89fc5ada5a796f5943f8b99580e90f3603ddd0eb96f8593c884401")
2023-09-17T20:25:48.856483Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"clients/07-tendermint-1/consensusStates/5-2720505" key_hash=KeyHash("1c218a99feaeeb782cd783578cf66936cb247f04baf8a09b5edbf7d05e28fef8")
2023-09-17T20:25:48.856539Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-17T20:25:48.856571Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-17T20:25:48.856619Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: jmt: key=b"penumbra_verified_heights/07-tendermint-1/verified_heights" key_hash=KeyHash("e61270196a89fc5ada5a796f5943f8b99580e90f3603ddd0eb96f8593c884401")
2023-09-17T20:25:48.856677Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: penumbra_ibc::component::msg_handler::recv_packet: msg=MsgRecvPacket { packet: Packet { sequence: Sequence(1), source_port: PortId("transfer"), source_channel: ChannelId("channel-1675"), destination_port: PortId("transfer"), destination_channel: ChannelId("channel-0"), data: [123, 34, 97, 109, 111, 117, 110, 116, 34, 58, 34, 49, 48, 48, 34, 44, 34, 100, 101, 110, 111, 109, 34, 58, 34, 117, 111, 115, 109, 111, 34, 44, 34, 114, 101, 99, 101, 105, 118, 101, 114, 34, 58, 34, 112, 101, 110, 117, 109, 98, 114, 97, 118, 50, 116, 49, 106, 112, 52, 112, 114, 121, 113, 113, 109, 104, 54, 53, 112, 113, 56, 101, 55, 122, 119, 107, 54, 107, 50, 54, 55, 52, 118, 119, 104, 110, 52, 113, 113, 112, 104, 120, 106, 107, 48, 118, 117, 107, 120, 108, 110, 48, 99, 114, 109, 112, 50, 116, 100, 108, 100, 48, 109, 104, 97, 118, 117, 121, 114, 115, 112, 119, 117, 97, 106, 110, 115, 107, 53, 116, 53, 116, 51, 51, 117, 50, 97, 117, 120, 118, 104, 101, 117, 110, 114, 55, 113, 100, 101, 52, 108, 48, 54, 56, 101, 122, 48, 101, 117, 118, 116, 117, 48, 56, 122, 55, 114, 119, 106, 54, 115, 104, 108, 104, 54, 52, 110, 100, 122, 48, 119, 118, 122, 55, 109, 102, 113, 100, 99, 100, 34, 44, 34, 115, 101, 110, 100, 101, 114, 34, 58, 34, 111, 115, 109, 111, 49, 107, 104, 48, 102, 119, 107, 100, 121, 48, 53, 121, 112, 53, 55, 57, 100, 56, 118, 99, 122, 103, 104, 97, 114, 107, 99, 101, 120, 102, 119, 53, 56, 50, 122, 106, 52, 56, 56, 34, 125], timeout_height: At(Height { revision: 0, height: 10249 }), timeout_timestamp: Timestamp { time: Some(Time(2023-09-17 22:19:41.538636)) } }, proof_commitment_on_a: MerkleProof { proofs: [CommitmentProof { proof: Some(Exist(ExistenceProof { key: [99, 111, 109, 109, 105, 116, 109, 101, 110, 116, 115, 47, 112, 111, 114, 116, 115, 47, 116, 114, 97, 110, 115, 102, 101, 114, 47, 99, 104, 97, 110, 110, 101, 108, 115, 47, 99, 104, 97, 110, 110, 101, 108, 45, 49, 54, 55, 53, 47, 115, 101, 113, 117, 101, 110, 99, 101, 115, 47, 49], value: [253, 137, 8, 57, 119, 81, 9, 57, 89, 48, 192, 46, 87, 72, 231, 18, 12, 99, 232, 231, 215, 237, 246, 68, 12, 98, 249, 234, 253, 185, 214, 212], leaf: Some(LeafOp { hash: Sha256, prehash_key: NoHash, prehash_value: Sha256, length: VarProto, prefix: [0, 2, 202, 145, 204, 2] }), path: [InnerOp { hash: Sha256, prefix: [2, 4, 202, 145, 204, 2, 32, 182, 191, 124, 254, 76, 107, 72, 248, 159, 201, 51, 216, 208, 118, 215, 26, 84, 247, 61, 22, 192, 20, 203, 135, 122, 75, 26, 99, 64, 31, 159, 221, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [4, 8, 202, 145, 204, 2, 32, 72, 52, 222, 154, 13, 39, 152, 95, 249, 233, 167, 176, 254, 117, 14, 247, 230, 201, 64, 63, 223, 133, 23, 124, 210, 173, 186, 161, 64, 64, 161, 28, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [6, 16, 202, 145, 204, 2, 32, 99, 113, 148, 180, 213, 125, 108, 12, 194, 209, 220, 250, 2, 177, 213, 67, 26, 174, 207, 85, 60, 19, 91, 33, 134, 191, 38, 117, 78, 38, 244, 116, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [8, 22, 202, 145, 204, 2, 32, 26, 243, 206, 136, 120, 16, 176, 177, 181, 144, 243, 147, 183, 182, 188, 121, 233, 11, 140, 47, 144, 57, 173, 68, 149, 141, 200, 249, 102, 78, 60, 77, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [10, 50, 202, 145, 204, 2, 32], suffix: [32, 182, 146, 122, 167, 50, 118, 123, 68, 65, 198, 90, 88, 2, 49, 221, 10, 0, 166, 124, 164, 72, 222, 162, 128, 75, 117, 207, 195, 142, 106, 9, 164] }, InnerOp { hash: Sha256, prefix: [12, 78, 202, 145, 204, 2, 32, 58, 1, 103, 245, 124, 78, 160, 218, 26, 102, 39, 136, 135, 10, 70, 40, 116, 55, 158, 245, 172, 252, 65, 8, 252, 2, 181, 234, 175, 192, 250, 13, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [14, 116, 202, 145, 204, 2, 32], suffix: [32, 144, 48, 165, 100, 139, 54, 11, 241, 227, 200, 160, 82, 59, 175, 11, 135, 31, 44, 13, 213, 174, 200, 28, 51, 15, 80, 139, 73, 200, 141, 178, 114] }, InnerOp { hash: Sha256, prefix: [18, 218, 2, 202, 145, 204, 2, 32], suffix: [32, 152, 92, 110, 24, 29, 1, 110, 101, 99, 221, 3, 156, 101, 105, 82, 238, 49, 231, 56, 250, 83, 187, 112, 241, 163, 55, 239, 16, 93, 110, 197, 251] }, InnerOp { hash: Sha256, prefix: [20, 208, 5, 202, 145, 204, 2, 32, 100, 106, 203, 109, 230, 8, 128, 123, 219, 172, 212, 1, 243, 143, 221, 90, 102, 119, 146, 137, 79, 59, 113, 36, 132, 249, 215, 41, 73, 254, 151, 21, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [22, 162, 11, 202, 145, 204, 2, 32, 254, 61, 34, 242, 43, 54, 100, 41, 174, 244, 62, 39, 94, 137, 198, 242, 193, 143, 21, 222, 144, 93, 39, 24, 246, 170, 47, 134, 203, 13, 230, 196, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [24, 188, 16, 202, 145, 204, 2, 32, 43, 160, 87, 76, 113, 111, 180, 162, 1, 34, 174, 85, 170, 119, 82, 3, 49, 180, 53, 83, 45, 203, 224, 228, 191, 192, 166, 135, 144, 3, 211, 226, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [26, 246, 47, 218, 145, 204, 2, 32, 105, 244, 109, 19, 34, 114, 228, 124, 169, 77, 249, 248, 55, 17, 127, 162, 77, 130, 2, 130, 164, 219, 21, 146, 50, 17, 103, 78, 227, 246, 49, 205, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [28, 130, 93, 218, 145, 204, 2, 32, 46, 135, 230, 9, 163, 1, 202, 248, 120, 118, 210, 140, 44, 63, 96, 30, 131, 16, 77, 142, 158, 139, 56, 247, 230, 46, 174, 167, 201, 134, 150, 45, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [30, 142, 164, 1, 202, 146, 204, 2, 32, 182, 99, 39, 221, 12, 198, 91, 240, 111, 153, 81, 206, 211, 14, 73, 189, 169, 213, 141, 183, 60, 6, 34, 215, 118, 149, 111, 71, 132, 133, 76, 80, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [32, 200, 222, 2, 202, 146, 204, 2, 32, 244, 116, 145, 3, 181, 48, 157, 78, 215, 173, 227, 103, 221, 26, 45, 152, 101, 103, 229, 205, 0, 138, 17, 0, 170, 250, 119, 203, 160, 8, 101, 247, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [36, 132, 190, 7, 202, 146, 204, 2, 32, 9, 50, 214, 59, 230, 2, 205, 183, 68, 225, 1, 130, 162, 167, 2, 206, 0, 58, 175, 97, 178, 189, 247, 244, 49, 190, 9, 222, 29, 210, 209, 25, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [38, 210, 205, 10, 202, 146, 204, 2, 32, 97, 82, 210, 21, 141, 229, 138, 219, 178, 57, 71, 100, 96, 137, 90, 166, 129, 159, 22, 206, 172, 115, 31, 90, 23, 168, 172, 181, 56, 152, 204, 99, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [40, 250, 132, 17, 202, 146, 204, 2, 32, 236, 117, 248, 108, 206, 207, 86, 170, 96, 227, 87, 255, 91, 238, 173, 198, 4, 142, 242, 203, 221, 214, 254, 133, 151, 91, 130, 17, 42, 33, 153, 76, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [42, 208, 203, 53, 202, 146, 204, 2, 32, 114, 107, 187, 247, 157, 165, 187, 162, 217, 201, 53, 255, 163, 148, 124, 154, 118, 34, 52, 246, 64, 107, 54, 105, 193, 239, 160, 97, 61, 201, 1, 124, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [44, 204, 186, 88, 202, 146, 204, 2, 32], suffix: [32, 149, 234, 36, 143, 22, 221, 69, 89, 196, 188, 254, 40, 27, 233, 215, 8, 103, 112, 116, 2, 192, 170, 48, 174, 91, 60, 69, 107, 166, 240, 103, 109] }, InnerOp { hash: Sha256, prefix: [46, 220, 212, 160, 1, 202, 146, 204, 2, 32], suffix: [32, 148, 142, 35, 12, 139, 138, 48, 74, 155, 235, 125, 246, 187, 160, 253, 86, 59, 168, 71, 31, 218, 18, 226, 66, 204, 229, 66, 167, 167, 67, 236, 226] }, InnerOp { hash: Sha256, prefix: [50, 176, 242, 235, 2, 202, 146, 204, 2, 32, 219, 160, 1, 4, 44, 100, 24, 88, 142, 241, 249, 226, 169, 109, 198, 243, 224, 207, 209, 174, 195, 95, 149, 125, 144, 227, 243, 185, 94, 92, 215, 64, 32], suffix: [] }] })) }, CommitmentProof { proof: Some(Exist(ExistenceProof { key: [105, 98, 99], value: [49, 223, 214, 143, 8, 51, 44, 186, 67, 78, 81, 122, 193, 22, 44, 15, 182, 93, 170, 13, 59, 154, 103, 112, 26, 122, 33, 239, 119, 227, 30, 243], leaf: Some(LeafOp { hash: Sha256, prehash_key: NoHash, prehash_value: Sha256, length: VarProto, prefix: [0] }), path: [InnerOp { hash: Sha256, prefix: [1, 90, 94, 99, 68, 171, 137, 80, 52, 9, 244, 30, 232, 67, 173, 82, 66, 38, 164, 144, 180, 124, 107, 35, 26, 53, 183, 12, 144, 185, 171, 7, 141], suffix: [] }, InnerOp { hash: Sha256, prefix: [1], suffix: [39, 47, 18, 54, 46, 93, 229, 106, 144, 226, 223, 92, 141, 89, 90, 84, 37, 242, 107, 37, 123, 134, 223, 143, 218, 233, 204, 181, 2, 51, 224, 226] }, InnerOp { hash: Sha256, prefix: [1, 251, 236, 52, 223, 9, 229, 159, 55, 49, 196, 10, 16, 163, 140, 44, 90, 56, 141, 28, 196, 48, 218, 87, 131, 162, 87, 239, 28, 153, 103, 72, 213], suffix: [] }, InnerOp { hash: Sha256, prefix: [1, 91, 181, 32, 130, 26, 175, 77, 1, 127, 216, 114, 33, 14, 25, 254, 137, 24, 202, 53, 114, 162, 18, 113, 16, 26, 147, 250, 66, 196, 122, 79, 211], suffix: [] }, InnerOp { hash: Sha256, prefix: [1], suffix: [116, 134, 28, 111, 135, 180, 91, 227, 161, 227, 45, 230, 39, 209, 197, 143, 117, 35, 137, 21, 147, 154, 116, 15, 167, 9, 5, 250, 221, 210, 150, 225] }, InnerOp { hash: Sha256, prefix: [1], suffix: [131, 187, 74, 242, 90, 132, 9, 179, 209, 74, 144, 66, 189, 87, 58, 90, 28, 34, 41, 67, 54, 112, 178, 32, 35, 198, 13, 36, 52, 114, 25, 120] }] })) }] }, proof_height_on_a: Height { revision: 5, height: 2720934 }, signer: "cosmos000000000000000000000000000000000000000" }
2023-09-17T20:25:48.857610Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: penumbra_ibc::component::msg_handler::recv_packet: data="{\"amount\":\"100\",\"denom\":\"uosmo\",\"receiver\":\"penumbrav2t1jp4pryqqmh65pq8e7zwk6k2674vwhn4qqphxjk0vukxln0crmp2tdld0mhavuyrspwuajnsk5t5t33u2auxvheunr7qde4l068ez0euvtu08z7rwj6shlh64ndz0wvz7mfqdcd\",\"sender\":\"osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488\"}"
2023-09-17T20:25:48.857649Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: jmt: key=b"channelEnds/ports/transfer/channels/channel-0" key_hash=KeyHash("2cd9b4237d71e79029c2e137b313e7f955876d752797c57644e1dd6df18c0d0d")
2023-09-17T20:25:48.857737Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: jmt: key=b"connections/connection-0" key_hash=KeyHash("27fcae615d5b65ce6cc391a075c5502af40015fd444dc7243feec75713a50982")
2023-09-17T20:25:48.857780Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-17T20:25:48.858015Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-17T20:25:48.858083Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-17T20:25:48.858445Z DEBUG abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-17T20:25:48.858624Z  INFO abci:CheckTx{kind=New txid="d74d29e41d0b5daf6aaa4e2350755b4510af9187ad7062337c2951abfa669d3a"}: pd::mempool: tx rejected e=packet Packet { sequence: Sequence(1), source_port: PortId("transfer"), source_channel: ChannelId("channel-1675"), destination_port: PortId("transfer"), destination_channel: ChannelId("channel-0"), data: [123, 34, 97, 109, 111, 117, 110, 116, 34, 58, 34, 49, 48, 48, 34, 44, 34, 100, 101, 110, 111, 109, 34, 58, 34, 117, 111, 115, 109, 111, 34, 44, 34, 114, 101, 99, 101, 105, 118, 101, 114, 34, 58, 34, 112, 101, 110, 117, 109, 98, 114, 97, 118, 50, 116, 49, 106, 112, 52, 112, 114, 121, 113, 113, 109, 104, 54, 53, 112, 113, 56, 101, 55, 122, 119, 107, 54, 107, 50, 54, 55, 52, 118, 119, 104, 110, 52, 113, 113, 112, 104, 120, 106, 107, 48, 118, 117, 107, 120, 108, 110, 48, 99, 114, 109, 112, 50, 116, 100, 108, 100, 48, 109, 104, 97, 118, 117, 121, 114, 115, 112, 119, 117, 97, 106, 110, 115, 107, 53, 116, 53, 116, 51, 51, 117, 50, 97, 117, 120, 118, 104, 101, 117, 110, 114, 55, 113, 100, 101, 52, 108, 48, 54, 56, 101, 122, 48, 101, 117, 118, 116, 117, 48, 56, 122, 55, 114, 119, 106, 54, 115, 104, 108, 104, 54, 52, 110, 100, 122, 48, 119, 118, 122, 55, 109, 102, 113, 100, 99, 100, 34, 44, 34, 115, 101, 110, 100, 101, 114, 34, 58, 34, 111, 115, 109, 111, 49, 107, 104, 48, 102, 119, 107, 100, 121, 48, 53, 121, 112, 53, 55, 57, 100, 56, 118, 99, 122, 103, 104, 97, 114, 107, 99, 101, 120, 102, 119, 53, 56, 50, 122, 106, 52, 56, 56, 34, 125], timeout_height: At(Height { revision: 0, height: 10249 }), timeout_timestamp: Timestamp { time: Some(Time(2023-09-17 22:19:41.538636)) } } failed to verify

Caused by:
    merkle proof verification failed elapsed=7.599833ms

Next Steps

  • Add more tracing::debug! statements to the Penumbra code running in the local devnet in order to figure out why proof verification is failing. We know the proof specs work (aside from non-inclusion proofs), or we wouldn't have a channel. What's wrong with the packet proofs? (cc @avahowell)

Non-inclusion proof issues

If the Osmosis->Penumbra transfer packet times out, Hermes will attempt to submit a proof of non-inclusion of the packet back to the Osmosis testnet in order to retrieve the funds. This can't work because of the proof spec issue we're ignoring for the moment, but it also doesn't work because of problems with Penumbra, giving errors like

2023-09-16T05:10:06.489571Z ERROR ThreadId(31) spawn:chain{chain=osmo-test-5}:client{client=07-tendermint-1019}:connection{connection=connection-919}:channel{channel=channel-1644}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1644 dst_chain=penumbra-testnet-tethys-d5c9ed6e}:schedule_packet_clearing{height=Some(Height { revision: 5, height: 2694449 })}:relay_pending_packets{height=Some(Height { revision: 5, height: 2694448 })}: failed to clear packets, retry 5/5: failed to construct packet proofs for chain penumbra-testnet-tethys-d5c9ed6e: ABCI query returned an error: AbciQuery { code: Err(1), log: "failed to get key receipts/ports/transfer/channels/channel-0/sequences/1: Missing node at NodeKey { version: 4027, nibble_path: 51b0 }.", info: "", index: 0, key: [], value: [], proof: None, height: block::Height(1), codespace: "" }

The issue here is that Hermes is requesting a nonexistent proof with key, hoping to get a noninclusion proof, but pd is erroring instead of returning a noninclusion proof. (cc @erwanor).

@hdevalence
Copy link
Member Author

hdevalence commented Sep 17, 2023

I'm suspicious of this line: https://github.com/penumbra-zone/penumbra/blob/hermes-osmo-test-5-spike/crates/core/component/ibc/src/component/proof_verification.rs#L250

Are we proto-encoding the commitment hash?

Adding debug statements, and it seems that way:

2023-09-17T21:28:27.639627Z DEBUG abci:CheckTx{kind=New txid="90dc93ce217455b59813b8835ad62c4c9d54facd873c48b81d17171c23a830e6"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: penumbra_ibc::component::proof_verification: commit_packet="fd890839775109395930c02e5748e7120c63e8e7d7edf6440c62f9eafdb9d6d4" commitment_bytes="0a20fd890839775109395930c02e5748e7120c63e8e7d7edf6440c62f9eafdb9d6d4"
2023-09-17T21:28:27.639854Z DEBUG abci:CheckTx{kind=New txid="90dc93ce217455b59813b8835ad62c4c9d54facd873c48b81d17171c23a830e6"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: penumbra_ibc::component::proof_verification: root=MerkleRoot { hash: [175, 166, 253, 138, 157, 254, 117, 34, 40, 143, 32, 196, 156, 79, 28, 253, 235, 214, 101, 203, 222, 209, 159, 205, 11, 188, 73, 151, 230, 98, 181, 200] } merkle_path=MerklePath { key_path: ["ibc", "commitments/ports/transfer/channels/channel-1675/sequences/1"] } value="fd890839775109395930c02e5748e7120c63e8e7d7edf6440c62f9eafdb9d6d4"
2023-09-17T21:28:27.640280Z DEBUG abci:CheckTx{kind=New txid="90dc93ce217455b59813b8835ad62c4c9d54facd873c48b81d17171c23a830e6"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: penumbra_ibc::component::proof_verification: root=MerkleRoot { hash: [175, 166, 253, 138, 157, 254, 117, 34, 40, 143, 32, 196, 156, 79, 28, 253, 235, 214, 101, 203, 222, 209, 159, 205, 11, 188, 73, 151, 230, 98, 181, 200] } merkle_path=MerklePath { key_path: ["ibc", "commitments/ports/transfer/channels/channel-1675/sequences/1"] } value="0a20fd890839775109395930c02e5748e7120c63e8e7d7edf6440c62f9eafdb9d6d4"
2023-09-17T21:28:27.640589Z DEBUG abci:CheckTx{kind=New txid="90dc93ce217455b59813b8835ad62c4c9d54facd873c48b81d17171c23a830e6"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: penumbra_ibc::component::proof_verification: verify_with_commit_packet=Ok(()) verify_with_commitment_bytes=Err(merkle proof verification failed)
2023-09-17T21:28:27.640599Z DEBUG abci:CheckTx{kind=New txid="90dc93ce217455b59813b8835ad62c4c9d54facd873c48b81d17171c23a830e6"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=1}: penumbra_ibc::component::proof_verification: root=MerkleRoot { hash: [175, 166, 253, 138, 157, 254, 117, 34, 40, 143, 32, 196, 156, 79, 28, 253, 235, 214, 101, 203, 222, 209, 159, 205, 11, 188, 73, 151, 230, 98, 181, 200] } merkle_path=MerklePath { key_path: ["ibc", "commitments/ports/transfer/channels/channel-1675/sequences/1"] } value="0a20fd890839775109395930c02e5748e7120c63e8e7d7edf6440c62f9eafdb9d6d4"

Note: verify_with_commit_packet=Ok(()) verify_with_commitment_bytes=Err(merkle proof verification failed)

@hdevalence
Copy link
Member Author

After changing the parameters to the verification call, we accept the packet. However, we don't accept the transfer:

2023-09-17T21:32:27.060777Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: penumbra_ibc::component::msg_handler::recv_packet: data="{\"amount\":\"100\",\"denom\":\"uosmo\",\"receiver\":\"penumbrav2t1jp4pryqqmh65pq8e7zwk6k2674vwhn4qqphxjk0vukxln0crmp2tdld0mhavuyrspwuajnsk5t5t33u2auxvheunr7qde4l068ez0euvtu08z7rwj6shlh64ndz0wvz7mfqdcd\",\"sender\":\"osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488\"}"
2023-09-17T21:32:27.060790Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: jmt: key=b"channelEnds/ports/transfer/channels/channel-0" key_hash=KeyHash("2cd9b4237d71e79029c2e137b313e7f955876d752797c57644e1dd6df18c0d0d")
2023-09-17T21:32:27.060844Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: jmt: key=b"connections/connection-0" key_hash=KeyHash("27fcae615d5b65ce6cc391a075c5502af40015fd444dc7243feec75713a50982")
2023-09-17T21:32:27.060893Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-17T21:32:27.060946Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-17T21:32:27.060991Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-17T21:32:27.061037Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: penumbra_ibc::component::proof_verification: commit_packet="4cd31847c943aa9e7a06291fe92819db61ecb444371fe840d139c8d0fc3526b9" commitment_bytes="0a204cd31847c943aa9e7a06291fe92819db61ecb444371fe840d139c8d0fc3526b9"
2023-09-17T21:32:27.061048Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: penumbra_ibc::component::proof_verification: root=MerkleRoot { hash: [128, 64, 4, 134, 75, 204, 26, 0, 236, 172, 140, 129, 0, 13, 8, 147, 153, 207, 50, 216, 202, 172, 221, 29, 31, 79, 173, 62, 247, 184, 192, 44] } merkle_path=MerklePath { key_path: ["ibc", "commitments/ports/transfer/channels/channel-1675/sequences/2"] } value="4cd31847c943aa9e7a06291fe92819db61ecb444371fe840d139c8d0fc3526b9"
2023-09-17T21:32:27.061091Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: penumbra_ibc::component::proof_verification: root=MerkleRoot { hash: [128, 64, 4, 134, 75, 204, 26, 0, 236, 172, 140, 129, 0, 13, 8, 147, 153, 207, 50, 216, 202, 172, 221, 29, 31, 79, 173, 62, 247, 184, 192, 44] } merkle_path=MerklePath { key_path: ["ibc", "commitments/ports/transfer/channels/channel-1675/sequences/2"] } value="0a204cd31847c943aa9e7a06291fe92819db61ecb444371fe840d139c8d0fc3526b9"
2023-09-17T21:32:27.061113Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: penumbra_ibc::component::proof_verification: verify_with_commit_packet=Ok(()) verify_with_commitment_bytes=Err(merkle proof verification failed)
2023-09-17T21:32:27.061166Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: penumbra_ibc::component::proof_verification: root=MerkleRoot { hash: [128, 64, 4, 134, 75, 204, 26, 0, 236, 172, 140, 129, 0, 13, 8, 147, 153, 207, 50, 216, 202, 172, 221, 29, 31, 79, 173, 62, 247, 184, 192, 44] } merkle_path=MerklePath { key_path: ["ibc", "commitments/ports/transfer/channels/channel-1675/sequences/2"] } value="4cd31847c943aa9e7a06291fe92819db61ecb444371fe840d139c8d0fc3526b9"
2023-09-17T21:32:27.061236Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: jmt: key=b"receipts/ports/transfer/channels/channel-0/sequences/2" key_hash=KeyHash("ba73f4e0653ab817aedcd9b230ba7661e22b48706bb434f30ef0502cdec0ed08")
2023-09-17T21:32:27.061285Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: penumbra_ibc::component::transfer: couldnt execute transfer: failed to decode Protobuf message: invalid wire type value: 6
2023-09-17T21:32:27.061378Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: jmt: key=b"acks/ports/transfer/channels/channel-0/sequences/2" key_hash=KeyHash("5f2d9e77ae519a2e261f5585381828c3067d796b12a5439e9372178b92897def")
2023-09-17T21:32:27.061669Z DEBUG abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}:execute:IbcAction{idx=2}:RecvPacket{chan_id=channel-0 seq=2}: jmt: key=b"channelEnds/ports/transfer/channels/channel-0" key_hash=KeyHash("2cd9b4237d71e79029c2e137b313e7f955876d752797c57644e1dd6df18c0d0d")
2023-09-17T21:32:27.061746Z  INFO abci:CheckTx{kind=New txid="123e067bca1e2770989d16992a75cc55cbef92687ebcc11367babace684bbf93"}: pd::mempool: tx accepted elapsed=36.479583ms

I'm not sure this is ideal, since now we'll have accepted the packet but made the transfer unspendable. What's the correct error semantics here? (cc @avahowell)

@avahowell
Copy link
Contributor

That error is because we're not json decoding the packet data here:

let packet_data = FungibleTokenPacketData::decode(msg.packet.data.as_slice())?;

@hdevalence
Copy link
Member Author

After changing the packet decoding, I see:

2023-09-17T21:44:40.000530Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: penumbra_ibc::component::msg_handler::recv_packet: data="{\"amount\":\"101\",\"denom\":\"uosmo\",\"receiver\":\"penumbrav2t1jp4pryqqmh65pq8e7zwk6k2674vwhn4qqphxjk0vukxln0crmp2tdld0mhavuyrspwuajnsk5t5t33u2auxvheunr7qde4l068ez0euvtu08z7rwj6shlh64ndz0wvz7mfqdcd\",\"sender\":\"osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488\"}"
2023-09-17T21:44:40.000556Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"channelEnds/ports/transfer/channels/channel-0" key_hash=KeyHash("2cd9b4237d71e79029c2e137b313e7f955876d752797c57644e1dd6df18c0d0d")
2023-09-17T21:44:40.000625Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"connections/connection-0" key_hash=KeyHash("27fcae615d5b65ce6cc391a075c5502af40015fd444dc7243feec75713a50982")
2023-09-17T21:44:40.000678Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-17T21:44:40.000723Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-17T21:44:40.000766Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-17T21:44:40.000824Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-17T21:44:40.000875Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: penumbra_ibc::component::proof_verification: root=MerkleRoot { hash: [191, 253, 10, 15, 220, 190, 185, 188, 83, 195, 4, 106, 167, 67, 42, 107, 25, 117, 200, 162, 249, 179, 243, 185, 185, 223, 188, 211, 6, 7, 164, 18] } merkle_path=MerklePath { key_path: ["ibc", "commitments/ports/transfer/channels/channel-1675/sequences/3"] } value="acc93302792f6fdbd7dbce2867f93db5c8a0465095f171afb290c5908ceff269"
2023-09-17T21:44:40.000934Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"receipts/ports/transfer/channels/channel-0/sequences/3" key_hash=KeyHash("b3ec24329f5c4e36e28733f2c2a742c0c41b0bc0282e687521d010882479d62c")
2023-09-17T21:44:40.002387Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}:register_denom{denom=transfer/channel-0/uosmo}: jmt: key=b"shielded_pool/assets/passet13j9rqcz2dqetlz6p323s65f8grh2rjeklkk62utva4rz7g83jcfq8n5fwx/denom" key_hash=KeyHash("68f50e4e6b95c593dd24f9f5302a74d8964385bef9641dfe18ba15f018114ecc")
2023-09-17T21:44:40.002475Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}:register_denom{denom=transfer/channel-0/uosmo}: penumbra_shielded_pool::component::supply: registering new denom denom=transfer/channel-0/uosmo id=passet13j9rqcz2dqetlz6p323s65f8grh2rjeklkk62utva4rz7g83jcfq8n5fwx
2023-09-17T21:44:40.002493Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}:register_denom{denom=transfer/channel-0/uosmo}: jmt: key=b"shielded_pool/known_assets" key_hash=KeyHash("88c6852621c592db6b39a5ba2d35763df9ce31f2afd7d4d53419083f6b60b5b8")
2023-09-17T21:44:40.002616Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}:mint_note: penumbra_shielded_pool::component::note_manager: minting tokens value=Value { amount: 101, asset_id: passet13j9rqcz2dqetlz6p323s65f8grh2rjeklkk62utva4rz7g83jcfq8n5fwx } address=penumbrav2t1jp4pryqqmh65pq8e7zwk6k2674vwhn4qqphxjk0vukxln0crmp2tdld0mhavuyrspwuajnsk5t5t33u2auxvheunr7qde4l068ez0euvtu08z7rwj6shlh64ndz0wvz7mfqdcd
2023-09-17T21:44:40.002897Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}:mint_note: jmt: key=b"shielded_pool/assets/passet13j9rqcz2dqetlz6p323s65f8grh2rjeklkk62utva4rz7g83jcfq8n5fwx/token_supply" key_hash=KeyHash("d02fdee11dc56065e57c2398a830a3fdf18ff41a602750f517f6b033c2af7e54")
2023-09-17T21:44:40.002938Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}:mint_note: penumbra_shielded_pool::component::supply: current_supply=0 new_supply=101 change=101
2023-09-17T21:44:40.008027Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}:mint_note:add_note_payload{commitment=note::Commitment(62e7e1bd781d58782d3b9f9968fe6e3234397ba1b0345a6efb0c35bb7493a809)}: penumbra_shielded_pool::component::note_manager: source=NoteSource::Ics20Transfer
2023-09-17T21:44:40.009072Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"acks/ports/transfer/channels/channel-0/sequences/3" key_hash=KeyHash("f1f1109fe28d10be0d8444d755bbf8502d512794c63f801e74992e60bf00aea7")
2023-09-17T21:44:40.009128Z DEBUG abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}:execute:IbcAction{idx=1}:RecvPacket{chan_id=channel-0 seq=3}: jmt: key=b"channelEnds/ports/transfer/channels/channel-0" key_hash=KeyHash("2cd9b4237d71e79029c2e137b313e7f955876d752797c57644e1dd6df18c0d0d")
2023-09-17T21:44:40.009202Z  INFO abci:CheckTx{kind=New txid="1576eeb471796ec4bf8841fbb6b09e06a5d441f6d5517ae5de5e7495c9e28f21"}: pd::mempool: tx accepted elapsed=12.978042ms

and

     Running `target/release/pcli -n 'http://localhost:8080' view balance`
Scanning blocks from last sync height 1067 to latest height 1079
[0s] ██████████████████████████████████████████████████      12/12      837/s ETA: 0s
 Account  Amount
 0        20000gm
 0        501000test_usd
 0        100cube
 0        10000pizza
 0        1000900.0375penumbra
 0        20000gn
 0        101transfer/channel-0/uosmo
 0        3000test_usd
 0        3000penumbra

!!!!!!!!!

@hdevalence
Copy link
Member Author

One thing I'm noticing also is that the events after getting a transfer don't include anything about a new note:

2023-09-17T21:48:41.779722Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="update_client"}: pd::consensus: k="client_id" v="07-tendermint-1"
2023-09-17T21:48:41.779733Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="update_client"}: pd::consensus: k="client_type" v="07-tendermint"
2023-09-17T21:48:41.779737Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="update_client"}: pd::consensus: k="consensus_height" v="5-2721864"
2023-09-17T21:48:41.779788Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="update_client"}: pd::consensus: k="header" v="0afc070a95030a04080b1005120b6f736d6f2d746573742d3518c890a601220b089fe89da80610d5eed07c2a480a20b53ba5600b1d07f18e37d9bb6aa1798d55808570da0382b36225e3a374daed541224080112208563286008faf1110dfbb77a12ba4afc57d51548ac93b4fa685729f76128382b32202330f4cdee128322c06fec094ddc0e1abaea50a6bea15692e90b11d690d5d2f23a207b52af0ee239c3ff1034109108e3abc8e6931171406153463601987d52148f7a4220b0a741a279765b864bbf03c796d8ee26d2b7649a15bd6f880e7c348d6979978e4a20b0a741a279765b864bbf03c796d8ee26d2b7649a15bd6f880e7c348d6979978e5220048091bc7ddc283f77bfbf91d73c44da58c3df8a9cbc867405d8b7f3daada22f5a2087ba8dff9e6f3a440324a89100ab87fff11202566b6f79f1c2c714debce79ab5622014949f1bbaf56242b4bab81b5a03297434d9980aa90e683329fb03be40037e6a6a20e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855721459284b40920f8af4dc1600fc83d37a7a9835047f12e10408c890a6011a480a20c5ed471f1a7e416ce9344ebcf84633f7ae59630d459e21515c9763df04c21c921224080112208f8fdf723cefa0d2e0f2566a656fff7d0799d98458ef09264bf9102117b034d122680802121459284b40920f8af4dc1600fc83d37a7a9835047f1a0c08a4e89da80610978ba69c01224050969b1893ccf3e69ad51b62f265d0521a3a568b6f1717a03f7eec55ca5f09706144aaecb01cda015f440dcee3b761059975da61834e5e9877ff15e87510110b2268080312142574ae37bff07c473dcd36f46ff334f54e55d97c1a0c08a4e89da8061086a79d850222409dbe38cbe75e7486fdb19cfbaff85504aa0add63b1755938e74fb78a08a6cc118603f326d1c9d283036de364454d36d89ad0748027b7260279e90933b4d1fe0b2268080312142cbdfb7be4fe73219fb0629bdd0ad15d516b6c911a0c08a4e89da80610a2afe0bc022240ca54cc7299f1412528270a5cea639c7fc756d404ee580439cd0dba95fb9fd6f3d35d84e597ffdec01443071a7ede63825e4c112a6383c15c6377377fc9fbc80322680803121451fd33f85a311fd27b36a620a7b9a40bf48395331a0c08a4e89da8061099a69b82022240121e959c3cf813d5f5bfd8addfc0486da58e459a8ece47c79bf34e910f68a9c91dc345de60357f5071c275fb0e6befb4768ba7a03c2044a02b25a3cdd820d805226808031214cecc80d9557314d2f195cb41ba38c256a366b3041a0c08a4e89da806108cf3e9dc0122406e3994285e478fc9577dfce51333c104cd09b8b9e63f17916014bf79cbd9485ca021ed89bf0dd07352f5d959fe08aaa677e31c25f180c0e60812921ae18310001287030a3f0a1459284b40920f8af4dc1600fc83d37a7a9835047f12220a204466cc017164db1650a879e4a4b418ad9d7b7c32a74268c06ffed1502374c25a18a8d2dc1e0a3f0a142574ae37bff07c473dcd36f46ff334f54e55d97c12220a206951a1ab94b25eab0fd809f85d73d048fb3d3a4dd5e8e56265db914a8139580f18db9285060a3f0a142cbdfb7be4fe73219fb0629bdd0ad15d516b6c9112220a207da7c59ae209e754a6f626d16daa7a98d0281daf4d78f9e51d181f923be7651f1893b8f8020a3e0a1451fd33f85a311fd27b36a620a7b9a40bf483953312220a20bd12a3fe655347663786614c361c582420425465fa8ce1a2969f65724ad67a7818f9e1010a3c0a14cecc80d9557314d2f195cb41ba38c256a366b30412220a20b838baa52c00cf2273188ee2b55d8f1e6bd6e3a7c0c1b52c2c3a6eb1869736801806123f0a1459284b40920f8af4dc1600fc83d37a7a9835047f12220a204466cc017164db1650a879e4a4b418ad9d7b7c32a74268c06ffed1502374c25a18a8d2dc1e1895ffdb271a070805109a90a6012287030a3f0a1459284b40920f8af4dc1600fc83d37a7a9835047f12220a204466cc017164db1650a879e4a4b418ad9d7b7c32a74268c06ffed1502374c25a18a8d2dc1e0a3f0a142574ae37bff07c473dcd36f46ff334f54e55d97c12220a206951a1ab94b25eab0fd809f85d73d048fb3d3a4dd5e8e56265db914a8139580f18db9285060a3f0a142cbdfb7be4fe73219fb0629bdd0ad15d516b6c9112220a207da7c59ae209e754a6f626d16daa7a98d0281daf4d78f9e51d181f923be7651f1893b8f8020a3e0a1451fd33f85a311fd27b36a620a7b9a40bf483953312220a20bd12a3fe655347663786614c361c582420425465fa8ce1a2969f65724ad67a7818f9e1010a3c0a14cecc80d9557314d2f195cb41ba38c256a366b30412220a20b838baa52c00cf2273188ee2b55d8f1e6bd6e3a7c0c1b52c2c3a6eb1869736801806123f0a1459284b40920f8af4dc1600fc83d37a7a9835047f12220a204466cc017164db1650a879e4a4b418ad9d7b7c32a74268c06ffed1502374c25a18a8d2dc1e1895ffdb27"
2023-09-17T21:48:41.779883Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_data_hex" v="7b22616d6f756e74223a22313032222c2264656e6f6d223a22756f736d6f222c227265636569766572223a2270656e756d627261763274317a7032747368707473373032676d6c7767686567727635766d6c386d797a393776343264636364676b3566616c6e6b6333716c6b34393266677a6337396534787932333472646c386a3764766b3071783935643378726b6d3964686c33716a756c71766572383636376a64673474656b306b3761666730396667346466656c30726b6e367938222c2273656e646572223a226f736d6f316b683066776b647930357970353739643876637a676861726b63657866773538327a6a343838227d"
2023-09-17T21:48:41.779990Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_data" v="{\"amount\":\"102\",\"denom\":\"uosmo\",\"receiver\":\"penumbrav2t1zp2tshpts702gmlwghegrv5vml8myz97v42dccdgk5falnkc3qlk492fgzc79e4xy234rdl8j7dvk0qx95d3xrkm9dhl3qjulqver8667jdg4tek0k7afg09fg4dfel0rkn6y8\",\"sender\":\"osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488\"}"
2023-09-17T21:48:41.780001Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_timeout_height" v="0-11062"
2023-09-17T21:48:41.780005Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_timeout_timestamp" v="1694994444780328000"
2023-09-17T21:48:41.780025Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_sequence" v="4"
2023-09-17T21:48:41.780030Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_src_port" v="transfer"
2023-09-17T21:48:41.780062Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_src_channel" v="channel-1675"
2023-09-17T21:48:41.780066Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_dst_port" v="transfer"
2023-09-17T21:48:41.780070Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_dst_channel" v="channel-0"
2023-09-17T21:48:41.780131Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_channel_ordering" v="ORDER_UNORDERED"
2023-09-17T21:48:41.780135Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="recv_packet"}: pd::consensus: k="packet_connection" v="connection-0"
2023-09-17T21:48:41.780142Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_data_hex" v="7b22616d6f756e74223a22313032222c2264656e6f6d223a22756f736d6f222c227265636569766572223a2270656e756d627261763274317a7032747368707473373032676d6c7767686567727635766d6c386d797a393776343264636364676b3566616c6e6b6333716c6b34393266677a6337396534787932333472646c386a3764766b3071783935643378726b6d3964686c33716a756c71766572383636376a64673474656b306b3761666730396667346466656c30726b6e367938222c2273656e646572223a226f736d6f316b683066776b647930357970353739643876637a676861726b63657866773538327a6a343838227d"
2023-09-17T21:48:41.780152Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_data" v="{\"amount\":\"102\",\"denom\":\"uosmo\",\"receiver\":\"penumbrav2t1zp2tshpts702gmlwghegrv5vml8myz97v42dccdgk5falnkc3qlk492fgzc79e4xy234rdl8j7dvk0qx95d3xrkm9dhl3qjulqver8667jdg4tek0k7afg09fg4dfel0rkn6y8\",\"sender\":\"osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488\"}"
2023-09-17T21:48:41.780222Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_timeout_height" v="0-11062"
2023-09-17T21:48:41.780226Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_timeout_timestamp" v="1694994444780328000"
2023-09-17T21:48:41.780277Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_sequence" v="4"
2023-09-17T21:48:41.780281Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_src_port" v="transfer"
2023-09-17T21:48:41.780285Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_src_channel" v="channel-1675"
2023-09-17T21:48:41.780318Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_dst_port" v="transfer"
2023-09-17T21:48:41.780322Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_dst_channel" v="channel-0"
2023-09-17T21:48:41.780357Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_ack_hex" v="7b22726573756c74223a2241513d3d227d"
2023-09-17T21:48:41.780362Z  INFO abci:DeliverTx{txid="78f63f60c0be866e4c5d7a4e6f395df7951cde3e5c53fa305ae5b51f5c77f55e"}:event{kind="write_acknowledgement"}: pd::consensus: k="packet_connection" v="connection-0"

Probably we should change that? We'll also probably want to demote the event-dumping events to debug! level.

@avahowell
Copy link
Contributor

Hmm, this should be logging the new notes?

tracing::debug!(?value, ?address, "minting tokens");

@hdevalence
Copy link
Member Author

Hmm, this should be logging the new notes?

tracing::debug!(?value, ?address, "minting tokens");

Sorry, what I meant was that the new notes aren't emitted by ABCI events, so they wouldn't be picked up by e.g. a block explorer.

@hdevalence
Copy link
Member Author

hdevalence commented Sep 18, 2023

https://testnet.mintscan.io/osmosis-testnet/txs/A16ECC546BA9CC3A5212CDBD5289AD5318B9A715732BF854A51C77B4B4A3E590

~/c/p/p/d/relayer (hermes-osmo-test-5-spike|✔) $ rly q balance osmosis-testnet
address {osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488} balance {100000000transfer/channel-1677/upenumbra,9889032uosmo}

Then:

~/c/p/p/d/relayer (hermes-osmo-test-5-spike|✔) $ rly transact transfer osmosis-testnet penumbra-local 50000000transfer/channel-1677/upenumbra penumbrav2t1shd5jupgx2755tphh0ruk9uw5j958twr3wa5dmpp2s9qw85t8207fhmvluhu7ruf5rtmlm58hxxmw04yhj2enarp0q5gptuv2swz9cxde7rctzc0u4nr9q0k57eutm54n7z9a0 channel-1677 -y 10000 -c 2h
2023-09-18T03:50:19.946932Z	info	Successfully sent a transfer	{"src_chain_id": "osmo-test-5", "dst_chain_id": "penumbra-testnet-tethys-08fd982a", "send_result": {"successful_src_batches": 1, "successful_dst_batches": 0, "src_send_errors": "<nil>", "dst_send_errors": "<nil>"}}
2023-09-18T03:50:19.947047Z	info	Successful transaction	{"provider_type": "cosmos", "chain_id": "osmo-test-5", "packet_src_channel": "channel-1677", "packet_dst_channel": "channel-0", "gas_used": 131629, "fees": "4258uosmo", "fee_payer": "osmo1kh0fwkdy05yp579d8vczgharkcexfw582zj488", "height": 2725964, "msg_types": ["/ibc.applications.transfer.v1.MsgTransfer"], "tx_hash": "896C7E3A2525FAFBFC27BB30F597CEF56CDFFD71A56783BE595FE04CDBF08747"}

https://testnet.mintscan.io/osmosis-testnet/txs/896C7E3A2525FAFBFC27BB30F597CEF56CDFFD71A56783BE595FE04CDBF08747?height=2725964

However, it looks like there may be remaining issues. Hermes logs (prior to trying to transfer back):

2023-09-18T03:34:53.801612Z  INFO ThreadId(24) spawn:chain{chain=penumbra-testnet-tethys-08fd982a}:client{client=07-tendermint-0}:connection{connection=connection-0}:channel{channel=channel-0}:worker.packet.cmd{src_chain=penumbra-testnet-tethys-08fd982a src_port=transfer src_channel=channel-0 dst_chain=osmo-test-5}:schedule_packet_clearing{height=Some(Height { revision: 0, height: 55 })}:relay_pending_packets{height=Some(Height { revision: 0, height: 54 })}:schedule_recv_packet_and_timeout_msgs{query_height=0-54}: request=QueryPacketEventDataRequest { event_id: SendPacket, source_channel_id: ChannelId("channel-0"), source_port_id: PortId("transfer"), destination_channel_id: ChannelId("channel-1677"), destination_port_id: PortId("transfer"), sequences: [Sequence(1)], height: SmallerEqual(Specific(Height { revision: 0, height: 54 })) }
2023-09-18T03:34:53.805799Z  INFO ThreadId(27) spawn:chain{chain=penumbra-testnet-tethys-08fd982a}:client{client=07-tendermint-0}:connection{connection=connection-0}:channel{channel=channel-0}:worker.packet.cmd{src_chain=penumbra-testnet-tethys-08fd982a src_port=transfer src_channel=channel-0 dst_chain=osmo-test-5}:schedule_packet_clearing{height=Some(Height { revision: 0, height: 55 })}:relay_pending_packets{height=Some(Height { revision: 0, height: 54 })}:schedule_recv_packet_and_timeout_msgs{query_height=0-54}: pulled packet data for 1 events out of 1 sequences: 1..=1; events.total=1 events.left=0
2023-09-18T03:35:01.233145Z  INFO ThreadId(27) spawn:chain{chain=penumbra-testnet-tethys-08fd982a}:client{client=07-tendermint-0}:connection{connection=connection-0}:channel{channel=channel-0}:worker.packet.cmd{src_chain=penumbra-testnet-tethys-08fd982a src_port=transfer src_channel=channel-0 dst_chain=osmo-test-5}:relay{odata=cleared/f6ec4b1b ->Destination @0-54; len=1}: assembled batch of 2 message(s)
2023-09-18T03:35:02.814679Z  WARN ThreadId(25) spawn:chain{chain=penumbra-testnet-tethys-08fd982a}:client{client=07-tendermint-0}:connection{connection=connection-0}:channel{channel=channel-0}:worker.packet.cmd{src_chain=penumbra-testnet-tethys-08fd982a src_port=transfer src_channel=channel-0 dst_chain=osmo-test-5}:relay{odata=cleared/f6ec4b1b ->Destination @0-54; len=1}:send_messages_and_wait_check_tx{chain=osmo-test-5 tracking_id=cleared/f6ec4b1b}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=72}:estimate_gas: tx simulation successful but no gas amount used was returned, falling back on default gas: 400000
2023-09-18T03:35:03.002328Z  INFO ThreadId(27) spawn:chain{chain=penumbra-testnet-tethys-08fd982a}:client{client=07-tendermint-0}:connection{connection=connection-0}:channel{channel=channel-0}:worker.packet.cmd{src_chain=penumbra-testnet-tethys-08fd982a src_port=transfer src_channel=channel-0 dst_chain=osmo-test-5}:relay{odata=cleared/f6ec4b1b ->Destination @0-54; len=1}: response(s): 1; Ok:A16ECC546BA9CC3A5212CDBD5289AD5318B9A715732BF854A51C77B4B4A3E590 target_chain=osmo-test-5
2023-09-18T03:35:03.002354Z  INFO ThreadId(27) spawn:chain{chain=penumbra-testnet-tethys-08fd982a}:client{client=07-tendermint-0}:connection{connection=connection-0}:channel{channel=channel-0}:worker.packet.cmd{src_chain=penumbra-testnet-tethys-08fd982a src_port=transfer src_channel=channel-0 dst_chain=osmo-test-5}:relay{odata=cleared/f6ec4b1b ->Destination @0-54; len=1}: submitted
2023-09-18T03:35:14.064683Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:schedule_packet_clearing{height=Some(Height { revision: 5, height: 2725791 })}:relay_pending_packets{height=Some(Height { revision: 5, height: 2725790 })}:build_packet_ack_msgs{query_height=5-2725790}: pulled packet data for 0 events out of 1 sequences: 1..=1; events.total=1 events.left=0
2023-09-18T03:35:19.470369Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=233e8792 ->Destination @5-2725791; len=1}: assembled batch of 2 message(s)
2023-09-18T03:35:19.475106Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=233e8792 ->Destination @5-2725791; len=1}: response(s): 1; Error with code 1:E435D1CA41C5D9567FED8F81CA90052CEFC02E38A71FE7BCB0EA0A4A06993682 target_chain=penumbra-testnet-tethys-08fd982a
2023-09-18T03:35:19.475127Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=233e8792 ->Destination @5-2725791; len=1}: submitted
2023-09-18T03:35:55.975008Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:schedule_packet_clearing{height=Some(Height { revision: 5, height: 2725800 })}:relay_pending_packets{height=Some(Height { revision: 5, height: 2725799 })}:build_packet_ack_msgs{query_height=5-2725799}: pulled packet data for 1 events out of 1 sequences: 1..=1; events.total=1 events.left=0
2023-09-18T03:36:00.423536Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=cleared/acfc8533 ->Destination @5-2725799; len=1}: assembled batch of 2 message(s)
2023-09-18T03:36:00.433820Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=cleared/acfc8533 ->Destination @5-2725799; len=1}: response(s): 1; Error with code 1:D5789BA6AEACF184CA4AF92D2D1F2120AAD858B51AC9B3B7D2D528B42535E179 target_chain=penumbra-testnet-tethys-08fd982a
2023-09-18T03:36:00.433845Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=cleared/acfc8533 ->Destination @5-2725799; len=1}: submitted
2023-09-18T03:44:42.772660Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:schedule_packet_clearing{height=Some(Height { revision: 5, height: 2725900 })}:relay_pending_packets{height=Some(Height { revision: 5, height: 2725899 })}:build_packet_ack_msgs{query_height=5-2725899}: pulled packet data for 1 events out of 1 sequences: 1..=1; events.total=1 events.left=0
2023-09-18T03:44:46.061462Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=cleared/fd953ccf ->Destination @5-2725899; len=1}: assembled batch of 2 message(s)
2023-09-18T03:44:46.065936Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=cleared/fd953ccf ->Destination @5-2725899; len=1}: response(s): 1; Error with code 1:540CA13BE2223743706A3D84A3EFBCC61921EB3D84F2BEAEA3F74A2880FD4022 target_chain=penumbra-testnet-tethys-08fd982a
2023-09-18T03:44:46.065954Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=cleared/fd953ccf ->Destination @5-2725899; len=1}: submitted

What's going on causing the Error with code 1:? Seems like an error on the Osmosis side, since we use lower-case hex for transaction hashes. We do, but some parts of the Hermes code evidently use upper-case, so this isn't a reliable hint.

Also, when submitting the reverse transaction:

2023-09-18T03:50:28.673820Z  INFO ThreadId(57) worker.batch{chain=osmo-test-5}:supervisor.handle_batch{chain=osmo-test-5}:supervisor.process_batch{chain=osmo-test-5}:worker.packet.cmd{src_chain=osmo-test-5 src_port=transfer src_channel=channel-1677 dst_chain=penumbra-testnet-tethys-08fd982a}:relay{odata=775842ba ->Destination @5-2725964; len=1}: submitted
thread '<unnamed>' panicked at 'not yet implemented', crates/relayer/src/chain/penumbra/endpoint.rs:1698:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

So there's some more work to do on the Hermes implementation. EDIT: I copy-pasted the implementation from the CSDK impl and avoided the panic.

@hdevalence
Copy link
Member Author

hdevalence commented Sep 18, 2023

Now we have a proof verification failure trying to verify the Ack:

2023-09-18T03:57:07.499371Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:check_stateful: jmt: key=b"sct/valid_anchors/18f9dcd76c82dca0881a3090d65581f47d7b6c065591da4a1a83566224ced600" key_hash=KeyHash("0b280e3a71ec12aaf160ddb15c3a89acc89a98323b4fc9f300a47e0727db7601")
2023-09-18T03:57:07.499437Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:check_stateless:valid_binding_signature: penumbra_app::action_handler::transaction::stateless: bvk=VerificationKey<Binding>("0000000000000000000000000000000000000000000000000000000000000000") auth_hash=AuthHash("8b811a35a6a176337e7a68eef2964b082cdc55acee0609ad4c281f7493fa3a65")
2023-09-18T03:57:07.499470Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:check_stateful: penumbra_sct::component::view: anchor is valid anchor=Root(18f9dcd76c82dca0881a3090d65581f47d7b6c065591da4a1a83566224ced600) anchor_height=0
2023-09-18T03:57:07.499479Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:check_stateful: jmt: key=b"fmd_parameters/previous" key_hash=KeyHash("e6f6c68e4d4435835f1a61aee15200b2833f7688ff36de0cdeb88d5efdb881b5")
2023-09-18T03:57:07.499514Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:check_stateful: jmt: key=b"fmd_parameters/current" key_hash=KeyHash("3a526e6eef60922309324f4621abf9d874aaf003981f8c7e6f7a27a367667379")
2023-09-18T03:57:07.499557Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:check_stateful: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-18T03:57:07.499828Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"clients/07-tendermint-0/consensusStates/5-2726039" key_hash=KeyHash("cbe550e8c325b17a45a138e09fbe0685e94afa162a01e1dfe3723dcdb673348c")
2023-09-18T03:57:07.499859Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: penumbra_ibc::component::msg_handler::update_client: msg=MsgUpdateClient { client_id: ClientId("07-tendermint-0"), header: Any { type_url: "/ibc.lightclients.tendermint.v1.Header", value: [10, 250, 7, 10, 149, 3, 10, 4, 8, 11, 16, 5, 18, 11, 111, 115, 109, 111, 45, 116, 101, 115, 116, 45, 53, 24, 151, 177, 166, 1, 34, 11, 8, 132, 149, 159, 168, 6, 16, 153, 247, 197, 5, 42, 72, 10, 32, 192, 186, 89, 68, 179, 209, 199, 149, 101, 87, 124, 221, 240, 29, 127, 241, 240, 229, 241, 151, 173, 16, 244, 248, 235, 27, 63, 190, 132, 210, 31, 9, 18, 36, 8, 1, 18, 32, 117, 87, 228, 234, 1, 24, 20, 228, 206, 184, 163, 180, 167, 51, 181, 168, 197, 56, 61, 16, 196, 43, 34, 81, 251, 81, 57, 59, 55, 161, 92, 123, 50, 32, 47, 127, 111, 3, 87, 76, 74, 19, 203, 26, 65, 39, 248, 144, 208, 235, 232, 88, 160, 79, 234, 246, 231, 3, 167, 104, 12, 214, 53, 91, 234, 96, 58, 32, 76, 132, 4, 215, 219, 51, 247, 52, 148, 94, 99, 95, 243, 198, 131, 112, 184, 146, 79, 120, 71, 240, 100, 198, 129, 158, 236, 252, 87, 177, 71, 44, 66, 32, 150, 18, 23, 127, 100, 90, 222, 164, 228, 5, 46, 67, 95, 143, 201, 80, 11, 201, 72, 114, 179, 142, 57, 7, 194, 30, 79, 83, 3, 195, 3, 42, 74, 32, 150, 18, 23, 127, 100, 90, 222, 164, 228, 5, 46, 67, 95, 143, 201, 80, 11, 201, 72, 114, 179, 142, 57, 7, 194, 30, 79, 83, 3, 195, 3, 42, 82, 32, 4, 128, 145, 188, 125, 220, 40, 63, 119, 191, 191, 145, 215, 60, 68, 218, 88, 195, 223, 138, 156, 188, 134, 116, 5, 216, 183, 243, 218, 173, 162, 47, 90, 32, 64, 85, 57, 96, 45, 208, 146, 215, 6, 128, 213, 240, 251, 63, 95, 253, 39, 226, 211, 87, 136, 113, 65, 94, 82, 228, 216, 168, 255, 43, 118, 80, 98, 32, 142, 139, 218, 53, 134, 60, 71, 56, 21, 157, 18, 205, 228, 202, 134, 240, 93, 3, 74, 39, 207, 193, 52, 4, 46, 14, 37, 211, 245, 171, 1, 76, 106, 32, 227, 176, 196, 66, 152, 252, 28, 20, 154, 251, 244, 200, 153, 111, 185, 36, 39, 174, 65, 228, 100, 155, 147, 76, 164, 149, 153, 27, 120, 82, 184, 85, 114, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 18, 223, 4, 8, 151, 177, 166, 1, 26, 72, 10, 32, 4, 115, 128, 250, 175, 111, 47, 217, 90, 204, 247, 133, 42, 84, 158, 166, 223, 227, 155, 41, 72, 37, 195, 63, 145, 200, 227, 163, 10, 237, 76, 15, 18, 36, 8, 1, 18, 32, 186, 46, 251, 98, 61, 162, 170, 31, 57, 40, 135, 157, 10, 200, 124, 25, 207, 159, 226, 84, 57, 147, 185, 91, 229, 7, 230, 210, 39, 217, 244, 28, 34, 103, 8, 2, 18, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 26, 11, 8, 137, 149, 159, 168, 6, 16, 212, 169, 176, 20, 34, 64, 250, 76, 98, 19, 16, 121, 136, 83, 192, 71, 152, 60, 75, 49, 217, 209, 214, 73, 34, 80, 134, 45, 208, 183, 136, 142, 23, 53, 135, 80, 203, 124, 119, 26, 228, 244, 151, 83, 203, 198, 35, 9, 205, 195, 190, 17, 231, 207, 46, 104, 153, 121, 243, 241, 30, 35, 163, 75, 231, 75, 208, 49, 92, 7, 34, 104, 8, 2, 18, 20, 37, 116, 174, 55, 191, 240, 124, 71, 61, 205, 54, 244, 111, 243, 52, 245, 78, 85, 217, 124, 26, 12, 8, 137, 149, 159, 168, 6, 16, 131, 169, 248, 156, 1, 34, 64, 138, 66, 130, 114, 2, 128, 238, 62, 26, 91, 237, 3, 85, 0, 128, 23, 167, 59, 161, 160, 41, 33, 56, 89, 235, 220, 236, 192, 88, 62, 134, 9, 22, 103, 154, 157, 0, 39, 44, 233, 52, 115, 94, 136, 132, 136, 112, 106, 117, 4, 115, 230, 135, 88, 67, 139, 117, 9, 251, 112, 232, 52, 43, 13, 34, 104, 8, 3, 18, 20, 44, 189, 251, 123, 228, 254, 115, 33, 159, 176, 98, 155, 221, 10, 209, 93, 81, 107, 108, 145, 26, 12, 8, 137, 149, 159, 168, 6, 16, 214, 137, 205, 212, 1, 34, 64, 214, 172, 170, 216, 166, 24, 161, 160, 45, 151, 193, 90, 57, 65, 223, 3, 226, 189, 100, 18, 196, 13, 238, 66, 92, 165, 162, 59, 173, 49, 121, 30, 166, 98, 189, 246, 164, 159, 225, 42, 140, 157, 67, 16, 142, 81, 176, 44, 184, 11, 237, 43, 55, 181, 23, 161, 78, 217, 254, 159, 247, 252, 201, 7, 34, 104, 8, 3, 18, 20, 81, 253, 51, 248, 90, 49, 31, 210, 123, 54, 166, 32, 167, 185, 164, 11, 244, 131, 149, 51, 26, 12, 8, 137, 149, 159, 168, 6, 16, 138, 205, 129, 156, 1, 34, 64, 47, 241, 113, 175, 153, 72, 195, 30, 255, 220, 110, 222, 214, 105, 21, 45, 166, 101, 79, 54, 197, 223, 16, 132, 63, 189, 240, 22, 64, 212, 143, 137, 150, 43, 82, 242, 176, 152, 247, 213, 114, 159, 190, 209, 199, 175, 95, 73, 209, 138, 30, 220, 139, 58, 153, 97, 59, 24, 233, 129, 233, 130, 46, 2, 34, 103, 8, 2, 18, 20, 206, 204, 128, 217, 85, 115, 20, 210, 241, 149, 203, 65, 186, 56, 194, 86, 163, 102, 179, 4, 26, 11, 8, 137, 149, 159, 168, 6, 16, 208, 163, 251, 124, 34, 64, 215, 187, 244, 181, 9, 82, 145, 247, 144, 234, 52, 189, 13, 229, 58, 208, 45, 135, 179, 110, 140, 22, 129, 103, 112, 44, 244, 71, 70, 243, 83, 175, 133, 197, 244, 14, 62, 229, 149, 31, 12, 199, 191, 38, 227, 40, 205, 97, 138, 130, 38, 29, 242, 254, 108, 160, 67, 165, 74, 25, 59, 32, 74, 12, 18, 135, 3, 10, 63, 10, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 18, 34, 10, 32, 68, 102, 204, 1, 113, 100, 219, 22, 80, 168, 121, 228, 164, 180, 24, 173, 157, 123, 124, 50, 167, 66, 104, 192, 111, 254, 209, 80, 35, 116, 194, 90, 24, 170, 210, 220, 30, 10, 63, 10, 20, 37, 116, 174, 55, 191, 240, 124, 71, 61, 205, 54, 244, 111, 243, 52, 245, 78, 85, 217, 124, 18, 34, 10, 32, 105, 81, 161, 171, 148, 178, 94, 171, 15, 216, 9, 248, 93, 115, 208, 72, 251, 61, 58, 77, 213, 232, 229, 98, 101, 219, 145, 74, 129, 57, 88, 15, 24, 219, 146, 133, 6, 10, 63, 10, 20, 44, 189, 251, 123, 228, 254, 115, 33, 159, 176, 98, 155, 221, 10, 209, 93, 81, 107, 108, 145, 18, 34, 10, 32, 125, 167, 197, 154, 226, 9, 231, 84, 166, 246, 38, 209, 109, 170, 122, 152, 208, 40, 29, 175, 77, 120, 249, 229, 29, 24, 31, 146, 59, 231, 101, 31, 24, 147, 184, 248, 2, 10, 62, 10, 20, 81, 253, 51, 248, 90, 49, 31, 210, 123, 54, 166, 32, 167, 185, 164, 11, 244, 131, 149, 51, 18, 34, 10, 32, 189, 18, 163, 254, 101, 83, 71, 102, 55, 134, 97, 76, 54, 28, 88, 36, 32, 66, 84, 101, 250, 140, 225, 162, 150, 159, 101, 114, 74, 214, 122, 120, 24, 249, 225, 1, 10, 60, 10, 20, 206, 204, 128, 217, 85, 115, 20, 210, 241, 149, 203, 65, 186, 56, 194, 86, 163, 102, 179, 4, 18, 34, 10, 32, 184, 56, 186, 165, 44, 0, 207, 34, 115, 24, 142, 226, 181, 93, 143, 30, 107, 214, 227, 167, 192, 193, 181, 44, 44, 58, 110, 177, 134, 151, 54, 128, 24, 6, 18, 63, 10, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 18, 34, 10, 32, 68, 102, 204, 1, 113, 100, 219, 22, 80, 168, 121, 228, 164, 180, 24, 173, 157, 123, 124, 50, 167, 66, 104, 192, 111, 254, 209, 80, 35, 116, 194, 90, 24, 170, 210, 220, 30, 24, 151, 255, 219, 39, 26, 7, 8, 5, 16, 205, 176, 166, 1, 34, 135, 3, 10, 63, 10, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 18, 34, 10, 32, 68, 102, 204, 1, 113, 100, 219, 22, 80, 168, 121, 228, 164, 180, 24, 173, 157, 123, 124, 50, 167, 66, 104, 192, 111, 254, 209, 80, 35, 116, 194, 90, 24, 170, 210, 220, 30, 10, 63, 10, 20, 37, 116, 174, 55, 191, 240, 124, 71, 61, 205, 54, 244, 111, 243, 52, 245, 78, 85, 217, 124, 18, 34, 10, 32, 105, 81, 161, 171, 148, 178, 94, 171, 15, 216, 9, 248, 93, 115, 208, 72, 251, 61, 58, 77, 213, 232, 229, 98, 101, 219, 145, 74, 129, 57, 88, 15, 24, 219, 146, 133, 6, 10, 63, 10, 20, 44, 189, 251, 123, 228, 254, 115, 33, 159, 176, 98, 155, 221, 10, 209, 93, 81, 107, 108, 145, 18, 34, 10, 32, 125, 167, 197, 154, 226, 9, 231, 84, 166, 246, 38, 209, 109, 170, 122, 152, 208, 40, 29, 175, 77, 120, 249, 229, 29, 24, 31, 146, 59, 231, 101, 31, 24, 147, 184, 248, 2, 10, 62, 10, 20, 81, 253, 51, 248, 90, 49, 31, 210, 123, 54, 166, 32, 167, 185, 164, 11, 244, 131, 149, 51, 18, 34, 10, 32, 189, 18, 163, 254, 101, 83, 71, 102, 55, 134, 97, 76, 54, 28, 88, 36, 32, 66, 84, 101, 250, 140, 225, 162, 150, 159, 101, 114, 74, 214, 122, 120, 24, 249, 225, 1, 10, 60, 10, 20, 206, 204, 128, 217, 85, 115, 20, 210, 241, 149, 203, 65, 186, 56, 194, 86, 163, 102, 179, 4, 18, 34, 10, 32, 184, 56, 186, 165, 44, 0, 207, 34, 115, 24, 142, 226, 181, 93, 143, 30, 107, 214, 227, 167, 192, 193, 181, 44, 44, 58, 110, 177, 134, 151, 54, 128, 24, 6, 18, 63, 10, 20, 89, 40, 75, 64, 146, 15, 138, 244, 220, 22, 0, 252, 131, 211, 122, 122, 152, 53, 4, 127, 18, 34, 10, 32, 68, 102, 204, 1, 113, 100, 219, 22, 80, 168, 121, 228, 164, 180, 24, 173, 157, 123, 124, 50, 167, 66, 104, 192, 111, 254, 209, 80, 35, 116, 194, 90, 24, 170, 210, 220, 30, 24, 151, 255, 219, 39] }, signer: "cosmos000000000000000000000000000000000000000" }
2023-09-18T03:57:07.500304Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"clients/07-tendermint-0/clientType" key_hash=KeyHash("836f5b6a1d0ec61835a7c23acb951c6a4523edbeebe60e1c572922b9c6616a1b")
2023-09-18T03:57:07.500355Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"clients/07-tendermint-0/clientState" key_hash=KeyHash("7ecd0e38bbf2b60281ec84e020b1a0170c835013a1db939fa8c0f1b19bdd19cc")
2023-09-18T03:57:07.500403Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"clients/07-tendermint-0/consensusStates/5-2725965" key_hash=KeyHash("1834a2f4136be3baffe0da44d6a3fbd863f9aec81fc29cee915e4096a29b7e14")
2023-09-18T03:57:07.500429Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-18T03:57:07.500461Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"clients/07-tendermint-0/consensusStates/5-2725965" key_hash=KeyHash("1834a2f4136be3baffe0da44d6a3fbd863f9aec81fc29cee915e4096a29b7e14")
2023-09-18T03:57:07.500489Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-18T03:57:07.500944Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"clients/07-tendermint-0/clientState" key_hash=KeyHash("7ecd0e38bbf2b60281ec84e020b1a0170c835013a1db939fa8c0f1b19bdd19cc")
2023-09-18T03:57:07.501002Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"clients/07-tendermint-0/consensusStates/5-2726039" key_hash=KeyHash("cbe550e8c325b17a45a138e09fbe0685e94afa162a01e1dfe3723dcdb673348c")
2023-09-18T03:57:07.501051Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"penumbra_verified_heights/07-tendermint-0/verified_heights" key_hash=KeyHash("750478cb81a1d08c958862eb04dd92d6ffdd1dd5bb5bb15c56c519fb2ee40c3a")
2023-09-18T03:57:07.501106Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"penumbra_verified_heights/07-tendermint-0/verified_heights" key_hash=KeyHash("750478cb81a1d08c958862eb04dd92d6ffdd1dd5bb5bb15c56c519fb2ee40c3a")
2023-09-18T03:57:07.501137Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"clients/07-tendermint-0/consensusStates/5-2725739" key_hash=KeyHash("779e7bcd47b71271f12dc0c6d8d4465e78c973e4492758808a0849f9045da073")
2023-09-18T03:57:07.501182Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-18T03:57:07.501211Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-18T03:57:07.501237Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-0}: jmt: key=b"penumbra_verified_heights/07-tendermint-0/verified_heights" key_hash=KeyHash("750478cb81a1d08c958862eb04dd92d6ffdd1dd5bb5bb15c56c519fb2ee40c3a")
2023-09-18T03:57:07.501361Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=1}:Acknowledgement{chan_id=channel-0 seq=1}: penumbra_ibc::component::msg_handler::acknowledgement: msg=MsgAcknowledgement { packet: Packet { sequence: Sequence(1), source_port: PortId("transfer"), source_channel: ChannelId("channel-0"), destination_port: PortId("transfer"), destination_channel: ChannelId("channel-1677"), data: [123, 34, 100, 101, 110, 111, 109, 34, 58, 34, 117, 112, 101, 110, 117, 109, 98, 114, 97, 34, 44, 34, 97, 109, 111, 117, 110, 116, 34, 58, 34, 49, 48, 48, 48, 48, 48, 48, 48, 48, 34, 44, 34, 115, 101, 110, 100, 101, 114, 34, 58, 34, 112, 101, 110, 117, 109, 98, 114, 97, 118, 50, 116, 49, 120, 113, 55, 112, 117, 51, 97, 54, 57, 100, 51, 118, 116, 118, 120, 114, 117, 50, 117, 53, 103, 120, 113, 109, 121, 48, 101, 103, 121, 120, 107, 115, 109, 104, 116, 100, 48, 52, 118, 57, 106, 51, 116, 52, 51, 100, 102, 109, 99, 104, 51, 110, 109, 116, 112, 114, 113, 112, 101, 101, 101, 120, 57, 117, 112, 53, 110, 113, 118, 109, 112, 113, 118, 121, 121, 109, 110, 114, 109, 117, 122, 110, 121, 102, 57, 101, 110, 101, 118, 99, 120, 103, 106, 99, 104, 120, 100, 57, 99, 117, 115, 117, 115, 102, 53, 53, 117, 52, 55, 109, 109, 53, 52, 97, 120, 56, 101, 107, 52, 50, 51, 51, 104, 119, 114, 121, 121, 102, 109, 48, 113, 120, 122, 122, 34, 44, 34, 114, 101, 99, 101, 105, 118, 101, 114, 34, 58, 34, 111, 115, 109, 111, 49, 107, 104, 48, 102, 119, 107, 100, 121, 48, 53, 121, 112, 53, 55, 57, 100, 56, 118, 99, 122, 103, 104, 97, 114, 107, 99, 101, 120, 102, 119, 53, 56, 50, 122, 106, 52, 56, 56, 34, 125], timeout_height: At(Height { revision: 5, height: 2900000 }), timeout_timestamp: Timestamp { time: Some(Time(2023-09-20 3:34:19.326351)) } }, acknowledgement: [123, 34, 114, 101, 115, 117, 108, 116, 34, 58, 34, 65, 81, 61, 61, 34, 125], proof_acked_on_b: MerkleProof { proofs: [CommitmentProof { proof: Some(Exist(ExistenceProof { key: [97, 99, 107, 115, 47, 112, 111, 114, 116, 115, 47, 116, 114, 97, 110, 115, 102, 101, 114, 47, 99, 104, 97, 110, 110, 101, 108, 115, 47, 99, 104, 97, 110, 110, 101, 108, 45, 49, 54, 55, 55, 47, 115, 101, 113, 117, 101, 110, 99, 101, 115, 47, 49], value: [8, 247, 85, 126, 213, 24, 38, 254, 24, 216, 69, 18, 191, 36, 236, 117, 0, 30, 219, 175, 33, 35, 164, 119, 223, 114, 160, 169, 243, 100, 10, 124], leaf: Some(LeafOp { hash: Sha256, prehash_key: NoHash, prehash_value: Sha256, length: VarProto, prefix: [0, 2, 190, 222, 204, 2] }), path: [InnerOp { hash: Sha256, prefix: [2, 4, 190, 222, 204, 2, 32], suffix: [32, 105, 164, 30, 98, 250, 73, 75, 207, 171, 206, 78, 18, 119, 68, 113, 11, 53, 114, 179, 194, 230, 57, 125, 55, 94, 151, 221, 134, 19, 113, 227, 79] }, InnerOp { hash: Sha256, prefix: [4, 8, 190, 222, 204, 2, 32, 102, 9, 82, 47, 113, 77, 199, 233, 1, 110, 56, 141, 177, 212, 26, 226, 184, 49, 6, 28, 83, 176, 197, 183, 75, 34, 49, 32, 101, 154, 172, 125, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [6, 12, 190, 222, 204, 2, 32], suffix: [32, 197, 85, 43, 48, 150, 179, 5, 194, 59, 78, 184, 245, 125, 87, 196, 212, 174, 182, 252, 151, 41, 73, 155, 56, 225, 66, 122, 111, 175, 89, 190, 19] }, InnerOp { hash: Sha256, prefix: [8, 20, 190, 222, 204, 2, 32], suffix: [32, 230, 14, 216, 158, 1, 65, 7, 203, 20, 9, 14, 82, 192, 210, 133, 143, 10, 8, 153, 242, 36, 167, 249, 105, 14, 236, 1, 251, 152, 201, 233, 80] }, InnerOp { hash: Sha256, prefix: [10, 30, 190, 222, 204, 2, 32], suffix: [32, 39, 10, 227, 146, 118, 68, 142, 158, 87, 124, 218, 56, 188, 127, 56, 102, 244, 235, 36, 71, 146, 200, 252, 205, 233, 169, 139, 23, 174, 124, 26, 2] }, InnerOp { hash: Sha256, prefix: [12, 52, 190, 222, 204, 2, 32], suffix: [32, 59, 217, 228, 77, 173, 10, 36, 0, 201, 175, 87, 246, 183, 135, 63, 202, 196, 92, 25, 26, 191, 198, 231, 118, 223, 79, 203, 78, 235, 52, 48, 23] }, InnerOp { hash: Sha256, prefix: [14, 162, 1, 190, 222, 204, 2, 32], suffix: [32, 169, 104, 124, 244, 197, 207, 93, 24, 65, 115, 230, 46, 141, 16, 118, 12, 138, 111, 199, 198, 182, 22, 243, 110, 76, 42, 151, 87, 246, 7, 117, 28] }, InnerOp { hash: Sha256, prefix: [18, 148, 3, 190, 222, 204, 2, 32, 100, 124, 2, 175, 24, 121, 80, 189, 193, 13, 181, 80, 82, 241, 218, 127, 230, 24, 65, 0, 207, 19, 185, 3, 229, 226, 215, 50, 173, 97, 198, 205, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [20, 162, 6, 190, 222, 204, 2, 32, 125, 242, 0, 228, 17, 81, 112, 40, 24, 240, 75, 181, 212, 159, 118, 191, 172, 96, 22, 170, 52, 106, 194, 152, 70, 189, 11, 69, 213, 144, 158, 6, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [22, 182, 12, 190, 222, 204, 2, 32], suffix: [32, 63, 203, 62, 178, 117, 79, 35, 229, 160, 190, 244, 236, 58, 202, 221, 152, 34, 253, 131, 30, 112, 49, 37, 19, 36, 36, 130, 17, 84, 186, 19, 41] }, InnerOp { hash: Sha256, prefix: [24, 174, 22, 190, 222, 204, 2, 32, 9, 216, 104, 188, 125, 215, 229, 26, 194, 220, 84, 97, 10, 200, 224, 7, 81, 58, 30, 185, 96, 118, 146, 126, 139, 189, 41, 121, 246, 27, 38, 35, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [26, 196, 43, 190, 222, 204, 2, 32, 86, 246, 42, 18, 120, 2, 159, 186, 109, 149, 184, 89, 168, 230, 127, 65, 220, 175, 163, 6, 252, 205, 234, 153, 183, 61, 63, 128, 145, 238, 89, 15, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [30, 130, 108, 190, 222, 204, 2, 32], suffix: [32, 144, 55, 33, 244, 82, 100, 26, 207, 55, 15, 116, 35, 238, 235, 141, 148, 92, 135, 224, 55, 193, 14, 46, 22, 133, 181, 250, 115, 87, 181, 191, 83] }, InnerOp { hash: Sha256, prefix: [32, 182, 157, 2, 190, 222, 204, 2, 32, 100, 156, 135, 52, 42, 43, 183, 223, 176, 169, 138, 228, 56, 198, 12, 103, 190, 111, 226, 19, 120, 168, 168, 241, 240, 110, 81, 132, 97, 248, 31, 89, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [34, 130, 218, 3, 190, 222, 204, 2, 32, 201, 241, 244, 80, 43, 115, 23, 7, 23, 13, 111, 136, 97, 26, 187, 191, 153, 162, 22, 198, 228, 225, 132, 218, 73, 142, 69, 205, 184, 99, 177, 220, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [36, 172, 194, 6, 190, 222, 204, 2, 32, 91, 80, 189, 1, 218, 175, 167, 9, 141, 237, 21, 196, 143, 205, 44, 144, 189, 209, 255, 25, 64, 7, 239, 134, 60, 242, 130, 127, 19, 53, 17, 106, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [38, 244, 192, 10, 190, 222, 204, 2, 32, 230, 31, 152, 55, 207, 192, 127, 41, 14, 76, 50, 197, 183, 188, 246, 77, 233, 183, 159, 45, 207, 126, 222, 207, 42, 148, 63, 145, 92, 219, 182, 111, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [40, 214, 222, 30, 210, 225, 204, 2, 32], suffix: [32, 96, 106, 7, 121, 180, 51, 152, 125, 27, 2, 13, 254, 54, 114, 90, 143, 188, 171, 249, 138, 149, 30, 55, 41, 165, 149, 151, 18, 133, 71, 44, 240] }, InnerOp { hash: Sha256, prefix: [44, 172, 229, 68, 164, 226, 204, 2, 32, 117, 215, 222, 4, 202, 102, 137, 169, 69, 241, 177, 131, 190, 113, 215, 53, 119, 36, 143, 10, 194, 184, 229, 40, 186, 136, 74, 102, 64, 98, 81, 245, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [46, 194, 216, 145, 1, 170, 226, 204, 2, 32], suffix: [32, 37, 105, 85, 64, 252, 191, 87, 52, 175, 237, 44, 95, 186, 124, 104, 111, 251, 136, 156, 163, 233, 190, 108, 156, 11, 73, 156, 97, 176, 242, 102, 95] }, InnerOp { hash: Sha256, prefix: [48, 172, 151, 204, 1, 170, 226, 204, 2, 32, 250, 126, 17, 22, 176, 80, 70, 250, 246, 240, 79, 239, 77, 16, 181, 67, 228, 176, 138, 162, 73, 152, 23, 55, 244, 9, 225, 70, 90, 52, 36, 158, 32], suffix: [] }, InnerOp { hash: Sha256, prefix: [50, 144, 141, 238, 2, 170, 226, 204, 2, 32], suffix: [32, 134, 55, 85, 223, 179, 121, 122, 30, 234, 111, 145, 211, 61, 137, 48, 206, 237, 127, 149, 158, 62, 205, 10, 112, 146, 87, 231, 170, 231, 11, 228, 169] }] })) }, CommitmentProof { proof: Some(Exist(ExistenceProof { key: [105, 98, 99], value: [145, 143, 191, 235, 115, 216, 185, 13, 229, 168, 59, 168, 164, 67, 83, 55, 247, 47, 7, 222, 194, 87, 16, 75, 9, 212, 80, 242, 252, 214, 87, 171], leaf: Some(LeafOp { hash: Sha256, prehash_key: NoHash, prehash_value: Sha256, length: VarProto, prefix: [0] }), path: [InnerOp { hash: Sha256, prefix: [1, 90, 94, 99, 68, 171, 137, 80, 52, 9, 244, 30, 232, 67, 173, 82, 66, 38, 164, 144, 180, 124, 107, 35, 26, 53, 183, 12, 144, 185, 171, 7, 141], suffix: [] }, InnerOp { hash: Sha256, prefix: [1], suffix: [52, 26, 226, 59, 186, 15, 147, 72, 18, 150, 119, 208, 53, 70, 67, 91, 89, 251, 78, 180, 243, 238, 10, 204, 85, 99, 32, 34, 179, 134, 252, 41] }, InnerOp { hash: Sha256, prefix: [1, 246, 34, 84, 247, 222, 175, 109, 217, 6, 218, 166, 247, 71, 216, 194, 2, 50, 6, 92, 38, 139, 68, 151, 42, 19, 28, 117, 72, 115, 191, 250, 228], suffix: [] }, InnerOp { hash: Sha256, prefix: [1, 15, 148, 12, 208, 216, 240, 39, 101, 148, 213, 12, 6, 35, 187, 169, 7, 203, 209, 162, 200, 253, 119, 102, 16, 34, 15, 8, 7, 69, 42, 212, 3], suffix: [] }, InnerOp { hash: Sha256, prefix: [1], suffix: [63, 170, 167, 32, 121, 208, 120, 21, 141, 218, 22, 170, 30, 36, 199, 136, 140, 121, 150, 52, 12, 194, 223, 73, 197, 59, 78, 55, 144, 146, 219, 188] }, InnerOp { hash: Sha256, prefix: [1], suffix: [111, 101, 171, 72, 156, 169, 146, 17, 50, 87, 50, 157, 184, 36, 78, 79, 200, 94, 146, 162, 206, 139, 115, 160, 180, 158, 147, 24, 104, 216, 210, 81] }] })) }] }, proof_height_on_b: Height { revision: 5, height: 2726039 }, signer: "cosmos000000000000000000000000000000000000000" }
2023-09-18T03:57:07.502317Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=1}:Acknowledgement{chan_id=channel-0 seq=1}: jmt: key=b"channelEnds/ports/transfer/channels/channel-0" key_hash=KeyHash("2cd9b4237d71e79029c2e137b313e7f955876d752797c57644e1dd6df18c0d0d")
2023-09-18T03:57:07.502362Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=1}:Acknowledgement{chan_id=channel-0 seq=1}: jmt: key=b"connections/connection-0" key_hash=KeyHash("27fcae615d5b65ce6cc391a075c5502af40015fd444dc7243feec75713a50982")
2023-09-18T03:57:07.502398Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=1}:Acknowledgement{chan_id=channel-0 seq=1}: jmt: key=b"commitments/ports/transfer/channels/channel-0/sequences/1" key_hash=KeyHash("45e2fb77fada22d9c1f2635f5317cff4eaef6ac0d1ba8625b4399e242fa53fc8")
2023-09-18T03:57:07.502466Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=1}:Acknowledgement{chan_id=channel-0 seq=1}: jmt: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-09-18T03:57:07.502506Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=1}:Acknowledgement{chan_id=channel-0 seq=1}: jmt: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-09-18T03:57:07.502544Z DEBUG abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}:execute:IbcAction{idx=1}:Acknowledgement{chan_id=channel-0 seq=1}: penumbra_ibc::component::proof_verification: root=MerkleRoot { hash: [64, 85, 57, 96, 45, 208, 146, 215, 6, 128, 213, 240, 251, 63, 95, 253, 39, 226, 211, 87, 136, 113, 65, 94, 82, 228, 216, 168, 255, 43, 118, 80] } merkle_path=MerklePath { key_path: ["ibc", "acks/ports/transfer/channels/channel-1677/sequences/1"] } value="0a2008f7557ed51826fe18d84512bf24ec75001edbaf2123a477df72a0a9f3640a7c"
2023-09-18T03:57:07.502582Z  INFO abci:CheckTx{kind=New txid="9ec3ddada7814c2494a89177cdb847ba1ea4766d865748ca41e0c5846272515f"}: pd::mempool: tx rejected e=merkle proof verification failed elapsed=3.270917ms

@hdevalence
Copy link
Member Author

hdevalence commented Sep 18, 2023

The proof verification failure was caused by passing wrongly encoded data. Transfers back do seem to work:

     Running `target/release/pcli -n 'http://localhost:8080' view balance --by-note`
Scanning blocks from last sync height 536 to latest height 552
[0s] ██████████████████████████████████████████████████      16/16      313/s ETA: 0s
 Account  Amount
 (snipped)
 0        1000test_usd
 0        1000penumbra
 1        104transfer/channel-0/uosmo
 2        50penumbra
 2        200upenumbra

https://testnet.mintscan.io/osmosis-testnet/txs/896C7E3A2525FAFBFC27BB30F597CEF56CDFFD71A56783BE595FE04CDBF08747
https://testnet.mintscan.io/osmosis-testnet/txs/B7CE2DE278A28E1D4564E25C17E31F991A5BE41CB90DA359C5E0620AF851CC12
https://testnet.mintscan.io/osmosis-testnet/txs/C8EBF55C86180BA763323474DCFD779C5C153A622EA8A5D950331510B0F6D7B6

However, Hermes still reports errors:

2023-09-18T04:20:33.585915Z ERROR ThreadId(25) worker.batch{chain=penumbra-testnet-tethys-08fd982a}:supervisor.handle_batch{chain=penumbra-testnet-tethys-08fd982a}:supervisor.process_batch{chain=penumbra-testnet-tethys-08fd982a}:worker.packet.cmd{src_chain=penumbra-testnet-tethys-08fd982a src_port=transfer src_channel=channel-0 dst_chain=osmo-test-5}:relay{odata=15b11be4 ->Destination @0-540; len=1}:send_messages_and_wait_check_tx{chain=osmo-test-5 tracking_id=15b11be4}:send_tx_with_account_sequence_retry{chain=osmo-test-5 account.sequence=76}: failed to broadcast tx with unrecoverable error response=Response { code: Err(16), data: b"", log: "ack bytes cannot be empty: invalid acknowledgement", hash: Hash::Sha256(36BBF179F9C5FFF7E9D4907256DD4E42F2EFC8EC2052C62688B78FA2E61AE748) } diagnostic=unknown TX sync response error: 16

Presumably this indicates there's something wrong with our Acks.

@hdevalence hdevalence temporarily deployed to smoke-test September 18, 2023 04:29 — with GitHub Actions Inactive
@avahowell avahowell marked this pull request as ready for review September 19, 2023 21:35
@avahowell
Copy link
Contributor

avahowell commented Sep 20, 2023

the lingering issue with IBC acks is resolved now (see: https://testnet.mintscan.io/osmosis-testnet/txs/0ACF4B4EDF255770E6D9A93351B64919DBC614C22C66EF3572B25C75D914E48F?height=2756107); it was caused by us not using similar encoding/decoding logic in ibc events for the packet_ack{_hex} event as packet_data{_hex}. This was resolved in ibc-types 0.6.2. I think this PR should be good to merge now.

@hdevalence hdevalence changed the title [WIP]: spike on exercising ICS20 transfers to the Osmosis testnet with Hermes Spike on exercising ICS20 transfers to the Osmosis testnet with Hermes Sep 20, 2023
@hdevalence
Copy link
Member Author

Looks like we need to rebase this?

@avahowell avahowell temporarily deployed to smoke-test September 20, 2023 16:04 — with GitHub Actions Inactive
@avahowell avahowell temporarily deployed to smoke-test September 20, 2023 16:33 — with GitHub Actions Inactive
@avahowell avahowell merged commit 4cd7c3e into main Sep 20, 2023
7 of 8 checks passed
@avahowell avahowell deleted the hermes-osmo-test-5-spike branch September 20, 2023 17:00
conorsch added a commit that referenced this pull request Sep 27, 2023
Captures the detailed steps from PR [0] and records them in the
developer documentation, so that more of the team can tinker
with IBC functionality.

[0] #3043

Closes #3062.
hdevalence pushed a commit that referenced this pull request Sep 29, 2023
Captures the detailed steps from PR [0] and records them in the
developer documentation, so that more of the team can tinker
with IBC functionality.

[0] #3043

Closes #3062.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants