Not able to approve mapped token on Goerli in POS Bridge

Here is my code for approving the Goerli tokens in POS Bridge,

I have also mapped the tokens on the Token Mapper

const Web3 = require('web3');
const HDWalletProvider = require('@truffle/hdwallet-provider');
const { POSClient, use } = require('@maticnetwork/maticjs');
const { Web3ClientPlugin } = require('@maticnetwork/maticjs-web3');

use(Web3ClientPlugin);

const PVT_KEY = 'account_private_key';
const address = '0x3c5EB1e896c19eF9Fd2FF044e2e318ed998aE3b6';

const rootToken = '0xbe919f8c74b06d6eca24e8d1f2db34596ddb0582';
const childToken = '0xbe148e79c4c9f7428f9987dfca6405dcfdc05add';


//  Getting POS Client error
const getPOSClient = (network = 'testnet', version = 'mumbai') => {

    const posClient = new POSClient();
    
    return posClient.init({
        log: true,
        network: network,
        version: version,
        child: {
            provider: new HDWalletProvider(
                'af89cdf478ab92494377fbd19972dc2eb05c451238bac9f7fe95420c54af9dd6',
                'https://rpc-mumbai.matic.today'
            ),
            defaultConfig: {
                from: address,
            },
        },
        parent: {
            provider: new HDWalletProvider(
                'af89cdf478ab92494377fbd19972dc2eb05c451238bac9f7fe95420c54af9dd6',
                'https://goerli.infura.io/v3/6def1f4f94bc4794983747a50a72b5df'
            ),
            defaultConfig: {
                from: address,
            },
        },
    });
};

// Bridge ERC20 tokens from Ethereum (Goerli) to Polygon (Mumbai)
async function depositERC20Token() {
    try {
        const posClient = getPOSClient();
        const erc20Token = (await posClient).erc20(rootToken, true);     
        
        const amountInWei = Web3.utils.toWei('6', 'ether');
        let result = await erc20Token.approve(amountInWei, {
            from: address,
        });

        const txHash = await result.getTransactionHash();
        console.log("txHash", txHash);

        const receipt = await result.getReceipt();
        console.log("receipt", receipt);
        
    } catch (error) {
        console.log('Catch Error := ', error);
    }
}

After running Iā€™m getting this error,

init called ABIManager { networkName: 'testnet', version: 'mumbai' }
methodName tokenToType args method [Arguments] {
  '0': 'tokenToType',
  '1': '0xbe919f8c74b06d6eca24e8d1f2db34596ddb0582'
}
sending tx with config undefined undefined
methodName typeToPredicate args method [Arguments] {
  '0': 'typeToPredicate',
  '1': '0x0000000000000000000000000000000000000000000000000000000000000000'
}
sending tx with config undefined undefined
methodName approve args method [Arguments] {
  '0': 'approve',
  '1': '0x0000000000000000000000000000000000000000',
  '2': '0x53444835ec580000'
}
process write
txConfig {
  from: '0x3c5EB1e896c19eF9Fd2FF044e2e318ed998aE3b6',
  to: '0x7B276A55987E3020026Bb098F15E968313Bd1aF2'
} onRoot true isWrite true
Catch Error :=  Error: execution reverted: ERC20: approve to the zero address
0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002245524332303a20617070726f766520746f20746865207a65726f2061646472657373000000000000000000000000000000000000000000000000000000000000
1 Like