execute_contract 에서 지원하는 params type 문의
param에서 bytes 타입에 대한 입력 형식 자세한 가이드 부탁드립니다.
실행하고자 하는 컨트랙트의 abi는 아래와 같습니다.
"abi": "{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rootToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"depositData\",\"type\":\"bytes\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}",
여기서 input parameter를 보면,
address type / address type / bytes type 이렇게 3개입니다.
address type 2개는 0xAAABBBCCC....2345 이렇게 넣으면 되는데,
bytes는 어떻게 넘겨야 "Invalid params" 에러가 리턴되지 않을까요?
넘기고자하는 byte 값은 다음과 같습니다.
0x008AC7230489E80000
참고로 입력했던 전체 Object 는 아래와 같습니다. (contract, to, param의 address는 임의로 수정한 예시입니다)
{
"bapp": {
"name": "My App Name",
"callback": {
"success": "intent://deeplink1",
"fail": "intent://deelink2"
}
},
"chain": "ethereum",
"type": "execute_contract",
"transaction": {
"to": "0xe0c68c638235ee32657e8f720a23cec1bfc77c77",
"value": "0",
"abi": "{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rootToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"depositData\",\"type\":\"bytes\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}",
"params": "[0xd76265B19A9abC3A56AC91e09D41cD626777e5Af, 0x1056Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA, 0x008ac7230489e80000]"
}
}
기대하는 output (Raw data)는 아래와 같습니다.
MethodID: 0xe3dec8fb
[0]: 000000000000000000000000d76265B19A9abC3A56AC91e09D41cD626777e5Af
[1]: 0000000000000000000000001056Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA
[2]: 0000000000000000000000000000000000000000000000000000000000000060
[3]: 0000000000000000000000000000000000000000000000000000000000000020
[4]: 0000000000000000000000000000000000000000000000008AC7230489E80000
-
일단,encoded_function_call을 통해서 원하는 동작은 잘 수행하는 것 확인했습니다.bytes 에 대해서 abi, params 방법으로는 불가능하다면 encoded_function_call 를 사용하면 될 것 같습니다.0
-
안녕하세요,
답변이 늦은 점 양해부탁드립니다.
이미 그 사이에 다른 방법으로 해결을 하신 것으로 보이나, 기존 질문에 대한 답변 전달 드립니다.리턴되는 에러 메세지와 같이 params가 잘못 정의되어 발생한 에러로 보여지며, 아래와 같이 호출해보시는 것을 가이드 드립니다.
"[\"0xd76265B19A9abC3A56AC91e09D41cD626777e5Af\", \"0x1056Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA\", \"0x008ac7230489e80000\"]"
다른 문의사항 있으시면 말씀주세요.
감사합니다.0
댓글을 남기려면 로그인하세요.
댓글
댓글 2개