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