mirror of
https://github.com/th30d4y/OpenLearnX.git
synced 2026-05-26 19:26:33 +00:00
Fix .gitignore: stop tracking ignored files
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// OpenZeppelin Contracts (last updated v4.6.0) (crosschain/CrossChainEnabled.sol)
|
||||
|
||||
pragma solidity ^0.8.4;
|
||||
|
||||
import "./errors.sol";
|
||||
|
||||
/**
|
||||
* @dev Provides information for building cross-chain aware contracts. This
|
||||
* abstract contract provides accessors and modifiers to control the execution
|
||||
* flow when receiving cross-chain messages.
|
||||
*
|
||||
* Actual implementations of cross-chain aware contracts, which are based on
|
||||
* this abstraction, will have to inherit from a bridge-specific
|
||||
* specialization. Such specializations are provided under
|
||||
* `crosschain/<chain>/CrossChainEnabled<chain>.sol`.
|
||||
*
|
||||
* _Available since v4.6._
|
||||
*/
|
||||
abstract contract CrossChainEnabled {
|
||||
/**
|
||||
* @dev Throws if the current function call is not the result of a
|
||||
* cross-chain execution.
|
||||
*/
|
||||
modifier onlyCrossChain() {
|
||||
if (!_isCrossChain()) revert NotCrossChainCall();
|
||||
_;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev Throws if the current function call is not the result of a
|
||||
* cross-chain execution initiated by `account`.
|
||||
*/
|
||||
modifier onlyCrossChainSender(address expected) {
|
||||
address actual = _crossChainSender();
|
||||
if (expected != actual) revert InvalidCrossChainSender(actual, expected);
|
||||
_;
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev Returns whether the current function call is the result of a
|
||||
* cross-chain message.
|
||||
*/
|
||||
function _isCrossChain() internal view virtual returns (bool);
|
||||
|
||||
/**
|
||||
* @dev Returns the address of the sender of the cross-chain message that
|
||||
* triggered the current function call.
|
||||
*
|
||||
* IMPORTANT: Should revert with `NotCrossChainCall` if the current function
|
||||
* call is not the result of a cross-chain message.
|
||||
*/
|
||||
function _crossChainSender() internal view virtual returns (address);
|
||||
}
|
||||
Reference in New Issue
Block a user