{'code': -32000, 'message': 'unknown account'} 에러 질문입니다

안녕하세요. klayswap 에서 exchangeKctPos 함수를 통해 토큰 교환을 시도하려고 하는데 에러 응답이 와서 문의드립니다,
web3.py 로 exchangeKctPos 함수를 작성하였는데 왜 ValueError 가 뜨는지 모르겠습니다.
다른곳을 확인하니 address 에러라는데 kaikas 쪽 wallet 을 사용하고 있습니다.
도움을 주신다면 감사하겠습니다.

#Question
from web3 import Web3

network_path = 'wss://public-node-api.klaytnapi.com/v1/cypress/ws'

w3 = Web3(Web3.WebsocketProvider(network_path))

KMOOIAddress = '0x4b734a4d5bf19d89456ab975dfb75f02762dda1d'
oUSDTAddress = '0xcee8faf64bb97a73bb51e115aa89c17ffa8dd167'
Klayswap_KMOOI_oUSDT_ExchangeAddress = "0x71f3a62c52f5ce71331b3af00bd63d617264b040"

Klayswap_KMOOI_oUSDT_ExchangeAddress = Web3.toChecksumAddress(Klayswap_KMOOI_oUSDT_ExchangeAddress)
oUSDTAddress = Web3.toChecksumAddress(oUSDTAddress)
KMOOIAddress = Web3.toChecksumAddress(KMOOIAddress)
address  = Web3.toChecksumAddress(address)



klayswap_USDT_MOOI_ProtocolContract = w3.eth.contract(Klayswap_KMOOI_oUSDT_ExchangeAddress, abi=IKlayswapProtocolABI)

nonce = w3.eth.getTransactionCount(address)

rtAmounts = klayswap_USDT_MOOI_ProtocolContract.functions.exchangeKctPos(oUSDTAddress, 1, KMOOIAddress, 2,[]).transact(
        {
            "from" : address,
            'gas' : 4000000,
            'to' : Klayswap_KMOOI_oUSDT_ExchangeAddress,
            "nonce": nonce,
        }
    )

print(">> exchangeKctPos rtAmounts:", rtAmounts)
ValueError: {'code': -32000, 'message': 'unknown account'}

먼저 해당 컨트랙트의 자세한 내용은 Klayswap의 독스를 참고하시면 될 것 같습니다.

해당 독스를 참고하면, exchangeKctPos는 LP토큰이 아닌 ksp라는 거버넌스 토큰 컨트랙트내에 구현되어 있습니다. 따라서 exchangeKctPos를 사용할 컨트랙트의 주소를 ksp 토큰 컨트랙트 주소로 수정하셔야 할 것 같습니다. (router에 토큰 approve도 진행해야 합니다.)

Klaytn 생태계에서는 caver-js를 사용하여 효과적으로 노드와 소통할 수 있으니 해당 부분도 알아보시면 좋을 것 같습니다. (기존 web3-js에서 쉽게 포팅해올 수 있습니다.)

1 Like