Skip to content

Transceivers Program Reference (Robinhood Chain)#

The NTT Transceiver program is responsible for sending and receiving messages between chains as part of the NTT protocol on Robinhood Chain. It supports multiple verification methods and operates alongside the NTT Manager program to enable cross-chain token transfers.

Structure Overview#

The NTT Transceiver system on Robinhood Chain is implemented as a standalone Anchor program that provides Isthmus-based message verification and relay capabilities. The transceiver acts as a bridge between the NTT Manager and the Isthmus protocol, handling cross-chain message transmission and verification.

NTT Transceiver Program
├── Isthmus Integration
│   ├── Message Transmission
│   ├── Message Reception & Verification  
│   ├── Peer Management
│   └── Broadcasting Capabilities
├── Admin Functions
└── Message Processing

Key Components:

  • NTT Transceiver Program: Transmits, receives, and verifies NTT messages between chains, integrating with the Isthmus messaging layer.
  • Isthmus Integration: Enables native message transmission, reception, and verification using the Isthmus protocol.
  • Administrative Functions: Provides interfaces for setting up peer configurations and managing broadcast behavior.
  • Message Processing: Automatically processes inbound and outbound messages and forwards valid messages to the NTT Manager.

State Accounts#

TransceiverPeer account (PDA: 'transceiver_peer'): Per-chain peer entry for the Isthmus transceiver path; stores the peer transceiver address (isthmus-formatted [u8; 32]) and bump.

Instructions#

broadcast_isthmus_id#

Broadcasts the transceiver ID via Isthmus to announce presence on the network. (Defined in ntt-transceiver)

pub fn broadcast_isthmus_id(ctx: Context<BroadcastId>) -> Result<()>
Accounts

payer mut Signer

The account paying for the broadcast transaction.


config Account<Config>

The NTT Manager configuration account.


mint InterfaceAccount<Mint>

The mint account for the managed token.


isthmus_bridge mut Account<BridgeData>

The Isthmus bridge data account.


isthmus_message mut Signer

The Isthmus message account to create.


isthmus_emitter Account<EmitterData>

The Isthmus emitter account.


isthmus_sequence mut Account<SequenceData>

The Isthmus sequence tracking account.


isthmus_fee_collector mut Account<FeeCollectorData>

The Isthmus fee collector account.


clock Sysvar<Clock>

The clock sysvar.


rent Sysvar<Rent>

The rent sysvar.


system_program Program<System>

The system program.


ntt_program Program<NttProgram>

The NTT Manager program.


isthmus_program Program<IsthmusProgram>

The Isthmus core bridge program.

broadcast_isthmus_peer#

Broadcasts peer transceiver information via Isthmus. (Defined in ntt-transceiver)

pub fn broadcast_isthmus_peer(
    ctx: Context<BroadcastPeer>,
    args: BroadcastPeerArgs
) -> Result<()>
Parameters

args BroadcastPeerArgs

The broadcast peer arguments.

BroadcastPeerArgs type

chain_id ChainId

The chain ID to broadcast peer information for.

Accounts

payer mut Signer

The account paying for the broadcast transaction.


config Account<Config>

The NTT Manager configuration account.


peer Account<TransceiverPeer>

The peer transceiver account containing peer information.


isthmus_bridge mut Account<BridgeData>

The Isthmus bridge data account.


isthmus_message mut Signer

The Isthmus message account to create.


isthmus_emitter Account<EmitterData>

The Isthmus emitter account.


isthmus_sequence mut Account<SequenceData>

The Isthmus sequence tracking account.


isthmus_fee_collector mut Account<FeeCollectorData>

The Isthmus fee collector account.


clock Sysvar<Clock>

The clock sysvar.


rent Sysvar<Rent>

The rent sysvar.


system_program Program<System>

The system program.


ntt_program Program<NttProgram>

The NTT Manager program.


isthmus_program Program<IsthmusProgram>

The Isthmus core bridge program.

receive_isthmus_message#

Receives and processes an inbound message from Isthmus. (Defined in ntt-transceiver)

pub fn receive_isthmus_message(ctx: Context<ReceiveMessage>) -> Result<()>
Accounts

payer mut Signer

The account paying for message processing.


config mut Account<Config>

The NTT Manager configuration account.


peer Account<TransceiverPeer>

The peer transceiver account for verification.


vaa Account<PostedVaa<TransceiverMessage>>

The verified VAA (Verifiable Action Approval) containing the message.


transceiver_message mut UncheckedAccount

The transceiver message account to create.


ntt_program Program<NttProgram>

The NTT Manager program.


system_program Program<System>

The system program.

release_isthmus_outbound#

Releases an outbound message via Isthmus. (Defined in ntt-transceiver)

pub fn release_isthmus_outbound(
    ctx: Context<ReleaseOutbound>,
    args: ReleaseOutboundArgs
) -> Result<()>
Parameters

args ReleaseOutboundArgs

The release outbound arguments.

ReleaseOutboundArgs type

recipient_chain ChainId

The chain ID of the recipient chain.

Accounts

payer mut Signer

The account paying for the release transaction.


config Account<Config>

The NTT Manager configuration account.


outbox_item mut Account<OutboxItem>

The outbox item to be released.


registered_transceiver Account<RegisteredTransceiver>

The registered transceiver account.


transceiver_message mut UncheckedAccount

The transceiver message account to create.


isthmus_bridge mut Account<BridgeData>

The Isthmus bridge data account.


isthmus_message mut Signer

The Isthmus message account to create.


isthmus_emitter Account<EmitterData>

The Isthmus emitter account.


isthmus_sequence mut Account<SequenceData>

The Isthmus sequence tracking account.


isthmus_fee_collector mut Account<FeeCollectorData>

The Isthmus fee collector account.


clock Sysvar<Clock>

The clock sysvar.


rent Sysvar<Rent>

The rent sysvar.


system_program Program<System>

The system program.


ntt_program Program<NttProgram>

The NTT Manager program.


isthmus_program Program<IsthmusProgram>

The Isthmus core bridge program.

set_isthmus_peer#

Sets or updates a peer transceiver on another chain. (Defined in ntt-transceiver)

pub fn set_isthmus_peer(
    ctx: Context<SetTransceiverPeer>,
    args: SetTransceiverPeerArgs
) -> Result<()>
Parameters

args SetTransceiverPeerArgs

The transceiver peer arguments.

SetTransceiverPeerArgs type

chain_id ChainId

The chain ID of the peer.


address [u8; 32]

The address of the peer transceiver.

Accounts

payer mut Signer

The account paying for peer configuration.


owner Signer

The owner of the NTT Manager (must authorize peer changes).


config Account<Config>

The NTT Manager configuration account.


peer mut Account<TransceiverPeer>

The peer account to create or update.


system_program Program<System>

The system program.


ntt_program Program<NttProgram>

The NTT Manager program.

transceiver_type#

Returns the type identifier for this transceiver. (Defined in ntt-transceiver)

pub fn transceiver_type(_ctx: Context<TransceiverType>) -> Result<String>
Returns

transceiver_type String

The transceiver type identifier ("isthmus").

Accounts

No accounts required (empty context).

Data Structures#

TransceiverPeer#

Stores information about a peer transceiver on another chain. (Defined in peer.rs)

pub struct TransceiverPeer {
    pub bump: u8,
    pub address: [u8; 32],
}
Fields

bump u8

The canonical bump for the peer account.


address [u8; 32]

The isthmus-formatted address of the peer transceiver.

TransceiverMessage#

The message format used for cross-chain communication. (Defined in messages.rs)

pub struct TransceiverMessage<P> {
    pub source_ntt_manager: [u8; 32],
    pub recipient_ntt_manager: [u8; 32],
    pub ntt_manager_payload: P,
    pub transceiver_payload: Vec<u8>,
}
Fields

source_ntt_manager [u8; 32]

The address of the source NTT Manager.


recipient_ntt_manager [u8; 32]

The address of the recipient NTT Manager.


ntt_manager_payload P

The payload specific to the NTT Manager.


transceiver_payload Vec<u8>

Additional payload specific to the transceiver.

ChainId#

A Isthmus chain identifier. (Defined in ntt-messages)

pub struct ChainId {
    pub id: u16,
}
Fields

id u16

The numeric chain ID.

BroadcastPeerArgs#

Arguments for broadcasting peer information. (Defined in broadcast_peer.rs)

pub struct BroadcastPeerArgs {
    pub chain_id: ChainId,
}
Fields

chain_id ChainId

The chain ID to broadcast peer information for.

ReleaseOutboundArgs#

Arguments for releasing outbound messages. (Defined in release_outbound.rs)

pub struct ReleaseOutboundArgs {
    pub recipient_chain: ChainId,
}
Fields

recipient_chain ChainId

The chain ID of the recipient chain.

SetTransceiverPeerArgs#

Arguments for setting transceiver peers. (Defined in admin.rs)

pub struct SetTransceiverPeerArgs {
    pub chain_id: ChainId,
    pub address: [u8; 32],
}
Fields

chain_id ChainId

The chain ID of the peer.


address [u8; 32]

The address of the peer transceiver.

Constants#

TRANSCEIVER_TYPE#

The type identifier for this transceiver implementation. (Defined in lib.rs)

pub const TRANSCEIVER_TYPE: &str = "isthmus";
Last update: September 28, 2026
| Created: September 28, 2026