FunC에서 안전한 스마트 컨트랙트 프로그래밍
이 섹션에서는 TON 블록체인의 흥미로운 특징들과 FunC에서 스마트 컨트랙트를 프로그래밍할 때 개발자들이 따라야 할 모범 사례들을 살펴보겠습니다.
컨트랙트 샤딩
EVM 컨트랙 트를 개발할 때는 편의성을 위해 프로젝트를 여러 컨트랙트로 나누는 것이 일반적입니다. 일부 경우에는 하나의 컨트랙트에서 모든 기능을 구현할 수 있고, 컨트랙트 분할이 필요한 경우에도(예: 자동화된 마켓 메이커의 유동성 페어) 특별한 어려움이 없었습니다. 트랜잭션은 전체적으로 실행됩니다: 모든 것이 성공하거나 모든 것이 되돌려집니다.
TON에서는 "제한 없는 데이터 구조"를 피하고 하나의 논리적 컨트랙트를 작은 조각들로 분할하는 것이 강력히 권장됩니다. 각 조각은 소량의 데이터만 관리합니다. 기본적인 예시는 TON Jettons의 구현입니다. 이는 이더리움의 ERC-20 토큰 표준의 TON 버전입니다. 간단히 말하면:
total_supply
,minter_address
, 그리고 토큰 설명(메타데이터)와jetton_wallet_code
라는 몇 개의 참조를 저장하는 하나의jetton-minter
- jetton 소유자마다 하나씩 있는 많은 jetton-wallet. 각 지갑은 소유자의 주소, 잔액, jetton-minter 주소, jetton_wallet_code에 대한 링크만 저장합니다.
이는 Jettons의 전송이 지갑 간에 직접 일어나고 고부하 주소에 영향을 미치지 않도록 하기 위한 것으로, 트랜잭션의 병렬 처리에 필수적입니다.
즉, 당신의 컨트랙트가 "컨트랙트 그룹"으로 바뀌고 이들이 서로 활발하게 상호작용할 것이라는 점을 준비해야 합니다.