유틸리티
통화 (通貨)
NCG
나인크로니클에서는 'NCG' 라고 줄여부르는 Nine Chronicles Gold 통화가 있습니다. 이는 몬스터 컬렉션이라고 불리는 스테이킹에 사용됩니다. 또한 아이템을 구매하거나 강화하거나, 아레나 티켓을 구매하는데 사용되기도 합니다.
import { NCG } from "@planetarium/lib9c";하지만 Nine Chronicles 은 Multiplanetary 라는 시스템 하에 Odin, Heimdall 이라는 두 네트워크를 운영하고 있습니다. 둘 다 유효한 메인넷이지만 WNCG 브릿지는 Odin에서만 가능한 특징이 있습니다. Heimdall 에서는 NCG 대신 MINTERLESS_NCG 를 사용하셔야 합니다.
import { MINTELESS_NCG } from "@planetarium/lib9c";CRYSTAL
'CRYSTAL' 은 아이템 레시피를 해방하고 제작하거나 아레나에 참가하는데 사용되는 통화입니다. 스테이킹 보상을 통해 얻을 수 있습니다.
import { CRYSTAL } from "@planetarium/lib9c";MEAD
'MEAD' 는 나인크로니클 네트워크에서 트랜잭션 수수료로 사용되는 통화입니다.
import { MEAD } from "@planetarium/lib9c";GARAGE
'GARAGE' 은 전송 불가한 재화를 옮길때 사용합니다. NCIP-16을 참고해주세요.
import { GARAGE } from "@planetarium/lib9c";유틸리티 함수
fav
본래 @planetarium/tx 의 FungibleAssetValue를 만들려면 아래와 같은 코드를 작성해야 합니다. 아래 코드는 10 CRYSTAL 을 의미하는 FungibleAssetValue를 만드는 코드입니다.
const fav: FungibleAssetValue = {
currency: CRYSTAL,
rawValue: BigInt(new Decimal(10).mul(Decimal.pow(10, CRYSTAL.decimalPlaces)).toString())
}decimal.js로 이런 처리를 하는 이유는 FungibleAssetValue (이하 FAV) 에서 수량을 표시할 때 소수점을 달리 지원하지 않기 때문입니다. 소수점을 지원하지 않는다는 것이 정말 소수점을 지원하지 않는 것은 아니고, 실제 값은 정수로 가진채 Currency.decimalPlaces 의 값으로 소수점 위치를 정의합니다.
예를 들어 2 NCG 를 만들때 FAV.rawValue 는 200n 입니다. 왜냐하면 NCG.decimalPlaces 가 2 이기 때문에 00 부분을 소수점 자리로 쓰고 2 부분은 자연수 부분으로 쓰이는 것입니다. 일반적인 소수로 표현하면 2.00 NCG 입니다.
fav는 이런 코드를 축약해서 사용할 수 있게 해주는 유틸리티 함수입니다. 위 코드를 fav 함수로 표현하면 다음과 같습니다.
fav(NCG, 2);하지만 부동소수점에는 오차가 있기 때문에 number 타입으로 소수 (小數) 를 다루는 것은 권장하지 않습니다. 소수 외에도 수의 크기에도 제한이 있기 때문에 bigint나 string, decimal.js 를 사용해야합니다. 만약 decimal.js 를 사용한다면 .toString() 으로 string 타입으로 만들어 넘겨주세요.
import { fav } from "@planetarium/lib9c";