Skip to content

Commit 20cdddf

Browse files
chore: Updated HIP-1313 with latest protobuf changes (#1399)
Signed-off-by: Neeharika-Sompalli <neeharika.sompalli@swirldslabs.com> Signed-off-by: Neeharika Sompalli <52669918+Neeharika-Sompalli@users.noreply.github.com> Co-authored-by: Joseph S. <121976561+jsync-swirlds@users.noreply.github.com>
1 parent 5648caf commit 20cdddf

1 file changed

Lines changed: 29 additions & 19 deletions

File tree

HIP/hip-1313.md

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ hedera-reviewed-date: 2025-12-16
1313
hedera-acceptance-decision: Accepted
1414
last-call-date-time: 2025-12-30T07:00:00Z
1515
created: 2025-10-17
16-
updated: 2026-01-16
16+
updated: 2026-02-04
1717
requires: 1261
1818
---
1919

@@ -222,17 +222,11 @@ message ServiceFeeDefinition {
222222
message 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 {
277271
message 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
*/
294288
message 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

309319
Limits and pricing are configured independently for flexibility.

0 commit comments

Comments
 (0)