code
10월 27, 2021, 8:07오전
1
const castNumber = new BigNumber(num).toString()
const res = await prepare.executeContract({
bappName,
to,
value: '0',
from: walletAddr,
abi: JSON.stringify(abi),
params: JSON.stringify([param0, castNumber, param1, parm2, param3])
})
executeContract 호출시 invalid params 에러가 납니다.
castNumber 자리에 decimal 18처리 후 “9999999999999999999999” 가 들어갔습니다.
제가 원래 쓰려던 입력은 decimal 18로 한 10,000 입니다. = 10000000000000000000000
param에 들어가는 숫자값에 제약사항이 있을까요?
안녕하세요
abi와 파라미터가 일치하지 않는 상황일 것 같은데요, 아래 포스트 참조하여 확인해보시면 좋을 것 같습니다.
안녕하세요
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",
…
혹시 계속 안 되시는 경우, abi를 올려주시면 답변드리는데 도움이 될 것 같습니다.
중간에 질문 내용이 바뀌어 추가 설명 드립니다.
javascript에서 big number 처리에 이슈가 있을 것 같은데요, 이 부분은 klip과 관련없이 적절한 패키지를 사용해서 맞는 값을 전달해주셔야 하겠습니다. 추가로 이전 글에서 설명 드렸던 것처럼 decimal 적용 후 소수점 6자리 미만의 값은 0으로 처리해주셔야합니다.