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개의 좋아요

안녕하세요

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

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

price = result;

});

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