[질문]
안녕하세요
KlipSDK 사용 중, executeContract 에서 params 문제가 있어 문의드립니다.
스마트컨트랙트 파라미터로 uint256 배열과 address 배열을 받고 있는데, excuteContract의 params에는 제대로 배열이 들어가는 것 같은데 revert 에러가 발생합니다.
Input 데이터를 보니 값이 빈 배열로 들어가는 것 같습니다. params를 주는 방식에 문제가 있는 것인지 조언이 필요합니다 ㅠ.ㅠ
테스트에 사용한 abi와 params입니다.
const abi = `{
"inputs": [
{
"internalType": "address[]",
"name": "addressArray",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uintArray",
"type": "uint256[]"
},
{
"internalType": "uint256",
"name": "uint",
"type": "uint256"
}
],
"name": "klipArrayTest",
"outputs": [],
"stateMutability": "payable",
"type": "function",
"payable": true
}`;
const params = `["[0xd5acd24f017a6c01b04a6adefc24cb2979f21921,0xd5acd24f017a6c01b04a6adefc24cb2979f21921]","[1000000, 1000000]",100]`
scope에서 확인한 revert 에러를 디코딩한 값입니다.
{
name: 'klipArrayTest',
{ name: 'addressArray', value: [], type: 'address[]' },
{ name: 'uintArray', value: [], type: 'uint256[]' },
{ name: 'uint', value: '75', type: 'uint256' }
]
}
[답변]
안녕하세요.
array type 파라미터 처리를 위한 예제 코드 첨부드립니다. 차이가 있는지 확인해보시면 좋을 것 같습니다.
solidity
pragma solidity ^0.5.0;
contract Test { address[] public input;
function test(address[] memory a) public { input = a;
address(0).transfer(0); } }
ABI
[ { "constant": false,
"inputs": [{ "name": "a", "type": "address[]" } ],
"name": "test", "outputs": [],
"payable": false, "stateMutability": "nonpayable","type": "function" },
{ "constant": true,
"inputs": [ { "name": "", "type": "uint256" } ],
"name": "input", "outputs": [ { "name": "", "type": "address" } ],
"payable": false, "stateMutability": "view", "type": "function" } ]
App2App API curl 예제
curl -X POST "https://a2a-api.klipwallet.com/v2/a2a/prepare" \ -d '
{"bapp": { "name" : "Test BApp" },
"type": "execute_contract",
"transaction": { "to": "0x58aB4632F559899589F63E8EDe3e098a78C6adAC",
"value": "0",
"abi": "{ \"constant\": false, \"inputs\": [ { \"name\": \"a\",
\"type\": \"address[]\" } ], \"name\": \"test\",
\"outputs\": [], \"payable\": false,
\"stateMutability\": \"nonpayable\", \"type\": \"function\" }",
"params": "[[\"0x89702017A631b125E03F586975Dfe6Ce98E9F35D\",
\"0x19702017A631b125E03F586975Dfe6Ce98E9F35D\"]]" } }'
\ -H "Content-Type: application/json"
테스트 트랜잭션 klaytnscope 링크 (바오밥)