darwinia-network / bridger

Relayer client implementation for Darwinia LCMP protocols.
https://rust-docs.darwinia.network/bridger
GNU General Public License v3.0
12 stars 10 forks source link

Read latest delivery state from target chain #585

Closed fewensa closed 1 year ago

fewensa commented 1 year ago

Read latest delivery state from target chain, Avoid sending duplicate transactions after restart. https://github.com/darwinia-network/bridger/blob/52979df23f8b7101de8a5792fb918875902dc7bf/assistants/relay-s2s/src/message/common/delivery_relay.rs#L81

hackfisher commented 1 year ago
2023-06-20 08:01:50 ERROR bin-s2s: [message-relay] [darwinia-to-crab] an error occurred for message delivery relay Relay(Client(RPC("Rpc(ClientError(Call(Custom(ErrorObject { code: ServerError(1010), message: \"Invalid Transaction\", data: Some(RawValue(\"Transaction is outdated\")) }))))")))

Not checking relayed messages on target chain could cause above stale tx.

Ref: https://github.com/darwinia-network/darwinia-messages-substrate/blob/e5d24b2fa56abf512fe944a7ab22ecd21f0eed66/runtime-common/src/messages_extension.rs#L58-L68

fewensa commented 1 year ago

As a result, the account is temporarily banned to sending transactions, which causes all delivery such as header relay to stop