컨트랙트 생성 후 그 컨트랙트에서 다른 컨트랙트 함수 호출 시 가스limit을 조절할 수 있을까요?

안녕하세요!

ide로 컨트랙트 작성 후 배포 후 해당 컨트랙트의 함수를 호출하여
다른 컨트랙트의 함수를 호출하고 있습니다.
그런데 가스 limit이 30000으로 고정되어서 변경이 안되는데
혹시 어떻게 변경이 가능할까요…?

컨트랙트는 아래와 같습니다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.5.0 <0.9.0;
contract testContractCall {
address ksp;

constructor(address address_test5)public {
    ksp = address_test5;
}
function exchangeKctPos(address tokenA, uint256 amountA,address tokenB, uint256 amountB) public payable{
    ksp.call(abi.encodeWithSignature("exchangeKctPos(address,uint256,address,uint256,address[])",tokenA,amountA,tokenB,amountB));

}
}

컨트랙트 내 exchangeKctPos 트랜잭션 실행 결과입니다.
0xf83aec254d06abe557e28954bff0cc52448866b265b87a34d76bd9dfd94cd451

기초가 없이 만들다보니 어려움이 많네요…
답변 부탁드리겠습니다…! 감사합니다!

아! 추가로 IDE에서 deploy할 때 가스리밋을 올려서 90000000으로 했습니다.

안녕하세요,

해당 gas limit오류는 발행하신 컨트랙트의 exchangeKctPos 함수가 payable로 설정되어서 그렇습니다.
일반적으로 컨트랙트 - 컨트랙트 실행에 대한 가스비는 트랜잭션 요청하는 주소에서 모두 과금하기 때문에 별도의 가스비가 붙지 않습니다.

payable이라는 modifier는 Klay를 배포하신 컨트랙트로 전송이 이루어져야 할때 필요합니다.
따라서 payable을 함수에서 제거하시고 다시 배포하시면 정상작동할 것으로 예상됩니다.

만약 Klay로 다른 token을 스왑하시려는것이 목적이시면 payable은 유지하시고
klayswap의 exchangeKlayPos 를 사용하셔야합니다.

감사합니다.

1개의 좋아요