Skip to content

Potential Gas costs improvement for message deliveries #1408

@acatangiu

Description

@acatangiu

Right now, on Polkadot Bridge Hub, message M is only stored on-chain during one block: block q when it was enqueued to outbound queue. It is only included in messages_root_digest of block q.

BEEFY proofs are not sent to Ethereum very often because they are very expensive, so a BEEFY proof will cover a large range of [prev_BEEFY_proof, current_BEEFY_proof] blocks.

Proposal:
On Polkadot Bridge Hub keep messages in storage across multiple blocks: on-chain storage lifetime of message M: [M_enqueued, M_delivery_confirmed_and_M_pruned] == [block_q, block_p].

This means message M can be proven using any of the merkle tree root digests in [block_q, block_p] interval.

On Ethereum side, this means that M can be proved directly using the BH block included in any BEEFY proof that falls within [block_q, block_p].

This saves a step on Ethereum side to also prove that block_q is parent of block_in_current_BEEFY_proof, at the cost of extra storage use on Polkadot Bridge Hub.

It with worth noting however, that we already cover the storage "deposit" for message M in the form of the relayer reward which is locked on BH until the message delivery proof is provided (at which point we would also pruned from storage), so there is no DoS concern as long as there is a minimum relayer reward enforced.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions