Handling Native Currency in Substrate Based Chain
To handle currency we have two FRAME based pallets in substrate framework.
Asset pallet is more suitable for creating tokens like ERC20 or ERC720 that is common in ethereum ecosystem. It also support multiple assets creation via single pallet.
Balances pallet has extra layer over Currency trait like Reservable currency, Lockable Currency and Imbalance.
Even in pallet balances you can store the balances in two ways. One is to store the balance in balances pallet itself. Balances pallet has type AccountStore which is a StoreMap of AccountId and AccountData.
Second way which many chain uses and I also prefer is to store the balance in System pallet AccountData which is a field in AccountInfo<Index, Account>.
To learn about how to give a symbol to your native currency. Please go through this article.