Axelar is the Web3 interoperability platform. An open stack to connect all blockchains. A single click to use and build everywhere.
>:( 0 )░
Axelar supports smart contracts, making it unique among cross-chain networks – delivering true chain abstraction for both users and developers with minimal overhead.
Today, Axelar connects more blockchains than any other interoperability provider – and the gap is widening. Axelar is truly the shortest path to scale.
Axelar runs battle-tested proof-of-stake verification. Risk is further mitigated via superior topology and application-layer policies like rate limits.
>:( 0 )░
>:( 0 )░
Axelar supports smart contracts at the cross-chain layer, giving blockchain developers super powers to scale their applications with ease.
Send a token cross-chain to Uniswap with instructions to execute a trade.
Send a 'safeMintO function call to mint a real-world asset as an NFT on a connected chain.
Users from various blockchains pick a number and place a bet in the token of their choice.
function triggerInterchainNftMint() {
bytes memory mintNftPayload = abi.encodeWithSignature(
"safeMint(address,uint256)",
receivingAddr,
_tokenId
);
gateway.callContract(_destChain, _destContractAddr, mintNftPayload);
}
//Receive safeMint() call on dest chain and send msg to NFT
function _execute(string calldata, string calldata, bytes calldata _payload) {
(bool success, bytes memory data) = address(nft).call(_payload);
require(success, "safeMint call reverted")
}
function placeBet(uint256 _guess) {
gasService.payNativeGasForContractCallWithToken{value: msg.value}(
address(this),
_destChain,
_destContractAddr,
abi.encode(msg.sender, _guess),
_symbol,
_amount,
msg.sender
);
gateway.callContractWithToken(
_destChain,
_destContractAddr,
encodedBetPayload,
_symbol,
_amount
);
}
function _executeWithToken(bytes calldata _payload) {
(address player, uint256 guess) = abi.decode(_payload, (address, uint256));
if (won) _payOutAllTokensToWinner(player);
}
function interchainSwap() external payable {
ISwapRouter.ExactInputSingleParams memory swapParams = ISwapRouter
.ExactInputSingleParams({
tokenIn: address(tokenIn),
tokenOut: address(tokenOut),
recipient: msg.sender,
amountIn: amount,
});
gateway.callContract(
destChain,
destContractAddr,
abi.encode(swapParams),
);
}
function _execute(bytes calldata _payload) internal override {
ISwapRouter.ExactInputSingleParams memory decodedGmpMessage = abi
.decode(_payload, (ISwapRouter.ExactInputSingleParams));
swapRouter.exactInputSingle(decodedGmpMessage);
}