KIP7 토큰을 truffle 로 deploy 하는 경우 overflow 이슈 발생

안녕하세요. 고수님들의 도움이 절실하네요.
저는 KIP7으로 토큰을 truffle을 이용하여 발행하려 합니다.
KIP7으로 solidity 파일을 적용하여 truffle 로 성공적으로 compile을 하고 deploy를 위해 truffle migrate를 하였습니다. 우선 migrate 를 위해 js 파일에 다음과 같이 코드를 작성했습니다.

 
const Migrations = artifacts.require("KIP7Token");
module.exports = function(deployer) {
  deployer.deploy(Migrations, 'Klay Crazy Token', 'KCT', 18, 9999000000000000000000);
};

그리고 truffle migrate를 하면 다음과 같이 오류가 발행합니다.

 
MacBookPro server % truffle console --network baobab
truffle(baobab)> migrate

Compiling your contracts...
===========================
> Everything is up to date, there is nothing to compile.

Starting migrations...
======================
> Network name:    'baobab'
> Network id:      1001
> Block gas limit: 999999999999 (0xe8d4a50fff)

1_deploy_contracts_KIP-7.js
===========================
   Replacing 'KIP7Token'
   ---------------------
 *** Deployment Failed ***
"KIP7Token" -- overflow (fault="overflow", operation="BigNumber.from", value=9.999e+21, code=NUMERIC_FAULT, version=bignumber/5.6.2).
Exiting: Review successful transactions manually by checking the transaction hashes above on Etherscan.
Error:  *** Deployment Failed ***
"KIP7Token" -- overflow (fault="overflow", operation="BigNumber.from", value=9.999e+21, code=NUMERIC_FAULT, version=bignumber/5.6.2).

물론 발행량을 작게하면 되지만 위에 처럼 많이 하면 overflow 발행량이 초과 되는것 같은데요.
klay-ide에서는 발행량을 많이 줘도 오류가 발생하지 않고 잘됩니다. ㅜㅜ
제가 원하는 것은 truffle 에서 발행량 제한없이 토큰을 발행 할 수 있는 방법이 있는 건지 알고 싶습니다.
고수님들의 도움이 필요합니다.

일단 자세한 컨트랙트 코드나 truffle 코드를 보지 못하였지만, 주어진 에러메세지로만 보면 초기 토큰의 initial amount를 지정해줄 때 Number타입으로 지정한 것이 문제가 될 수 있을 것 같습니다. bigInt타입으로 지정하기 위해 다음과 같은 방법으로 진행하시면 해결 될 수 있을 것 같습니다.

initial_amount = 9999n * 10n ** 18n || bigInt(9999000 … 000); (typeof intiial_amount = bigInt)

매우 큰 자릿수를 다룰 때는(대략 10^16 이상) bigInt 타입을 사용하시길 추천합니다.

1 Like

답글 감사드립니다. 알려주신대로 한번 적용해 보겠습니다.