@@ -61,7 +61,11 @@ pub fn kv_put(env: &mut ApplyEnv, key: &[u8], value: &[u8]) {
6161 }
6262
6363 exec_kv_size ( key, Some ( value) ) ;
64- exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE + protocol:: COST_PER_DB_WRITE_BYTE * ( key. len ( ) + value. len ( ) ) as i128 ) ;
64+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
65+ exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE2 + protocol:: COST_PER_DB_WRITE_BYTE2 * ( key. len ( ) + value. len ( ) ) as i128 ) ;
66+ } else {
67+ exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE + protocol:: COST_PER_DB_WRITE_BYTE * ( key. len ( ) + value. len ( ) ) as i128 ) ;
68+ }
6569
6670 let old_value = env. txn . get_cf ( & env. cf , key) . unwrap ( ) ;
6771 match old_value {
@@ -99,7 +103,11 @@ pub fn kv_increment(env: &mut ApplyEnv, key: &[u8], value: i128) -> i128 {
99103 }
100104
101105 let value_str = value. to_string ( ) . into_bytes ( ) ;
102- exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE + protocol:: COST_PER_DB_WRITE_BYTE * ( key. len ( ) + value_str. len ( ) ) as i128 ) ;
106+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
107+ exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE2 + protocol:: COST_PER_DB_WRITE_BYTE2 * ( key. len ( ) + value_str. len ( ) ) as i128 ) ;
108+ } else {
109+ exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE + protocol:: COST_PER_DB_WRITE_BYTE * ( key. len ( ) + value_str. len ( ) ) as i128 ) ;
110+ }
103111
104112 match env. txn . get_cf ( & env. cf , key) . unwrap ( ) {
105113 None => {
@@ -139,7 +147,11 @@ pub fn kv_delete(env: &mut ApplyEnv, key: &[u8]) {
139147 panic ! ( "exec_cannot_write_during_view" ) ;
140148 }
141149
142- exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE + protocol:: COST_PER_DB_WRITE_BYTE * ( key. len ( ) ) as i128 ) ;
150+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
151+ exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE2 + protocol:: COST_PER_DB_WRITE_BYTE2 * ( key. len ( ) ) as i128 ) ;
152+ } else {
153+ exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE + protocol:: COST_PER_DB_WRITE_BYTE * ( key. len ( ) ) as i128 ) ;
154+ }
143155
144156 match env. txn . get_cf ( & env. cf , key) . unwrap ( ) {
145157 None => ( ) ,
@@ -156,7 +168,11 @@ pub fn kv_set_bit(env: &mut ApplyEnv, key: &[u8], bit_idx: u64) -> bool {
156168 panic ! ( "exec_cannot_write_during_view" ) ;
157169 }
158170
159- exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE + protocol:: COST_PER_DB_WRITE_BYTE * ( key. len ( ) ) as i128 ) ;
171+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
172+ exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE2 + protocol:: COST_PER_DB_WRITE_BYTE2 * ( key. len ( ) ) as i128 ) ;
173+ } else {
174+ exec_budget_decr ( env, protocol:: COST_PER_DB_WRITE_BASE + protocol:: COST_PER_DB_WRITE_BYTE * ( key. len ( ) ) as i128 ) ;
175+ }
160176
161177 let ( mut old, exists) = match env. txn . get_cf ( & env. cf , key) . unwrap ( ) {
162178 None => ( vec ! [ 0u8 ; crate :: consensus:: bic:: sol_bloom:: PAGE_SIZE as usize ] , false ) ,
@@ -182,7 +198,11 @@ pub fn kv_set_bit(env: &mut ApplyEnv, key: &[u8], bit_idx: u64) -> bool {
182198}
183199
184200pub fn kv_exists ( env : & mut ApplyEnv , key : & [ u8 ] ) -> bool {
185- exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( key. len ( ) ) as i128 ) ;
201+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
202+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE2 + protocol:: COST_PER_DB_READ_BYTE2 * ( key. len ( ) ) as i128 ) ;
203+ } else {
204+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( key. len ( ) ) as i128 ) ;
205+ }
186206
187207 match env. txn . get_cf ( & env. cf , key) . unwrap ( ) {
188208 None => false ,
@@ -191,13 +211,21 @@ pub fn kv_exists(env: &mut ApplyEnv, key: &[u8]) -> bool {
191211}
192212
193213pub fn kv_get ( env : & mut ApplyEnv , key : & [ u8 ] ) -> Option < Vec < u8 > > {
194- exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( key. len ( ) ) as i128 ) ;
214+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
215+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE2 + protocol:: COST_PER_DB_READ_BYTE2 * ( key. len ( ) ) as i128 ) ;
216+ } else {
217+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( key. len ( ) ) as i128 ) ;
218+ }
195219
196220 env. txn . get_cf ( & env. cf , key) . unwrap ( )
197221}
198222
199223pub fn kv_get_next ( env : & mut ApplyEnv , prefix : & [ u8 ] , key : & [ u8 ] ) -> Option < ( Vec < u8 > , Vec < u8 > ) > {
200- exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
224+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
225+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE2 + protocol:: COST_PER_DB_READ_BYTE2 * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
226+ } else {
227+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
228+ }
201229
202230 let seek = [ prefix, key] . concat ( ) ;
203231
@@ -221,7 +249,11 @@ pub fn kv_get_next(env: &mut ApplyEnv, prefix: &[u8], key: &[u8]) -> Option<(Vec
221249}
222250
223251pub fn kv_get_prev ( env : & mut ApplyEnv , prefix : & [ u8 ] , key : & [ u8 ] ) -> Option < ( Vec < u8 > , Vec < u8 > ) > {
224- exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
252+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
253+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE2 + protocol:: COST_PER_DB_READ_BYTE2 * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
254+ } else {
255+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
256+ }
225257
226258 let seek = [ prefix, key] . concat ( ) ;
227259
@@ -245,7 +277,11 @@ pub fn kv_get_prev(env: &mut ApplyEnv, prefix: &[u8], key: &[u8]) -> Option<(Vec
245277}
246278
247279pub fn kv_get_prev_or_first ( env : & mut ApplyEnv , prefix : & [ u8 ] , key : & [ u8 ] ) -> Option < ( Vec < u8 > , Vec < u8 > ) > {
248- exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
280+ if env. caller_env . entry_height >= protocol:: FORKHEIGHT {
281+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE2 + protocol:: COST_PER_DB_READ_BYTE2 * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
282+ } else {
283+ exec_budget_decr ( env, protocol:: COST_PER_DB_READ_BASE + protocol:: COST_PER_DB_READ_BYTE * ( prefix. len ( ) + key. len ( ) ) as i128 ) ;
284+ }
249285
250286 let seek = [ prefix, key] . concat ( ) ;
251287
0 commit comments