i am trying to implement such a smart contract where it takes the stable coin of that chain and send and receive it. For example i am deploying my smart contracts on the mumbai-polygon testnet. And here the stable coin is MATIC. Now i would want to make use of it and let the transactions go through. Following is my research,

  1. Different chains have their own stable coin.
  2. Different chains also support multiple coins like USDT, USDC etc.
  3. So, for mumbai polygon testnet its MATIC.

I have few doubts,

  1. Should pass the stable coins address to my smart contract to complete the transaction.
  2. Where can find the stable coins address for respective chains test nets.
  3. Is it possible to use USDT across all the chains, as they have support it. And if i choose to use USDT in my dApp what would be major changes.

Below is my code so far.

  // SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract TokenManager is Ownable {
    IERC20 public stableCoin;

    constructor(address _initialStableCoin) {
        require(_initialStableCoin != address(0), "Invalid stable coin address");
        stableCoin = IERC20(_initialStableCoin);

    function doSomethingWithToken(uint256 amount) external {
        // Perform actions using 'stableCoin'
        require(stableCoin.transfer(msg.sender, amount), "Failed to transfer stable coin");
        // Additional logic
        // ...


So, will above logic work for different chains and their respective stable coins. Or what are the changes i would require to handle it.

Thanks is advance

1 Answer 1


This works perfectly but before you initiate transaction, please have a approval for the transaction amount and then initiate the transaction, if not the transaction fails.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.