Transition Away from Currency Trait
Severity: Medium
Description
The Currency trait in Substrate is deprecated and should no longer be used in new implementations. Continuing to rely on deprecated traits risks compatibility issues with future framework updates and limits access to newer, more flexible features. Transitioning to the recommended traits, such as those in the fungible module (Inspect, Mutate, ...), ensures forward compatibility, aligns with modern development practices, and leverages the latest improvements in the Substrate ecosystem.
What should be avoided
Avoid using the deprecated Currency trait in new implementations:
#![allow(unused)] fn main() { use frame_support::traits::Currency; #[pallet::config] pub trait Config: frame_system::Config { // Currency trait is deprecated type Currency: Currency<Self::AccountId>; } }
In this example:
- The
Currencytrait is used to handle account balances. This trait is already deprecated and should not be used.
Best practice
The usage of fungible traits is preferred instead.
#![allow(unused)] fn main() { // Import the traits from the fungible module use frame_support::traits::fungible::{Inspect, Mutate}; #[pallet::config] pub trait Config: frame_system::Config { // Use the preferred traits type Currency: Inspect<Self::AccountId> + Mutate<Self::AccountId>; } }