Nucleus
  • Overview
    • Welcome to Nucleus
    • Official Links
    • FAQ
  • Nucleus Architecture
    • Overview
    • Vault Framework
    • Cross-chain Infrastructure
    • Withdrawals
    • Revenue Strategies
      • Market-agnostic Lending
      • Cross-chain Intents
      • Ownership by Default
    • Reward Distribution
    • Nucleus Points
    • Deployed Assets
    • Smart Contracts
      • README
      • CONTRACTS
        • contents
        • atomic-queue
          • Contents
          • AtomicQueue
          • AtomicSolver
          • AtomicSolverV2
          • AtomicSolverV3
          • IAtomicSolver
        • base
          • Boring Vault
            • BoringVault
          • Decoders and Sanitizers
            • Contents
            • IonPoolDecoderAndSanitizer
          • Roles
            • Contents
            • Cross Chain
              • Cross Chain OP Teller With Multi Asset Support
                • CrossChainOPTellerWithMultiAssetSupport
                • ICrossDomainMessenger
              • Cross Chain Teller Base
                • BridgeData
                • CrossChainTellerBase
              • MultiChainLayerZeroTellerWithMultiAssetSupport
              • Multi Chain Teller Base
                • Chain
                • MultiChainTellerBase
                • MultiChainTellerBase_GasLimitExceeded
                • MultiChainTellerBase_GasTooLow
                • MultiChainTellerBase_MessagesNotAllowedFrom
                • MultiChainTellerBase_MessagesNotAllowedFromSender
                • MultiChainTellerBase_MessagesNotAllowedTo
                • MultiChainTellerBase_ZeroMessageGasLimit
              • OAppAuth
                • Contents
                • OAppAuth
                • OAppAuthCore
                • OAppAuthReceiver
                • OAppAuthSender
            • AccountantWithRateProviders
            • ManagerWithMerkleVerification
            • TellerWithMultiAssetSupport
        • helper
          • Contents
          • Constants
          • ArcticArchitectureLens
          • Deployer
          • GenericRateProvider
        • interfaces
          • BalancerVault
          • AggregationRouterV5
          • BeforeTransferHook
          • DecoderCustomTypes
          • ICreateX
          • IPriceFeed
          • PriceRouter
          • IRateProvider
          • INonFungiblePositionManager
          • Contents
          • IStaking
            • ILiquidityPool
            • ILRTDepositPool
            • IRestakeManager
            • IStaderConfig
            • IStakePoolManager
            • ISTETH
            • ISWETH
            • IUNSTETH
            • IUserWithdrawManager
            • IWEETH
            • IWithdrawRequestNft
            • IWSTETH
          • IUniswap v3 Router
            • IUniswapV3Router
            • IUniswapV3SwapCallback
        • micro-managers
          • Contents
          • DexSwapperUManager
          • DexAggregatorUManager
          • UManager
        • migration
          • Contents
          • CellarMigrationAdaptor
        • oracles
          • EthPerTokenRateProvider
          • Contents
          • EthPerWstEthRateProvider
  • Security
    • Audits
Powered by GitBook
On this page
  • State Variables
  • messenger
  • peer
  • maxMessageGas
  • minMessageGas
  • nonce
  • Functions
  • constructor
  • setPeer
  • setGasBounds
  • receiveBridgeMessage
  • _bridge
  • _beforeBridge
  • _quote
  • Errors
  • CrossChainOPTellerWithMultiAssetSupport_OnlyMessenger
  • CrossChainOPTellerWithMultiAssetSupport_OnlyPeerAsSender
  • CrossChainOPTellerWithMultiAssetSupport_NoFee
  • CrossChainOPTellerWithMultiAssetSupport_GasOutOfBounds

Was this helpful?

  1. Nucleus Architecture
  2. Smart Contracts
  3. CONTRACTS
  4. base
  5. Roles
  6. Cross Chain
  7. Cross Chain OP Teller With Multi Asset Support

CrossChainOPTellerWithMultiAssetSupport

PreviousCross Chain OP Teller With Multi Asset SupportNextICrossDomainMessenger

Was this helpful?

Inherits: CrossChainTellerBase

LayerZero implementation of CrossChainTeller

State Variables

messenger

ICrossDomainMessenger public immutable messenger;

peer

address public peer;

maxMessageGas

uint32 public maxMessageGas;

minMessageGas

uint32 public minMessageGas;

nonce

uint128 public nonce;

Functions

constructor

constructor(
    address _owner,
    address _vault,
    address _accountant,
    address _messenger
)
    CrossChainTellerBase(_owner, _vault, _accountant);

setPeer

Callable by OWNER_ROLE.

function setPeer(address _peer) external requiresAuth;

Parameters

Name
Type
Description

_peer

address

new peer to set

setGasBounds

Callable by OWNER_ROLE.

function setGasBounds(uint32 newMinMessageGas, uint32 newMaxMessageGas) external requiresAuth;

Parameters

Name
Type
Description

newMinMessageGas

uint32

the new minMessageGas bound

newMaxMessageGas

uint32

the new maxMessageGas bound

receiveBridgeMessage

Function for OP Messenger to call to receive a message and mint the shares on this chain

function receiveBridgeMessage(address receiver, uint256 shareMintAmount, bytes32 messageId) external;

Parameters

Name
Type
Description

receiver

address

to receive the shares

shareMintAmount

uint256

amount of shares to mint

messageId

bytes32

_bridge

the virtual bridge function to execute Optimism messenger sendMessage()

function _bridge(uint256 shareAmount, BridgeData calldata data) internal override returns (bytes32 messageId);

Parameters

Name
Type
Description

shareAmount

uint256

data

BridgeData

bridge data

Returns

Name
Type
Description

messageId

bytes32

messageId

_beforeBridge

before bridge hook to check gas bound and revert if someone's paying a fee

function _beforeBridge(BridgeData calldata data) internal override;

Parameters

Name
Type
Description

data

BridgeData

bridge data

_quote

the virtual function to override to get bridge fees, always zero for OP

function _quote(uint256 shareAmount, BridgeData calldata data) internal view override returns (uint256);

Parameters

Name
Type
Description

shareAmount

uint256

to send

data

BridgeData

bridge data

Errors

CrossChainOPTellerWithMultiAssetSupport_OnlyMessenger

error CrossChainOPTellerWithMultiAssetSupport_OnlyMessenger();

CrossChainOPTellerWithMultiAssetSupport_OnlyPeerAsSender

error CrossChainOPTellerWithMultiAssetSupport_OnlyPeerAsSender();

CrossChainOPTellerWithMultiAssetSupport_NoFee

error CrossChainOPTellerWithMultiAssetSupport_NoFee();

CrossChainOPTellerWithMultiAssetSupport_GasOutOfBounds

error CrossChainOPTellerWithMultiAssetSupport_GasOutOfBounds(uint32);
Git Source