chore: sync submodule state (parent ref update)
Made-with: Cursor
This commit is contained in:
@@ -8,7 +8,7 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
||||
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
||||
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
||||
import "../registry/UniversalAssetRegistry.sol";
|
||||
import "../ccip/interfaces/IRouterClient.sol";
|
||||
import "../ccip/IRouterClient.sol";
|
||||
|
||||
/**
|
||||
* @title UniversalCCIPBridge
|
||||
@@ -101,10 +101,12 @@ contract UniversalCCIPBridge is
|
||||
__UUPSUpgradeable_init();
|
||||
|
||||
require(_assetRegistry != address(0), "Zero registry");
|
||||
require(_ccipRouter != address(0), "Zero router");
|
||||
|
||||
assetRegistry = UniversalAssetRegistry(_assetRegistry);
|
||||
ccipRouter = IRouterClient(_ccipRouter);
|
||||
if (_ccipRouter != address(0)) {
|
||||
ccipRouter = IRouterClient(_ccipRouter);
|
||||
}
|
||||
// If _ccipRouter is zero, set via setCCIPRouter() after deployment (enables same initData for deterministic proxy address)
|
||||
|
||||
_grantRole(DEFAULT_ADMIN_ROLE, admin);
|
||||
_grantRole(BRIDGE_OPERATOR_ROLE, admin);
|
||||
@@ -114,12 +116,20 @@ contract UniversalCCIPBridge is
|
||||
function _authorizeUpgrade(address newImplementation)
|
||||
internal override onlyRole(UPGRADER_ROLE) {}
|
||||
|
||||
/**
|
||||
* @notice Set CCIP router (for deterministic deployment: initialize with router=0, then set per chain)
|
||||
*/
|
||||
function setCCIPRouter(address _ccipRouter) external onlyRole(DEFAULT_ADMIN_ROLE) {
|
||||
require(_ccipRouter != address(0), "Zero router");
|
||||
ccipRouter = IRouterClient(_ccipRouter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice Main bridge function with asset type routing
|
||||
*/
|
||||
function bridge(
|
||||
BridgeOperation calldata op
|
||||
) external nonReentrant returns (bytes32 messageId) {
|
||||
) external payable nonReentrant returns (bytes32 messageId) {
|
||||
// Validate asset is registered and active
|
||||
UniversalAssetRegistry.UniversalAsset memory asset = assetRegistry.getAsset(op.token);
|
||||
require(asset.isActive, "Asset not active");
|
||||
@@ -211,7 +221,7 @@ contract UniversalCCIPBridge is
|
||||
// If vault exists, record operation
|
||||
if (vault != address(0)) {
|
||||
// Call vault to record bridge operation
|
||||
(bool success, ) = vault.call(
|
||||
(bool ok, ) = vault.call(
|
||||
abi.encodeWithSignature(
|
||||
"recordBridgeOperation(bytes32,address,uint256,uint64)",
|
||||
bytes32(0), // messageId will be set after CCIP send
|
||||
@@ -220,7 +230,9 @@ contract UniversalCCIPBridge is
|
||||
op.destinationChain
|
||||
)
|
||||
);
|
||||
// Vault recording is optional
|
||||
if (!ok) {
|
||||
// Vault recording is optional; ignore failure
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user