@@ -42,11 +42,13 @@ type AssetIdOf<T> =
4242type BalanceOf < T > =
4343 <<T as Config >:: Assets as Inspects < <T as frame_system:: Config >:: AccountId > >:: Balance ;
4444
45+ const CURRENCY_ADAPTER_ID : LockIdentifier = * b"cadapter" ;
46+
4547#[ frame_support:: pallet]
4648pub mod pallet {
4749 use super :: * ;
4850 use frame_support:: traits:: LockableCurrency ;
49- use frame_system:: { ensure_root , pallet_prelude:: OriginFor } ;
51+ use frame_system:: pallet_prelude:: OriginFor ;
5052
5153 #[ pallet:: config]
5254 pub trait Config : frame_system:: Config {
@@ -61,6 +63,9 @@ pub mod pallet {
6163
6264 #[ pallet:: constant]
6365 type GetNativeCurrencyId : Get < AssetIdOf < Self > > ;
66+
67+ // Origin which can lock asset balance
68+ type LockOrigin : EnsureOrigin < <Self as frame_system:: Config >:: Origin > ;
6469 }
6570
6671 #[ pallet:: pallet]
@@ -78,32 +83,30 @@ pub mod pallet {
7883 pub fn force_set_lock (
7984 origin : OriginFor < T > ,
8085 asset : AssetIdOf < T > ,
81- id : LockIdentifier ,
8286 who : T :: AccountId ,
8387 #[ pallet:: compact] amount : BalanceOf < T > ,
8488 ) -> DispatchResult {
85- ensure_root ( origin) ?;
89+ T :: LockOrigin :: ensure_origin ( origin) ?;
8690 ensure ! (
8791 asset == T :: GetNativeCurrencyId :: get( ) ,
8892 Error :: <T >:: NotANativeToken
8993 ) ;
90- T :: Balances :: set_lock ( id , & who, amount, WithdrawReasons :: all ( ) ) ;
94+ T :: Balances :: set_lock ( CURRENCY_ADAPTER_ID , & who, amount, WithdrawReasons :: all ( ) ) ;
9195 Ok ( ( ) )
9296 }
9397
9498 #[ pallet:: weight( 10_000 ) ]
9599 pub fn force_remove_lock (
96100 origin : OriginFor < T > ,
97101 asset : AssetIdOf < T > ,
98- id : LockIdentifier ,
99102 who : T :: AccountId ,
100103 ) -> DispatchResult {
101- ensure_root ( origin) ?;
104+ T :: LockOrigin :: ensure_origin ( origin) ?;
102105 ensure ! (
103106 asset == T :: GetNativeCurrencyId :: get( ) ,
104107 Error :: <T >:: NotANativeToken
105108 ) ;
106- T :: Balances :: remove_lock ( id , & who) ;
109+ T :: Balances :: remove_lock ( CURRENCY_ADAPTER_ID , & who) ;
107110 Ok ( ( ) )
108111 }
109112 }
0 commit comments