I am trying to swap WETH for USDC using SushiSwap Router with Polygon. This is my current code:
import web3
from web3.middleware import geth_poa_middleware
import time
def swap(node, account_address, pvt_key, contract_address, contract_abi, action_type):
#imagine we are trade on weth-usdc
weth_addr = '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619'
usdc_addr = '0x2791bca1f2de4661ed88a30c99a7a9449aa84174'
#connect to polygon node
w3 = web3.Web3(web3.Web3.HTTPProvider(node))
w3.middleware_onion.inject(geth_poa_middleware, layer=0)
contract_addr = web3.Web3.toChecksumAddress(contract_address.lower())
contract = w3.eth.contract(contract_addr, abi=contract_abi)
gasPrice = w3.toWei(30, 'gwei')
amount_in = 0.001
amount_out_min = 0.00001
path = [weth_addr, usdc_addr]
deadline = int(time.time()+1000)
build_txn = contract.functions.swapExactTokensForTokens(amount_in, amount_out_min, [weth_addr, usdc_addr], account_address, deadline).buildTransaction({'chainId': 137,'gas': int(300000),'gasPrice': gasPrice,'nonce': w3.eth.get_transaction_count(account_address),"value": 0,})
#we are acting on polygon blockchain
node = 'https://polygon-rpc.com'
account_from = {
'private_key': 'XXX',
'address': 'XXX'
}
contract_address = '0x1b02da8cb0d097eb8d57a175b88c7d8b47997506'
contract_abi = ''''''
#actions available are two: buy or swap. buy=1, sell=0.
action = 0
#call function
swap(node, account_from['address'], account_from['private_key'], contract_address, contract_abi, action)
I think that everything is fine, but when trying to build the tnx i got this error:
Found 1 function(s) with the name `swapExactTokensForTokens`: ['swapExactTokensForTokens(uint256,uint256,address[],address,uint256)']
Function invocation failed due to no matching argument types.
Does somebody know why? Thanks