클립을 통해서 contract 연결 시 에러 문의드립니다

안녕하세요. 클립을 통해서 Bapp을 개발하고 있는 개발자 입니다.
모바일 웹상에서 클립을 연결 시키고, 연결시킨 계정에 Bapp을 연결하는 것까지 성공했습니다.

성공된 후에 컨트렉트를 실행시키는 도중에
6403
invalid to address
에러가 발생했습니다.

컨트렉트 주소는 다음과 같습니다.
0xc81eE91Cd9588D65c474bfB02aBB688c31e39921

사용한 함수는 prepare.executeContract 이것입니다.

이런 에러가 발생하는 이유를 알수있을까요???

사용자 주소도 동일한것까지 확인했습니다.

Sung-Bin Ahn 님, 안녕하세요 :slight_smile:

컨트랙트 실행을 위해서는 to 필드에 적절한 컨트랙트 주소를 설정해야하는데요, to 필드 값이 제대로 된 주소 형식이 아닐 때 말씀하신 에러가 발생할 수 있습니다. 아래와 같은 executeContract input에서 to 필드에 contract address가 들어있는지 확인 부탁드립니다. 혹시 안 되실 경우 input으로 사용한 값을 알려주시면 답변을 드리는데 도움이 될 것 같습니다.

{
  "transaction": {
    "from": "0x8756...4321", // optional
    "to": "0xc81eE91Cd9588D65c474bfB02aBB688c31e39921", // contract address
    "value": "1000000000000000000", // 단위는 peb. 1 KLAY
    "abi": "...",
    "params": "..."
  }
}

답변 감사합니다. 말씀하신 것 처럼 컨트렉트 주소값이 잘못되어있어서 오류가 났습니다.
지금 그 부분은 해결됐는데, 다른 부분에서 에러가 나네요.

error code: 6407, err: invalid abi

현재 컨트렉트는 메인넷에 잘 배포되어있습니다.
위와 같은 에러는 어떠한 상황에서 나오는건가요?

배포된 컨트렉트 주소는 다음과 같습니다.

많은 도움 주셔서 진심으로 감사합니다.

안녕하세요, 주소 문제가 해결되었다니 다행입니다.

말씀하신 abi 관련 에러는 위에 예시에서 “abi” 필드에 빈문자열 또는 유효하지 않은 “abi” 입력이 들어왔을 때 발생하는 에러입니다. 혹시 해당 필드에 어떤 값을 넣으셨을까요? 실행하시려는 컨트랙트의 코드도 함께 올려주시면 답변을 드리는데 도움이 되겠습니다.

아래는 튜토리얼 abi 필드값 예시 링크입니다.

답변주셔서 감사합니다.

컨트렉트 코드는 다음과 같습니다.
pragma solidity ^0.4.25;

contract Withdraw {
address public owner;

constructor(address _owner) public {
    owner = _owner;
}

function deposit() public payable {

}

function withdraw(uint256 amount) public {
    require(msg.sender == owner);
    owner.transfer(amount);
}

function getBalance() public view returns (uint256) {
    return address(this).balance;
}

}

그리고 abi는 3가지 형식으로 테스트 했는데, 아직까지 같은 에러가 발생중입니다.

=> Format 1: Json
[
{
‘constant’: true,
‘inputs’: [],
‘name’: ‘getBalance’,
‘outputs’: [
{
‘name’: ‘’,
‘type’: ‘uint256’
}
],
‘payable’: false,
‘stateMutability’: ‘view’,
‘type’: ‘function’
},
{
‘constant’: false,
‘inputs’: [
{
‘name’: ‘amount’,
‘type’: ‘uint256’
}
],
‘name’: ‘withdraw’,
‘outputs’: [],
‘payable’: false,
‘stateMutability’: ‘nonpayable’,
‘type’: ‘function’
},
{
‘constant’: true,
‘inputs’: [],
‘name’: ‘owner’,
‘outputs’: [
{
‘name’: ‘’,
‘type’: ‘address’
}
],
‘payable’: false,
‘stateMutability’: ‘view’,
‘type’: ‘function’
},
{
‘constant’: false,
‘inputs’: [],
‘name’: ‘deposit’,
‘outputs’: [],
‘payable’: true,
‘stateMutability’: ‘payable’,
‘type’: ‘function’
},
{
‘inputs’: [
{
‘name’: ‘_owner’,
‘type’: ‘address’
}
],
‘payable’: false,
‘stateMutability’: ‘nonpayable’,
‘type’: ‘constructor’
}
]

=> Format 2: Json string of format 1
=> Format 3:
‘[{‘constant’:true,‘inputs’:[],‘name’:‘getBalance’,‘outputs’:[{‘name’:’’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘amount’,‘type’:‘uint256’}],‘name’:‘withdraw’,‘outputs’:[],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[],‘name’:‘owner’,‘outputs’:[{‘name’:’’,‘type’:‘address’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[],‘name’:‘deposit’,‘outputs’:[],‘payable’:true,‘stateMutability’:‘payable’,‘type’:‘function’},{‘inputs’:[{‘name’:’_owner’,‘type’:‘address’}],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘constructor’}]’

빠른 답변 감사드립니다.