zsdfeq
1
KIP-7 컨트랙트를 배포하고 토큰을 생성하여 전송하는 것을 테스트 하고 있습니다.
Decimal는 18자리로 작성하였습니다.
curl --location --request POST 'https://kip7-api.klaytnapi.com/v1/contract/my-first-kip7/transfer' \
--header "x-chain-id: {chain-id}" \
-u {access-key-id}:{secret-access-key} \
--data-raw '{
"from": "0x72b03ca464609c82be1d490ecfce004e2d3c4cfc",
"to": "0x4d3224314b704be8887551e8c9b9bbb9aa5c48b3",
"amount": "0x1"
}'
아래와 같이 전송하면 1토큰이 전송이 되어야 하는데 0.00000…1이 전송이 되는 것으로 보입니다.
Docs를 읽어보면 Decimal를 포함한다고 되어 있는데 실제 amount의 값이 18자리를 넘어야지 소수점 이상의 값이 전달이 됩니다.
문제는 1토큰을 보내고 싶은데 0x1.000000000000000000 를 전송하면 Error메세지가 나옵니다.
{"code":1134414,"message":"invalid hex format; amount"}
1토큰 혹은 10토큰을 딱 맞게 전송하려면 어떻게 보내야하나요?
Denver
2
@zsdfeq
안녕하세요. 클레이튼 포럼에 질문을 올려주셔서 감사합니다.
1 토큰을 전송하기 위해서 amount
필드에 입력하셔야 하는 값은
1 * 10의 decimal 승
을 16진수로 변환한 값입니다.
@zsdfeq 님께서 발행하신 KIP-7의 decimal은 18
이라고 하셨으니 1뒤에 18개의 0이 이어지는 1000000000000000000
값을 16진수로 변환한 "0xde0b6b3a7640000"
을 amount에 기재해주셔야 1 토큰을 전송하실 수 있습니다.
10토큰을 보내고 싶으시다면 1뒤에 19개의 0이 이어지는 10000000000000000000
값을 16진수로 변환한 "0x8ac7230489e80000"
을 입력해주시면 됩니다.
실제로 제가 decimal 18인 KIP-7 토큰을 1 토큰만큼 전송하기 위해 요청했던 리퀘스트를 공유드리면 아래와 같습니다.
curl --location --request POST 'https://kip7-api.klaytnapi.com/v1/contract/0xb95bb8e8af22defc9058c798148007b865e8cc9f/transfer' \
--header "x-chain-id: 1001" \
-u {access-key-id}:{secret-access-key} \
--data-raw '{
"from": "0xdc9fc22c108f40ec83bbd76854abf85cff6d9dd0",
"to": "0x36e6285fc276d34e189f43fc73cd81c88218e734",
"amount": "0xde0b6b3a7640000"
}'
도움이 되었길 바랍니다