Description
The Warp precompile currently supports getVerifiedWarpMessage
, which will verify that a warp message was signed by a threshold of the source blockchainID's validator set. The address-to-address payload type specifies a destinationChainID
as well, and the current implementation does not require that the destinationChainID
matches the actual blockchainID
of the blockchain receiving this message.
The motivation for this was to support Anycast messages in a lightweight way and defer verification of the destinationChainID
to the caller.
This ticket is a feature request to support a more explicit "safe" version of getVerifiedWarpMessage
that does this check for you and separates the Anycast and explicit destination handler functions.
Specifically, this proposes that we break it down into two functions:
getVerifiedWarpMessage
which verifies thedestinationChainID
matches the receiving chain'sblockchainID
getAnyCastVerifiedWarpMessage
which verifies thedestinationChainID
is exactly theAnycastChainID
defined in AvalancheGo (or alternatively keeps the current behavior of deferring to the caller to allow anyblockchainID
is specified for thedestinationChainID