Noble is a Cosmos application-specific blockchain (or "appchain") that provides native asset issuance for the Cosmos ecosystem. USDC is natively issued on Noble and can be transferred via the Inter-Blockchain Communication Protocol (IBC) to other supported appchains in Cosmos, or via CCTP to any supported domain (for example, Ethereum).
Note that there are key differences between Cosmos appchains like Noble and EVM-compatible blockchains. Unlike on EVM chains where CCTP is a set of smart contracts, CCTP on Noble is a Cosmos SDK module, which is deployed by Noble governance and built into the Noble blockchain. Cosmos appchains can use IBC to build composable flows with CCTP on Noble.
Chain | Domain | Address |
---|---|---|
Noble | 4 | noble12l2w4ugfz4m6dd73yysz477jszqnfughxvkss5 |
CCTP on Noble source code is available on GitHub. The full message spec is defined at noble-cctp/x/cctp/spec/02_messages.md. The interface below serves as a reference for permissionless messaging functions exposed by the module.
Message: MsgDepositForBurn
Broadcast a transaction that deposits for burn to a provided domain.
Arguments:
Amount
- The burn amountDestinationDomain
- Domain of destination chainMintRecipient
- address receiving minted tokens on destination chain as a 32
length byte arrayBurnToken
- The burn token address on source domainMessage:MsgDepositForBurnWithCaller
Broadcast a transaction that deposits for burn with caller to a provided domain.
This message wraps MsgDepositForBurn
. It adds one extra argument,
destinationCaller
.
Arguments:
Amount
- The burn amountDestinationDomain
- Domain of destination chainMintRecipient
- address receiving minted tokens on destination chain as a 32
length byte arrayBurnToken
- The burn token address on source domainDestinationCaller
- authorized caller as 32 length byte array of
receiveMessage() on destination domainMessage: MsgReplaceDepositForBurn
Broadcast a transaction that replaces a deposit for burn message. Replace the
mint recipient and/or
destination caller.
Allows the sender of a previous BurnMessage (created by depositForBurn or
depositForBurnWithCaller)
to send a new BurnMessage to replace the original. The new BurnMessage will
reuse the amount and
burn token of the original without requiring a new deposit.
Arguments:
OriginalMessage
- original message bytes to replaceOriginalAttestation
- attestation bytes of OriginalMessage
NewDestinationCaller
- the new destination caller, which may be theNewMintRecipient
- the new mint recipient. May be the same as theMessage: MsgReceiveMessage
Broadcast a transaction that receives a provided message from another domain. After validation, it performs a mint.
Arguments:
message
Message Formatattestation
- Concatenated 65-byte signature(s) of message
, in increasing
orderMessage:MsgSendMessage
Broadcast a transaction that sends a message to a provided domain.
Arguments:
DestinationDomain
- Domain of destination chainRecipient
- Address of message recipient on destination chainMessageBody
- Raw bytes content of messageMessage:MsgSendMessageWithCaller
Broadcast a transaction that sends a message with a caller to a provided domain.
Specifying a Destination caller requires that only the specified caller can call
receiveMessage()
on destination domain.
This message wraps SendMessage
It adds one extra argument,
DestinationCaller
.
Arguments:
DestinationDomain
- Domain of destination chainRecipient
- Address of message recipient on destination chainMessageBody
- Raw bytes content of messageDestinationCaller
- caller on the destination domain, as 32 length byte
arrayMessage: MsgReplaceMessage
Broadcast a transaction that replaces a provided message. Replace the message body and/or destination caller.
Arguments:
OriginalMessage
- original message bytes to replaceOriginalAttestation
- attestation bytes of OriginalMessage
NewMessageBody
- new message body of replaced messageNewDestinationCaller
- the new destination caller, which may be the same as
the original destination caller, a new destination caller, or an empty
destination caller, indicating that any destination caller is valid.