Caver-js로 klay_sendtransaction시 value값이 다릅니다

안녕하세요,

컨트랙트 작성 후에 caver-js를 이용해 민팅 front end page를 만들기 위해서 caver-js를 만져보는중인데요. 아래와 같은 코드 작성시에 1클레이가 아닌 4722클레이가 청구됩니다.

price는 contract내에서 1klay로 책정을 해놨습니다 (1000000000000000000 peb)

뭐가 문제인걸까요?

let price = (NFT_price * amount);

let price2 = price.toString();

const transactionParameters = {

    to: contractAddress, // Required except during contract publications.

    from: window.klaytn.selectedAddress, // must match user's active address.

    //'data': contract_NFT.methods.mainMint(amount), //make call to NFT smart contract

    value: price2,

    gas: '800000',

}

window.klaytn

    .sendAsync({

        method: 'klay_sendTransaction',

        params: [transactionParameters],

        from: window.klaytn.selectedAddress

    })

안녕하세요

혹시 price2 값이 어디서 왔는지 정확하게 공유해주실수있을까요?

예상하는 이슈는 Number.MAX_SAFE_INTEGER 값이 초과하여

정확하게 계산이 안된것같습니다.

bignumber.js나 bn.js를 사용하여 계산하신것이 맞을까요?

1 Like

안녕하세요

price2는 아래와 같이 컨트랙에서 price 함수를 읽어와서 지정했습니다.
문제는 하드코딩으로 1클레이만 지정해줘도 4722가 떠서 무슨 이유인지 알수가 없네요…

contract.methods.price().call().then(function (result) {

price = result;

});

코드 새롭게 수정하여 해결완료했습니다.
답변주셔서 감사해요.