@@ -96,6 +96,9 @@ pub mod pallet {
9696 #[ pallet:: storage]
9797 pub type BaseFeePerGas < T > = StorageValue < _ , U256 , ValueQuery , DefaultBaseFeePerGas < T > > ;
9898
99+ #[ pallet:: storage]
100+ pub type InitBaseFeePerGas < T > = StorageValue < _ , U256 , ValueQuery , DefaultBaseFeePerGas < T > > ;
101+
99102 #[ pallet:: type_value]
100103 pub fn DefaultElasticity < T : Config > ( ) -> Permill {
101104 T :: DefaultElasticity :: get ( )
@@ -110,6 +113,7 @@ pub mod pallet {
110113 NewBaseFeePerGas { fee : U256 } ,
111114 BaseFeeOverflow ,
112115 NewElasticity { elasticity : Permill } ,
116+ NewInitBaseFeePerGas { fee : U256 }
113117 }
114118
115119 #[ pallet:: hooks]
@@ -178,7 +182,7 @@ pub mod pallet {
178182 let decrease = scaled_basefee
179183 . checked_div ( U256 :: from ( 1_000_000 ) )
180184 . unwrap_or_else ( U256 :: zero) ;
181- let default_base_fee = T :: DefaultBaseFeePerGas :: get ( ) ;
185+ let default_base_fee = InitBaseFeePerGas :: < T > :: get ( ) ;
182186 // lowest fee is norm(DefaultBaseFeePerGas * Threshold::ideal()):
183187 let lowest_base_fee = default_base_fee
184188 . checked_mul ( U256 :: from ( T :: Threshold :: ideal ( ) . deconstruct ( ) ) )
@@ -217,6 +221,15 @@ pub mod pallet {
217221 Self :: deposit_event ( Event :: NewElasticity { elasticity } ) ;
218222 Ok ( ( ) )
219223 }
224+
225+ #[ pallet:: call_index( 1 ) ]
226+ #[ pallet:: weight( 10_000 + T :: DbWeight :: get( ) . writes( 1 ) . ref_time( ) ) ]
227+ pub fn set_init_base_fee_per_gas ( origin : OriginFor < T > , fee : U256 ) -> DispatchResult {
228+ ensure_root ( origin) ?;
229+ let _ = Self :: set_init_base_fee_per_gas_inner ( fee) ;
230+ Self :: deposit_event ( Event :: NewInitBaseFeePerGas { fee } ) ;
231+ Ok ( ( ) )
232+ }
220233 }
221234}
222235
@@ -235,4 +248,8 @@ impl<T: Config> Pallet<T> {
235248 <Elasticity < T > >:: put ( value) ;
236249 T :: DbWeight :: get ( ) . writes ( 1 )
237250 }
251+ pub fn set_init_base_fee_per_gas_inner ( value : U256 ) -> Weight {
252+ <InitBaseFeePerGas < T > >:: put ( value) ;
253+ T :: DbWeight :: get ( ) . writes ( 1 )
254+ }
238255}
0 commit comments