자산 토큰화
Asset tokenization은 real estate, art, commodities, stocks 같은 real-world 자산을 blockchain 위의 digital 토큰으로 표현하는 process이다. 각 토큰은 underlying 자산의 ownership 또는 fraction을 나타내며, onchain에서 기록되고 관리된다.
Fractionalization 개요
Asset tokenization의 핵심 개념은 fractionalization이다. 즉 high-value 자산을 smaller units로 나누고, 각 단위가 전체의 share를 나타내게 한다. 이를 통해 investors는 전체 자산이 아니라 fraction을 보유할 수 있으므로 자산 접근성이 높아진다. 일반적인 사용 사례에는 하나의 property를 thousands of tradeable shares로 나눌 수 있는 real estate, 또는 여러 investors가 하나의 high-value item에 stake를 보유할 수 있는 fine art와 collectibles가 있다.
Sui에서는 tokenized_asset 모듈이 이를 처리한다. 이 모듈은 coin library와 유사하게 동작한다. 새로운 One-Time Witness (OTW) 타입을 받으면 fractional 자산의 unique onchain representation을 만든다. 각 fraction은 자산의 total supply에 count되는 잔액을 가진 TokenizedAsset<T> 객체이다.
이 pattern은 ERC1155 multi-토큰 standard와 유사하지만 추가 기능이 있다. Sui에서 구현하려는 Solidity 기반 사용 사례의 starting point로 적합하다.
Asset creation 개요
각 자산은 fixed total supply로 fractionalized된다. Asset을 만들 때 name, description, symbol, icon URL을 포함한 메타데이터를 정의한다. 이 메타데이터는 모든 fractions에 공유되며 AssetMetadata<T> 객체에 저장된다.
각 fraction은 TokenizedAsset<T>이며, 모든 fractions를 합친 잔액이 total supply가 된다.
Non-fungible 토큰 vs fungible 토큰
tokenized_asset 모듈은 non-fungible 토큰(NFT) fractions와 fungible 토큰(FT) fractions를 모두 지원한다. 모든 fraction은 자산 creation time에 정의된 base metadata(name, description, symbol, icon URL)를 공유한다. NFT와 FT의 구분은 민트 time에 per-토큰 metadata가 함께 제공되는지에 따라 결정된다:
- NFT: Minting 시 per-토큰 key-value metadata가 제공되면 토큰은 unique하다. Balance는 1로 고정되며 자산의 single distinct 인스턴스를 나타낸다.
- FT: Per-토큰 metadata가 제공되지 않으면 토큰은 fungible하다. Balance는 1을 초과할 수 있으며 여러 identical instances가 존재할 수 있다.
FTs는 잔액이 1보다 클 때 smaller units로 split하거나 join할 수 있다. Splitting을 사용하면 holder가 전체를 sell하지 않고 포지션 일부만 전송할 수 있다(예: 500 shares 중 100 shares 판매). Joining은 같은 자산의 여러 FT 객체를 하나로 consolidate하여 holder가 관리하는 객체 수를 줄이고 시간이 지나며 gas costs를 낮춘다. NFTs는 잔액이 1로 고정되므로 split하거나 join할 수 없다.
NFT든 FT든 모든 fractions는 자산의 total supply에 count된다.