컨트랙트 실행 트랜잭션의 input

안녕하세요.

컨트랙트 실행 트랜잭션을 실행 중 INPUT 데이터를 넣는 것에 문제가 생겨서 여쭙고자 합니다.

sol 파일을 컴파일 하여 바이트를 얻은 것을 넣으라고 표시되어서 이를 solc 바이트로 컴파일하여 넣으려고 했는데, 컴파일해서 얻을 수 있는 모든 0x로 시작하는 값이나 바이트 코드로 추정된 것을 모두 넣어봤는데도 정상적으로 작동되지 않고
{

"code": 1065100,

"message": "failed to get an account; data don't exist",

"requestId": "01022e0e-66be-9bd1-a24f-c99b43cc9da6"

}
라는 response를 받게 되었습니다.

혹시 어떻게 하면 이를 해결할 수 있습니까?

안녕하세요

컨트랙트를 실행할 때는 data(input) 필드에 바이트코드가 들어가는 것이 아닌, 다음 데이터가 들어가게 됩니다.

  • Function selector: 스마트 컨트랙트에서 FunctionName(param1Type,pamam2Type)과 같은 형태로 나타낸 것을 function signature라고 하는데, 이를 keccak-256 hash한 값의 앞 4 byte.
  • Function Parameters: ABI 정의에 따라 각 타입에 맞게 encoding된 parameter 값들.

data 필드 값을 구하는 방법은 여러가지가 있는데, https://abi.hashex.org/ 사이트 등을 이용하셔도 되고, remix에서 트랜잭션 전송하면 자동으로 data 필드 값을 구해주는데, 해당 값을 이용하셔도 됩니다.

무엇보다 caver 등을 이용하실 경우, data 값을 직접적으로 구하실 필요가 없습니다. 일반 트랜잭션 - Klaytn Docs KO 를 참조하시면 됩니다.