@@ -13,7 +13,7 @@ hedera-reviewed-date: 2025-12-16
1313hedera-acceptance-decision : Accepted
1414last-call-date-time : 2025-12-30T07:00:00Z
1515created : 2025-10-17
16- updated : 2026-01-16
16+ updated : 2026-02-04
1717requires : 1261
1818---
1919
@@ -222,17 +222,11 @@ message ServiceFeeDefinition {
222222message VariableRateDefinition {
223223 /**
224224 * Maximum multiplier to prevent extreme pricing (cost ceiling).
225+ * This value SHOULD be greater than or equal to 1000, any value less than 1000 SHALL be treated as 1000.
226+ * This value SHALL be divided by 1000 before it is applied as a multiplier, a value of `1000` is therefore a multiplier of `1.000`.
225227 * Given the normal price of the transaction, the computed variable price
226- * will not exceed `max_multiplier` * `standard_fee`. Provides predictability
227- * for users regardless of utilization. The minimum price will be the
228- * `standard_fee`. This value is divided by 1,000,000 and then added to the
229- * minimum value of 1.
230- * <p>
231- * ##Example
232- * A value of `2,450,300` results in an _effective_ floating point multiplier
233- * of `3.4503`.<br/>
234- * A value of `0` results in an _effective_ floating point
235- * multiplier of `1.0`.
228+ * will not exceed this multiplier * `standard_fee`. Provides predictability
229+ * for users regardless of utilization.
236230 */
237231 uint32 max_multiplier = 2;
238232
@@ -277,11 +271,11 @@ message PricingCurve {
277271message PiecewiseLinearCurve {
278272 /**
279273 * A list of points defining the piecewise linear curve.
280- * Each point is a pair of (utilization_percentage , multiplier). The list
281- * must be sorted by utilization_percentage in ascending order, and
274+ * Each point is a pair of (utilization_basis_points , multiplier). The list
275+ * must be sorted by utilization_basis_points in ascending order, and
282276 * sub-ordered by multiplier in ascending order for points with the same
283- * utilization percentage . It is legal to have two points with the same
284- * utilization percentage , but they must have different multipliers.
277+ * utilization basis points . It is legal to have two points with the same
278+ * utilization basis points , but they must have different multipliers.
285279 * This allows the creation of stepped pricing curves.
286280 */
287281 repeated PiecewiseLinearPoint points = 1;
@@ -293,17 +287,33 @@ message PiecewiseLinearCurve {
293287 */
294288message PiecewiseLinearPoint {
295289 /**
296- * The utilization percentage for this point, in thousandths of one percent.
297- * This value must be between 0 and 100 ,000, inclusive.
290+ * The utilization percentage for this point, in hundredths of one percent.
291+ * This value must be between 0 and 10 ,000, inclusive.
298292 */
299- uint32 utilization_percentage = 1;
293+ uint32 utilization_basis_points = 1;
300294
301295 /**
302296 * The multiplier to apply at this utilization percentage.
303- * This value is divided by 1,000,000 then added to 1.
297+ * This value SHOULD be greater than or equal to 1000, any value less than 1000 SHALL be treated as 1000
298+ * This value SHALL be divided by 1000 before it is applied as a multiplier, a value of `1000` is therefore a multiplier of `1.000`.
304299 */
305300 uint32 multiplier = 2;
306301}
302+ ```
303+ Adds the high volume multiplier to the ` transaction_result `
304+ ``` protobuf
305+ syntax = "proto3";
306+ message TransactionResult {
307+ // ... existing fields ...
308+ /**
309+ * A high volume pricing multiplier.
310+ * <p>
311+ * This SHALL be the multiplier that was applied to the transaction
312+ * fees charged for this transaction, if the high volume flag was set.
313+ */
314+ uint64 high_volume_pricing_multiplier = 13;
315+ }
316+
307317```
308318
309319Limits and pricing are configured independently for flexibility.
0 commit comments