# Cross-Chain Evm Compatibility

The interoperability between different blockchain networks has been a major challenge for the industry, hindering the adoption of cryptocurrencies and blockchain technology. However, with the development of the EVM standard, it is now possible to create smart contracts that can run on multiple blockchain networks. GUSD is built on an EVM-compatible blockchain, which enables it to be used across different ecosystems.

Ethereum is one of the most widely used blockchain networks that support the EVM standard. According to DappRadar, a platform that tracks the performance of dapps on different blockchain networks, the daily active users (DAUs) of Ethereum-based dapps reached an all-time high of 1.44 million in May 2021. This represents a significant increase from the DAUs of Ethereum-based dapps in 2020, which ranged from 10,000 to 300,000.

The growth of Ethereum-based dapps has been driven by the development of decentralized finance (DeFi) applications. DeFi applications enable users to borrow, lend, and trade cryptocurrencies without the need for intermediaries, such as banks or financial institutions. According to DeFi Pulse, a platform that tracks the performance of DeFi protocols, the total value locked (TVL) in DeFi protocols on Ethereum reached an all-time high of $157 billion in May 2021. This represents a significant increase from the TVL in DeFi protocols on Ethereum in 2020, which ranged from $600 million to $12 billion.

The growth of Ethereum-based dapps and DeFi protocols has led to significant congestion on the Ethereum network, resulting in high transaction fees and slow transaction times. To address this issue, several layer 2 solutions have been developed, such as zk-rollups and optimistic rollups. These solutions enable transactions to be processed off-chain, significantly reducing the transaction fees and transaction times on the Ethereum network.

The integration of GUSD into different layer 2 solutions could significantly improve its usability and accessibility. By reducing the transaction fees and transaction times, GUSD could become a more viable alternative to traditional fiat currencies for everyday transactions. This could have a significant impact on the ability of individuals and businesses to transfer funds across borders, particularly in developing countries.

Moreover, the interoperability between different blockchain networks could enable GUSD to be used across different ecosystems, expanding its use cases beyond trading and remittance. For example, GUSD could be used in decentralized marketplaces, e-commerce platforms, and point-of-sale (POS) systems.

Overall, the EVM compatibility of GUSD and its integration into different layer 2 solutions could significantly improve its usability and accessibility. By reducing the transaction fees and transaction times, GUSD could become a more viable alternative to traditional fiat currencies for everyday transactions. The interoperability between different blockchain networks could also expand its use cases, making it a more versatile and useful form of digital currency.

{% embed url="https://www.investopedia.com/what-are-cross-chain-bridges-6750848" %}

_<mark style="background-color:blue;">Example of a cross-chain bridge smart contract that can be used to transfer GUSD between two EVM-compatible blockchain networks, such as Ethereum and Binance Smart Chain</mark>:_

```solidity
// // SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IERC20 {
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
}

contract CrossChainBridge {
    IERC20 public gusdToken;
    
    address public owner;
    
    constructor(address _gusdToken) {
        gusdToken = IERC20(_gusdToken);
        owner = msg.sender;
    }
    
    function transfer(address recipient, uint256 amount) public {
        gusdToken.transferFrom(msg.sender, address(this), amount);
        gusdToken.approve(recipient, amount);
    }
    
    function emergencyWithdraw() public {
        require(msg.sender == owner, "only owner can withdraw");
        uint256 balance = gusdToken.balanceOf(address(this));
        gusdToken.transfer(owner, balance);
    }
}

```
