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

Tracking issue: MVP IBC Relayer infrastructure #465

Closed
10 of 12 tasks
hdevalence opened this issue Mar 2, 2022 · 15 comments
Closed
10 of 12 tasks

Tracking issue: MVP IBC Relayer infrastructure #465

hdevalence opened this issue Mar 2, 2022 · 15 comments
Assignees
Labels
A-IBC Area: IBC integration with Penumbra C-design Category: work on the design of Penumbra E-medium Effort: Medium

Comments

@hdevalence
Copy link
Member

hdevalence commented Mar 2, 2022

Overview

In order to relay IBC packets into Penumbra, we need a way to include the packets in transactions (#464), but we also need software that relayers can run to actually create those transactions.

What does this entail? TBD: let's figure this out (cc: @jackzampolin)

Next steps

@hdevalence hdevalence added A-IBC Area: IBC integration with Penumbra E-medium Effort: Medium C-design Category: work on the design of Penumbra labels Mar 2, 2022
@avahowell avahowell self-assigned this Apr 25, 2022
@zbuc
Copy link
Member

zbuc commented Jul 29, 2022

Acceptance criteria: Relayer can execute a full chain of IBC actions, relayer code merged upstream & Strangelove responsible for maintenance

@redshiftzero
Copy link
Member

Next step here is to use the go buf build process

@conorsch
Copy link
Contributor

@avahowell Could you provide an update here about where things stand on the Relayer work?

@conorsch
Copy link
Contributor

Update from sync today: still untangling gnarly protobuf build logic. Latest WIP PR is here: penumbra-zone/relayer#2 @avahowell will continue to consult with SL folks and drive progress forward. See relevant discussion in https://discord.com/channels/824484045370818580/930154881040404480/1067611197970595932 Work will continue past shipping #1877.

@conorsch
Copy link
Contributor

conorsch commented Feb 3, 2023

Based on discussion yesterday, we consider this blocked until #1867 is resolved.

@conorsch
Copy link
Contributor

Moved to future column; we'll return to this in a few sprints.

@conorsch
Copy link
Contributor

@avahowell For clarity's sake, could you update the OP on this ticket to make it into a epic, with cross-links to other (potentially blocking) issues related to IBC?

@conorsch conorsch self-assigned this Feb 24, 2023
@conorsch
Copy link
Contributor

Updated the OP with checkboxes to track related work. Took a first look at rebasing, and it worked surprisingly well. Currently encountering a problem related to our use of lens in our WIP branch; lens was just removed from the relayer dependencies last week, and the SL folks advise that we not re-add it as a dependency. I'll take a look at the chain implementation docs, and connect with SL for more pointers.

@conorsch
Copy link
Contributor

conorsch commented Mar 9, 2023

Updated OP with #2123, since the good folks at SL are going to tackle the the golang codegen part on their next sprint.

@conorsch conorsch removed the blocked label Mar 9, 2023
@avahowell
Copy link
Contributor

avahowell commented Mar 13, 2023

Current status:

Next steps:

@erwanor
Copy link
Member

erwanor commented Mar 23, 2023

Good progress made this sprint, need sync'ing with SL tomorrow.

@hdevalence
Copy link
Member Author

hdevalence commented Mar 25, 2023

Updating the current state of play:

Depending on which chain is "first" in the path, there will be different sequences of messages sent to each chain. I noticed that the failures were happening on the remote testnet-preview chain, which wasn't printing logs in my terminal, so I used rly to make another path with the order reversed, and called it penumbra_path_rev.

The current status is this output:

`pd` log output
2023-03-25T04:15:08.495767Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:check_stateful: key=b"sct/valid_anchors/29fba254df84ec4662435b6229f714a4b1211a3a359218460aaedf06b3a31212" key_hash=KeyHash("d71cd609df6d085c015be51083de4110f20a28fb7b063306cfd20178f6dd2cd1")
2023-03-25T04:15:08.495817Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:check_stateful: anchor is valid anchor=Root(29fba254df84ec4662435b6229f714a4b1211a3a359218460aaedf06b3a31212) anchor_height=867
2023-03-25T04:15:08.495818Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:check_stateless:valid_binding_signature: bvk=VerificationKey<Binding>("0000000000000000000000000000000000000000000000000000000000000000") auth_hash=AuthHash("e34885efa7ceb636d89fb1bfe5109b7587cea0d2fdd777e5951246923139e42f")
2023-03-25T04:15:08.495828Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:check_stateful: key=b"fmd_parameters/previous" key_hash=KeyHash("e6f6c68e4d4435835f1a61aee15200b2833f7688ff36de0cdeb88d5efdb881b5")
2023-03-25T04:15:08.495907Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:check_stateful: key=b"fmd_parameters/current" key_hash=KeyHash("3a526e6eef60922309324f4621abf9d874aaf003981f8c7e6f7a27a367667379")
2023-03-25T04:15:08.495964Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:check_stateful: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-03-25T04:15:08.496122Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"clients/07-tendermint-1/consensusStates/0-1595" key_hash=KeyHash("387cad07110e7cb065665eb76581d2dbb05f8919312fc4663bb0b4655e2f86e1")
2023-03-25T04:15:08.496157Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: msg=MsgUpdateClient { client_id: ClientId("07-tendermint-1"), header: Any { type_url: "/ibc.lightclients.tendermint.v1.Header", value: [10, 204, 5, 10, 166, 3, 10, 2, 8, 11, 18, 31, 112, 101, 110, 117, 109, 98, 114, 97, 45, 116, 101, 115, 116, 110, 101, 116, 45, 99, 97, 114, 109, 101, 45, 48, 97, 101, 48, 102, 52, 97, 101, 24, 187, 12, 34, 12, 8, 197, 234, 249, 160, 6, 16, 230, 133, 219, 153, 3, 42, 72, 10, 32, 54, 109, 167, 169, 205, 185, 20, 51, 176, 84, 137, 124, 210, 65, 106, 28, 86, 13, 104, 226, 103, 246, 8, 65, 64, 158, 224, 4, 89, 154, 248, 45, 18, 36, 8, 1, 18, 32, 232, 83, 111, 66, 237, 80, 94, 253, 109, 45, 100, 187, 35, 111, 79, 18, 8, 246, 161, 115, 95, 36, 170, 206, 185, 111, 35, 78, 159, 192, 193, 30, 50, 32, 190, 147, 119, 187, 242, 20, 28, 51, 83, 220, 238, 200, 31, 87, 103, 131, 100, 128, 73, 54, 240, 179, 232, 126, 46, 244, 113, 12, 95, 51, 242, 132, 58, 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, 66, 32, 251, 229, 226, 182, 102, 35, 62, 238, 201, 0, 21, 24, 75, 110, 59, 136, 40, 75, 57, 222, 12, 36, 142, 10, 129, 109, 111, 209, 135, 128, 189, 126, 74, 32, 251, 229, 226, 182, 102, 35, 62, 238, 201, 0, 21, 24, 75, 110, 59, 136, 40, 75, 57, 222, 12, 36, 142, 10, 129, 109, 111, 209, 135, 128, 189, 126, 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, 117, 75, 195, 171, 57, 114, 219, 27, 207, 140, 107, 221, 191, 252, 229, 199, 127, 207, 208, 165, 90, 181, 25, 9, 15, 142, 35, 195, 9, 28, 95, 90, 98, 32, 110, 52, 11, 156, 255, 179, 122, 152, 156, 165, 68, 230, 187, 120, 10, 44, 120, 144, 29, 63, 179, 55, 56, 118, 133, 17, 163, 6, 23, 175, 160, 29, 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, 94, 165, 15, 222, 112, 231, 162, 96, 125, 14, 215, 214, 216, 79, 184, 209, 31, 78, 224, 251, 18, 160, 2, 8, 187, 12, 26, 72, 10, 32, 238, 225, 58, 122, 106, 29, 19, 160, 145, 44, 231, 185, 174, 178, 166, 215, 144, 11, 89, 195, 23, 220, 226, 115, 191, 238, 117, 90, 197, 79, 190, 179, 18, 36, 8, 1, 18, 32, 45, 23, 13, 168, 125, 72, 151, 1, 201, 131, 31, 175, 42, 124, 130, 138, 48, 13, 196, 96, 11, 126, 1, 37, 28, 38, 177, 219, 177, 229, 111, 5, 34, 104, 8, 2, 18, 20, 94, 165, 15, 222, 112, 231, 162, 96, 125, 14, 215, 214, 216, 79, 184, 209, 31, 78, 224, 251, 26, 12, 8, 203, 234, 249, 160, 6, 16, 211, 138, 183, 130, 1, 34, 64, 133, 123, 10, 221, 185, 226, 52, 251, 56, 56, 207, 7, 165, 9, 133, 48, 144, 78, 144, 203, 75, 52, 153, 210, 160, 216, 176, 43, 138, 54, 194, 170, 28, 207, 157, 99, 196, 112, 105, 32, 122, 222, 179, 62, 37, 238, 122, 133, 103, 121, 59, 193, 29, 17, 95, 79, 190, 253, 247, 69, 198, 98, 110, 7, 34, 103, 8, 2, 18, 20, 192, 71, 131, 1, 237, 63, 35, 76, 179, 14, 128, 182, 152, 90, 175, 126, 212, 201, 74, 55, 26, 11, 8, 203, 234, 249, 160, 6, 16, 179, 172, 171, 85, 34, 64, 231, 163, 109, 145, 6, 196, 51, 200, 107, 151, 59, 236, 163, 168, 91, 123, 26, 69, 20, 248, 240, 149, 203, 179, 33, 129, 203, 63, 227, 70, 49, 71, 174, 125, 138, 69, 158, 234, 33, 68, 176, 63, 229, 245, 75, 91, 71, 107, 215, 143, 155, 9, 122, 238, 95, 111, 145, 139, 241, 74, 225, 7, 187, 12, 18, 233, 1, 10, 75, 10, 20, 94, 165, 15, 222, 112, 231, 162, 96, 125, 14, 215, 214, 216, 79, 184, 209, 31, 78, 224, 251, 18, 34, 10, 32, 187, 102, 112, 34, 122, 101, 62, 134, 38, 110, 162, 133, 72, 57, 4, 39, 103, 141, 93, 240, 113, 58, 118, 206, 44, 226, 108, 188, 246, 100, 153, 41, 24, 158, 170, 242, 144, 93, 32, 226, 213, 141, 239, 162, 255, 255, 255, 255, 1, 10, 70, 10, 20, 192, 71, 131, 1, 237, 63, 35, 76, 179, 14, 128, 182, 152, 90, 175, 126, 212, 201, 74, 55, 18, 34, 10, 32, 106, 193, 189, 196, 225, 14, 66, 10, 35, 10, 92, 58, 150, 95, 40, 14, 94, 112, 237, 86, 44, 38, 178, 22, 39, 142, 132, 195, 12, 87, 224, 37, 24, 158, 170, 242, 144, 93, 32, 158, 170, 242, 144, 93, 18, 75, 10, 20, 94, 165, 15, 222, 112, 231, 162, 96, 125, 14, 215, 214, 216, 79, 184, 209, 31, 78, 224, 251, 18, 34, 10, 32, 187, 102, 112, 34, 122, 101, 62, 134, 38, 110, 162, 133, 72, 57, 4, 39, 103, 141, 93, 240, 113, 58, 118, 206, 44, 226, 108, 188, 246, 100, 153, 41, 24, 158, 170, 242, 144, 93, 32, 226, 213, 141, 239, 162, 255, 255, 255, 255, 1, 24, 188, 212, 228, 161, 186, 1, 26, 3, 16, 183, 12, 34, 205, 1, 10, 64, 10, 20, 94, 165, 15, 222, 112, 231, 162, 96, 125, 14, 215, 214, 216, 79, 184, 209, 31, 78, 224, 251, 18, 34, 10, 32, 187, 102, 112, 34, 122, 101, 62, 134, 38, 110, 162, 133, 72, 57, 4, 39, 103, 141, 93, 240, 113, 58, 118, 206, 44, 226, 108, 188, 246, 100, 153, 41, 24, 158, 170, 242, 144, 93, 10, 64, 10, 20, 192, 71, 131, 1, 237, 63, 35, 76, 179, 14, 128, 182, 152, 90, 175, 126, 212, 201, 74, 55, 18, 34, 10, 32, 106, 193, 189, 196, 225, 14, 66, 10, 35, 10, 92, 58, 150, 95, 40, 14, 94, 112, 237, 86, 44, 38, 178, 22, 39, 142, 132, 195, 12, 87, 224, 37, 24, 158, 170, 242, 144, 93, 18, 64, 10, 20, 192, 71, 131, 1, 237, 63, 35, 76, 179, 14, 128, 182, 152, 90, 175, 126, 212, 201, 74, 55, 18, 34, 10, 32, 106, 193, 189, 196, 225, 14, 66, 10, 35, 10, 92, 58, 150, 95, 40, 14, 94, 112, 237, 86, 44, 38, 178, 22, 39, 142, 132, 195, 12, 87, 224, 37, 24, 158, 170, 242, 144, 93, 24, 188, 212, 228, 161, 186, 1] }, signer: Signer("penumbrav2t17pjav3wkeqh3r2y3yg4hzhewk3wm847k9pw3ct") }
2023-03-25T04:15:08.540326Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"clients/07-tendermint-1/clientType" key_hash=KeyHash("50bd83110077195f5205c183fa2a2e307fda1dfc750823fb4da7b83c8233c351")
2023-03-25T04:15:08.540418Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"clients/07-tendermint-1/clientState" key_hash=KeyHash("b6ec07936f3f3d401065bbd7be3fd6fcd8d15fc30615e59f14b233c3d412a0bc")
2023-03-25T04:15:08.540504Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"clients/07-tendermint-1/consensusStates/0-1591" key_hash=KeyHash("1a5ccbdce7e392d131e233acd946715a57e1cc50c122054921feebee94f16ff7")
2023-03-25T04:15:08.540554Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-03-25T04:15:08.540660Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"clients/07-tendermint-1/consensusStates/0-1591" key_hash=KeyHash("1a5ccbdce7e392d131e233acd946715a57e1cc50c122054921feebee94f16ff7")
2023-03-25T04:15:08.540702Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-03-25T04:15:08.541213Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"clients/07-tendermint-1/clientState" key_hash=KeyHash("b6ec07936f3f3d401065bbd7be3fd6fcd8d15fc30615e59f14b233c3d412a0bc")
2023-03-25T04:15:08.541247Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"clients/07-tendermint-1/consensusStates/0-1595" key_hash=KeyHash("387cad07110e7cb065665eb76581d2dbb05f8919312fc4663bb0b4655e2f86e1")
2023-03-25T04:15:08.541282Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"penumbra_verified_heights/07-tendermint-1/verified_heights" key_hash=KeyHash("e61270196a89fc5ada5a796f5943f8b99580e90f3603ddd0eb96f8593c884401")
2023-03-25T04:15:08.541402Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"penumbra_verified_heights/07-tendermint-1/verified_heights" key_hash=KeyHash("e61270196a89fc5ada5a796f5943f8b99580e90f3603ddd0eb96f8593c884401")
2023-03-25T04:15:08.541428Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"clients/07-tendermint-1/consensusStates/0-73" key_hash=KeyHash("36cb4ddeec754f4ba3da903fb41491dc99bd971ef0ee72df7590cb69e9a803e5")
2023-03-25T04:15:08.541639Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-03-25T04:15:08.541675Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"block_timestamp" key_hash=KeyHash("b6059f1c6391dc3d8e1b7aa6f33664355dfaa06358f9833d320da31c859356fb")
2023-03-25T04:15:08.541709Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=0}:UpdateClient{client_id=07-tendermint-1}: key=b"penumbra_verified_heights/07-tendermint-1/verified_heights" key_hash=KeyHash("e61270196a89fc5ada5a796f5943f8b99580e90f3603ddd0eb96f8593c884401")
2023-03-25T04:15:08.541765Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: msg=MsgConnectionOpenAck { conn_id_on_a: ConnectionId("connection-16"), conn_id_on_b: ConnectionId("connection-15"), client_state_of_a_on_b: Any { type_url: "/ibc.lightclients.tendermint.v1.ClientState", value: [10, 37, 112, 101, 110, 117, 109, 98, 114, 97, 45, 116, 101, 115, 116, 110, 101, 116, 45, 99, 97, 114, 109, 101, 45, 108, 111, 99, 97, 108, 45, 57, 57, 50, 56, 102, 54, 55, 52, 18, 4, 8, 1, 16, 3, 26, 3, 8, 160, 56, 34, 3, 8, 192, 112, 42, 3, 8, 216, 4, 50, 0, 58, 3, 16, 182, 12, 66, 39, 10, 21, 8, 1, 16, 1, 24, 1, 42, 13, 74, 77, 84, 58, 58, 76, 101, 97, 102, 78, 111, 100, 101, 18, 12, 10, 2, 0, 1, 16, 32, 24, 16, 32, 48, 48, 1, 24, 64, 66, 16, 10, 2, 8, 1, 18, 8, 10, 2, 0, 1, 16, 32, 48, 1, 24, 1, 74, 7, 117, 112, 103, 114, 97, 100, 101, 74, 16, 117, 112, 103, 114, 97, 100, 101, 100, 73, 66, 67, 83, 116, 97, 116, 101, 80, 1, 88, 1] }, proof_conn_end_on_b: CommitmentProof("0AE6060AE3060A19636F6E6E656374696F6E732F636F6E6E656374696F6E2D3135126D0A0F30372D74656E6465726D696E742D3112230A0131120D4F524445525F4F524445524544120F4F524445525F554E4F524445524544180222330A0F30372D74656E6465726D696E742D31120D636F6E6E656374696F6E2D31361A110A0F50656E756D627261417070486173681A150801100118012A0D4A4D543A3A4C6561664E6F64652234080112304A4D543A3A496E74726E616C4E6F646531747AD4766C825F18098D8670E99CAADBD863EA8809E65A3A568E63DBD4C5D02234080112304A4D543A3A496E74726E616C4E6F6465A00DD164485858AC5C6D40E677EA82F855813867670D5821D9357A0222FE900A2234080112304A4D543A3A496E74726E616C4E6F6465853FB6671CAE49F5B7D1FC60B8503D1AF83A17E7377496B80587C6A8F5CE04D12234080112304A4D543A3A496E74726E616C4E6F6465F09770ADC02CBCBC063F4EAA75CE8230C06832DC763978FBC7E9137C34DB9C6D2234080112304A4D543A3A496E74726E616C4E6F64654C2C13C9737019298F5E408726DA4AB04835EA802ACB7790946983850023478A2236080112104A4D543A3A496E74726E616C4E6F64651A200E7404D38C8BA2DB53FF423E6DDB85BAB6409D46D5818D11AEB449B49AF9D4272234080112304A4D543A3A496E74726E616C4E6F6465FD4871DE2C250F3CCB89FEBA022F5CA8034F5C5DBE212570B0A96A1633621DA02234080112304A4D543A3A496E74726E616C4E6F646537192F91E044A40B85A358FBAEE3520D4C0CA0571E1F2DDF5439E094E0844F012234080112304A4D543A3A496E74726E616C4E6F6465C7EA181F29162ABBF32F9A8FA7D63C2C242647773CB00E1A0344BCB37B01F86F2234080112304A4D543A3A496E74726E616C4E6F64659FA8F0E1BDB716ACF08034544B220D9EE5C94998B282AE55520A9FDA1BBACAEC2236080112104A4D543A3A496E74726E616C4E6F64651A2040879CFBEE9BFA87F98293019A3A1371D0F9E8E699E42E099E1ADE8175E23BF92234080112304A4D543A3A496E74726E616C4E6F6465A78B901F5A4C59A684D2F4AA455894C05464E058D7CD8CE123651D475F63F60A2234080112304A4D543A3A496E74726E616C4E6F64655741C5CAAE8D7B60CA412A3B68A12A65B1CCF788E57D77B2FEFFE6B2CC9B975F0A390A370A0F50656E756D6272614170704861736812206C3D63E0633C828FA253EC2ADC69133524E804AA675D89F722F8D8D6827BD5D11A020801"), proof_client_state_of_a_on_b: CommitmentProof("0A8B080A88080A23636C69656E74732F30372D74656E6465726D696E742D312F636C69656E74537461746512CD010A2B2F6962632E6C69676874636C69656E74732E74656E6465726D696E742E76312E436C69656E745374617465129D010A2570656E756D6272612D746573746E65742D6361726D652D6C6F63616C2D39393238663637341204080110031A0308A038220308C0702A0308D80432003A0310B60C42270A150801100118012A0D4A4D543A3A4C6561664E6F6465120C0A0200011020181020303001184042100A02080112080A0200011020300118014A07757067726164654A1075706772616465644942435374617465500158011A150801100118012A0D4A4D543A3A4C6561664E6F64652234080112304A4D543A3A496E74726E616C4E6F6465D866C4A2AE1280FB3E1ACBC241214537A954FF2432A5DB3F8D0ACCC59ED832752234080112304A4D543A3A496E74726E616C4E6F64655350415253455F4D45524B4C455F504C414345484F4C4445525F484153485F5F2236080112104A4D543A3A496E74726E616C4E6F64651A20C4D518CA274A59BF9B143F1DF89C24921B302A1E42EB9032E6EAB4B58269E4732234080112304A4D543A3A496E74726E616C4E6F646591A4AD114C1721B2F73D70E9F6343B8CB776A77F5B643CE70990B1CA0D2A7DBE2234080112304A4D543A3A496E74726E616C4E6F646564A18544C28665A968E32F3F31AC76CCAF1E7B859E80CD8C009CC7054924D6812234080112304A4D543A3A496E74726E616C4E6F6465D8CE26F80E9963EEE49C4424D207833A2265AC2D1D5EDAC35ED76016255D78FC2236080112104A4D543A3A496E74726E616C4E6F64651A209EC55B329DDAE748F98CFB0EBBCAEDE04EE3FD861A10740F23EB15BDC70AF65D2234080112304A4D543A3A496E74726E616C4E6F646527B819C5EBAD520AC0700A7F3310D3F1FCD912C5E865653363920D98D7F34FD42234080112304A4D543A3A496E74726E616C4E6F6465319A6FDB7BDCF87B6A54F2AA2FF71BE358B1EDE86507DD28CED263B8AC55FF462236080112104A4D543A3A496E74726E616C4E6F64651A203546FE27CD54C95E3492F9552DC539B6BE33979890087F55D49B0A036B804F002234080112304A4D543A3A496E74726E616C4E6F6465655AB1F0DD3C6F6B7E3FEEB5F63B0F86C73E3AB9695256010834DB63AC91FD9B2234080112304A4D543A3A496E74726E616C4E6F64653836103AC0DE68D9A6510B12464E56CE9AD5EB46B3A3D281A2B6F41F5C68919B2236080112104A4D543A3A496E74726E616C4E6F64651A20CB925A23B8FF9ACED5E0726BD4F42CC5731A7A11CC9208763E184BA1920096592234080112304A4D543A3A496E74726E616C4E6F64655741C5CAAE8D7B60CA412A3B68A12A65B1CCF788E57D77B2FEFFE6B2CC9B975F0A390A370A0F50656E756D6272614170704861736812206C3D63E0633C828FA253EC2ADC69133524E804AA675D89F722F8D8D6827BD5D11A020801"), proof_consensus_state_of_a_on_b: CommitmentProof("0AFD080AFA080A2E636C69656E74732F30372D74656E6465726D696E742D312F636F6E73656E7375735374617465732F302D313539301286010A2E2F6962632E6C69676874636C69656E74732E74656E6465726D696E742E76312E436F6E73656E737573537461746512540A0C08BBEAF9A0061090DBEBC70112220A20642C80CE8BB88755FD8DCF2278B6E5A98F6A74C81BDB5BA251011041A7D22F861A20F0DEDE9DDA98DFF7C679438AEDFF35DF60873BF3A64DA4EBD6B8FABAB6BEA7751A150801100118012A0D4A4D543A3A4C6561664E6F64652234080112304A4D543A3A496E74726E616C4E6F64652D63018E2E52BF355B362B35113A02D6E1DA90F9DBD34B43B8DE939B6B800A452236080112104A4D543A3A496E74726E616C4E6F64651A208190F9ED1A31F373244E817BF2926CE8026232FEE41D4EFB443BBC0168009C3F2234080112304A4D543A3A496E74726E616C4E6F64656C4130CE20C4D2363078369EC0AB04FA5346D8021D583BAFEC934342DCBBAD5A2236080112104A4D543A3A496E74726E616C4E6F64651A202DF32445625C9935A4260061123816BFF38590826D29C0CF45A3C2B80430EC032236080112104A4D543A3A496E74726E616C4E6F64651A205350415253455F4D45524B4C455F504C414345484F4C4445525F484153485F5F2236080112104A4D543A3A496E74726E616C4E6F64651A20B8BF4568AF3464A279E5672B2CE2C1F85C6A6DE9282EF63FA00BA3248072E3662236080112104A4D543A3A496E74726E616C4E6F64651A209AD5C4CF005A7AD796BE8A1E23C4F00BB8AF9DDA25528ED7200128C2AD360F932234080112304A4D543A3A496E74726E616C4E6F64651FF8A6004C3E3D62DACDCDCBC4C8B695F2CF3D661A8414AB2ED391B4892577162234080112304A4D543A3A496E74726E616C4E6F6465D1B87BC77B06EE4016699E64F93C2E7ED24020633850FD127138F5DC533C20462234080112304A4D543A3A496E74726E616C4E6F6465F482AE9289F95ABE5AD969D763527AD0FA265961347247F9A23D538F237B70202236080112104A4D543A3A496E74726E616C4E6F64651A2050EC566A5CCE27DC696833123D1CACEA610D8449BFA374E358E12555D9AB67DF2236080112104A4D543A3A496E74726E616C4E6F64651A2066E6FF8BDB840AC4ED5F7A8A29C86579DD7B42AEA9915BE30B140B157AA1738A2234080112304A4D543A3A496E74726E616C4E6F64651A7F06B80F1C740381E0969FFAD6A927290062803E3FBCF286A1DE2413A6CDBB2236080112104A4D543A3A496E74726E616C4E6F64651A203146D728B1103D25202792D943126383E8610FC9A59543EA0D2F5111F4CE3D0A2234080112304A4D543A3A496E74726E616C4E6F646536781D72772C48CF6B114E8458EBCD7949C19A56D85508613BFA10FCFA0643402236080112104A4D543A3A496E74726E616C4E6F64651A209DB15B4C43A2ED9ACF83B831C0AA114CBA99A45D5303602B0303C15F837B82F92236080112104A4D543A3A496E74726E616C4E6F64651A209B623B6BB48CE8B5E73707C13514B29FD6DA429B354664D0E92D7AF65A6A128C0A390A370A0F50656E756D6272614170704861736812206C3D63E0633C828FA253EC2ADC69133524E804AA675D89F722F8D8D6827BD5D11A020801"), proofs_height_on_b: Height { revision: 0, height: 1595 }, consensus_height_of_a_on_b: Height { revision: 0, height: 1590 }, version: Version { identifier: "1", features: ["ORDER_ORDERED", "ORDER_UNORDERED"] }, signer: Signer("penumbrav2t17pjav3wkeqh3r2y3yg4hzhewk3wm847k9pw3ct") }
2023-03-25T04:15:08.542100Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-03-25T04:15:08.542129Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: key=b"block_height" key_hash=KeyHash("c4b4e25a8824650a238d3451f754dcda1551dec8bec1a96abe23d2ff8b454db8")
2023-03-25T04:15:08.542155Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: key=b"chain_params" key_hash=KeyHash("111493a3b144602d58199e6bc86ce9cd08f3bceebe0582f9c8d249c274480732")
2023-03-25T04:15:08.542203Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: key=b"connections/connection-15" key_hash=KeyHash("deff77df56953e383db9b1acef92dee425e8c07f6e026661cc5c14b01e5b9cb3")
2023-03-25T04:15:08.542242Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: trusted_client_state=ClientState { chain_id: ChainId { id: "penumbra-testnet-carme-0ae0f4ae", version: 0 }, trust_level: TrustThreshold { numerator: 1, denominator: 3 }, trusting_period: 7200s, unbonding_period: 14400s, max_clock_drift: 600s, latest_height: Height { revision: 0, height: 1595 }, proof_specs: ProofSpecs([ProofSpec(ProofSpec { leaf_spec: Some(LeafOp { hash: Sha256, prehash_key: Sha256, prehash_value: Sha256, length: NoPrefix, prefix: [74, 77, 84, 58, 58, 76, 101, 97, 102, 78, 111, 100, 101] }), inner_spec: Some(InnerSpec { child_order: [0, 1], child_size: 32, min_prefix_length: 16, max_prefix_length: 48, empty_child: [], hash: Sha256 }), max_depth: 64, min_depth: 0 }), ProofSpec(ProofSpec { leaf_spec: Some(LeafOp { hash: Sha256, prehash_key: NoHash, prehash_value: NoHash, length: NoPrefix, prefix: [] }), inner_spec: Some(InnerSpec { child_order: [0, 1], child_size: 32, min_prefix_length: 0, max_prefix_length: 0, empty_child: [], hash: Sha256 }), max_depth: 1, min_depth: 0 })]), upgrade_path: ["upgrade", "upgradedIBCState"], allow_update: AllowUpdate { after_expiry: true, after_misbehaviour: true }, frozen_height: None, verifier: PredicateVerifier { predicates: ProdPredicates, voting_power_calculator: ProvidedVotingPowerCalculator { _verifier: PhantomData<tendermint::crypto::default::signature::Verifier> }, commit_validator: ProdCommitValidator } }
2023-03-25T04:15:08.542270Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: msg.proofs_height_on_b=Height { revision: 0, height: 1595 }
2023-03-25T04:15:08.542299Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: counterparty_prefix=PenumbraAppHash
2023-03-25T04:15:08.542305Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: msg.proof_conn_end_on_b=CommitmentProof("0AE6060AE3060A19636F6E6E656374696F6E732F636F6E6E656374696F6E2D3135126D0A0F30372D74656E6465726D696E742D3112230A0131120D4F524445525F4F524445524544120F4F524445525F554E4F524445524544180222330A0F30372D74656E6465726D696E742D31120D636F6E6E656374696F6E2D31361A110A0F50656E756D627261417070486173681A150801100118012A0D4A4D543A3A4C6561664E6F64652234080112304A4D543A3A496E74726E616C4E6F646531747AD4766C825F18098D8670E99CAADBD863EA8809E65A3A568E63DBD4C5D02234080112304A4D543A3A496E74726E616C4E6F6465A00DD164485858AC5C6D40E677EA82F855813867670D5821D9357A0222FE900A2234080112304A4D543A3A496E74726E616C4E6F6465853FB6671CAE49F5B7D1FC60B8503D1AF83A17E7377496B80587C6A8F5CE04D12234080112304A4D543A3A496E74726E616C4E6F6465F09770ADC02CBCBC063F4EAA75CE8230C06832DC763978FBC7E9137C34DB9C6D2234080112304A4D543A3A496E74726E616C4E6F64654C2C13C9737019298F5E408726DA4AB04835EA802ACB7790946983850023478A2236080112104A4D543A3A496E74726E616C4E6F64651A200E7404D38C8BA2DB53FF423E6DDB85BAB6409D46D5818D11AEB449B49AF9D4272234080112304A4D543A3A496E74726E616C4E6F6465FD4871DE2C250F3CCB89FEBA022F5CA8034F5C5DBE212570B0A96A1633621DA02234080112304A4D543A3A496E74726E616C4E6F646537192F91E044A40B85A358FBAEE3520D4C0CA0571E1F2DDF5439E094E0844F012234080112304A4D543A3A496E74726E616C4E6F6465C7EA181F29162ABBF32F9A8FA7D63C2C242647773CB00E1A0344BCB37B01F86F2234080112304A4D543A3A496E74726E616C4E6F64659FA8F0E1BDB716ACF08034544B220D9EE5C94998B282AE55520A9FDA1BBACAEC2236080112104A4D543A3A496E74726E616C4E6F64651A2040879CFBEE9BFA87F98293019A3A1371D0F9E8E699E42E099E1ADE8175E23BF92234080112304A4D543A3A496E74726E616C4E6F6465A78B901F5A4C59A684D2F4AA455894C05464E058D7CD8CE123651D475F63F60A2234080112304A4D543A3A496E74726E616C4E6F64655741C5CAAE8D7B60CA412A3B68A12A65B1CCF788E57D77B2FEFFE6B2CC9B975F0A390A370A0F50656E756D6272614170704861736812206C3D63E0633C828FA253EC2ADC69133524E804AA675D89F722F8D8D6827BD5D11A020801")
2023-03-25T04:15:08.542396Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: trusted_consensus_state_root=CommitmentRoot("754BC3AB3972DB1BCF8C6BDDBFFCE5C77FCFD0A55AB519090F8E23C3091C5F5A")
2023-03-25T04:15:08.542402Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: connection_path=ConnectionPath(ConnectionId("connection-15"))
2023-03-25T04:15:08.542453Z DEBUG abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}:execute:IbcAction{idx=1}:ConnectionOpenAck{connection_id=connection-16}: expected_conn=ConnectionEnd { state: TryOpen, client_id: ClientId("07-tendermint-1"), counterparty: Counterparty { client_id: ClientId("07-tendermint-1"), connection_id: Some(ConnectionId("connection-16")), prefix: PenumbraAppHash }, versions: [Version { identifier: "1", features: ["ORDER_ORDERED", "ORDER_UNORDERED"] }], delay_period: 0ns }
2023-03-25T04:15:08.542915Z  INFO abci:CheckTx{kind=New txid="d22234fbef0d6d265a83c9b1fae86899366e42e4286291025f3cae909fab4878"}: tx rejected e=couldn't verify connection state

Caused by:
    0: ics23 verification failure error: `proof verification failed`
    1: proof verification failed elapsed=47.21525ms

@avahowell suspects that changes to the ICS23 proof spec may be to blame, but I'm not sure I understand why (wouldn't those block earlier parts of the handshake?).

conorsch added a commit that referenced this issue Mar 27, 2023
The images pushed to `ghcr.io/penumbra-zone/penumbra` already include
`pd` and `pcli`, but not `pclientd`. The latter will be necessary for
integration in interchain test. Refs #465.
@avahowell
Copy link
Contributor

We debugged this today and are now at the point where the relayer can successfully handshake between two chains. The previous issue was that we had a logic bug in both the connection and channel handshakes introduced after some underlying tendermint-rs changes.

The next step is to test the AcknowledgePacket, RecvPacket, and ICS-20 transfer parts of the state machine.

conorsch added a commit that referenced this issue Mar 30, 2023
There's a simpler method for bulk-adding directories of JSON chain
configs: `rly chain add-dir`, rather than `rly chain add`. This small
change allows us to drop the intermediate webserver, which was always a
hack. Encountered this while poring over docs in pursuit of #2284.
As usual, refs #465.
@zbuc zbuc changed the title MVP IBC Relayer infrastructure Tracking: MVP IBC Relayer infrastructure Mar 31, 2023
@conorsch conorsch changed the title Tracking: MVP IBC Relayer infrastructure Tracking issue: MVP IBC Relayer infrastructure Mar 31, 2023
conorsch added a commit that referenced this issue Apr 4, 2023
Towards #465. Here we define a container image that wraps the upstream
cosmos/relayer image with the custom scripting for bootstrapping clients
on the Penumbra testnet and preview networks. No other chain configs are
part of this container image as of yet. The container image will be
publicly available as `ghcr.io/penumbra-zone/relayer`. It isn't yet
deployed to the cluster: that'll come next.
conorsch added a commit that referenced this issue Apr 4, 2023
Towards #465. Here we define a container image that wraps the upstream
cosmos/relayer image with the custom scripting for bootstrapping clients
on the Penumbra testnet and preview networks. No other chain configs are
part of this container image as of yet. The container image will be
publicly available as `ghcr.io/penumbra-zone/relayer`. It isn't yet
deployed to the cluster: that'll come next.
conorsch added a commit that referenced this issue Apr 5, 2023
Towards #465. Here we define a container image that wraps the upstream
cosmos/relayer image with the custom scripting for bootstrapping clients
on the Penumbra testnet and preview networks. No other chain configs are
part of this container image as of yet. The container image will be
publicly available as `ghcr.io/penumbra-zone/relayer`. It isn't yet
deployed to the cluster: that'll come next.
conorsch added a commit that referenced this issue Apr 5, 2023
Adds a new "relayer" helm chart for deploying the custom relayer
container image for penumbra preview <-> testnet paths.

In the process, reorganizes the helm charts for ci into a subdir.

Towards #465.
conorsch added a commit that referenced this issue Apr 5, 2023
Adds a new "relayer" helm chart for deploying the custom relayer
container image for penumbra preview <-> testnet paths.

In the process, reorganizes the helm charts for ci into a subdir.

Towards #465.
conorsch added a commit that referenced this issue Apr 5, 2023
Adds a new "relayer" helm chart for deploying the custom relayer
container image for penumbra preview <-> testnet paths.

In the process, reorganizes the helm charts for ci into a subdir.

Towards #465.
@conorsch
Copy link
Contributor

conorsch commented Apr 6, 2023

We now have a relayer deployment, updated on every merge into main. Its only path is between the preview and testnet environments, and that path is destroyed and rebuilt on every deploy.

The logs on the service show a considerable number of warnings:

ts=2023-04-06T19:40:37.597175Z lvl=warn msg="Error querying block data" chain_name=penumbra-testnet chain_id=penumbra-testnet-pasiphae error="RPC error -32603 - Internal error: could not find results for height #117950"
ts=2023-04-06T19:42:02.639811Z lvl=warn msg="Error querying block data" chain_name=penumbra-testnet chain_id=penumbra-testnet-pasiphae error="RPC error -32603 - Internal error: could not find results for height #117965"
ts=2023-04-06T19:43:31.688064Z lvl=warn msg="Error querying block data" chain_name=penumbra-testnet chain_id=penumbra-testnet-pasiphae error="RPC error -32603 - Internal error: could not find results for height #117980"
ts=2023-04-06T19:45:11.745602Z lvl=warn msg="Error querying block data" chain_name=penumbra-testnet chain_id=penumbra-testnet-pasiphae error="RPC error -32603 - Internal error: could not find results for height #117997"
ts=2023-04-06T19:45:51.750684Z lvl=warn msg="Error querying block data" chain_name=penumbra-preview chain_id=penumbra-testnet-pasiphae-0305d87e error="RPC error -32603 - Internal error: could not find results for height #1620"
ts=2023-04-06T19:46:13.801224Z lvl=warn msg="Error querying block data" chain_name=penumbra-testnet chain_id=penumbra-testnet-pasiphae error="RPC error -32603 - Internal error: could not find results for height #118008"
ts=2023-04-06T19:47:27.814513Z lvl=warn msg="Error querying block data" chain_name=penumbra-preview chain_id=penumbra-testnet-pasiphae-0305d87e error="RPC error -32603 - Internal error: could not find results for height #1638"
ts=2023-04-06T19:47:59.831588Z lvl=warn msg="Error querying block data" chain_name=penumbra-preview chain_id=penumbra-testnet-pasiphae-0305d87e error="RPC error -32603 - Internal error: could not find results for height #1644"
ts=2023-04-06T19:48:15.838806Z lvl=warn msg="Error querying block data" chain_name=penumbra-preview chain_id=penumbra-testnet-pasiphae-0305d87e error="error unmarshalling: invalid character '<' looking for beginning of value"
ts=2023-04-06T19:51:38.966342Z lvl=warn msg="Error querying block data" chain_name=penumbra-preview chain_id=penumbra-testnet-pasiphae-0305d87e error="RPC error -32603 - Internal error: could not find results for height #1685"

There's also a preponderance of errors of a specific type:

❯ kubectl logs relayer-preview-55f668f9bd-rvpdh | rg 'lvl=error msg="Failed to check for misbehaviour"'  | wc -l
828

but the relayer docs say:

The relayer currently cannot monitor and submit misbehavior for clients

So that's to be expected.

@conorsch
Copy link
Contributor

conorsch commented Apr 7, 2023

Calling this done. There's still a bit more testing to do in #2284 separately, but the plumbing exists for the relayer now. Further IBC work is tracked in #454.

@conorsch conorsch closed this as completed Apr 7, 2023
conorsch added a commit that referenced this issue Apr 18, 2023
Adds some docs on maintenance tasks and common testing procedures.
Links out to information elsewhere, just making it discoverable via the
relayer README.

Refs #465, #2252.
conorsch added a commit that referenced this issue Apr 18, 2023
Adds some docs on maintenance tasks and common testing procedures.
Links out to information elsewhere, just making it discoverable via the
relayer README.

Refs #465, #2252.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-IBC Area: IBC integration with Penumbra C-design Category: work on the design of Penumbra E-medium Effort: Medium
Projects
No open projects
Status: Testnet 50: Thebe
Development

No branches or pull requests

6 participants